WINGs: Better presentation for example code in the tutorial
[whome.git] / wmaker_i18n.php
blob361543c89aeddf65ea4d59e808c27dcc2286571c
1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
2 <html>
3 <!-- This manual is for WINDOW MAKER window manager, version git#next.
5 Copyright (C) 2015 The Window Maker Team.
7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 2 of the License, or
10 (at your option) any later version.
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
17 You should have received a copy of the GNU General Public License along
18 with this program, see file COPYING for details. -->
19 <!-- Created by GNU Texinfo 6.1, http://www.gnu.org/software/texinfo/ -->
20 <head>
21 <title>Window Maker Internationalisation 1.0</title>
23 <meta name="description" content="Window Maker Internationalisation 1.0">
24 <meta name="keywords" content="Window Maker Internationalisation 1.0">
25 <meta name="resource-type" content="document">
26 <meta name="distribution" content="global">
27 <meta name="Generator" content="makeinfo">
28 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
29 <link href="#Top" rel="start" title="Top">
30 <link href="#SEC_Contents" rel="contents" title="Table of Contents">
31 <link href="dir.html#Top" rel="up" title="(dir)">
32 <link href="title.css" rel="stylesheet" type="text/css" />
33 </head>
35 <body lang="en">
37 <?php include("dock.php"); ?>
38 <?php include("header.php"); ?>
40 <a name="Top"></a>
41 <a name="Window-Maker-Internationalisation"></a>
42 <h1 class="top">Window Maker Internationalisation</h1>
44 <p>A guide to enable support for language translations
45 in <small>WINDOW MAKER</small> and to the contributors
46 who want to help translating.
47 </p>
48 <a name="SEC_Contents"></a>
49 <h2 class="contents-heading">Table of Contents</h2>
51 <div class="contents">
53 <ul class="no-bullet">
54 <li><a name="toc-Enabling-Languages-support-1" href="#Enabling-Languages-support">1 Enabling Languages support</a>
55 <ul class="no-bullet">
56 <li><a name="toc-Getting-the-list-of-supported-languages" href="#Getting-the-list-of-supported-languages">1.1 Getting the list of supported languages</a></li>
57 <li><a name="toc-Translations-for-Menus" href="#Translations-for-Menus">1.2 Translations for Menus</a></li>
58 <li><a name="toc-Setting-LINGUAS-at-system-level" href="#Setting-LINGUAS-at-system-level">1.3 Setting <code>LINGUAS</code> at system level</a></li>
59 </ul></li>
60 <li><a name="toc-Choosing-the-Language-1" href="#Choosing-the-Language">2 Choosing the Language</a></li>
61 <li><a name="toc-Troubleshooting-1" href="#Troubleshooting">3 Troubleshooting</a></li>
62 <li><a name="toc-Contribute-to-Translations-1" href="#Contribute-to-Translations">4 Contribute to Translations</a>
63 <ul class="no-bullet">
64 <li><a name="toc-Install-the-latest-sources" href="#Install-the-latest-sources">4.1 Install the latest sources</a></li>
65 <li><a name="toc-Updating-the-Translations" href="#Updating-the-Translations">4.2 Updating the Translations</a></li>
66 <li><a name="toc-Translate-the-Man-Pages" href="#Translate-the-Man-Pages">4.3 Translate the Man Pages</a></li>
67 <li><a name="toc-Checking-the-Result" href="#Checking-the-Result">4.4 Checking the Result</a></li>
68 <li><a name="toc-Submitting-your-Contribution" href="#Submitting-your-Contribution">4.5 Submitting your Contribution</a></li>
69 </ul></li>
70 </ul>
71 </div>
74 <br>
75 <p>This manual is for Window Maker, version git#next.
76 </p>
80 <hr>
81 <a name="Enabling-Languages-support"></a>
82 <a name="Enabling-Languages-support-1"></a>
83 <h2 class="chapter">1 Enabling Languages support</h2>
85 <p><small>WINDOW MAKER</small> has the possibility to be translated in many languages, but by default none of
86 them will be installed, and the support for translation will not be compiled.
87 </p>
88 <p>To enable the translation capabilities, you have to specify which language(s) you want to be
89 installed: this is done with the variable <code>LINGUAS</code> when running the <code>configure</code> script.
90 This variable should contain the space-separated list of languages you want to install.
91 </p>
92 <p>You could for instance enable both French (<code>fr</code>) and Dutch (<code>nl</code>) with this:
93 </p>
94 <div class="example">
95 <pre class="example">./configure LINGUAS=&quot;fr nl&quot;
96 </pre></div>
98 <p>You can of course add any other option that you want to the <code>configure</code> command.
99 From the moment you specify the variable, the <code>configure</code> script will check that you have
100 the appropriate dependencies for this (basically the <code>gettext</code> function and the <code>libintl</code>
101 library); when you run <code>make</code> to compile the project, it will also compile the translation
102 (<code>mo</code> files) for the language(s) you asked (if available, of course), and during
103 <code>make install</code> it will install them in the usual directory.
104 </p>
105 <p>The installation directory can be changed with the standard option <samp>--localedir</samp> to the
106 <code>configure</code> script, the default path being
107 <samp><em>&lt;prefix&gt;</em>/share/locale/<em>&lt;lang&gt;</em>/LC_MESSAGES</samp>).
108 </p>
110 <a name="Getting-the-list-of-supported-languages"></a>
111 <h3 class="section">1.1 Getting the list of supported languages</h3>
113 <p>The naming convention for the languages follows the <cite>ISO 639-1</cite> standard,
114 for which you can find a summary list in the
115 <a href="https://www.gnu.org/software/gettext/manual/html_node/Usual-Language-Codes.html">GNU gettext manual</a>.
116 </p>
117 <p>But as <small>WINDOW MAKER</small> does not support all of them, the <code>configure</code> script will print a
118 warning for each language you specify that it does not know, and sum up at the end the list of
119 enabled languages that will be installed.
120 </p>
121 <p>There is a non-standard possibility to set <code>LINGUAS</code> to <code>list</code>, in which case the
122 <code>configure</code> script will provide you the list of languages it supports, and stop:
123 </p>
124 <div class="example">
125 <pre class="example">./configure LINGUAS=&quot;list&quot;
126 </pre></div>
128 <p>There is also another non-standard possibility to enable all the languages that <small>WINDOW MAKER</small>
129 supports by setting <code>LINGUAS</code> to <code>*</code>.
130 This is an internal trick implemented so the development team can have the command
131 <code>make distcheck</code> include some checks on translations:
132 </p>
133 <div class="example">
134 <pre class="example">./configure LINGUAS='*'
135 </pre></div>
138 <a name="Translations-for-Menus"></a>
139 <h3 class="section">1.2 Translations for Menus</h3>
141 <p>In order to propose an <em>Application Menu</em> (also called <em>Root Menu</em>) that is also
142 translated in the language of the interface, <small>WINDOW MAKER</small> implements two complementary
143 mechanisms:
144 </p>
145 <p>The first, always enabled when i18n support is enabled, is to look for the menu file containing the
146 name of the locale.
147 For example, if the file is called <samp>menu</samp> and the language is set as <code>LANG=fr_FR.utf-8</code>,
148 then <small>WINDOW MAKER</small> will search for, and use the first match found:
149 </p>
150 <ul>
151 <li> <code>menu.fr_FR.utf-8</code>
152 </li><li> <code>menu.fr_FR</code>
153 </li><li> <code>menu.fr</code>
154 </li><li> <code>menu</code>
155 </li></ul>
157 <p>The second possibility, which is not enabled by default, is to be able to use a custom <samp>po</samp>
158 file which contains the translations for the text of the menu.
159 This feature is enabled at compile time, using the option <samp>--with-menu-textdomain</samp> to the
160 <code>configure</code> script. For example, if you specify:
161 </p>
162 <div class="example">
163 <pre class="example">./configure --with-menu-textdomain=WMMenu
164 </pre></div>
166 <p>then the translations for the menu will be searched in the file <samp>WMMenu.mo</samp> located
167 at the standard location, the default path being
168 <samp><em>&lt;prefix&gt;</em>/share/locale/<em>&lt;lang&gt;</em>/LC_MESSAGES/<em>WMMenu</em>.mo</samp>.
169 </p>
170 <p>If you do not enable the feature (the default behaviour, or with an explicit
171 <samp>--without-menu-textdomain</samp>), then <small>WINDOW MAKER</small> will <b>not</b> try to translate the
172 strings, even using its own domain file (<samp>WindowMaker.mo</samp>).
173 </p>
175 <a name="Setting-LINGUAS-at-system-level"></a>
176 <h3 class="section">1.3 Setting <code>LINGUAS</code> at system level</h3>
178 <p>As the variable <code>LINGUAS</code> is quite standard, you also have the possibility to set its value in
179 the <samp>config.site</samp> file for <small>AUTOCONF</small>.
180 This file can be placed in one of these paths:
181 </p>
182 <ul>
183 <li> <samp><em>&lt;prefix&gt;</em>/share/config.site</samp>
184 </li><li> <samp><em>&lt;prefix&gt;</em>/etc/config.site</samp>
185 </li></ul>
187 <p>This way, the same language list will be used for all the programs that use <small>AUTOCONF</small> that you
188 would compile.
189 Please note that if you also specify a value on the command line, it will have precedence over the
190 value in that file.
191 </p>
193 <hr>
194 <a name="Choosing-the-Language"></a>
195 <a name="Choosing-the-Language-1"></a>
196 <h2 class="chapter">2 Choosing the Language</h2>
198 <p>If you have compiled and installed <small>WINDOW MAKER</small> with support for your language,
199 the effective translation is done is the very same way as any other application on an <small>UNIX</small>
200 system, you just have to set the shell variable <code>LANG</code> to your language before <code>wmaker</code>
201 is started.
202 In <code>sh</code> type of shell (<small>SH</small>, <small>KSH</small>, <small>BASH</small>, ...), this is done for example with
203 (<code>fr</code> is for French):
204 </p>
205 <div class="example">
206 <pre class="example">export LANG=fr
207 </pre></div>
210 <p>There is also a command line option <samp>--locale</samp> for <small>WINDOW MAKER</small> which may be used to set
211 the language:
212 </p>
213 <div class="example">
214 <pre class="example">wmaker --locale fr
215 </pre></div>
217 <p>When using this option, <small>WINDOW MAKER</small> will use the locale you specified, redefining the
218 <code>LANG</code> environment variable to this value so all program started from <small>WINDOW MAKER</small> will
219 inherit its value.
220 </p>
222 <p>If your system is using <small>SYSTEMD</small>, you can also configure the locale at system level using the
223 command:
224 </p>
225 <div class="example">
226 <pre class="example">localectl set-locale LANG=fr
227 </pre></div>
230 <p>You can check if the current value is properly supported with the command:
231 </p>
232 <div class="example">
233 <pre class="example">locale
234 </pre></div>
236 <p>If this does not work, you may need first to activate the support for your locale in the system;
237 you can get the list of currently enabled locales with the command:
238 </p>
239 <div class="example">
240 <pre class="example">locale -a
241 </pre></div>
243 <p>You should be able to enable a new language support by editing the file <samp>/etc/locale.gen</samp> to
244 uncomment the locale(s) you need (by removing the <code>#</code> character and space(s) in front of it,
245 and by running the command <code>locale-gen</code> as root.
246 </p>
247 <p>For further information, you may wish to read dedicated documentation, for example from
248 <a href="http://tldp.org/HOWTO/HOWTO-INDEX/other-lang.html">the Linux Documentation Project</a>
249 or through pages like
250 <a href="http://www.shellhacks.com/en/HowTo-Change-Locale-Language-and-Character-Set-in-Linux">Shell Hacks&rsquo; note on Changing Locale</a>.
251 </p>
253 <hr>
254 <a name="Troubleshooting"></a>
255 <a name="Troubleshooting-1"></a>
256 <h2 class="chapter">3 Troubleshooting</h2>
258 <p>If I18N support does not work for you, check these:
259 </p>
260 <ul class="no-bullet">
261 <li>- the <code>LANG</code> environment variable is set to your locale, and
262 the locale is supported by your OS&rsquo;s locale or X&rsquo;s locale
263 emulation. you can display all supported locales by
264 executing &quot;<code>locale -a</code>&quot; command if it is available; you
265 can check if your locale is supported by X&rsquo;s locale emulation,
266 see <samp>/usr/share/X11/locale/locale.alias</samp>
268 </li><li>- check if you are using an appropriate fonts for the locale you
269 chose. If you&rsquo;re using a font set that has a different
270 encoding than the one used by <small>XLIB</small> or <small>LIBC</small>, bad things can
271 happen. Try specifically putting the encoding in the <code>LANG</code>
272 variable, like <code>ru_RU.KOI8-R</code>. Again, see
273 <samp>/usr/share/X11/locale/locale.alias</samp>
275 </li><li>- the fonts you&rsquo;re using support your locale. if your font
276 setting on <samp>$HOME/GNUstep/Defaults/WindowMaker</samp> is like...
278 <div class="example">
279 <pre class="example"> WindowTitleFont = &quot;Trebuchet MS:bold:pixelsize=12&quot;;
280 MenuTitleFont = &quot;Trebuchet MS:bold:pixelsize=12&quot;;
281 </pre></div>
283 <p>then you can&rsquo;t display Asian languages (<code>ja</code>, <code>ko</code>, <code>ch</code>, ...) characters using
284 <code>Trebuchet MS</code>. A font that is guaranteed to work for any language is
285 <code>sans</code> (or <code>sans-serif</code>). <code>sans</code> is not a font itself, but an alias which
286 points to multiple fonts and will load the first in that list that
287 has the ability to show glyphs in your language. If you don&rsquo;t know
288 a font that is suited for your language you can always set all your
289 fonts to something like:
290 </p>
291 <div class="example">
292 <pre class="example"> &quot;sans:pixelsize=12&quot;
293 </pre></div>
295 <p>However, please note that if your font is something like:
296 </p>
297 <div class="example">
298 <pre class="example"> &quot;Trebuchet MS,sans serif:pixelsize=12&quot;
299 </pre></div>
301 <p>this will not be able to display Asian languages if any of the
302 previous fonts before sans are installed. This is because unlike
303 the proper font pickup that <code>sans</code> guarantees for your language,
304 this construct only allows a font fallback mechanism, which tries
305 all the fonts in the list in order, until it finds one that is
306 available, even if it doesn&rsquo;t support your language.
307 </p>
308 <p>Also you need to change font settings in style files in
309 the <samp>$HOME/Library/WindowMaker/Style</samp> directory.
310 </p>
311 </li><li>- the <code>LC_CTYPE</code> environment variable is unset or it has the correct
312 value. If you don&rsquo;t know what is the correct value, unset it.
314 </li></ul>
317 <hr>
318 <a name="Contribute-to-Translations"></a>
319 <a name="Contribute-to-Translations-1"></a>
320 <h2 class="chapter">4 Contribute to Translations</h2>
322 <p>You may have noticed that many translations are not up to date, because the code has evolved but the
323 persons who initially contributed may not have had the time to continue, so any help is welcome.
324 </p>
325 <p>Since <small>WINDOW MAKER</small> 0.95.7 there are some targets to <code>make</code> that can help you in that
326 task.
327 </p>
329 <a name="Install-the-latest-sources"></a>
330 <h3 class="section">4.1 Install the latest sources</h3>
332 <p>If you want to contribute, the first step is get the development branch of the code;
333 this is done using <code>git</code>.
334 If you do not feel confident at all with using <code>git</code>, you may also try to ask for a
335 <em>snapshot</em> on the developer&rsquo;s mailing list <a href="mailto:wmaker-dev@lists.windowmaker.org">wmaker-dev@lists.windowmaker.org</a>.
336 With <code>git</code> the procedure is:
337 </p>
338 <div class="example">
339 <pre class="example"># Get your working copy of the sources
340 git clone git://repo.or.cz/wmaker-crm.git
342 # Go into that newly created directory
343 cd wmaker-crm
345 # Switch to the branch where everything happens
346 git checkout next
348 # Generate the configuration script
349 ./autogen.sh
350 </pre></div>
352 <p>Now you should have an up-to-date working copy ready to be compiled;
353 you will not need to go the full way but you should run the <code>configure</code> script, so it will
354 create the <samp>Makefile</samp>s, and you may want to compile the code once so it will not do it again
355 automatically later while you are doing something else:
356 </p>
357 <div class="example">
358 <pre class="example"># Setup the build, enabling at least the language you want to work on
359 ./configure LINGUAS=&quot;&lt;list of iso 639 country code&gt;&quot;
361 # Compile the code once
362 make
363 </pre></div>
366 <a name="Updating-the-Translations"></a>
367 <h3 class="section">4.2 Updating the Translations</h3>
369 <p>The typical process for translating one program is:
370 </p>
371 <ul>
372 <li> generate a POT file (PO Template):
373 this is done with <code>xgettext</code> which searches for all the strings from the sources that can be
374 translated;
376 </li><li> update the PO file for your language:
377 this is done with <code>msgmerge</code> which compares the PO file and aligns it to the latest
378 template;
380 </li><li> edit the new PO file:
381 this is done by you with your favourite editor, to add the missing <code>msgstr</code>, review the
382 possible <em>fuzzy matches</em>, ...
384 </li><li> check the PO file:
385 unfortunately there is no definitive method for this;
387 </li><li> submit your contribution to the project:
388 this is done with <code>git</code>.
389 </li></ul>
391 <p>In <small>WINDOW MAKER</small>, you have actually 4 <code>po</code> files to take care of:
392 </p>
393 <ul class="no-bullet">
394 <li>- <samp>po/<em>&lt;lang&gt;</em>.po</samp>: for <small>WINDOW MAKER</small> itself
395 </li><li>- <samp>WPrefs.app/po/<em>&lt;lang&gt;</em>.po</samp>: for the Preference Editor program
396 </li><li>- <samp>WINGs/po/<em>&lt;lang&gt;</em>.po</samp>: for the graphic toolkit library
397 </li><li>- <samp>util/po/<em>&lt;lang&gt;</em>.po</samp>: for the command-line tools of <small>WINDOW MAKER</small>
398 </li></ul>
400 <p>As stated previously, there is a <code>make</code> target that can help you to automatically generate
401 the POT and update the PO for these 4 cases:
402 </p>
403 <div class="example">
404 <pre class="example">make update-lang PO=&lt;lang&gt;
405 </pre></div>
407 <p>Once run, it will have updated as needed the 4 <code>po</code> files against the latest source code.
408 You may wish to use the command <code>git gui</code> to view the changes;
409 you can now edit the files to complete the translation, correct them, remove deprecated stuff, ...
410 Please note that the encoding should be set to <em>UTF-8</em> as this is now the standard.
411 </p>
412 <p>If you think an error message is too obscure, just ask on the developer mailing list
413 <a href="mailto:wmaker-dev@lists.windowmaker.org">wmaker-dev@lists.windowmaker.org</a>: in addition to clarifications there&rsquo;s even a chance for the original message
414 to be improved!
415 </p>
416 <p>You may find some information on working with <code>po</code> file in the
417 <a href="https://www.gnu.org/software/gettext/manual/html_node/Editing.html">GNU gettext documentation</a>.
418 </p>
420 <a name="Translate-the-Man-Pages"></a>
421 <h3 class="section">4.3 Translate the Man Pages</h3>
423 <p>You may want to extend the translation to the documentation that is provided to users in the form
424 of Unix <i>man pages</i>.
425 The sources of the man pages are located in the <samp>doc/</samp> directory;
426 the translation should be placed in the directory <samp>doc/<i>lang</i>/</samp> with the same file name.
427 </p>
428 <p>The directory will also need a file <samp>Makefile.am</samp> which provides the list of man pages to be
429 included in the distribution package and to be installed.
430 You can probably get inspiration from an existing one from another language;
431 if you do not feel confident about it do not hesitate to ask on the project&rsquo;s mailing list
432 (<a href="mailto:wmaker-dev@lists.windowmaker.org">wmaker-dev@lists.windowmaker.org</a>), either for help or to ask someone to make it for you.
433 </p>
434 <p>Please note that although most man pages sources are directly in man page format
435 (<em>nroff</em>, the file extension being a number), a few of them are processed by a script
436 (those with the <samp>.in</samp> extension, like <samp>wmaker.in</samp>).
437 This is done because in some case we want the man page to reflect the actual compilation options.
438 </p>
439 <p>You may not want to bother with this hassle, in which case you can simply name your translation
440 file with the <samp>.1</samp> and remove the special <code>@keyword@</code> marks.
441 If you are sure you want to keep that processing but do not feel confident about hacking the
442 <samp>Makefile.am</samp> do not hesitate to ask on the project&rsquo;s mailing list (<a href="mailto:wmaker-dev@lists.windowmaker.org">wmaker-dev@lists.windowmaker.org</a>).
443 </p>
445 <a name="Checking-the-Result"></a>
446 <h3 class="section">4.4 Checking the Result</h3>
448 <p>In the <small>WINDOW MAKER</small> build tree you also have another target that can help you, it is
449 <code>make check</code>.
450 </p>
451 <p>At current time, it does not check much, but if during the <code>make update-lang</code> new <code>po</code>
452 file have been created you may get some errors, because you have to add these new files to the
453 variable <var>EXTRA_DIST</var> in the corresponding <samp>Makefile</samp>.
454 </p>
455 <p>If you do not feel confident about doing it, do not worry, just tell about it when you submit your
456 work, and some developer on the mailing list will just be happy to do it for you when integrating
457 your valuable contribution (we always like when someone helps making <small>WINDOW MAKER</small> better).
458 </p>
460 <a name="Submitting-your-Contribution"></a>
461 <h3 class="section">4.5 Submitting your Contribution</h3>
463 <p><em>Preliminary Remark</em>: if the update process made changes in a <code>po</code> file but you did not
464 change any <code>msgstr</code> content, it is probably a good idea to not submit the changes to that
465 <code>po</code> file because it would just add noise.
466 </p>
467 <p>When you feel ready to send your changes, the first step is to prepare them.
468 This is done with <code>git</code>: if you have not run the <code>git gui</code> previously then it is a
469 good time to do it now.
470 This window offers you the possibility to show your changes and to decide what you want to send.
471 </p>
472 <p>The window is divided in 4 panes:
473 </p><ul>
474 <li> top-right show the current changes you have selected, for review
475 (and also for cherry-picking stuff if you want to select precisely)
477 </li><li> top-left (&quot;Unstaged Changes&quot;) the list of files with changes to be send,
478 you can click on the name of the file to see the changes,
479 you can click on the icon of the file if you want to send all the changes in this file;
480 an icon in blue shows a file that have been changed and an icon in black shows a file that is new
482 </li><li> bottom-left (&quot;Staged Changes&quot;) the list of files with changes that you have chosen to send so far,
483 you can click on the file name to view these changes,
484 you can click on the icon if you want to remove the changes from this file from the list to send
486 </li><li> bottom-right (&quot;Commit Message&quot;) the message you want to attach to your changes when you submit them
487 to the development team
488 </li></ul>
490 <p>The idea here is to pick your changes to the <code>po</code> files;
491 for the <em>commit message</em> you may wish to stuck to a simple, single line:
492 </p>
493 <blockquote>
494 <p>&quot;Updated translations for <em>&lt;lang&gt;</em>&quot;
495 </p></blockquote>
497 <p>The penultimate step is to click on the button <tt class="key">Sign Off</tt> (it will add a line in the commit
498 message), and then click on the button <tt class="key">Commit</tt>.
499 From this time, the commit message will clear itself and the &quot;Staged Changes&quot; also, showing that
500 your action was done.
501 </p>
502 <p>You may now quit the <code>git gui</code>, the final step begins by running this command:
503 </p>
504 <div class="example">
505 <pre class="example">git format-patch HEAD^
506 </pre></div>
508 <p>This will generate a file named like <samp>0001-<em>updated-translations-for-XX</em>.patch</samp>
509 which contains your changes, ready for sending.
510 The goal will now be to email this file to <a href="mailto:wmaker-dev@lists.windowmaker.org">wmaker-dev@lists.windowmaker.org</a>.
511 If you feel confident in having <code>git</code> send it for you, you may want to read the file
512 <samp>The-perfect-Window-Maker-patch.txt</samp> to see how to configure <code>git</code> for mailing, so you
513 can run:
514 </p>
515 <div class="example">
516 <pre class="example">git send-email 0001-<em>updated-translations-for-XX</em>.patch
517 </pre></div>
520 <hr>
524 </body>
525 </html>