1

コントローラーからデータを取得する Ruby on Rails で JQGrid を使用しており、そのコントローラーは json 形式でデータを返します。以下は私のJQueryコードです

<script type="text/javascript">
var list = null;
$(document).ready(function(){
    grid = $("#list");
    grid.jqGrid({
        datatype: "json",
        url:'/applications?'+new Date().getTime(),
        height: <%= JQGRID_HEIGHT %>,
        rowNum:<%= ROW_NUM %>, 
        rowList:<%= ROW_LIST %>,
        viewrecords: true,
        autowidth:true,
        gridComplete: function() {
            initLytebox();
            common.jqGridComplete($(this));
            initLytebox();

        },
        afterInsertRow: function(rowId) {           
            var action = grid.jqGrid('getRowData',rowId).action;
            var cellValue = '<a href="/applications/'+rowId+'/edit"><img alt="Edit" src="/assets/edit.png" title="Edit"></a>&nbsp;'
            cellValue += '<a href="javascript:void(0);" onclick="deleteApplication('+rowId+')" class = "delete_egress_group" id = "'+rowId+'">';            
            cellValue += '<img alt="Delete" src="/assets/delete.png" title="Delete"></a>';
            grid.jqGrid('setRowData',rowId,{action:cellValue});
        },
        colNames:['Application Name','Description','Action'],       
        colModel:[  
                    {name:'name',index:'name', width:"20%"},
                    {name:'description',index:'description', width:"70%"},
                    {name:'action',index:'action', width:"10%",search:false,sortable:false}
                 ],              
        multiselect: false,
        pager: '#pager',
        toolbar: [true,"top"],
        caption: "Applications" }
    );  
    grid.jqGrid('navGrid', '#pager', {search: false, add: false, edit: false, del: false },{}, {}, {},
     { multipleSearch: true, overlay: false});
    grid.jqGrid('filterToolbar', { stringResult: true, searchOnEnter: true, defaultSearch: 'cn' });
    grid.jqGrid('navButtonAdd', '#pager',
        {
            caption: "Add",title: "Add New",buttonicon: 'ui-icon-plus',
            onClickButton: function () {window.location = "/applications/new";}             
        }
    );
}); 
</script>
<select id="languages">
    <option value="en">English (US)</option>
    <option value="en-GB">English (GB)</option>
    <option value="en-IN">English (IN)</option>
    <option value="de">German</option>
    <option value="ru">Russian</option>
</select>
<div style="width:100%">
    <table id="list"></table>
    <div id="pager"></div>
</div>

以下の場所から多言語の js ファイルをダウンロードし、アプリケーションの JQGrid フォルダーに配置しました。

http://www.ok-soft-gmbh.com/jqGrid/jquery.jqGrid-3.8.2/src/i18n/grid.locale-en-fixed.js
http://www.ok-soft-gmbh.com/jqGrid/jquery.jqGrid-3.8.2/src/i18n/grid.locale-ru-fixed.js
http://www.ok-soft-gmbh.com/jqGrid/jquery.jqGrid-3.8.2/src/i18n/grid.locale-de-fixed.js

ここで、選択した言語に従って、JQGrid の列ヘッダーとページネーション文字列を変換したいだけです。

4

1 に答える 1

2

answerで説明されている非常に古いバージョンの jqGrid (3.8.2) のロケール ファイルを使用します。検証したところ、jqGrid でも同じアイデアを使用できます。

これは動作する古いデモの修正版です。元のローカリゼーション ファイル (たとえばgrid.locale-en.js ) と変更されたバージョン (たとえばgrid.locale-en-dyn.js ) を比較すると、私が行った変更が非常に簡単であることがわかります。grid.locale-en.js次のような元のファイル

(function($){
....
$.jgrid = $.jgrid || {};
$.extend($.jgrid,{
    defaults : {
    ....
});
})(jQuery);

に変更しました

(function($){
....
$.jgrid = $.jgrid || {};
if (!$.jgrid.hasOwnProperty("regional")) {
    $.jgrid.regional = {};
}
$.jgrid.regional.en = $.jgrid.regional["en-US"] = {
    defaults : {
    ....
};
$.extend($.jgrid,$.jgrid.regional.en);
})(jQuery);

このような変更により、 のような共通部分だけ$.jgrid.defaults.recordtextでなく、や などの言語固有の部分にも言語固有の情報を保存できます。jqGrid で使用される標準パーツにコピーできる複数の言語固有の設定を含めることができます。$.jgrid.regional.en.defaults.recordtext$.jgrid.regional["en-US"].defaults.recordtext$.jgrid.defaults

于 2013-01-29T14:52:13.450 に答える