2

アプリケーションをローカライズしましたが、ラベル、タイトル、エラー メッセージでうまく機能します。アプリケーションで jtable を使用しましたが、ボタンがローカライズされていません。

messages: {
            serverCommunicationError: 'An error occured while communicating to the server.',
            loadingMessage: 'Loading records...',
            noDataAvailable: 'No data available!',
            areYouSure: 'Are you sure?',
            save: 'Save',
            saving: 'Saving',
            cancel: 'Cancel',
            error: 'Error',
            close: 'Close',
            cannotLoadOptionsFor: 'Can not load options for field {0}'
        }

しかし、ロシア語を選択すると、これらのメッセージはロシア語で表示されるはずです。そのために、次のようなリソース ファイルを追加しようとしました。

<script type="text/javascript">
(function ($) {
    $.widget("hik.jtable", {
        messages: {

            serverCommunicationError: '@SEFTool.Resources.Models.ValidationStrings.serverCommunication',
            loadingMessage: '@SEFTool.Resources.Models.ValidationStrings.loading',
            noDataAvailable: '@SEFTool.Resources.Models.ValidationStrings.noData',
            areYouSure: '@SEFTool.Resources.Models.ValidationStrings.Sure',
            save: '@SEFTool.Resources.Models.ValidationStrings.Save',
            saving: '@SEFTool.Resources.Models.ValidationStrings.Saving',
            cancel: '@SEFTool.Resources.Models.ValidationStrings.Cancel',
            error: '@SEFTool.Resources.Models.ValidationStrings.Error',
            close: '@SEFTool.Resources.Models.ValidationStrings.Close',
            cannotLoadOptionsFor: '@SEFTool.Resources.Models.ValidationStrings.cannotLoad'

        }
    });
});

しかし、それは機能していません..現在のカルチャをjsファイルに渡し、その中のリソースファイルを呼び出すにはどうすればよいですか?

ボタンのローカライズにご協力ください..

編集:-

クラスを作成しました

public static class MyGlobals
   {
       public static string serverCommunicationError;
.....
   }

そして、私がこのように与えた内観。

@SEFTool.Models.Administration.MyGlobals.serverCommunicationError= '@SEFTool.Resources.Models.ValidationStrings.serverCommunication'

「@SEFTool.Resources.Models.ValidationStrings.serverCommunication」内のロシア語を理解しています。しかし、この値は @SEFTool.Models.Administration.MyGlobals.serverCommunicationError.serverCommunicationError に渡されていません。

編集:-

インデックスビュー内で私はこのようにしました.....しかし、出力が得られません

  <script type="text/javascript">

(function (global) {
    var r = global.Resources || {};
    r.serverCommunicationError = '@Html.Raw(SEFTool.Resources.Models.ValidationStrings.serverCommunication)';
    r.loadingMessage = '@Html.Raw(SEFTool.Resources.Models.ValidationStrings.loading)';
    r.noDataAvailable = '@Html.Raw(SEFTool.Resources.Models.ValidationStrings.noData)';
    r.areYouSure = '@Html.Raw(SEFTool.Resources.Models.ValidationStrings.Sure)';
    r.save = '@Html.Raw(SEFTool.Resources.Models.ValidationStrings.Save)';
    r.saving = '@Html.Raw(SEFTool.Resources.Models.ValidationStrings.Saving)';
    r.cancel = '@Html.Raw(SEFTool.Resources.Models.ValidationStrings.Cancel)';
    r.error = '@Html.Raw(SEFTool.Resources.Models.ValidationStrings.Error)';
    r.close = '@Html.Raw(SEFTool.Resources.Models.ValidationStrings.Close)';
    r.cannotLoadOptionsFor = '@Html.Raw(SEFTool.Resources.Models.ValidationStrings.cannotLoad)';

    global.Resources = r;
})(this);

    $('#content_1').jtable({
        title: '',
        paging: true,
        pageSize: 10,
        sorting: true,
        inlineEditor: false,
        permissions: 'AED',
4

1 に答える 1

0

ビュー (.cshtml) で、次のスクリプト タグを設定します。

<script type="text/javascript">
    (function(global) {
        var r = global.Resources || {};
        r.serverCommunicationError = '@Html.Raw(SEFTool.Resources.Models.ValidationStrings.serverCommunication)';
        r.loadingMessage = '@Html.Raw(SEFTool.Resources.Models.ValidationStrings.loading)';
        r.noDataAvailable = '@Html.Raw(SEFTool.Resources.Models.ValidationStrings.noData)';
        r.areYouSure = '@Html.Raw(SEFTool.Resources.Models.ValidationStrings.Sure)';
        r.save = '@Html.Raw(SEFTool.Resources.Models.ValidationStrings.Save)';
        r.saving = '@Html.Raw(SEFTool.Resources.Models.ValidationStrings.Saving)';
        r.cancel = '@Html.Raw(SEFTool.Resources.Models.ValidationStrings.Cancel)';
        r.error = '@Html.Raw(SEFTool.Resources.Models.ValidationStrings.Error)';
        r.close = '@Html.Raw(SEFTool.Resources.Models.ValidationStrings.Close)';
        r.cannotLoadOptionsFor = '@Html.Raw(SEFTool.Resources.Models.ValidationStrings.cannotLoad)';

        global.Resources = r;
    })(this);
</script>

次に、スクリプト ファイルで、次のように参照します。

messages: {
            serverCommunicationError: Resources.serverCommunicationError,
            loadingMessage: Resources.loadingMessage,
            noDataAvailable: Resources.noDataAvailable,
            areYouSure: Resources.areYouSure,
            save: Resources.save,
            saving: Resources.saving,
            cancel: Resources.cancel,
            error: Resources.error,
            close: Resources.close,
            cannotLoadOptionsFor: Resources.cannotLoadOptionsFor
        }

Resourcesオブジェクトが使用可能になるように、js ファイル内のコードの前に最初のスクリプト タグを呼び出す必要があることを覚えておいてください。js ファイルで DOM の準備が整うのを待つ場合、これは問題ありません。また、これは私の頭に浮かんだ最初の解決策です。たぶんそれは最善ではなく、他の誰かがより良いアプローチを知っています。これを解決するさまざまな方法にも興味があります。

于 2013-03-01T07:06:31.317 に答える