1{$ifdef nn}begin end;{$endif}
2
3procedure DoLocMenuitem(ini: TIniFile; c: TMenuItem; const ASection, AKey: string);
4begin
5  if Assigned(c) then
6    c.Caption:= ini.ReadString(ASection, AKey, c.Caption);
7end;
8
9procedure DoLocMenuitem(mi: TMenuItem; const AStr: string);
10begin
11  if Assigned(mi) then
12    mi.Caption:= AStr;
13end;
14
15procedure DoLocMenuitem(mi, mi_from: TMenuItem);
16begin
17  if Assigned(mi) then
18    if Assigned(mi_from) then
19      mi.Caption:= mi_from.Caption;
20end;
21
22procedure DoLocControlHint(ini: TIniFile; c: TControl; const ASection, AKey: string);
23begin
24  if Assigned(c) then
25    c.Hint:= ini.ReadString(ASection, AKey, c.Hint);
26end;
27
28procedure DoLocControlHint(c: TControl; AStr: string);
29begin
30  SReplaceAll(AStr, '&', '');
31  if Assigned(c) then
32    c.Hint:= AStr;
33end;
34
35procedure DoLocString(var AStr: string; ini: TIniFile; const ASection, AKey: string);
36begin
37  AStr:= ini.ReadString(ASection, AKey, AStr);
38  SReplaceAll(AStr, '\n', #10);
39end;
40
41procedure DoLocToolbarButtonHint(AToolbar: TATFlatToolbar; const ABtnCaption, ABtnNewHint: string);
42var
43  Btn: TATButton;
44  i: integer;
45begin
46  for i:= 0 to AToolbar.ButtonCount-1 do
47  begin
48    Btn:= AToolbar.Buttons[i];
49    if Btn.Caption=ABtnCaption then
50    begin
51      Btn.Hint:= StringReplace(ABtnNewHint, '&', '', [rfReplaceAll]);
52      exit;
53    end;
54  end;
55end;
56
57procedure TfmMain.DoLocalizePopupTab;
58var
59  fn: string;
60  ini: TIniFile;
61begin
62  fn:= GetAppLangFilename;
63  if FileExists(fn) then
64  begin
65    ini:= TIniFile.Create(fn);
66    try
67      DoLocMenuitem(ini, mnuTabCloseThis, 'ct', 'c_tab');
68      DoLocMenuitem(ini, mnuTabCloseSub, 'ct', 'c_');
69      DoLocMenuitem(ini, mnuTabCloseOtherSame, 'ct', 'c_oth_s');
70      DoLocMenuitem(ini, mnuTabCloseOtherAll, 'ct', 'c_oth_a');
71      DoLocMenuitem(ini, mnuTabCloseAllSame, 'ct', 'c_all_s');
72      DoLocMenuitem(ini, mnuTabCloseAllAll, 'ct', 'c_all_a');
73      DoLocMenuitem(ini, mnuTabCloseLeft, 'ct', 'c_lt_s');
74      DoLocMenuitem(ini, mnuTabCloseRight, 'ct', 'c_rt_s');
75
76      DoLocMenuitem(ini, mnuTabSave, 'ct', 'sv');
77      DoLocMenuitem(ini, mnuTabSaveAs, 'ct', 'sv_as');
78      DoLocMenuitem(ini, mnuTabColor, 'ct', 'col_t');
79      DoLocMenuitem(ini, mnuTabPinned, 'ct', 'pin');
80
81      DoLocMenuitem(mnuTabCopySub, msgCopySub);
82      DoLocMenuitem(mnuTabCopyFullPath, msgCopyFilenameFull);
83      DoLocMenuitem(mnuTabCopyName, msgCopyFilenameName);
84      DoLocMenuitem(mnuTabCopyDir, msgCopyFilenameDir);
85
86      DoLocMenuitem(ini, mnuTabMoveSub, 'ct', 'mov_');
87      DoLocMenuitem(ini, mnuTabMoveF1, 'ct', 'mov_f1');
88      DoLocMenuitem(ini, mnuTabMoveF2, 'ct', 'mov_f2');
89      DoLocMenuitem(ini, mnuTabMoveF3, 'ct', 'mov_f3');
90      DoLocMenuitem(ini, mnuTabMoveNext, 'ct', 'mov_n');
91      DoLocMenuitem(ini, mnuTabMovePrev, 'ct', 'mov_p');
92    finally
93      FreeAndNil(ini);
94    end;
95  end;
96end;
97
98procedure TfmMain.DoLocalize;
99var
100  fn: string;
101  ini: TIniFile;
102  Sep: TATStringSeparator;
103begin
104  fn:= GetAppLangFilename;
105  if not FileExists(fn) then exit;
106
107  ini:= TIniFile.Create(fn);
108  try
109    msgFileNew:= ini.ReadString('m_f', 'new', msgFileNew);
110    msgFileOpen:= ini.ReadString('m_f', 'op', msgFileOpen);
111    msgFileSave:= ini.ReadString('m_f', 's', msgFileSave);
112
113    DoLocMenuitem(ini, mnuFile, 'm_f', '_');
114    DoLocMenuitem(mnuFileNew, msgFileNew);
115    DoLocMenuitem(ini, mnuFileNewMenu, 'm_f', 'newm');
116    DoLocMenuitem(mnuFileOpen, msgFileOpen);
117    DoLocMenuitem(ini, mnuFileOpenSub, 'm_f', 'rec');
118    DoLocMenuitem(ini, mnuFileOpenDir, 'm_f', 'op_dir');
119    DoLocMenuitem(ini, mnuFileReopen, 'm_f', 'reop');
120    DoLocMenuitem(mnuFileSave, msgFileSave);
121    DoLocMenuitem(ini, mnuFileSaveAs, 'm_f', 's_as');
122    DoLocMenuitem(ini, mnuFileSaveAll, 'm_f', 's_all');
123    DoLocMenuitem(ini, mnuFileClose, 'm_f', 'cl');
124    DoLocMenuitem(ini, mnuFileCloseAll, 'm_f', 'cl_all');
125    DoLocMenuitem(ini, mnuFileCloseOther, 'm_f', 'cl_oth');
126    DoLocMenuitem(ini, mnuFileCloseDel, 'm_f', 'cl_del');
127    DoLocMenuitem(ini, mnuFileEnc, 'm_f', 'e_');
128    DoLocMenuitem(ini, mnuFileEnds, 'm_f', 'z_');
129    DoLocMenuitem(ini, mnuFileExit, 'm_f', 'q');
130
131    DoMenuitemEllipsis(mnuFileEnc);
132
133    msgEncReloadAs:= ini.ReadString('m_f', 'e_r', msgEncReloadAs);
134    msgEncConvertTo:= ini.ReadString('m_f', 'e_t', msgEncConvertTo);
135    msgEncEuropean:= ini.ReadString('m_f', 'e_eu', msgEncEuropean);
136    msgEncAsian:= ini.ReadString('m_f', 'e_as', msgEncAsian);
137    msgEncMisc:= ini.ReadString('m_f', 'e_mi', msgEncMisc);
138
139    DoLocMenuItem(mnuFileEndWin, msgEndWin);
140    DoLocMenuItem(mnuFileEndUn, msgEndUnix);
141    DoLocMenuItem(mnuFileEndMac, msgEndMac);
142
143    DoLocString(cStrMenuitemUndo, ini, 'm_e', 'undo');
144    DoLocString(cStrMenuitemRedo, ini, 'm_e', 'redo');
145    DoLocString(cStrMenuitemCut, ini, 'm_e', 'cut');
146    DoLocString(cStrMenuitemCopy, ini, 'm_e', 'cp');
147    DoLocString(cStrMenuitemPaste, ini, 'm_e', 'pst');
148    DoLocString(cStrMenuitemDelete, ini, 'm_e', 'del');
149    DoLocString(cStrMenuitemSelectAll, ini, 'm_se', 'al');
150
151    DoLocMenuitem(mnuEditUndo, cStrMenuitemUndo);
152    DoLocMenuitem(mnuEditRedo, cStrMenuitemRedo);
153    DoLocMenuitem(mnuEditCut, cStrMenuitemCut);
154    DoLocMenuitem(mnuEditCopy, cStrMenuitemCopy);
155    DoLocMenuitem(mnuEditPaste, cStrMenuitemPaste);
156    DoLocMenuitem(mnuEditDel, cStrMenuitemDelete);
157
158    DoLocMenuitem(ini, mnuEdit, 'm_e', '_');
159    DoLocMenuitem(ini, mnuEditUndo, 'm_e', 'undo');
160    DoLocMenuitem(ini, mnuEditRedo, 'm_e', 'redo');
161    DoLocMenuitem(ini, mnuEditCut, 'm_e', 'cut');
162    DoLocMenuitem(ini, mnuEditCopy, 'm_e', 'cp');
163    DoLocMenuitem(ini, mnuEditPaste, 'm_e', 'pst');
164    DoLocMenuitem(ini, mnuEditDel, 'm_e', 'del');
165
166    msgCopySub:= ini.ReadString('m_e', 'cp_', msgCopySub);
167    msgCopyFilenameName:= ini.ReadString('m_e', 'cp_name', msgCopyFilenameName);
168    msgCopyFilenameDir:= ini.ReadString('m_e', 'cp_dir', msgCopyFilenameDir);
169    msgCopyFilenameFull:= ini.ReadString('m_e', 'cp_full', msgCopyFilenameFull);
170    msgCopyCurrentLine:= ini.ReadString('m_e', 'cp_ln', msgCopyCurrentLine);
171
172    DoLocMenuitem(mnuEditCopySub, msgCopySub);
173    DoLocMenuitem(mnuEditCopyLine, msgCopyCurrentLine);
174    DoLocMenuitem(ini, mnuEditCopyAppend, 'm_e', 'cp_add');
175    DoLocMenuitem(mnuEditCopyFFull, msgCopyFilenameFull);
176    DoLocMenuitem(mnuEditCopyFName, msgCopyFilenameName);
177    DoLocMenuitem(mnuEditCopyFDir, msgCopyFilenameDir);
178
179    DoLocMenuitem(ini, mnuEditLineOp, 'm_e', 'ln_');
180    DoLocMenuitem(ini, mnuEditLineDel, 'm_e', 'ln_del');
181    DoLocMenuitem(ini, mnuEditLineDup, 'm_e', 'ln_dup');
182    DoLocMenuitem(ini, mnuEditLineMoveUp, 'm_e', 'ln_up');
183    DoLocMenuitem(ini, mnuEditLineMoveDown, 'm_e', 'ln_dn');
184
185    DoLocMenuitem(ini, mnuEditIndentSub, 'm_e', 'bl_');
186    DoLocMenuitem(ini, mnuEditIndent, 'm_e', 'bl_ind');
187    DoLocMenuitem(ini, mnuEditUnindent, 'm_e', 'bl_uind');
188    DoLocMenuitem(ini, mnuEditTrim, 'm_e', 'tr_a');
189    DoLocMenuitem(ini, mnuEditTrimL, 'm_e', 'tr_l');
190    DoLocMenuitem(ini, mnuEditTrimR, 'm_e', 'tr_r');
191    DoLocMenuitem(ini, mnuEditTabToSp, 'm_e', 'con_t');
192    DoLocMenuitem(ini, mnuEditSpToTab, 'm_e', 'con_s');
193
194    DoLocString(msgTextCaseMenu, ini, 'm_e', 'cas_');
195    DoLocString(msgTextCaseUpper, ini, 'm_e', 'cas_u');
196    DoLocString(msgTextCaseLower, ini, 'm_e', 'cas_l');
197    DoLocString(msgTextCaseTitle, ini, 'm_e', 'cas_t');
198    DoLocString(msgTextCaseInvert, ini, 'm_e', 'cas_i');
199    DoLocString(msgTextCaseSentence, ini, 'm_e', 'cas_s');
200
201    if Assigned(mnuCaseSub) then
202      mnuCaseSub.Caption:= msgTextCaseMenu;
203    if Assigned(mnuCaseUp) then
204      mnuCaseUp.Caption:= msgTextCaseUpper;
205    if Assigned(mnuCaseLow) then
206      mnuCaseLow.Caption:= msgTextCaseLower;
207    if Assigned(mnuCaseTitle) then
208      mnuCaseTitle.Caption:= msgTextCaseTitle;
209    if Assigned(mnuCaseInvert) then
210      mnuCaseInvert.Caption:= msgTextCaseInvert;
211    if Assigned(mnuCaseSent) then
212      mnuCaseSent.Caption:= msgTextCaseSentence;
213
214    DoLocMenuitem(ini, mnuEditCharmap, 'm_e', 'map');
215
216    DoLocMenuitem(ini, mnuSel, 'm_se', '_');
217    DoLocMenuitem(mnuSelAll, cStrMenuitemSelectAll);
218    DoLocMenuitem(ini, mnuSelSplit, 'm_se', 'sp');
219    DoLocMenuitem(ini, mnuSelExtLine, 'm_se', 'ex');
220    DoLocMenuitem(ini, mnuSelExtWord, 'm_se', 'ex_wo');
221    DoLocMenuitem(ini, mnuSelInvert, 'm_se', 'in');
222
223    DoLocMenuitem(ini, mnuCaretsCancel, 'm_se', 'can');
224    DoLocMenuitem(ini, mnuCaretsExtSub, 'm_se', 'm_');
225    DoLocMenuitem(ini, mnuCaretsUp1Line, 'm_se', 'u_l');
226    DoLocMenuitem(ini, mnuCaretsUp1Page, 'm_se', 'u_p');
227    DoLocMenuitem(ini, mnuCaretsUpBegin, 'm_se', 'u_z');
228    DoLocMenuitem(ini, mnuCaretsDown1Line, 'm_se', 'd_l');
229    DoLocMenuitem(ini, mnuCaretsDown1Page, 'm_se', 'd_p');
230    DoLocMenuitem(ini, mnuCaretsDownEnd, 'm_se', 'd_z');
231
232    DoLocMenuitem(ini, mnuSr, 'm_sr', '_');
233    DoLocMenuitem(ini, mnuFindDlg, 'm_sr', 'f');
234    DoLocMenuitem(ini, mnuFindRepDialog, 'm_sr', 'r');
235
236    DoLocMenuitem(ini, mnuFindNext, 'm_sr', 'f_n');
237    DoLocMenuitem(ini, mnuFindPrev, 'm_sr', 'f_p');
238    DoLocMenuitem(ini, mnuFindWordNext, 'm_sr', 'w_n');
239    DoLocMenuitem(ini, mnuFindWordPrev, 'm_sr', 'w_p');
240
241    DoLocMenuitem(ini, mnuGotoLine, 'm_sr', 'g_l');
242    DoLocMenuitem(ini, mnuGotoBm, 'm_sr', 'g_b');
243
244    DoLocMenuitem(ini, mnuBmSub, 'm_sr', 'b_');
245    DoLocMenuitem(ini, mnuBmNext, 'm_sr', 'b_n');
246    DoLocMenuitem(ini, mnuBmPrev, 'm_sr', 'b_p');
247    DoLocMenuitem(ini, mnuBmToggle, 'm_sr', 'b_to');
248    DoLocMenuitem(ini, mnuBmInvert, 'm_sr', 'b_in');
249    DoLocMenuitem(ini, mnuBmPlaceCarets, 'm_sr', 'b_ca');
250    DoLocMenuitem(ini, mnuBmPlaceOnCarets, 'm_sr', 'b_ca2');
251    DoLocMenuitem(ini, mnuBmClear, 'm_sr', 'b_cl');
252    DoLocMenuitem(ini, mnuBmCopyLines, 'm_sr', 'b_cp');
253    DoLocMenuitem(ini, mnuBmDeleteLines, 'm_sr', 'b_de');
254
255    DoLocMenuitem(ini, mnuView, 'm_v', '_');
256    //DoLocMenuitem(ini, mnuGroups, 'm_v', 'g_');
257    DoLocMenuitem(ini, mnuGr1, 'm_v', 'g1');
258    DoLocMenuitem(ini, mnuGr2H, 'm_v', 'g2h');
259    DoLocMenuitem(ini, mnuGr2V, 'm_v', 'g2v');
260    DoLocMenuitem(ini, mnuGr3H, 'm_v', 'g3h');
261    DoLocMenuitem(ini, mnuGr3V, 'm_v', 'g3v');
262    DoLocMenuitem(ini, mnuGr1p2H, 'm_v', 'g12h');
263    DoLocMenuitem(ini, mnuGr1p2V, 'm_v', 'g12v');
264    DoLocMenuitem(ini, mnuGr4H, 'm_v', 'g4h');
265    DoLocMenuitem(ini, mnuGr4V, 'm_v', 'g4v');
266    DoLocMenuitem(ini, mnuGr4G, 'm_v', 'g4g');
267    DoLocMenuitem(ini, mnuGr6H, 'm_v', 'g6h');
268    DoLocMenuitem(ini, mnuGr6V, 'm_v', 'g6v');
269    DoLocMenuitem(ini, mnuGr6, 'm_v', 'g6');
270
271    DoLocMenuitem(ini, mnuViewSplitSub, 'm_v', 's_');
272    DoLocMenuitem(ini, mnuViewSplitNo, 'm_v', 'sp_n');
273    DoLocMenuitem(ini, mnuViewSplitV, 'm_v', 'sp_v');
274    DoLocMenuitem(ini, mnuViewSplitH, 'm_v', 'sp_h');
275
276    DoLocMenuitem(ini, mnuViewHint1, 'm_v', 'st_l');
277    DoLocMenuitem(ini, mnuViewHint2, 'm_v', 'st_g');
278
279    DoLocMenuitem(ini, mnuViewWrap, 'm_v', 't_ww');
280    DoLocMenuitem(ini, mnuViewNums, 'm_v', 't_nu');
281    DoLocMenuitem(ini, mnuViewFold, 'm_v', 't_fo');
282    DoLocMenuitem(ini, mnuViewRuler, 'm_v', 't_ru');
283    DoLocMenuitem(ini, mnuViewMinimap, 'm_v', 't_mi');
284    DoLocMenuitem(ini, mnuViewMicromap, 'm_v', 't_mo');
285
286    DoLocMenuitem(ini, mnuViewUnpri, 'm_v', 'u_');
287    DoLocMenuitem(ini, mnuViewUnpriShow, 'm_v', 'u_sh');
288    DoLocMenuitem(ini, mnuViewUnpriSpaces, 'm_v', 'u_sp');
289    DoLocMenuitem(ini, mnuViewUnpriSpacesTail, 'm_v', 'u_spt');
290    DoLocMenuitem(ini, mnuViewUnpriEnds, 'm_v', 'u_e');
291    DoLocMenuitem(ini, mnuViewUnpriEndsDet, 'm_v', 'u_ed');
292
293    DoLocMenuitem(ini, mnuViewToolbar, 'm_v', 't_tb');
294    DoLocMenuitem(ini, mnuViewStatus, 'm_v', 't_sb');
295    DoLocMenuitem(ini, mnuViewSidebar, 'm_v', 't_sl');
296    DoLocMenuitem(ini, mnuViewSide, 'm_v', 't_si');
297    DoLocMenuitem(ini, mnuViewBottom, 'm_v', 't_bo');
298    DoLocMenuitem(ini, mnuViewFloatSide, 'm_v', 't_fl_s');
299    DoLocMenuitem(ini, mnuViewFloatBottom, 'm_v', 't_fl_b');
300    DoLocMenuitem(ini, mnuViewFullscr, 'm_v', 't_fs');
301    DoLocMenuitem(ini, mnuViewDistFree, 'm_v', 't_dis');
302    DoLocMenuitem(ini, mnuViewOnTop, 'm_v', 't_ao');
303
304    DoLocMenuitem(ini, mnuPlugins, 'm_o', 'pl_');
305    DoLocMenuitem(ini, mnuOp, 'm_o', '_');
306
307    DoLocMenuitem(ini, mnuOpDefault, 'm_o', 'df');
308    DoLocMenuitem(ini, mnuOpUser, 'm_o', 'us');
309    DoLocMenuitem(ini, mnuOpDefaultUser, 'm_o', 'usd');
310    DoLocMenuitem(ini, mnuOpLexer, 'm_o', 'lx');
311    DoLocMenuitem(ini, mnuOpThemeUi, 'm_o', 'cou');
312    DoLocMenuitem(ini, mnuOpThemeSyntax, 'm_o', 'cos');
313    //DoLocMenuitem(ini, mnuOpKeys, 'm_o', 'ke');
314
315    DoLocMenuitem(ini, mnuFontSub, 'm_o', 'f_');
316    DoLocMenuitem(ini, mnuFontText, 'm_o', 'f_t');
317    DoLocMenuitem(ini, mnuFontUi, 'm_o', 'f_u');
318    DoLocMenuitem(ini, mnuFontOutput, 'm_o', 'f_o');
319
320    DoLocMenuitem(ini, mnuLexers, 'm_o', 'l_');
321    DoMenuitemEllipsis(mnuLexers);
322    DoLocMenuitem(ini, mnuOpLexSub, 'm_o', 'l_');
323    DoLocMenuitem(ini, mnuOpLexProp, 'm_o', 'l_pr');
324    DoLocMenuitem(ini, mnuOpLexLib, 'm_o', 'l_li');
325    DoLocMenuitem(ini, mnuOpLexMap, 'm_o', 'l_map');
326    DoLocMenuitem(ini, mnuOpPlugins, 'm_o', 'pl');
327
328    DoLocMenuitem(ini, mnuOpThemes, 'm_o', 'thm');
329    DoLocMenuitem(ini, mnuOpLangs, 'm_o', 'tr_');
330
331    msgMenuTranslations:= StringReplace(
332      ini.ReadString('m_o', 'tr_', msgMenuTranslations),
333      '&', '', [rfReplaceAll]);
334    msgMenuThemesUI:= StringReplace(
335      ini.ReadString('m_o', 'the_u', msgMenuThemesUI),
336      '&', '', [rfReplaceAll]);
337    msgMenuThemesSyntax:= StringReplace(
338      ini.ReadString('m_o', 'the_s', msgMenuThemesSyntax),
339      '&', '', [rfReplaceAll]);
340
341    DoMenuitemEllipsis(mnuOpThemeUi);
342    DoMenuitemEllipsis(mnuOpThemeSyntax);
343    //DoMenuitemEllipsis(mnuOpKeys);
344    DoMenuitemEllipsis(mnuOpThemes);
345    DoMenuitemEllipsis(mnuOpLangs);
346
347    DoLocMenuitem(ini, mnuHelp, 'm_h', '_');
348    DoLocMenuitem(ini, mnuHelpCmd, 'm_h', 'co');
349    DoLocMenuitem(ini, mnuHelpForum, 'm_h', 'fo');
350    DoLocMenuitem(ini, mnuHelpWiki, 'm_h', 'wi');
351    //DoLocMenuitem(ini, mnuHelpChangelog, 'm_h', 'ch');
352    DoLocMenuitem(ini, mnuHelpIssues, 'm_h', 'iss');
353    DoLocMenuitem(ini, mnuHelpAbout, 'm_h', 'ab');
354    DoLocMenuitem(ini, mnuHelpCheckUpd, 'm_h', 'chk');
355
356    DoLocString(msgCommentLineAdd, ini, 'tb', 'cm_ln_add');
357    DoLocString(msgCommentLineDel, ini, 'tb', 'cm_ln_del');
358    DoLocString(msgCommentLineToggle, ini, 'tb', 'cm_ln_tog');
359    DoLocString(msgCommentStreamToggle, ini, 'tb', 'cm_st_tog');
360
361    msgDialogTitleOpen:= ini.ReadString('ui', 'dl_op', msgDialogTitleOpen);
362    msgDialogTitleSaveAs:= ini.ReadString('ui', 'dl_sav', msgDialogTitleSaveAs);
363    msgDialogTitleSelFolder:= ini.ReadString('ui', 'dl_fld', msgDialogTitleSelFolder);
364
365    msgPanelMenu:= ini.ReadString('ui', 't_menu', msgPanelMenu_Init);
366    msgPanelTree:= ini.ReadString('ui', 't_tre', msgPanelTree_Init);
367    msgPanelProject:= ini.ReadString('ui', 't_proj', msgPanelProject_Init);
368    msgPanelTabs:= ini.ReadString('ui', 't_tabs', msgPanelTabs_Init);
369    msgPanelSnippet:= ini.ReadString('ui', 't_snip', msgPanelSnippet_Init);
370
371    msgPanelConsole:= ini.ReadString('ui', 't_con', msgPanelConsole_Init);
372    msgPanelOutput:= ini.ReadString('ui', 't_out', msgPanelOutput_Init);
373    msgPanelValidate:= ini.ReadString('ui', 't_val', msgPanelValidate_Init);
374    msgPanelSearch:= ini.ReadString('ui', 't_find', msgPanelSearch_Init);
375    //
376    DoLocToolbarButtonHint(ToolbarSideTop, msgPanelMenu_Init, msgPanelMenu);
377    DoLocToolbarButtonHint(ToolbarSideTop, msgPanelTree_Init, msgPanelTree);
378    DoLocToolbarButtonHint(ToolbarSideTop, msgPanelProject_Init, msgPanelProject);
379    DoLocToolbarButtonHint(ToolbarSideTop, msgPanelTabs_Init, msgPanelTabs);
380    DoLocToolbarButtonHint(ToolbarSideTop, msgPanelSnippet_Init, msgPanelSnippet);
381
382    DoLocToolbarButtonHint(ToolbarSideLow, msgPanelConsole_Init, msgPanelConsole);
383    DoLocToolbarButtonHint(ToolbarSideLow, msgPanelOutput_Init, msgPanelOutput);
384    DoLocToolbarButtonHint(ToolbarSideLow, msgPanelValidate_Init, msgPanelValidate);
385    DoLocToolbarButtonHint(ToolbarSideMid, msgPanelSearch_Init, msgPanelSearch);
386    //
387    DoLocToolbarButtonHint(ToolbarMain, 'f_new', msgFileNew);
388    DoLocToolbarButtonHint(ToolbarMain, 'f_open', msgFileOpen);
389    DoLocToolbarButtonHint(ToolbarMain, 'f_save', msgFileSave);
390    DoLocToolbarButtonHint(ToolbarMain, 'e_copy', cStrMenuitemCopy);
391    DoLocToolbarButtonHint(ToolbarMain, 'e_cut', cStrMenuitemCut);
392    DoLocToolbarButtonHint(ToolbarMain, 'e_paste', cStrMenuitemPaste);
393    DoLocToolbarButtonHint(ToolbarMain, 'e_undo', cStrMenuitemUndo);
394    DoLocToolbarButtonHint(ToolbarMain, 'e_redo', cStrMenuitemRedo);
395    if Assigned(mnuViewUnpri) then
396      DoLocToolbarButtonHint(ToolbarMain, 'unpri', mnuViewUnpri.Caption);
397    if Assigned(mnuViewMinimap) then
398      DoLocToolbarButtonHint(ToolbarMain, 'map', mnuViewMinimap.Caption);
399    if Assigned(mnuEditIndent) then
400      DoLocToolbarButtonHint(ToolbarMain, 'indent', mnuEditIndent.Caption);
401    if Assigned(mnuEditUnindent) then
402      DoLocToolbarButtonHint(ToolbarMain, 'unindent', mnuEditUnindent.Caption);
403    DoLocToolbarButtonHint(ToolbarMain, 'opt', ini.ReadString('tb', 'opt', 'Options Editor'));
404
405    msgUntitledTab:= ini.ReadString('ui', 'unt', msgUntitledTab);
406    msgAllFiles:= ini.ReadString('ui', 'allf', msgAllFiles);
407    msgThemeDefault:= ini.ReadString('ui', 'deft', msgThemeDefault);
408    msgThemeName:= ini.ReadString('ui', 'th_nm', msgThemeName);
409    //cTextEditorLocked:= ini.ReadString('ui', 'ed_w', cTextEditorLocked);
410    cTextHintScrollPrefix:= ini.ReadString('ui', 'line', cTextHintScrollPrefix);
411    msgTooltipClearFilter:= ini.ReadString('ui', 'clr_f', msgTooltipClearFilter);
412    CodeTreeFilterReset.Hint:= msgTooltipClearFilter;
413    msgMenuLexersForFile:= ini.ReadString('ui', 'lex_dlg', msgMenuLexersForFile);
414
415    msgTooltipCloseTab:= ini.ReadString('ui', 'ti_x', msgTooltipCloseTab);
416    msgTooltipAddTab:= ini.ReadString('ui', 'ti_p', msgTooltipAddTab);
417    msgTooltipArrowLeft:= ini.ReadString('ui', 'ti_al', msgTooltipArrowLeft);
418    msgTooltipArrowRight:= ini.ReadString('ui', 'ti_ar', msgTooltipArrowRight);
419    msgTooltipArrowMenu:= ini.ReadString('ui', 'ti_am', msgTooltipArrowMenu);
420    DoApplyTranslationToGroups(Groups);
421
422    msgStatusbarTextTab:= ini.ReadString('sta', 'tsz', msgStatusbarTextTab);
423    msgStatusbarTextSpaces:= ini.ReadString('sta', 'tsp', msgStatusbarTextSpaces);
424
425    msgStatusbarTextLine:= ini.ReadString('sta', '_ln', msgStatusbarTextLine);
426    msgStatusbarTextCol:= ini.ReadString('sta', '_col', msgStatusbarTextCol);
427    msgStatusbarTextSel:= ini.ReadString('sta', '_sel', msgStatusbarTextSel);
428    msgStatusbarTextLinesSel:= ini.ReadString('sta', '_lsel', msgStatusbarTextLinesSel);
429    msgStatusbarTextCarets:= ini.ReadString('sta', '_cr', msgStatusbarTextCarets);
430
431    msgStatusbarWrapStates[0]:= ini.ReadString('sta', 'wr0', msgStatusbarWrapStates[0]);
432    msgStatusbarWrapStates[1]:= ini.ReadString('sta', 'wr1', msgStatusbarWrapStates[1]);
433    msgStatusbarWrapStates[2]:= ini.ReadString('sta', 'wr2', msgStatusbarWrapStates[2]);
434    msgStatusbarWrapStates[3]:= ini.ReadString('sta', 'wr3', msgStatusbarWrapStates[3]);
435
436    msgStatusbarHintCaret:= ini.ReadString('sta', 'crt', msgStatusbarHintCaret);
437    msgStatusbarHintEnc:= ini.ReadString('sta', 'enc', msgStatusbarHintEnc);
438    msgStatusbarHintLexer:= ini.ReadString('sta', 'lex', msgStatusbarHintLexer);
439    msgStatusbarHintEnds:= ini.ReadString('sta', 'end', msgStatusbarHintEnds);
440    msgStatusbarHintSelMode:= ini.ReadString('sta', 'sel', msgStatusbarHintSelMode);
441    msgStatusbarHintTabSize:= ini.ReadString('sta', 'tab', msgStatusbarHintTabSize);
442    msgStatusbarHintInsOvr:= ini.ReadString('sta', 'ins', msgStatusbarHintInsOvr);
443    msgStatusbarHintWrap:= ini.ReadString('sta', 'wrp', msgStatusbarHintWrap);
444    UpdateStatusbarHints;
445
446    Sep.Init(ini.ReadString('sta', 'view', 'Viewer,Text,Binary,Hex,Unicode,Unicode/Hex'));
447    Sep.GetItemStr(msgViewer);
448    Sep.GetItemStr(msgViewerModes[vbmodeText]);
449    Sep.GetItemStr(msgViewerModes[vbmodeBinary]);
450    Sep.GetItemStr(msgViewerModes[vbmodeHex]);
451    Sep.GetItemStr(msgViewerModes[vbmodeUnicode]);
452    Sep.GetItemStr(msgViewerModes[vbmodeUHex]);
453
454    msgDefault:= ini.ReadString('sta', 'def', msgDefault);
455    msgNoLexer:= ini.ReadString('ui', 'nlex', msgNoLexer);
456    msgFileClearList:= ini.ReadString('ui', 'clr', msgFileClearList);
457    UpdateMenuRecent(nil);
458
459    DoLocString(msgFinderHintRegex,     ini, 'ui', 'fnd_re');
460    DoLocString(msgFinderHintCase,      ini, 'ui', 'fnd_case');
461    DoLocString(msgFinderHintWords,     ini, 'ui', 'fnd_word');
462    DoLocString(msgFinderHintBack,      ini, 'ui', 'fnd_back');
463    DoLocString(msgFinderHintWrapped,   ini, 'ui', 'fnd_wrap');
464    DoLocString(msgFinderHintInSel,     ini, 'ui', 'fnd_sel');
465    DoLocString(msgFinderHintFromCaret, ini, 'ui', 'fnd_crt');
466
467    DoLocString(msgButtonOk,     ini, 'ui', 'b_ok');
468    DoLocString(msgButtonCancel, ini, 'ui', 'b_can');
469    DoLocString(msgButtonApply,  ini, 'ui', 'b_ap');
470    DoLocString(msgButtonClose,  ini, 'ui', 'b_cl');
471    DoLocString(msgButtonYes,    ini, 'ui', 'b_y');
472    DoLocString(msgButtonYesAll, ini, 'ui', 'b_ya');
473    DoLocString(msgButtonNo,     ini, 'ui', 'b_n');
474    DoLocString(msgButtonNoAll,  ini, 'ui', 'b_na');
475    DoLocString(msgButtonAbort,  ini, 'ui', 'b_ab');
476    DoLocString(msgButtonRetry,  ini, 'ui', 'b_re');
477    DoLocString(msgButtonIgnore, ini, 'ui', 'b_ig');
478
479    DoLocString(CompletionOpsHtml.PrefixTag, ini, 'ui', 'html_tag');
480    DoLocString(CompletionOpsHtml.PrefixAttrib, ini, 'ui', 'html_atr');
481    DoLocString(CompletionOpsHtml.PrefixValue, ini, 'ui', 'html_val');
482    DoLocString(CompletionOpsHtml.PrefixFile, ini, 'ui', 'html_file');
483    DoLocString(CompletionOpsHtml.PrefixDir, ini, 'ui', 'html_dir');
484
485    CompletionOpsCss.PrefixProp:= CompletionOpsHtml.PrefixAttrib;
486    CompletionOpsCss.PrefixAtRule:= CompletionOpsHtml.PrefixValue;
487    CompletionOpsCss.PrefixPseudo:= CompletionOpsHtml.PrefixValue;
488    CompletionOpsCss.PrefixFile:= CompletionOpsHtml.PrefixFile;
489    CompletionOpsCss.PrefixDir:= CompletionOpsHtml.PrefixDir;
490
491    CompletionOpsFile.PrefixDir:= CompletionOpsHtml.PrefixDir;
492    CompletionOpsFile.PrefixFile:= CompletionOpsHtml.PrefixFile;
493
494    DoLocString(msgLinkOpenSite, ini, 'ui', 'lnk_a');
495    DoLocString(msgLinkOpenEmail, ini, 'ui', 'lnk_e');
496
497    DoLocMenuitem(mnuTextUndo, cStrMenuitemUndo);
498    DoLocMenuitem(mnuTextRedo, cStrMenuitemRedo);
499    DoLocMenuitem(mnuTextCut, cStrMenuitemCut);
500    DoLocMenuitem(mnuTextCopy, cStrMenuitemCopy);
501    DoLocMenuitem(mnuTextPaste, cStrMenuitemPaste);
502    DoLocMenuitem(mnuTextDelete, cStrMenuitemDelete);
503    DoLocMenuitem(mnuTextSel, cStrMenuitemSelectAll);
504    DoLocMenuitem(ini, mnuTextGotoDef, 'ct', 'godef');
505    DoLocMenuitem(ini, mnuTextOpenUrl, 'ct', 'url');
506
507    DoLocString(msgConsoleClear, ini, 'ct', 'clr');
508    DoLocString(msgConsoleNavigate, ini, 'ct', 'nav');
509    DoLocString(msgConsoleToggleWrap, ini, 'ct', 'wr');
510
511    DoLocString(cStrMenuitemFoldAll, ini, 'ct', 'fld_a');
512    DoLocString(cStrMenuitemUnfoldAll, ini, 'ct', 'fld_un');
513    DoLocString(cStrMenuitemFoldLevel, ini, 'ct', 'fld_lv');
514    DoLocString(msgTreeSorted, ini, 'ct', 'tr_sr');
515
516    DoLocString(msgTabsizeUseSpaces, ini, 'ct', 'ussp');
517    DoLocString(msgTabsizeConvSpaces, ini, 'ct', 'cnv_t');
518    DoLocString(msgTabsizeConvTabs, ini, 'ct', 'cnv_s');
519
520    ButtonCancel.Caption:= msgButtonCancel;
521
522    //----------------strings
523    DoLocString(msgCannotOpenFile                , ini, 'se', 'OpenFile');
524    DoLocString(msgCannotFindFile                , ini, 'se', 'FindFile');
525    DoLocString(msgCannotFindLexerInLibrary      , ini, 'se', 'FindLexerInLibrary');
526    DoLocString(msgCannotFindLexerFile           , ini, 'se', 'FindLexerFile');
527    DoLocString(msgCannotFindSublexerInLibrary   , ini, 'se', 'FindSublexerInLibrary');
528    DoLocString(msgCannotCreateDir               , ini, 'se', 'CreateDir');
529    DoLocString(msgCannotSaveFile                , ini, 'se', 'SaveFile');
530    DoLocString(msgCannotSaveFileWithEnc         , ini, 'se', 'SaveWithEnc');
531    DoLocString(msgCannotSaveUserConf            , ini, 'se', 'SaveUserConf');
532    DoLocString(msgCannotReadConfig              , ini, 'se', 'ReadConf');
533    DoLocString(msgCannotReloadUntitledTab       , ini, 'se', 'ReloadUntitledTab');
534    DoLocString(msgCannotFindMatch               , ini, 'se', 'FindMatch');
535    DoLocString(msgCannotFindInstallInfInZip     , ini, 'se', 'FindInstallInfInZip');
536    DoLocString(msgCannotFindBookmarks           , ini, 'se', 'FindBookmarks');
537    DoLocString(msgCannotHandleZip               , ini, 'se', 'HandleZip');
538    DoLocString(msgCannotInstallAddonApi         , ini, 'se', 'AddonApi');
539    DoLocString(msgCannotAutocompleteMultiCarets , ini, 'se', 'AutocompleteCarets');
540
541    DoLocString(msgCmdPaletteCaption             , ini, 'si', 'CmdPalette');
542    DoLocString(msgStatusChangedLinesCount       , ini, 'si', 'ChangedLineCount');
543    DoLocString(msgStatusPluginHotkeyBusy        , ini, 'si', 'PluginHotkeyBusy');
544    DoLocString(msgStatusSyntaxThemesOff         , ini, 'si', 'SyntaxThemesOff');
545    DoLocString(msgStatusIncorrectInstallInfInZip, ini, 'si', 'IncorrectInstallInfInZip');
546    DoLocString(msgStatusUnsupportedAddonType    , ini, 'si', 'UnsupportedAddonType');
547    DoLocString(msgStatusPackageContains         , ini, 'si', 'PackageContains');
548    DoLocString(msgStatusPackageName             , ini, 'si', 'PackageName');
549    DoLocString(msgStatusPackageType             , ini, 'si', 'PackageType');
550    DoLocString(msgStatusPackageDesc             , ini, 'si', 'PackageDesc');
551    DoLocString(msgStatusPackageCommand          , ini, 'si', 'PackageCommand');
552    DoLocString(msgStatusPackageEvents           , ini, 'si', 'PackageEvents');
553    DoLocString(msgStatusPackageLexer            , ini, 'si', 'PackageLexer');
554    DoLocString(msgStatusPackageAutoCompletion   , ini, 'si', 'PackageAutocompl');
555    DoLocString(msgStatusPackageMissedLexerMap   , ini, 'si', 'PackageMissLexmap');
556    DoLocString(msgStatusInstalledNeedRestart    , ini, 'si', 'InstalledNeedRestart');
557    DoLocString(msgStatusCommandOnlyForLexers    , ini, 'si', 'CommandOnlyForLexers');
558    DoLocString(msgStatusOpenedBrowser           , ini, 'si', 'OpenedBrowser');
559    DoLocString(msgStatusCopiedLink              , ini, 'si', 'CopiedLink');
560    DoLocString(msgStatusAddonInstalled          , ini, 'si', 'AddonInstalled');
561    DoLocString(msgStatusAddonsInstalled         , ini, 'si', 'AddonsInstalled');
562    DoLocString(msgStatusOpened                  , ini, 'si', 'Opened');
563    DoLocString(msgStatusReopened                , ini, 'si', 'Reopened');
564    DoLocString(msgStatusBadRegex                , ini, 'si', 'BadRegex');
565    DoLocString(msgStatusFoundNextMatch          , ini, 'si', 'FoundNextMatch');
566    DoLocString(msgStatusFoundFragments          , ini, 'si', 'FoundFragments');
567    DoLocString(msgStatusTryingAutocomplete      , ini, 'si', 'TryingAutocomplete');
568    DoLocString(msgStatusNoLineCmtDefined        , ini, 'si', 'NoLineCmtDefined');
569    DoLocString(msgStatusReplaceCount            , ini, 'si', 'ReplaceCount');
570    DoLocString(msgStatusFindCount               , ini, 'si', 'FindCount');
571    DoLocString(msgStatusReadingOps              , ini, 'si', 'ReadingOps');
572    DoLocString(msgStatusSavedFile               , ini, 'si', 'SavedFile');
573    DoLocString(msgStatusReadonly                , ini, 'si', 'Readonly');
574    //DoLocString(msgStatusMacroRec                , ini, 'si', 'MacroRec');
575    DoLocString(msgStatusPictureNxN              , ini, 'si', 'PictureNxN');
576    DoLocString(msgStatusCancelled               , ini, 'si', 'Cancelled');
577    DoLocString(msgStatusBadLineNum              , ini, 'si', 'BadLineNum');
578    DoLocString(msgStatusEndsChanged             , ini, 'si', 'EndsChanged');
579    DoLocString(msgStatusEncChanged              , ini, 'si', 'EncChanged');
580    DoLocString(msgStatusGotoFileLineCol         , ini, 'si', 'FileLineCol');
581    DoLocString(msgStatusClickingLogLine         , ini, 'si', 'ClickingLogLine');
582    DoLocString(msgStatusNoGotoDefinitionPlugins , ini, 'si', 'NoGotoDefinitionPlugins');
583    DoLocString(msgStatusFilenameAlreadyOpened   , ini, 'si', 'FilenameAlreadyOpened');
584    DoLocString(msgStatusNeedToCloseTabSavedOrDup, ini, 'si', 'NeedToCloseTabSavedOrDup');
585    DoLocString(msgStatusHotkeyBusy              , ini, 'si', 'HotkeyBusy');
586    DoLocString(msgGotoDialogInfoExt             , ini, 'si', 'GotoInfoExt');
587
588    DoLocString(msgConfirmSyntaxThemeSameName    , ini, 'sc', 'ThemeSyntaxSame');
589    DoLocString(msgConfirmInstallIt              , ini, 'sc', 'InstallIt');
590    DoLocString(msgConfirmHotkeyList             , ini, 'sc', 'HotkeyList');
591    DoLocString(msgConfirmOkNoHotkeys            , ini, 'sc', 'OkWithoutKeys');
592    DoLocString(msgConfirmFileChangedOutside     , ini, 'sc', 'FileChangedOutside');
593    DoLocString(msgConfirmReloadIt               , ini, 'sc', 'ReloadIt');
594    DoLocString(msgConfirmReloadYes              , ini, 'sc', 'ReloadYes');
595    DoLocString(msgConfirmReloadNoMore           , ini, 'sc', 'ReloadNoMore');
596    DoLocString(msgConfirmReloadItHotkeysSess    , ini, 'sc', 'ReloadItHotkeysSess');
597    DoLocString(msgConfirmOpenCreatedDoc         , ini, 'sc', 'OpenCreatedDoc');
598    DoLocString(msgConfirmSaveColorsToFile       , ini, 'sc', 'SaveColorsToFile');
599    DoLocString(msgConfirmSaveModifiedTab        , ini, 'sc', 'SaveModifiedTab');
600    DoLocString(msgConfirmClosePinnedTab         , ini, 'sc', 'ClosePinned');
601    DoLocString(msgConfirmReopenModifiedTab      , ini, 'sc', 'ReopenModifiedTab');
602    DoLocString(msgConfirmReloadFileWithEnc      , ini, 'sc', 'ReloadFileWithEnc');
603    DoLocString(msgConfirmCreateNewFile          , ini, 'sc', 'CreateNewFile');
604    DoLocString(msgConfirmCreateUserConfig       , ini, 'sc', 'CreateUserConf');
605    DoLocString(msgConfirmCloseAndDeleteFile     , ini, 'sc', 'CloseDelFile');
606    DoLocString(msgConfirmDeleteLexer            , ini, 'sc', 'DeleteLexer');
607    DoLocString(msgConfirmRemoveStylesFromBackup , ini, 'sc', 'RemoveStylesFromBackup');
608    DoLocString(msgConfirmHotkeyBusy             , ini, 'sc', 'HotkeyBusy');
609    DoLocString(msgConfirmReplaceGlobal          , ini, 'sc', 'ReplaceGlobal');
610
611  finally
612    FreeAndNil(ini);
613  end;
614
615  if Assigned(fmFind) then
616    fmFind.Localize;
617  if Assigned(fmCharmaps) then
618    fmCharmaps.Localize;
619
620  //hack to localize already opened tab title
621  if FrameCount>0 then
622    with Frames[0] do
623      if TabCaption='Untitled1' then
624        TabCaption:= msgUntitledTab+'1';
625end;
626
627