home *** CD-ROM | disk | FTP | other *** search
/ Chip 2004 March / Chip_2004-03_cd1.bin / software / abi / abiword.exe / AbiWord / howtotranslation.html < prev    next >
Encoding:
Extensible Markup Language  |  2004-01-20  |  17.4 KB  |  130 lines

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml/DTD/xhtml1-strict.dtd">
  3.  
  4. <html xmlns="http://www.w3.org/1999/xhtml">
  5. <head>
  6. <!-- 
  7. Copyright 2003 Raphael Finkel Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with no Invariant Sections, with no Front-Cover Texts, and with no Back-Cover Texts A copy of the license is included in the section entitled "GNU Free Documentation License"
  8. //-->
  9. <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
  10. <title>Translating AbiWord</title>
  11. <link href="../style.css" rel="stylesheet" type="text/css" />
  12.  
  13. </head>
  14. <body>
  15.  
  16. <div class="banner">
  17. <a href="../index.html" class="bars">Home</a> > <a href="index.html" class="bars">How To</a> > Translation 
  18. </div>
  19.  
  20. <div class="main">
  21.  
  22.  
  23.    <h1><span style="lang: en-US">Translating AbiWord</span></h1>
  24.    <h2><span style="lang: en-US">Getting started</span></h2>
  25.    <p></p>
  26.    <ol>
  27.     <li dir="ltr" style="text-align: left"><span style="lang: en-US">     If you want to work on a particular language, say Pelonian (langu</span>age<span style="font-weight: bold; lang: en-US"> </span><span class="Code Plain_Text">zz-ZZ</span><span style="lang: en-US">), you may start this way:</span></li>
  28.    </ol>
  29.    <pre class="Plain_Text"><span style="lang: en-US">    </span><span class="Code Plain_Text">/update.pl --pot</span></pre>
  30.    <pre class="Plain_Text"><span class="Code Plain_Text">    mv abiword.pot zz-ZZ.po</span></pre>
  31.    <p dir="ltr" style="text-align: left; margin-left: 36pt"><span style="lang: en-US">(The .po suffix doesn't mean Pelonian; it applies to any language.) Now edit </span><span class="Code Plain_Text">zz-ZZ.po</span><span style="lang: en-US">.  Fix the comment at the start to indicate who you are, what the language is, and when you are doing this work.</span></p>
  32.    <ol>
  33.     <li dir="ltr" style="text-align: left"><span style="lang: en-US">    I strongly recommend you use Unicode UTF-8 to encode all your Pelonian strings.  In the comment at the top of </span><span class="Code Plain_Text">zz-ZZ.po</span><span style="lang: en-US">, make sure the following two lines appear:</span></li>
  34.    </ol>
  35.    <pre class="Plain_Text"><span style="lang: en-US">    </span><span class="Code Plain_Text">"Content-Type: text/plain; charset=UTF-8\n"</span></pre>
  36.    <pre class="Plain_Text"><span class="Code Plain_Text">    "Content-Transfer-Encoding: 8-bit\n"</span></pre>
  37.    <ol>
  38.     <li dir="ltr" style="text-align: left"><span style="lang: en-US">    Now you want to translate all lines that start with </span><span class="Code Plain_Text">msgid</span><span style="lang: en-US"> and place the translation in place of the empty string in the following msgstr line.  For instance, you might translate</span></li>
  39.    </ol>
  40.    <pre class="Plain_Text"><span style="lang: en-US">    </span><span class="Code Plain_Text">msgid "the dictionary"</span></pre>
  41.    <pre class="Plain_Text"><span class="Code Plain_Text">    msgstr "grompabikku-la"</span></pre>
  42.    <p dir="ltr" style="text-align: left; margin-left: 36pt"><span style="lang: en-US">(Sorry, my knowledge of the Pelonian language is limited.) Translate as many entries as you like.  Entries that have </span><span class="Code Plain_Text">%d</span><span style="lang: en-US"> or </span><span class="Code Plain_Text">%s</span><span style="lang: en-US"> should most likely be translated with </span><span class="Code Plain_Text">%d</span><span style="lang: en-US"> and </span><span class="Code Plain_Text">%s</span><span style="lang: en-US"> in place, referring to numeric or string data to be filled in later.  Don't worry that lines get very long.  If you like, you may divide long lines:</span></p>
  43.    <pre class="Plain_Text"><span style="lang: en-US">    </span><span class="Code Plain_Text">msgstr ""</span></pre>
  44.    <pre class="Plain_Text"><span class="Code Plain_Text">    "implog revulam"</span></pre>
  45.    <pre class="Plain_Text"><span class="Code Plain_Text">    "groppsigu moturo nula"</span></pre>
  46.    <p dir="ltr" style="text-align: left; margin-left: 36pt"><span style="lang: en-US">Later processing steps will automatically divide long lines for you in any case.</span></p>
  47.    <ol>
  48.     <li dir="ltr" style="text-align: left"><span style="lang: en-US">    Once you have translated as much as you want, check your translation for sanity:</span></li>
  49.    </ol>
  50.    <pre class="Plain_Text"><span class="Code Plain_Text">    msgfmt -cv zz-ZZ.po</span><span style="lang: en-US">    </span></pre>
  51.    <p dir="ltr" style="text-align: left; margin-left: 36pt"><span style="lang: en-US">Fix any errors that msgfmt finds.  Then run this script:</span></p>
  52.    <pre class="Plain_Text"><span class="Code Plain_Text">    ./ui-backport.pl zz-ZZ</span></pre>
  53.    <p dir="ltr" style="text-align: left; margin-left: 36pt"><span style="lang: en-US">This program places strings in </span><span class="Code Plain_Text">../user/wp/strings/zz-ZZ.strings</span><span style="lang: en-US">.  The next time you build AbiWord, the Pelonian strings will be available, or you can manually copy the strings file to </span><span class="Code Plain_Text">$prefix/AbiSuite-2.0/AbiWord/strings/zz-ZZ.strings</span><span style="lang: en-US"> and see them immediately when you next run AbiWord.</span></p>
  54.    <ol>
  55.     <li dir="ltr" style="text-align: left"><span style="lang: en-US">    Later, you will want to fix your translations, finish strings you didn't translate earlier, and see if new strings have been introduced into AbiWord that you need to translate.  Run this script:</span></li>
  56.    </ol>
  57.    <pre class="Plain_Text"><span class="Code Plain_Text">    ./update.pl zz-ZZ</span></pre>
  58.    <p dir="ltr" style="text-align: left; margin-left: 36pt"><span style="lang: en-US">You will be see a summary that tells you how many messages have been translated and how many are still untranslated.  It will also indicate how many "fuzzy" translations there are.  These are translations that you have made but which may no longer be right, because AbiWord no longer uses quite the same text in the message that it did when you first made the translation.  Search for the word "fuzzy" in </span><span class="Code Plain_Text">zz-ZZ.po</span><span style="lang: en-US">, and fix all such translations, if necessary.  Remove the line that says "fuzzy" to indicate that you have fixed them.  Then do whatever other translations you want, and backport as indicated above.</span></p>
  59.    <p></p>
  60.    <ol>
  61.     <li dir="ltr" style="text-align: left"><span style="lang: en-US">    There are several alternative techniques for building Pelonian string files, although I don't recommend them.</span></li>
  62.     <ol>
  63.      <li dir="ltr" style="text-align: left"><span style="lang: en-US">    Look in </span><a href="http://www.abisource.com/dev/strings/strings.html"><span style="lang: en-US">http://www.abisource.com/dev/strings/strings.html</span></a><span style="lang: en-US"> (quite long; all you need is the beginning) to find a fairly complete translation of some language that you can work from, perhaps because the language is related to Pelonian.  Say you choose </span><span class="Code Plain_Text">no-NO</span><span style="lang: en-US">.  Copy </span><span class="Code Plain_Text">user/wp/strings/no-NO.strings</span><span style="lang: en-US"> to </span><span class="Code Plain_Text">user/wp/strings/zz-ZZ.strings</span><span style="lang: en-US"> and modify the translations.  Disadvantages: (a) You can't easily keep up with new strings added to AbiWord over time, (b) You can't easily find which Pelonian strings you haven't done yet, (c) In the cases where the same English string occurs in multiple instances, you need to introduce your Pelonian translation for each instance. (d) You have to trust the no-NO translation, which is one step removed from the English source.</span></li>
  64.      <li dir="ltr" style="text-align: left"><span style="lang: en-US">    Run </span><span class="Code Plain_Text">AbiWord --dumpstrings</span><span style="lang: en-US">; you will find a fresh file in the current directory called en-US.strings.  Copy this file to </span><span class="Code Plain_Text">user/wp/strings/zz-ZZ.strings</span><span style="lang: en-US"> and edit it.  Disadvantages:  (a-c) above.</span></li>
  65.     </ol>
  66.    </ol>
  67.    <h2><span style="lang: en-US">Unix and Gtk+ issues</span></h2>
  68.    <p></p>
  69.    <ol>
  70.     <li dir="ltr" style="text-align: left"><span style="lang: en-US">    In order for your translations to appear, you need to set your environment to specify your language.  Before you start AbiWord, set your </span><span class="Code Plain_Text">LANG</span><span style="lang: en-US"> and </span><span class="Code Plain_Text">LC_ALL</span><span style="lang: en-US"> environment variables to    </span></li>
  71.    </ol>
  72.    <pre class="Plain_Text"><span class="Code Plain_Text">    LANG=zz-ZZ.utf8</span></pre>
  73.    <pre class="Plain_Text"><span class="Code Plain_Text">    LC_ALL=zz_ZZ</span></pre>
  74.    <p dir="ltr" style="text-align: left; margin-left: 36pt"><span style="lang: en-US">AbiWord uses the </span><span class="Code Plain_Text">LANG</span><span style="lang: en-US"> variable; Gtk+ uses the </span><span class="Code Plain_Text">LC_ALL</span><span style="lang: en-US"> variable.</span></p>
  75.    <p dir="ltr" style="text-align: left; margin-left: 36pt"><span style="lang: en-US">When you run AbiWord, you should see all the strings you have translated in Pelonian, not in English.</span></p>
  76.    <ol>
  77.     <li dir="ltr" style="text-align: left"><span style="lang: en-US">    You might not like the font in which Pelonian is displayed.  In your home directory, place a file called</span></li>
  78.    </ol>
  79.    <pre class="Plain_Text"><span class="Code Plain_Text">    .gtkrc-2.0</span></pre>
  80.    <p dir="ltr" style="text-align: left; margin-left: 36pt"><span style="lang: en-US">In that file, place a line saying</span></p>
  81.    <pre class="Plain_Text"><span class="Code Plain_Text">    gtk-font-name = "sans 20"</span></pre>
  82.    <p dir="ltr" style="text-align: left; margin-left: 36pt"><span style="lang: en-US">The 20 is a size indicator; you may change that if you like.  Now you must tell Pango (which actually draws the fonts) what you mean by sans 20.  Copy </span><span class="Code Plain_Text">/usr/local/etc/pango/pangox.aliases</span><span style="lang: en-US"> (it may be in a different place, such as </span><span class="Code Plain_Text">/etc/pango</span><span style="lang: en-US">) to </span><span class="Code Plain_Text">~/.pangox_aliases</span><span style="lang: en-US">).  Add your favorite Pelonian font (mine is </span><span class="Code Plain_Text">-misc-fixed-medium-r-normal--20-200-75-75-c-100-iso10646-1</span><span style="lang: en-US">) to the top of the entry for "sans normal normal normal normal".  You may have to remove other fonts from that list if you don't get the font you want.</span></p>
  83.    <p dir="ltr" style="text-align: left; margin-left: 36pt"><span style="lang: en-US">If your favorite font is monospace (like mine), set your </span><span class="Code Plain_Text">gtk-font-name</span><span style="lang: en-US"> to </span><span style="font-weight: bold; lang: en-US; font-family: 'Courier'">"</span><span class="Code Plain_Text">monospace 20</span><span style="font-weight: bold; lang: en-US; font-family: 'Courier'">"</span><span style="lang: en-US"> and put your font name in the entry for "</span><span class="Code Plain_Text">monospace normal normal normal normal</span><span style="lang: en-US">".</span></p>
  84.    <p dir="ltr" style="text-align: left; margin-left: 36pt"><span style="lang: en-US">If you don't see any font at all, your Unix machine is most likely using the fontconfig library.  Look at its configuration file in </span><span class="Code Plain_Text">/etc/fonts/fonts.conf</span><span style="lang: en-US"> to see where it finds fonts.  For instance, you might find that it mentions the directory </span><span class="Code Plain_Text">/usr/share/fonts</span><span style="lang: en-US">, which is a good place to put extra fonts, such as Unicode TrueType fonts.  Apparently </span><span class="Code Plain_Text">/usr/share/fonts</span><span style="lang: en-US"> must not be a symlink to a remotely mounted filesystem.</span></p>
  85.    <ol>
  86.     <li dir="ltr" style="text-align: left"><span style="lang: en-US">    Your AbiWord translations only apply to those menus and buttons that AbiWord builds for itself.  AbiWord also uses "stock" items from Gtk+, including buttons that say "Cancel" and "OK".  If you don't see these messages in Pelonian, you need to introduce Pelonian strings to the gtk+ library.  Get the source distribution of gtk+ (mine is </span><span class="Code Plain_Text">gtk+-2.0.0</span><span style="lang: en-US"> as of 2/2003).  In the </span><span class="Code Plain_Text">po</span><span style="lang: en-US"> subdirectory, run</span></li>
  87.    </ol>
  88.    <pre class="Plain_Text"><span class="Code Plain_Text">    ./update.pl --pot</span></pre>
  89.    <pre class="Plain_Text"><span class="Code Plain_Text">    mv abiword.pot zz_ZZ.po</span></pre>
  90.    <p dir="ltr" style="text-align: left; margin-left: 36pt"><span style="lang: en-US">and edit the </span><span class="Code Plain_Text">zz_ZZ.po</span><span style="lang: en-US"> file just as you did for Abiword, paying special attention to those items labeled with </span><span class="Code Plain_Text">gtk/gtkstock.c</span><span style="lang: en-US">.</span></p>
  91.    <p dir="ltr" style="text-align: left; margin-left: 36pt"><span style="lang: en-US">Modify the Makefile, adding </span><span class="Code Plain_Text">zz_ZZ.po</span><span style="lang: en-US"> and </span><span class="Code Plain_Text">zz_ZZ.gmo</span><span style="lang: en-US"> everywhere you see </span><span class="Code Plain_Text">zh_CN.po</span><span style="lang: en-US">.</span></p>
  92.    <pre class="Plain_Text"><span style="lang: en-US">    </span><span class="Code Plain_Text">make zz_ZZ.gmo</span></pre>
  93.    <p style="margin-left: 36pt">    <span class="Code Plain_Text">make install</span> (you may need privilege)</p>
  94.    <ol>
  95.     <li dir="ltr" style="text-align: left"><span style="lang: en-US">    If you get the error message that your </span><span class="Code Plain_Text">zz_ZZ</span><span style="lang: en-US"> locale isn't recognized, or you don't see stock items in Pelonian, try</span></li>
  96.    </ol>
  97.    <pre class="Plain_Text"><span class="Code Plain_Text">    locale -a</span></pre>
  98.    <p dir="ltr" style="text-align: left; margin-left: 36pt"><span style="lang: en-US">If </span><span class="Code Plain_Text">zz_ZZ</span><span style="lang: en-US"> is not listed, you need to set up Pelonian as one of the supported locales on your machine.  You will need privilege, typically as root.</span></p>
  99.    <pre class="Plain_Text"><span class="Code Plain_Text">    cd /usr/share/i18n/locales/</span></pre>
  100.    <p dir="ltr" style="text-align: left; margin-left: 36pt"><span style="lang: en-US">     [pick any language that seems similar to Pelonian, such as en_GB]</span></p>
  101.    <pre class="Plain_Text"><span class="Code Plain_Text">    cp en_GB zz_ZZ</span></pre>
  102.    <p dir="ltr" style="text-align: left; margin-left: 36pt"><span style="lang: en-US">     [edit </span><span class="Code Plain_Text">zz_ZZ</span><span style="lang: en-US"> as needed, or just leave it the way it is]</span></p>
  103.    <pre class="Plain_Text"><span class="Code Plain_Text">    localedef -i zz_ZZ -c -f UTF-8 zz_ZZ</span></pre>
  104.    <p dir="ltr" style="text-align: left; margin-left: 36pt"><span style="lang: en-US">     [for older versions of localedef]</span></p>
  105.    <pre class="Plain_Text"><span class="Code Plain_Text">    localedef -c -f UTF-8 </span>\</pre>
  106.    <pre class="Plain_Text"><span class="Code Plain_Text">-i zz_ZZ /usr/share/locale/zz_ZZ</span></pre>
  107.    <pre class="Plain_Text"><span class="Code Plain_Text">    localedef --add-to-archive /usr/share/locale/zz_ZZ</span></pre>
  108.    <p dir="ltr" style="text-align: left; margin-left: 36pt"><span style="lang: en-US">     [for newer versions]</span></p>
  109.    <ol>
  110.     <li dir="ltr" style="text-align: left"><span style="lang: en-US">    If Pelonian is written right-to-left (RTL) instead of LTR, you might need to put a directional marker such as u202b at the start of any message that includes non-RTL characters, such as periods, query marks, and numbers.  But a better solution is to set the translation for the Gtk (not AbiWord) </span><span class="Code Plain_Text">msgid</span><span style="font-weight: bold; lang: en-US; font-family: 'Courier'"> </span><span class="Code Plain_Text">"default:LTR"</span><span style="lang: en-US"> to be </span><span class="Code Plain_Text">msgstr "default:RTL"</span><span style="lang: en-US">.  This single setting modifies the "outer" directionality, influencing the position of widgets within containers and the default direction of all text.</span></li>
  111.    </ol>
  112.   </div>
  113.  
  114. <div class="index">
  115. <a href="../index.html" class="bars">Top Page</a>
  116. <a href="../tutorial/index.html" class="bars">Tutorial</a>
  117. <a href="../howto/index.html" class="bars">How To</a>
  118. <a href="../info/index.html" class="bars">Information</a>
  119. <a href="../interface/index.html" class="bars">Interface</a>
  120. <a href="../plugins/index.html" class="bars">Plug-ins</a> 
  121. <a href="../problems/index.html" class="bars">Problems</a>
  122. <a href="../credits.html" class="bars">Credits</a>
  123. <a href="../azindex.html" class="bars">Index</a>
  124. <a href="../fdl.html" class="bars">GNU FDL</a> 
  125. </div>
  126.  
  127. </body>
  128. </html>
  129.  
  130.