sync
[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              "        active : 1",
252              "    };",
253              "    if (!sn ||  sn.id == 'transtree') {",
254              "        Roo.MessageBox.alert(\"Error\", \"Select language, module or page\");",
255              "        return;",
256              "    }",
257              "    if (typeof(sn.id) == 'number') {",
258              "        p.template_id = sn.id;",
259              "",
260              "    }",
261              "    ",
262              "    ",
263              "    if (typeof(sn.id) == 'string' && sn.id.match(/^table:/)) {",
264              "        var sns = sn.id.split(':');",
265              "        p.lang = sns[1];",
266              "        p.on_table = sns[2];",
267              "        p.csvCols = 'src_id_mdsum,on_table,on_id,on_col,src_id_txt,lang,txt';",
268              "        p.csvTitles = 'Code,Table,Table id,Column,Language,Translation';",
269              "    }",
270              "    ",
271              "    if (typeof(sn.id) == 'string' && sn.id.match(/^view:/)) {",
272              "        var sns = sn.id.split(':');",
273              "        p.lang = sns[1];",
274              "        p.template_id_view_name = sns[2];",
275              "        ",
276              "    }",
277              "    if (typeof(sn.id) == 'string' &&  sn.id.match(/^lang:/)) {",
278              "        var sns = sn.id.split(':');",
279              "        p.lang = sns[1];",
280              "",
281              "   }",
282              "    // transtree",
283              "    // view: {lang} : {view_name}",
284              "    // lang:",
285              "     ",
286              "    new Pman.Download({",
287              "        url : baseURL + '/Roo/Core_templatestr',",
288              "        params : p,",
289              "        method : 'GET' ",
290              "    });",
291              "    ",
292              "    ",
293              "    ",
294              "    ",
295              "    ",
296              "}"
297             ]
298            },
299            "text" : "Download",
300            "xtype" : "Button"
301           },
302           {
303            "$ xns" : "Roo.Toolbar",
304            "xtype" : "Separator"
305           },
306           {
307            "$ xns" : "Roo.Toolbar",
308            "listeners" : {
309             "click" : [
310              "function (_self, e)",
311              "{",
312              "    _this.treepanel.tree.getRootNode().reload();",
313              "    ",
314              "}"
315             ]
316            },
317            "text" : "Reload",
318            "xtype" : "Button"
319           }
320          ],
321          "xtype" : "Toolbar"
322         },
323         {
324          "$ xns" : "Roo.tree",
325          "* prop" : "tree",
326          "containerScroll" : false,
327          "items" : [
328           {
329            "$ baseParams" : "{ _tree : 1 }",
330            "$ dataUrl" : "baseURL + '/Roo/Core_templatestr'",
331            "$ xns" : "Roo.tree",
332            "* prop" : "loader",
333            "listeners" : {
334             "beforeload" : [
335              "function (This, node, callback)",
336              "{",
337              "    // set some params.",
338              "    Roo.log(node);",
339              "    this.baseParams._tree = 1;",
340              "    ",
341              "    //this.baseParams.category = node.attributes.category;",
342              "}"
343             ],
344             "loadexception" : [
345              "function (This, node, response)",
346              "{",
347              "    Roo.MessageBox.alert(\"Error\", \"Problem loading tree\");",
348              "}"
349             ]
350            },
351            "requestMethod" : "GET",
352            "xtype" : "TreeLoader"
353           },
354           {
355            "$ xns" : "Roo.tree",
356            "* prop" : "root",
357            "id" : "transtree",
358            "text" : "Translations (rescan this to update strings)",
359            "xtype" : "AsyncTreeNode"
360           },
361           {
362            "$ xns" : "Roo.tree",
363            "* prop" : "selModel",
364            "listeners" : {
365             "selectionchange" : [
366              "function (_self, node)",
367              "{",
368              "    Roo.log(node);",
369              "    ",
370              "    //if (node.id.split('/').length < 2) {",
371              "    //    return;",
372              "   // }",
373              "    (function() {",
374              "        _this.grid.footer.onClick('first');",
375              "    }).defer(100);",
376              "    ",
377              "}"
378             ]
379            },
380            "xtype" : "DefaultSelectionModel"
381           }
382          ],
383          "rootVisible" : true,
384          "xtype" : "TreePanel"
385         }
386        ],
387        "listeners" : {
388         "render" : [
389          "function (_self)",
390          "{",
391          "    _this.treepanel = _self;",
392          "}"
393         ]
394        },
395        "region" : "west",
396        "xtype" : "TreePanel"
397       },
398       {
399        "$ xns" : "Roo",
400        "background" : false,
401        "fitContainer" : true,
402        "fitToframe" : true,
403        "items" : [
404         {
405          "$ xns" : "Roo.grid",
406          "* prop" : "grid",
407          "autoExpandColumn" : "txt",
408          "clicksToEdit" : 1,
409          "items" : [
410           {
411            "$ xns" : "Roo",
412            "* prop" : "toolbar",
413            "items" : [
414             {
415              "$ xns" : "Roo.form",
416              "String emptyText" : "Search for",
417              "listeners" : {
418               "render" : [
419                "function (_self)",
420                "{",
421                "    _this.searchBox = this;",
422                "}"
423               ],
424               "specialkey" : [
425                "function (_self, e)",
426                "{",
427                "_this.grid.footer.onClick('first');",
428                "}"
429               ]
430              },
431              "xtype" : "TextField"
432             },
433             {
434              "$ icon" : "rootURL + '/Pman/templates/images/search.gif'",
435              "$ xns" : "Roo.Toolbar",
436              "cls" : "x-btn-icon",
437              "listeners" : {
438               "|click" : [
439                "function (_self, e)",
440                "{",
441                "_this.grid.footer.onClick('first');",
442                "}"
443               ]
444              },
445              "xtype" : "Button"
446             },
447             {
448              "$ icon" : "rootURL + '/Pman/templates/images/edit-clear.gif'",
449              "$ xns" : "Roo.Toolbar",
450              "cls" : "x-btn-icon",
451              "listeners" : {
452               "|click" : [
453                "function (_self, e)",
454                "{",
455                "    _this.searchBox.setValue('');",
456                "    ",
457                "    _this.grid.footer.onClick('first');",
458                "}"
459               ]
460              },
461              "xtype" : "Button"
462             }
463            ],
464            "xtype" : "Toolbar"
465           },
466           {
467            "$ xns" : "Roo",
468            "* prop" : "footer",
469            "displayInfo" : true,
470            "displayMsg" : "Displaying petition_entry{0} - {1} of {2}",
471            "emptyMsg" : "Not Found",
472            "pageSize" : 100,
473            "xtype" : "PagingToolbar"
474           },
475           {
476            "$ sortInfo" : "{ field : 'src_id_txt', direction: 'ASC' }",
477            "$ xns" : "Roo.data",
478            "* prop" : "dataSource",
479            "items" : [
480             {
481              "$ url" : "baseURL + '/Roo/Core_templatestr.php'",
482              "$ xns" : "Roo.data",
483              "* prop" : "proxy",
484              "method" : "GET",
485              "xtype" : "HttpProxy"
486             },
487             {
488              "$ fields" : [
489               "[",
490               "    {",
491               "        'name': 'id',",
492               "        'type': 'int'",
493               "    },",
494               "    {",
495               "        'name': 'shortname',",
496               "        'type': 'string'",
497               "    }",
498               "   ",
499               "]"
500              ],
501              "$ xns" : "Roo.data",
502              "* prop" : "reader",
503              "id" : "id",
504              "root" : "data",
505              "totalProperty" : "total",
506              "xtype" : "JsonReader"
507             }
508            ],
509            "listeners" : {
510             "beforeload" : [
511              "function (_self, o)",
512              "{",
513              "   ",
514              "    var sn = _this.treepanel.tree.getSelectionModel().getSelectedNode();",
515              "",
516              "    if (!sn || typeof(sn.attributes) == 'undefined' || typeof(sn.attributes.leaf) == 'undefined' || !sn.attributes.leaf) { ",
517              "        _this.grid.ds.removeAll();",
518              "        return false;",
519              "    }",
520              "",
521              "    o.params = o.params || {};",
522              "    o.params.lang =  sn.parentNode.attributes.id.split(':')[1];",
523              "   ",
524              "    o.params.active = 1;",
525              "    o.params['!src_id'] = 0;",
526              "    ",
527              "    if (_this.searchBox && _this.searchBox.getValue().length) { ",
528              "        o.params['_search_txt'] = _this.searchBox.getValue();",
529              "    }",
530              "    ",
531              "    ",
532              "    if(sn.attributes.on_table){",
533              "        o.params.on_table = sn.attributes.on_table;",
534              "    } else {",
535              "         o.params.template_id = sn.attributes.id * 1;",
536              "     }",
537              "    ",
538              "}",
539              "",
540              "",
541              ""
542             ],
543             "update" : [
544              "function (_self, rec, operation)",
545              "{",
546              "    Roo.log(operation);",
547              "    ",
548              "    if (operation != 'commit') {",
549              "        return;",
550              "    }",
551              "    ",
552              "",
553              "    _this.grid.getView().el.mask(\"Saving\");",
554              "    new Pman.Request({",
555              "        url : baseURL + '/Roo/Core_templatestr',",
556              "        method: 'POST',",
557              "        params : {",
558              "            id : rec.get('id'),",
559              "            txt : rec.get('txt')",
560              "        },",
561              "        success : function()",
562              "        {",
563              "            _this.grid.getView().el.unmask();",
564              "                //g.getDataSource().reload();",
565              "        },",
566              "        failure : function()",
567              "        {",
568              "            _this.grid.getView().el.unmask();",
569              "            Roo.MessageBox.alert(\"Error\", \"There was a problem saving the data - try reloading\");",
570              "         }",
571              "            ",
572              "    });",
573              "    ",
574              "}"
575             ]
576            },
577            "remoteSort" : true,
578            "xtype" : "Store"
579           },
580           {
581            "$ renderer" : [
582             "function(v,x,r) ",
583             "{",
584             "    var c = '#666';",
585             "    if (r.data.updated  < r.data.src_id_updated) {",
586             "        c = 'red';",
587             "    }",
588             "    ",
589             "    return String.format('<div style=\"color:'+c+'\";>{0}</div>', v)",
590             "",
591             "}"
592            ],
593            "$ xns" : "Roo.grid",
594            "* prop" : "cm[]",
595            "dataIndex" : "src_id_txt",
596            "header" : "Original",
597            "width" : 300,
598            "xtype" : "ColumnModel"
599           },
600           {
601            "$ renderer" : [
602             "function(v,x,r) ",
603             "{ ",
604             "",
605             "    var c = '#666';",
606             "    if (r.data.updated  < r.data.src_id_updated) {",
607             "        c = 'red';",
608             "    }",
609             "    ",
610             "    return String.format('<div style=\"color:'+c+'\";>{0}</div>', v)",
611             "",
612             "}"
613            ],
614            "$ xns" : "Roo.grid",
615            "* prop" : "cm[]",
616            "dataIndex" : "txt",
617            "header" : "Translation",
618            "items" : [
619             {
620              "$ xns" : "Roo.grid",
621              "* prop" : "editor",
622              "items" : [
623               {
624                "$ xns" : "Roo.form",
625                "* prop" : "field",
626                "allowBlank" : false,
627                "xtype" : "TextField"
628               }
629              ],
630              "xtype" : "GridEditor"
631             }
632            ],
633            "width" : 200,
634            "xtype" : "ColumnModel"
635           },
636           {
637            "$ renderer" : [
638             "function(v,x,r) ",
639             "{",
640             "    return v ? v : '';",
641             "",
642             "}"
643            ],
644            "$ xns" : "Roo.grid",
645            "* prop" : "cm[]",
646            "Boolean hidden" : true,
647            "dataIndex" : "src_id_mdsum",
648            "header" : "md5",
649            "width" : 250,
650            "xtype" : "ColumnModel"
651           }
652          ],
653          "listeners" : {
654           "afteredit" : [
655            "function (e)",
656            "{",
657            "    e.record.commit();",
658            "}"
659           ],
660           "beforeedit" : [
661            "function (e)",
662            "{   ",
663            "    /*if (e.record.data.src_id_txt.indexOf('<') > -1) {",
664            "       // console.log(\"HTML EDITOR!!\");",
665            "        Pman.Dialog.CmsTranslateEditor.show(e.record);",
666            "        return false;",
667            "    }*/",
668            "    ",
669            "    var str=e.record.data.src_id_txt;",
670            "    var patt=/{(.*?)}/g;",
671            "    ",
672            "    Roo.log(str.length);",
673            "    ",
674            "    ",
675            "    if(patt.test(str)){",
676            "        e.cancel = true;",
677            "        Pman.Dialog.AdminTranslateTemplates.show(e.record.data, function(v){",
678            "            Roo.log(v);",
679            "            e.value = v.txt;",
680            "            e.record.set('txt', v.txt);",
681            "            e.record.commit();",
682            "        });",
683            "        /*",
684            "        Roo.MessageBox.prompt('WARNING', 'This text is with {TEMPLATE VARIABLE}, PLEASE BE CAREFUL EDITING. What\\'s change? '+str, function(btn, text){",
685            "            if (btn == 'ok'){",
686            "                e.value = text;",
687            "                e.record.set('txt', text);",
688            "                e.record.commit();",
689            "            }",
690            "        });*/",
691            "        return;",
692            "    }",
693            "    ",
694            "    if(str.length > 150){",
695            "        e.cancel = true;",
696            "        Pman.Dialog.AdminTranslateTemplates.show(e.record.data, function(v){",
697            "            e.value = v.txt;",
698            "            e.record.set('txt', v.txt);",
699            "            e.record.commit();",
700            "        });",
701            "        /*",
702            "        Roo.MessageBox.prompt('WARNING', 'This text is with {TEMPLATE VARIABLE}, PLEASE BE CAREFUL EDITING. What\\'s change? '+str, function(btn, text){",
703            "            if (btn == 'ok'){",
704            "                e.value = text;",
705            "                e.record.set('txt', text);",
706            "                e.record.commit();",
707            "            }",
708            "        });*/",
709            "        return;",
710            "    }",
711            "    ",
712            "",
713            "    if (e.record.data.txt.replace(/\\s+/, '').length) {",
714            "        return true;",
715            "    }",
716            "    ",
717            "    var tl = _this.treepanel.tree.getSelectionModel().getSelectedNode().parentNode.attributes.id;",
718            "    // mapping?",
719            "    ",
720            "    tl = (tl == 'zh_HK') ? 'zh-TW' : tl;",
721            "    ",
722            "    if (tl == 'en' && !e.value.length) {",
723            "",
724            "        e.value = e.record.data.src_id_txt;",
725            "        e.record.set('txt', e.record.data.src_id_txt);",
726            "        return true;",
727            "    }",
728            "    ",
729            "    Pman.GoogleTranslate(e.record.data.src_id_txt, \"en\", tl, function(result) {",
730            "       // Roo.log(result);",
731            "        _this.grid.activeEditor.setValue(result);",
732            "        //console.log(result.translation);",
733            "    });",
734            "    ",
735            "",
736            "    ",
737            "    return true;",
738            "}"
739           ],
740           "|render" : [
741            "function() ",
742            "{",
743            "    _this.grid = this; ",
744            "    //_this.dialog = Pman.Dialog.FILL_IN",
745            "    if (_this.panel.active) {",
746            "        this.footer.onClick('first');",
747            "      // this.ds.onc.onClick('first');",
748            "    }",
749            "}"
750           ],
751           "|rowdblclick" : [
752            "function (_self, rowIndex, e)",
753            "{",
754            "    if (!_this.dialog) {",
755            "        return;",
756            "    }",
757            "    _this.dialog.show( this.getDataSource().getAt(rowIndex).data, function() {",
758            "        _this.grid.footer.onClick('first');",
759            "    }); ",
760            "}",
761            ""
762           ]
763          },
764          "loadMask" : true,
765          "xtype" : "EditorGrid"
766         }
767        ],
768        "listeners" : {
769         "|activate" : [
770          "function() {",
771          "    _this.panel = this;",
772          "    if (_this.grid) {",
773          "        _this.grid.footer.onClick('first');",
774          "    }",
775          "}"
776         ]
777        },
778        "region" : "center",
779        "tableName" : "Page",
780        "title" : "Page",
781        "xtype" : "GridPanel"
782       }
783      ],
784      "xtype" : "BorderLayout"
785     }
786    ],
787    "region" : "center",
788    "title" : "Application Words",
789    "xtype" : "NestedLayoutPanel"
790   }
791  ],
792  "modOrder" : "950",
793  "name" : "Pman.Tab.AdminTranslations",
794  "parent" : "Pman.Tab.AdminTranslationsInt",
795  "path" : "/home/alan/gitlive/Pman.Admin/Pman.Tab.AdminTranslations.bjs",
796  "permname" : "Admin.Translations",
797  "strings" : {
798   "03c2e7e41ffc181a4e84080b4710e81e" : "New",
799   "07a1d316d1065473f290c3c2b72a80f3" : "Application Words",
800   "0a52da7a03a6de3beefe54f8c03ad80d" : "Original",
801   "193cfc9be3b995831c6af2fea6650e60" : "Page",
802   "1bc29b36f623ba82aaf6724fd3b16718" : "md5",
803   "4d1c8263ba1036754f8db14a98f9f006" : "Reload",
804   "69fd71b6f79260924a32a45850a13ab7" : "Translations (rescan this to update strings)",
805   "6dd08874f83507e9c7b23f1a46b7fa7c" : "Translation",
806   "801ab24683a4a8c433c6eb40c48bcd9d" : "Download",
807   "91412465ea9169dfd901dd5e7c96dd99" : "Upload",
808   "9d1ead73e678fa2f51a70a933b0bf017" : "Not Found",
809   "cd6ae20e52d83f601c5fa12b66f0f6d0" : "Rescan",
810   "e2f9d206562d8f5ea421ad51100f7151" : "Displaying petition_entry{0} - {1} of {2}",
811   "e3d388b2c43e5ba0905702620ae2abc1" : "Search for",
812   "f2a6c498fb90ee345d997f888fce3b18" : "Delete"
813  },
814  "title" : "Admin - Translations"
815 }