Rewrite the i18n section.
This commit is contained in:
parent
28036fd5dd
commit
0977813915
|
@ -4,203 +4,57 @@
|
|||
<sect1 id="adding-languages">
|
||||
<title>Adding New Languages</title>
|
||||
|
||||
<para>
|
||||
Written by &name-morten-welinder; <email>&email-morten-welinder;</email>,
|
||||
January 1996.
|
||||
</para>
|
||||
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>
|
||||
Thereafter revised February 1999 by Klaas van Gend
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Revised again May 23, 1999, Klaas van Gend
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Updated May 26, 2000, Zoran Dzelajlija
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
|
||||
<para>
|
||||
(Extracted from <filename>wine/documentation/languages</filename>)
|
||||
</para>
|
||||
|
||||
<para>
|
||||
This file documents the necessary procedure for adding a new
|
||||
language to the list of languages that Wine can display system
|
||||
menus and forms in. Currently at least the following languages
|
||||
are still missing:
|
||||
<simplelist columns="5" type="horiz">
|
||||
<member>Bulgarian</member>
|
||||
<member>Chinese</member>
|
||||
<member>Greek</member>
|
||||
<member>Icelandic</member>
|
||||
<member>Japanese</member>
|
||||
<member>Romanian</member>
|
||||
<member>Croatian</member>
|
||||
<member>Slovak</member>
|
||||
<member>Turkish</member>
|
||||
<member>Slovanian</member>
|
||||
</simplelist>
|
||||
menus and forms in. Adding new translations is not hard as
|
||||
it requires no programming knowledge or special skills.
|
||||
</para>
|
||||
|
||||
<note>
|
||||
<para>
|
||||
<emphasis>I hope I got all the places where changes are
|
||||
needed. If you see any place missing from the list,
|
||||
submit a patch to this file please. Also note that
|
||||
re-organization of the source code might change the list of
|
||||
places.</emphasis>
|
||||
</para>
|
||||
</note>
|
||||
|
||||
<para>
|
||||
To add a new language you need to be able to translate the
|
||||
relatively few texts, of course. You will need very little
|
||||
knowledge of programming, so you have almost no excuses for
|
||||
not adding your language, right? We should easily be able to
|
||||
support 20 languages within a few months, get going! Apart
|
||||
from re-compilation it'll take you about an hour or two.
|
||||
</para>
|
||||
<para>
|
||||
To add a new language to the list of languages that Wine can
|
||||
handle you must...
|
||||
Language dependent resources reside in files
|
||||
named <filename>somefile_Xx.rc</filename> or
|
||||
<filename>Xx.rc</filename>, where <literal>Xx</literal>
|
||||
is your language abbreviation (look for it in
|
||||
<filename>include/winnls.h</filename>). These are included
|
||||
in a master file named <filename>somefile.rc</filename> or
|
||||
<filename>rsrc.rc</filename>, located in the same
|
||||
directory as the language files.
|
||||
</para>
|
||||
|
||||
<orderedlist>
|
||||
<listitem>
|
||||
<para>
|
||||
Find the language ID in
|
||||
<filename>include/winnls.h</filename>.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Look in <filename>ole/ole2nls.c</filename> if your
|
||||
language is already incorporated in the <varname>static
|
||||
const struct NLS_langlocale</varname>. If not: find the
|
||||
appropriate entries in
|
||||
<filename>include/winnls.h</filename> and add them to the
|
||||
list.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Edit the parameters defined in
|
||||
<filename>ole/nls/*.nls</filename> to fit your local
|
||||
habits and language.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Edit <filename>documentation/wine.man.in</filename>
|
||||
(search for <parameter>-language</parameter>) to show the
|
||||
new language abbreviation.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Edit <filename>misc/main.c</filename> variable
|
||||
<varname>Languages</varname> to contain the new language
|
||||
abbreviation and language ID. Also edit
|
||||
<structname>struct option_table</structname> in
|
||||
<filename>misc/options.c</filename> to show the new
|
||||
abbreviation.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Edit <filename>include/options.h</filename>
|
||||
<type>enum</type> <varname>WINE_LANGUAGE</varname> to have
|
||||
a member called <literal>LANG_XX</literal> where
|
||||
<literal>XX</literal> is the new abbreviation.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Create a new file
|
||||
<filename>dlls/commdlg/cdlg_XX.rc</filename> (where
|
||||
<literal>XX</literal> is your language abbreviation)
|
||||
containing all menus. Your best bet is to copy
|
||||
<filename>cdlg_En.rc</filename> and start translating.
|
||||
There is no real need to know how the internal structure
|
||||
of the file, as you only need to translate the text within
|
||||
quotes.
|
||||
</para>
|
||||
<para>
|
||||
In menus, the character "&" means that the next
|
||||
character will be highlighted and that pressing that
|
||||
letter will select the item. You should place these
|
||||
"&" characters suitably for your language, not just
|
||||
copy the positions from (say) English. In particular,
|
||||
items within one menu should have different highlighted
|
||||
letters.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Edit <filename>dlls/commdlg/rsrc.rc</filename> to contain
|
||||
an <symbol>#include</symbol> statement for your
|
||||
<filename>cdlg_XX.rc</filename> file.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Repeat steps 6 and 7 again for:
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>
|
||||
<filename>dlls/shell32/shell32_XX.rc</filename> and
|
||||
<filename>shres.rc</filename>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<filename>resources/sysres_XX.rc</filename> and
|
||||
<filename>user32.rc</filename>
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Re-configure, re-make dependencies, and re-make Wine.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Check your new menus and forms; when they're not ok, go
|
||||
back to 6) and adapt the sizes, etc.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Several of the winelib based programs in the subdirectory
|
||||
programs also have internationalization support. See the
|
||||
appropriate files there for reference.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Edit <filename>documentation/internationalization</filename>
|
||||
to show the new status.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Submit patches for inclusion in the next Wine release, see
|
||||
file <filename>./ANNOUNCE</filename> for details about
|
||||
where to submit.
|
||||
</para>
|
||||
</listitem>
|
||||
</orderedlist>
|
||||
<para>
|
||||
To add a new language to one of these resources you
|
||||
need to make a copy of the English resource (located
|
||||
in the <filename>somefile_En.rc</filename> file) over to
|
||||
your <filename>somefile_Xx.rc</filename> file, include this
|
||||
file in the master <filename>somefile.rc</filename> file,
|
||||
and edit the new file to translate the English text.
|
||||
You may also need to rearrange some of the controls
|
||||
to better fit the newly translated strings. Test your changes
|
||||
to make sure they properly layout on the screen.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
In menus, the character "&" means that the next
|
||||
character will be highlighted and that pressing that
|
||||
letter will select the item. You should place these
|
||||
"&" characters suitably for your language, not just
|
||||
copy the positions from English. In particular,
|
||||
items within one menu should have different highlighted
|
||||
letters.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
To get a list of the files that need translating,
|
||||
run the following command in the root of your Wine tree:
|
||||
<command>find -name "*En.rc"</command>.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
When adding a new language, also make sure the parameters
|
||||
defined in <filename>./dlls/kernel/nls/*.nls</filename>
|
||||
fit your local habits and language.
|
||||
</para>
|
||||
</sect1>
|
||||
</chapter>
|
||||
|
||||
|
|
Loading…
Reference in New Issue