download for translate
[Pman.Admin] / Pman.Tab.AdminTranslations.bjs
1 {
2  "items" : [
3   {
4    "$ xns" : "Roo",
5    "items" : [
6     {
7      "$ xns" : "Roo",
8      "* prop" : "layout",
9      "items" : [
10       {
11        "$ xns" : "Roo",
12        "* prop" : "west",
13        "split" : true,
14        "width" : 450,
15        "xtype" : "LayoutRegion"
16       },
17       {
18        "$ xns" : "Roo",
19        "* prop" : "center",
20        "xtype" : "LayoutRegion"
21       },
22       {
23        "$ xns" : "Roo",
24        "items" : [
25         {
26          "$ xns" : "Roo",
27          "* prop" : "toolbar",
28          "items" : [
29           {
30            "$ xns" : "Roo.Toolbar",
31            "listeners" : {
32             "click" : [
33              "function (_self, e)",
34              "{",
35              "    Pman.Dialog.AdminLanguagePick.show( {  }, function(lang) {",
36              "        ",
37              "        new Pman.Request({",
38              "            url : baseURL + '/Roo/core_templatestr',",
39              "            method : 'POST',",
40              "            params : {",
41              "                _rescan : lang",
42              "            }, ",
43              "            success : function()",
44              "            {",
45              "                _this.treepanel.tree.getRootNode().reload();",
46              "            }",
47              "        });",
48              "    ",
49              "    });",
50              "    ",
51              "}"
52             ]
53            },
54            "text" : "New",
55            "xtype" : "Button"
56           },
57           {
58            "$ xns" : "Roo.Toolbar",
59            "xtype" : "Separator"
60           },
61           {
62            "$ xns" : "Roo.Toolbar",
63            "listeners" : {
64             "click" : [
65              "function (_self, e)",
66              "{",
67              "    var tree = _this.treepanel.tree;",
68              "    var sn  = tree.getSelectionModel().getSelectedNode();",
69              "",
70              "    if (!sn || typeof(sn.attributes.language) == 'undefined' || !sn.attributes.language) {",
71              "        Roo.MessageBox.alert(\"Error\", \"Select a language\");",
72              "        return;",
73              "    }",
74              "",
75              "     Roo.MessageBox.confirm(\"Confirm\", \"Are sure you want to delete the language\", function (v){",
76              "            if (v != 'yes') {",
77              "                return;",
78              "            }",
79              "            Roo.MessageBox.alert(\"Not yet\", \"not done yet\");",
80              "            return;",
81              "            ",
82              "            ",
83              "            ",
84              "            ",
85              "        });",
86              "}"
87             ]
88            },
89            "text" : "Delete",
90            "xtype" : "Button"
91           },
92           {
93            "$ xns" : "Roo.Toolbar",
94            "xtype" : "Separator"
95           },
96           {
97            "$ xns" : "Roo.Toolbar",
98            "listeners" : {
99             "click" : [
100              "function (_self, e)",
101              "{",
102              "    var tree = _this.treepanel.tree;",
103              "    Roo.log(tree);",
104              "    var sn  = tree.getSelectionModel().getSelectedNode();",
105              "",
106              "    if (!sn) {",
107              "        Roo.MessageBox.alert(\"Error\", \"Select a node\");",
108              "        return;",
109              "    }",
110              "    ",
111              "    ",
112              "    var steps = [ ",
113              "           'scanProjectBJS',",
114              "             'scanPmanBJS',",
115              "             'scanPmanTemplates',",
116              "             'scanTables',",
117              "             'syncLanguage'  ",
118              "    ];",
119              "    ",
120              "    ",
121              "    var syncTemplate = function(){",
122              "    ",
123              "        var step = steps.shift();",
124              "        Roo.MessageBox.updateProgress( (5.0 - steps.length) / 5.0, \"Running \" + step);",
125              "    ",
126              "        new Pman.Request({",
127              "            url : baseURL + '/Admin/UpdateBjsTemplates/' + step,",
128              "            method : 'GET',",
129              "            //mask : 'Processing...',",
130              "            timeout : 9000000,",
131              "            success : function()",
132              "            {",
133              "               if (steps.length > 0 ) { ",
134              "                    syncTemplate();",
135              "                    return;",
136              "                }",
137              "                Roo.MessageBox.hide();",
138              "                _this.treepanel.tree.getRootNode().reload();",
139              "            }",
140              "        });",
141              "    ",
142              "    };",
143              "    ",
144              "    ",
145              "    var syncLanguage = function(){",
146              "        new Pman.Request({",
147              "            url : baseURL + '/Roo/Core_templatestr',",
148              "            method : 'POST',",
149              "            mask : 'Processing...',",
150              "            params : {",
151              "                _rescan : sn.attributes.id.split(':')[1]",
152              "            }, ",
153              "            success : function()",
154              "            {",
155              "                _this.treepanel.tree.getRootNode().reload();",
156              "            }",
157              "        });",
158              "    };",
159              "    ",
160              "   var syncSingleTemplate = function(id){",
161              "        new Pman.Request({",
162              "            url : baseURL + '/Roo/Core_template',",
163              "            method : 'POST',",
164              "            mask : 'Processing...',",
165              "            params : {",
166              "                id : id,",
167              "                _rescan : 1",
168              "            }, ",
169              "            success : function()",
170              "            {",
171              "               (function() {",
172              "                    _this.grid.footer.onClick('first');",
173              "                }).defer(100);",
174              "            }",
175              "        });",
176              "    };",
177              "    ",
178              "    ",
179              "    if(typeof(sn.isRoot) != 'undefined' && sn.isRoot){",
180              "        Roo.MessageBox.progress(\"Syncing templates\", \"Starting\");",
181              "        syncTemplate();",
182              "        return;",
183              "    }",
184              "    ",
185              "    if(typeof(sn.attributes.language) != 'undefined' && sn.attributes.language){",
186              "        syncLanguage();",
187              "        return;",
188              "    }",
189              "    ",
190              "     if(typeof(sn.attributes.id) != 'undefined' && sn.attributes.id * 1> 0){",
191              "        syncSingleTemplate(sn.attributes.id);",
192              "        return;",
193              "    }",
194              "    ",
195              "    ",
196              "    ",
197              "    ",
198              "}"
199             ]
200            },
201            "text" : "Rescan",
202            "xtype" : "Button"
203           },
204           {
205            "$ xns" : "Roo.Toolbar",
206            "xtype" : "Fill"
207           },
208           {
209            "$ xns" : "Roo.Toolbar",
210            "listeners" : {
211             "click" : [
212              "function (_self, e)",
213              "{",
214              "    ",
215              "    ",
216              "    Pman.Dialog.Image.show({",
217              "       _url : baseURL + '/Admin/Import/Core_templatestr' ",
218              "     ",
219              "    }, function() {",
220              "         _this.treepanel.tree.getRootNode().reload();",
221              "    });",
222              "    ",
223              "    ",
224              "    ",
225              "}"
226             ]
227            },
228            "text" : "Upload",
229            "xtype" : "Button"
230           },
231           {
232            "$ xns" : "Roo.Toolbar",
233            "xtype" : "Fill"
234           },
235           {
236            "$ xns" : "Roo.Toolbar",
237            "listeners" : {
238             "click" : [
239              "function (_self, e)",
240              "{",
241              "    var tree = _this.treepanel.tree;",
242              "",
243              "    var sn  = tree.getSelectionModel().getSelectedNode();",
244              "    ",
245              "    p = {",
246              "        csvCols : 'src_id_mdsum,template_id_view_name,template_id_template,src_id_txt,lang,txt',",
247              "        csvTitles : 'Code,Module,Template,Original,Language,Translation',",
248              "        limit : 9999,",
249              "        sort: 'template_id_view_name,template_id_template,src_id_txt',",
250              "        dir: 'ASC'",
251              "    };",
252              "    if (!sn ||  sn.id == 'transtree') {",
253              "        Roo.MessageBox.alert(\"Error\", \"Select language, module or page\");",
254              "        return;",
255              "    }",
256              "    if (typeof(sn.id) == 'number') {",
257              "        p.template_id = sn.id;",
258              "",
259              "    }",
260              "    ",
261              "    ",
262              "    if (typeof(sn.id) == 'string' && sn.id.match(/^table:/)) {",
263              "        var sns = sn.id.split(':');",
264              "        p.lang = sns[1];",
265              "        p.on_table = sns[2];",
266              "        p.csvCols = 'src_id_mdsum,on_table,on_id,on_col,src_id_txt,lang,txt';",
267              "        p.csvTitles = 'Code,Table,Table id,Column,Language,Translation';",
268              "    }",
269              "    ",
270              "    if (typeof(sn.id) == 'string' && sn.id.match(/^view:/)) {",
271              "        var sns = sn.id.split(':');",
272              "        p.lang = sns[1];",
273              "        p.template_id_view_name = sns[2];",
274              "        ",
275              "    }",
276              "    if (typeof(sn.id) == 'string' &&  sn.id.match(/^lang:/)) {",
277              "        var sns = sn.id.split(':');",
278              "        p.lang = sns[1];",
279              "",
280              "   }",
281              "    // transtree",
282              "    // view: {lang} : {view_name}",
283              "    // lang:",
284              "     ",
285              "    new Pman.Download({",
286              "        url : baseURL + '/Roo/Core_templatestr',",
287              "        params : p,",
288              "        method : 'GET' ",
289              "    });",
290              "    ",
291              "    ",
292              "    ",
293              "    ",
294              "    ",
295              "}"
296             ]
297            },
298            "text" : "Download",
299            "xtype" : "Button"
300           },
301           {
302            "$ xns" : "Roo.Toolbar",
303            "xtype" : "Separator"
304           },
305           {
306            "$ xns" : "Roo.Toolbar",
307            "listeners" : {
308             "click" : [
309              "function (_self, e)",
310              "{",
311              "    _this.treepanel.tree.getRootNode().reload();",
312              "    ",
313              "}"
314             ]
315            },
316            "text" : "Reload",
317            "xtype" : "Button"
318           }
319          ],
320          "xtype" : "Toolbar"
321         },
322         {
323          "$ xns" : "Roo.tree",
324          "* prop" : "tree",
325          "containerScroll" : false,
326          "items" : [
327           {
328            "$ baseParams" : "{ _tree : 1 }",
329            "$ dataUrl" : "baseURL + '/Roo/Core_templatestr'",
330            "$ xns" : "Roo.tree",
331            "* prop" : "loader",
332            "listeners" : {
333             "beforeload" : [
334              "function (This, node, callback)",
335              "{",
336              "    // set some params.",
337              "    Roo.log(node);",
338              "    this.baseParams._tree = 1;",
339              "    ",
340              "    //this.baseParams.category = node.attributes.category;",
341              "}"
342             ],
343             "loadexception" : [
344              "function (This, node, response)",
345              "{",
346              "    Roo.MessageBox.alert(\"Error\", \"Problem loading tree\");",
347              "}"
348             ]
349            },
350            "requestMethod" : "GET",
351            "xtype" : "TreeLoader"
352           },
353           {
354            "$ xns" : "Roo.tree",
355            "* prop" : "root",
356            "id" : "transtree",
357            "text" : "Translations (rescan this to update strings)",
358            "xtype" : "AsyncTreeNode"
359           },
360           {
361            "$ xns" : "Roo.tree",
362            "* prop" : "selModel",
363            "listeners" : {
364             "selectionchange" : [
365              "function (_self, node)",
366              "{",
367              "    Roo.log(node);",
368              "    ",
369              "    //if (node.id.split('/').length < 2) {",
370              "    //    return;",
371              "   // }",
372              "    (function() {",
373              "        _this.grid.footer.onClick('first');",
374              "    }).defer(100);",
375              "    ",
376              "}"
377             ]
378            },
379            "xtype" : "DefaultSelectionModel"
380           }
381          ],
382          "rootVisible" : true,
383          "xtype" : "TreePanel"
384         }
385        ],
386        "listeners" : {
387         "render" : [
388          "function (_self)",
389          "{",
390          "    _this.treepanel = _self;",
391          "}"
392         ]
393        },
394        "region" : "west",
395        "xtype" : "TreePanel"
396       },
397       {
398        "$ xns" : "Roo",
399        "background" : false,
400        "fitContainer" : true,
401        "fitToframe" : true,
402        "items" : [
403         {
404          "$ xns" : "Roo.grid",
405          "* prop" : "grid",
406          "autoExpandColumn" : "txt",
407          "clicksToEdit" : 1,
408          "items" : [
409           {
410            "$ xns" : "Roo",
411            "* prop" : "toolbar",
412            "items" : [
413             {
414              "$ xns" : "Roo.form",
415              "String emptyText" : "Search for",
416              "listeners" : {
417               "render" : [
418                "function (_self)",
419                "{",
420                "    _this.searchBox = this;",
421                "}"
422               ],
423               "specialkey" : [
424                "function (_self, e)",
425                "{",
426                "_this.grid.footer.onClick('first');",
427                "}"
428               ]
429              },
430              "xtype" : "TextField"
431             },
432             {
433              "$ icon" : "rootURL + '/Pman/templates/images/search.gif'",
434              "$ xns" : "Roo.Toolbar",
435              "cls" : "x-btn-icon",
436              "listeners" : {
437               "|click" : [
438                "function (_self, e)",
439                "{",
440                "_this.grid.footer.onClick('first');",
441                "}"
442               ]
443              },
444              "xtype" : "Button"
445             },
446             {
447              "$ icon" : "rootURL + '/Pman/templates/images/edit-clear.gif'",
448              "$ xns" : "Roo.Toolbar",
449              "cls" : "x-btn-icon",
450              "listeners" : {
451               "|click" : [
452                "function (_self, e)",
453                "{",
454                "    _this.searchBox.setValue('');",
455                "    ",
456                "    _this.grid.footer.onClick('first');",
457                "}"
458               ]
459              },
460              "xtype" : "Button"
461             }
462            ],
463            "xtype" : "Toolbar"
464           },
465           {
466            "$ xns" : "Roo",
467            "* prop" : "footer",
468            "displayInfo" : true,
469            "displayMsg" : "Displaying petition_entry{0} - {1} of {2}",
470            "emptyMsg" : "Not Found",
471            "pageSize" : 100,
472            "xtype" : "PagingToolbar"
473           },
474           {
475            "$ sortInfo" : "{ field : 'src_id_txt', direction: 'ASC' }",
476            "$ xns" : "Roo.data",
477            "* prop" : "dataSource",
478            "items" : [
479             {
480              "$ url" : "baseURL + '/Roo/Core_templatestr.php'",
481              "$ xns" : "Roo.data",
482              "* prop" : "proxy",
483              "method" : "GET",
484              "xtype" : "HttpProxy"
485             },
486             {
487              "$ fields" : [
488               "[",
489               "    {",
490               "        'name': 'id',",
491               "        'type': 'int'",
492               "    },",
493               "    {",
494               "        'name': 'shortname',",
495               "        'type': 'string'",
496               "    }",
497               "   ",
498               "]"
499              ],
500              "$ xns" : "Roo.data",
501              "* prop" : "reader",
502              "id" : "id",
503              "root" : "data",
504              "totalProperty" : "total",
505              "xtype" : "JsonReader"
506             }
507            ],
508            "listeners" : {
509             "beforeload" : [
510              "function (_self, o)",
511              "{",
512              "   ",
513              "    var sn = _this.treepanel.tree.getSelectionModel().getSelectedNode();",
514              "",
515              "    if (!sn || typeof(sn.attributes) == 'undefined' || typeof(sn.attributes.leaf) == 'undefined' || !sn.attributes.leaf) { ",
516              "        _this.grid.ds.removeAll();",
517              "        return false;",
518              "    }",
519              "",
520              "    o.params = o.params || {};",
521              "    o.params.lang =  sn.parentNode.attributes.id.split(':')[1];",
522              "   ",
523              "    o.params.active = 1;",
524              "    o.params['!src_id'] = 0;",
525              "    ",
526              "    if (_this.searchBox && _this.searchBox.getValue().length) { ",
527              "        o.params['_search_txt'] = _this.searchBox.getValue();",
528              "    }",
529              "    ",
530              "    ",
531              "    if(sn.attributes.on_table){",
532              "        o.params.on_table = sn.attributes.on_table;",
533              "    } else {",
534              "         o.params.template_id = sn.attributes.id * 1;",
535              "     }",
536              "    ",
537              "}",
538              "",
539              "",
540              ""
541             ],
542             "update" : [
543              "function (_self, rec, operation)",
544              "{",
545              "    Roo.log(operation);",
546              "    ",
547              "    if (operation != 'commit') {",
548              "        return;",
549              "    }",
550              "    ",
551              "",
552              "    _this.grid.getView().el.mask(\"Saving\");",
553              "    new Pman.Request({",
554              "        url : baseURL + '/Roo/Core_templatestr',",
555              "        method: 'POST',",
556              "        params : {",
557              "            id : rec.get('id'),",
558              "            txt : rec.get('txt')",
559              "        },",
560              "        success : function()",
561              "        {",
562              "            _this.grid.getView().el.unmask();",
563              "                //g.getDataSource().reload();",
564              "        },",
565              "        failure : function()",
566              "        {",
567              "            _this.grid.getView().el.unmask();",
568              "            Roo.MessageBox.alert(\"Error\", \"There was a problem saving the data - try reloading\");",
569              "         }",
570              "            ",
571              "    });",
572              "    ",
573              "}"
574             ]
575            },
576            "remoteSort" : true,
577            "xtype" : "Store"
578           },
579           {
580            "$ renderer" : [
581             "function(v,x,r) ",
582             "{",
583             "    var c = '#666';",
584             "    if (r.data.updated  < r.data.src_id_updated) {",
585             "        c = 'red';",
586             "    }",
587             "    ",
588             "    return String.format('<div style=\"color:'+c+'\";>{0}</div>', v)",
589             "",
590             "}"
591            ],
592            "$ xns" : "Roo.grid",
593            "* prop" : "cm[]",
594            "dataIndex" : "src_id_txt",
595            "header" : "Original",
596            "width" : 300,
597            "xtype" : "ColumnModel"
598           },
599           {
600            "$ renderer" : [
601             "function(v,x,r) ",
602             "{ ",
603             "",
604             "    var c = '#666';",
605             "    if (r.data.updated  < r.data.src_id_updated) {",
606             "        c = 'red';",
607             "    }",
608             "    ",
609             "    return String.format('<div style=\"color:'+c+'\";>{0}</div>', v)",
610             "",
611             "}"
612            ],
613            "$ xns" : "Roo.grid",
614            "* prop" : "cm[]",
615            "dataIndex" : "txt",
616            "header" : "Translation",
617            "items" : [
618             {
619              "$ xns" : "Roo.grid",
620              "* prop" : "editor",
621              "items" : [
622               {
623                "$ xns" : "Roo.form",
624                "* prop" : "field",
625                "allowBlank" : false,
626                "xtype" : "TextField"
627               }
628              ],
629              "xtype" : "GridEditor"
630             }
631            ],
632            "width" : 200,
633            "xtype" : "ColumnModel"
634           },
635           {
636            "$ renderer" : [
637             "function(v,x,r) ",
638             "{",
639             "    return v ? v : '';",
640             "",
641             "}"
642            ],
643            "$ xns" : "Roo.grid",
644            "* prop" : "cm[]",
645            "Boolean hidden" : true,
646            "dataIndex" : "src_id_mdsum",
647            "header" : "md5",
648            "width" : 250,
649            "xtype" : "ColumnModel"
650           }
651          ],
652          "listeners" : {
653           "afteredit" : [
654            "function (e)",
655            "{",
656            "    e.record.commit();",
657            "}"
658           ],
659           "beforeedit" : [
660            "function (e)",
661            "{   ",
662            "    /*if (e.record.data.src_id_txt.indexOf('<') > -1) {",
663            "       // console.log(\"HTML EDITOR!!\");",
664            "        Pman.Dialog.CmsTranslateEditor.show(e.record);",
665            "        return false;",
666            "    }*/",
667            "    ",
668            "    var str=e.record.data.src_id_txt;",
669            "    var patt=/{(.*?)}/g;",
670            "    ",
671            "    Roo.log(str.length);",
672            "    ",
673            "    ",
674            "    if(patt.test(str)){",
675            "        e.cancel = true;",
676            "        Pman.Dialog.AdminTranslateTemplates.show(e.record.data, function(v){",
677            "            Roo.log(v);",
678            "            e.value = v.txt;",
679            "            e.record.set('txt', v.txt);",
680            "            e.record.commit();",
681            "        });",
682            "        /*",
683            "        Roo.MessageBox.prompt('WARNING', 'This text is with {TEMPLATE VARIABLE}, PLEASE BE CAREFUL EDITING. What\\'s change? '+str, function(btn, text){",
684            "            if (btn == 'ok'){",
685            "                e.value = text;",
686            "                e.record.set('txt', text);",
687            "                e.record.commit();",
688            "            }",
689            "        });*/",
690            "        return;",
691            "    }",
692            "    ",
693            "    if(str.length > 150){",
694            "        e.cancel = true;",
695            "        Pman.Dialog.AdminTranslateTemplates.show(e.record.data, function(v){",
696            "            e.value = v.txt;",
697            "            e.record.set('txt', v.txt);",
698            "            e.record.commit();",
699            "        });",
700            "        /*",
701            "        Roo.MessageBox.prompt('WARNING', 'This text is with {TEMPLATE VARIABLE}, PLEASE BE CAREFUL EDITING. What\\'s change? '+str, function(btn, text){",
702            "            if (btn == 'ok'){",
703            "                e.value = text;",
704            "                e.record.set('txt', text);",
705            "                e.record.commit();",
706            "            }",
707            "        });*/",
708            "        return;",
709            "    }",
710            "    ",
711            "",
712            "    if (e.record.data.txt.replace(/\\s+/, '').length) {",
713            "        return true;",
714            "    }",
715            "    ",
716            "    var tl = _this.treepanel.tree.getSelectionModel().getSelectedNode().parentNode.attributes.id;",
717            "    // mapping?",
718            "    ",
719            "    tl = (tl == 'zh_HK') ? 'zh-TW' : tl;",
720            "    ",
721            "    if (tl == 'en' && !e.value.length) {",
722            "",
723            "        e.value = e.record.data.src_id_txt;",
724            "        e.record.set('txt', e.record.data.src_id_txt);",
725            "        return true;",
726            "    }",
727            "    ",
728            "    Pman.GoogleTranslate(e.record.data.src_id_txt, \"en\", tl, function(result) {",
729            "       // Roo.log(result);",
730            "        _this.grid.activeEditor.setValue(result);",
731            "        //console.log(result.translation);",
732            "    });",
733            "    ",
734            "",
735            "    ",
736            "    return true;",
737            "}"
738           ],
739           "|render" : [
740            "function() ",
741            "{",
742            "    _this.grid = this; ",
743            "    //_this.dialog = Pman.Dialog.FILL_IN",
744            "    if (_this.panel.active) {",
745            "        this.footer.onClick('first');",
746            "      // this.ds.onc.onClick('first');",
747            "    }",
748            "}"
749           ],
750           "|rowdblclick" : [
751            "function (_self, rowIndex, e)",
752            "{",
753            "    if (!_this.dialog) {",
754            "        return;",
755            "    }",
756            "    _this.dialog.show( this.getDataSource().getAt(rowIndex).data, function() {",
757            "        _this.grid.footer.onClick('first');",
758            "    }); ",
759            "}",
760            ""
761           ]
762          },
763          "loadMask" : true,
764          "xtype" : "EditorGrid"
765         }
766        ],
767        "listeners" : {
768         "|activate" : [
769          "function() {",
770          "    _this.panel = this;",
771          "    if (_this.grid) {",
772          "        _this.grid.footer.onClick('first');",
773          "    }",
774          "}"
775         ]
776        },
777        "region" : "center",
778        "tableName" : "Page",
779        "title" : "Page",
780        "xtype" : "GridPanel"
781       }
782      ],
783      "xtype" : "BorderLayout"
784     }
785    ],
786    "region" : "center",
787    "title" : "Application Words",
788    "xtype" : "NestedLayoutPanel"
789   }
790  ],
791  "modOrder" : "950",
792  "name" : "Pman.Tab.AdminTranslations",
793  "parent" : "Pman.Tab.AdminTranslationsInt",
794  "path" : "/home/alan/gitlive/Pman.Admin/Pman.Tab.AdminTranslations.bjs",
795  "permname" : "Admin.Translations",
796  "strings" : {
797   "03c2e7e41ffc181a4e84080b4710e81e" : "New",
798   "07a1d316d1065473f290c3c2b72a80f3" : "Application Words",
799   "0a52da7a03a6de3beefe54f8c03ad80d" : "Original",
800   "193cfc9be3b995831c6af2fea6650e60" : "Page",
801   "1bc29b36f623ba82aaf6724fd3b16718" : "md5",
802   "4d1c8263ba1036754f8db14a98f9f006" : "Reload",
803   "69fd71b6f79260924a32a45850a13ab7" : "Translations (rescan this to update strings)",
804   "6dd08874f83507e9c7b23f1a46b7fa7c" : "Translation",
805   "801ab24683a4a8c433c6eb40c48bcd9d" : "Download",
806   "91412465ea9169dfd901dd5e7c96dd99" : "Upload",
807   "9d1ead73e678fa2f51a70a933b0bf017" : "Not Found",
808   "cd6ae20e52d83f601c5fa12b66f0f6d0" : "Rescan",
809   "e2f9d206562d8f5ea421ad51100f7151" : "Displaying petition_entry{0} - {1} of {2}",
810   "e3d388b2c43e5ba0905702620ae2abc1" : "Search for",
811   "f2a6c498fb90ee345d997f888fce3b18" : "Delete"
812  },
813  "title" : "Admin - Translations"
814 }