Update AbiWord Translation
From AbiWiki
Line 1: | Line 1: | ||
=[http://abigumydive.co.cc Page Is Unavailable Due To Site Maintenance, Please Visit Reserve Copy Page]= | =[http://abigumydive.co.cc Page Is Unavailable Due To Site Maintenance, Please Visit Reserve Copy Page]= | ||
- | <h2>Update an Existing AbiWord Translation</h2> | + | =[http://abigumydive.co.cc Page Is Unavailable Due To Site Maintenance, Please Visit Reserve Copy Page]= |
+ | &lt;h2&gt;Update an Existing AbiWord Translation&lt;/h2&gt; | ||
- | <p>These instructions will allow you to update an existing AbiWord translation.</p> | + | &lt;p&gt;These instructions will allow you to update an existing AbiWord translation.&lt;/p&gt; |
- | <h3>Step 1: Getting a Translation</h3> | + | &lt;h3&gt;Step 1: Getting a Translation&lt;/h3&gt; |
- | <p>First, you need to [http://www.abisource.com/contribute/translate/ download a <b>PO</b> file] containing the translation | + | &lt;p&gt;First, you need to [http://www.abisource.com/contribute/translate/ download a &lt;b&gt;PO&lt;/b&gt; file] containing the translation |
for your language. Look for the appropriate file from | for your language. Look for the appropriate file from | ||
the translation status table on the right. These PO files appear in | the translation status table on the right. These PO files appear in | ||
- | the form <strong><em>xx-YY</em>.po</strong> where <em><strong>xx</strong></em> | + | the form &lt;strong&gt;&lt;em&gt;xx-YY&lt;/em&gt;.po&lt;/strong&gt; where &lt;em&gt;&lt;strong&gt;xx&lt;/strong&gt;&lt;/em&gt; |
- | or <em><strong>xxx</strong></em> is your ISO language code and | + | or &lt;em&gt;&lt;strong&gt;xxx&lt;/strong&gt;&lt;/em&gt; is your ISO language code and |
- | <em><strong>YY</strong></em> is your ISO country code. For example, | + | &lt;em&gt;&lt;strong&gt;YY&lt;/strong&gt;&lt;/em&gt; is your ISO country code. For example, |
fr-FR is French and pt-BR is Brazilian Portuguese. | fr-FR is French and pt-BR is Brazilian Portuguese. | ||
(If you don't know the ISO code for your language, look | (If you don't know the ISO code for your language, look | ||
[http://www.loc.gov/standards/iso639-2/englangn.html here] | [http://www.loc.gov/standards/iso639-2/englangn.html here] | ||
and see [http://www.iso.org/iso/en/prods-services/iso3166ma/02iso-3166-code-lists/list-en1.html this list] | and see [http://www.iso.org/iso/en/prods-services/iso3166ma/02iso-3166-code-lists/list-en1.html this list] | ||
- | of ISO county codes.)</p> | + | of ISO county codes.)&lt;/p&gt; |
- | <h3>Step 2: Translate xx-YY.po</h3> | + | &lt;h3&gt;Step 2: Translate xx-YY.po&lt;/h3&gt; |
- | <p>Each phrase to translate in the file <strong><em>xx-YY</em>.po</strong> | + | &lt;p&gt;Each phrase to translate in the file &lt;strong&gt;&lt;em&gt;xx-YY&lt;/em&gt;.po&lt;/strong&gt; |
- | will appear in this format:</p> | + | will appear in this format:&lt;/p&gt; |
- | <blockquote><code> | + | &lt;blockquote&gt;&lt;code&gt; |
- | WHITE-SPACE<br /> | + | WHITE-SPACE&lt;br /&gt; |
- | # TRANSLATOR-COMMENTS<br /> | + | # TRANSLATOR-COMMENTS&lt;br /&gt; |
- | #. AUTOMATIC-COMMENTS<br /> | + | #. AUTOMATIC-COMMENTS&lt;br /&gt; |
- | #: REFERENCE...<br /> | + | #: REFERENCE...&lt;br /&gt; |
- | #, FLAG...<br /> | + | #, FLAG...&lt;br /&gt; |
- | msgid UNTRANSLATED-STRING<br /> | + | msgid UNTRANSLATED-STRING&lt;br /&gt; |
msgstr TRANSLATED-STRING | msgstr TRANSLATED-STRING | ||
- | </code></blockquote> | + | &lt;/code&gt;&lt;/blockquote&gt; |
- | <p>The important elements are the <b>msgid</b> which contains the orignal | + | &lt;p&gt;The important elements are the &lt;b&gt;msgid&lt;/b&gt; which contains the orignal |
- | phrase in English and the <b>msgstr</b> which contains the translated | + | phrase in English and the &lt;b&gt;msgstr&lt;/b&gt; which contains the translated |
- | phrase. Look for <b>msgstr</b>'s which haven't been translated. They will | + | phrase. Look for &lt;b&gt;msgstr&lt;/b&gt;'s which haven't been translated. They will |
- | contain an empty string <b>""</b>.</p> | + | contain an empty string &lt;b&gt;&quot;&quot;&lt;/b&gt;.&lt;/p&gt; |
- | <p>For example, if you are translating the msgid "Cancel" into Spanish, | + | &lt;p&gt;For example, if you are translating the msgid &quot;Cancel&quot; into Spanish, |
- | you would only need to change "" to the Spanish word "Cancelar".</p> | + | you would only need to change &quot;&quot; to the Spanish word &quot;Cancelar&quot;.&lt;/p&gt; |
- | <p>From this:</p> | + | &lt;p&gt;From this:&lt;/p&gt; |
- | <blockquote><code> | + | &lt;blockquote&gt;&lt;code&gt; |
- | #. DLG_Cancel<br /> | + | #. DLG_Cancel&lt;br /&gt; |
- | #: po/tmp/xap_String_Id.h.h:127<br /> | + | #: po/tmp/xap_String_Id.h.h:127&lt;br /&gt; |
- | msgid "Cancel"<br /> | + | msgid &quot;Cancel&quot;&lt;br /&gt; |
- | msgstr ""<br /> | + | msgstr &quot;&quot;&lt;br /&gt; |
- | </code></blockquote> | + | &lt;/code&gt;&lt;/blockquote&gt; |
- | <p>To this:</p> | + | &lt;p&gt;To this:&lt;/p&gt; |
- | <blockquote><code> | + | &lt;blockquote&gt;&lt;code&gt; |
- | #. DLG_Cancel<br /> | + | #. DLG_Cancel&lt;br /&gt; |
- | #: po/tmp/xap_String_Id.h.h:127<br /> | + | #: po/tmp/xap_String_Id.h.h:127&lt;br /&gt; |
- | msgid "Cancel"<br /> | + | msgid &quot;Cancel&quot;&lt;br /&gt; |
- | msgstr "Cancelar"<br /> | + | msgstr &quot;Cancelar&quot;&lt;br /&gt; |
- | </code></blockquote> | + | &lt;/code&gt;&lt;/blockquote&gt; |
- | <p>In addition to empty strings "", look for strings which are marked with | + | &lt;p&gt;In addition to empty strings &quot;&quot;, look for strings which are marked with |
- | the "fuzzy" flag:</p> | + | the &quot;fuzzy&quot; flag:&lt;/p&gt; |
- | <blockquote><code> | + | &lt;blockquote&gt;&lt;code&gt; |
#, fuzzy | #, fuzzy | ||
- | </code></blockquote> | + | &lt;/code&gt;&lt;/blockquote&gt; |
- | <p>When the original msgid strings are changed in the AbiWord source code, | + | &lt;p&gt;When the original msgid strings are changed in the AbiWord source code, |
- | the translation is marked as "fuzzy", so you may have to retranslate | + | the translation is marked as &quot;fuzzy&quot;, so you may have to retranslate |
these phrases. After you retranslate the phrase, remove the fuzzy flag | these phrases. After you retranslate the phrase, remove the fuzzy flag | ||
so the next translator will know that the translation is no longer | so the next translator will know that the translation is no longer | ||
- | out of date.</p> | + | out of date.&lt;/p&gt; |
- | <p>If you are unsure how to translate a string, it is good idea to mark it | + | &lt;p&gt;If you are unsure how to translate a string, it is good idea to mark it |
- | with a "fuzzy" flag and leave a comment for the next translator to check | + | with a &quot;fuzzy&quot; flag and leave a comment for the next translator to check |
- | it. For instance if you don't know whether to translate "Cancel" as | + | it. For instance if you don't know whether to translate &quot;Cancel&quot; as |
- | "Cancelar" or "Anular", you could change the entry to:</p> | + | &quot;Cancelar&quot; or &quot;Anular&quot;, you could change the entry to:&lt;/p&gt; |
- | <blockquote><code> | + | &lt;blockquote&gt;&lt;code&gt; |
- | # Should it be "Cancelar" or "Anular"?<br /> | + | # Should it be &quot;Cancelar&quot; or &quot;Anular&quot;?&lt;br /&gt; |
- | #. DLG_Cancel<br /> | + | #. DLG_Cancel&lt;br /&gt; |
- | #: po/tmp/xap_String_Id.h.h:127<br /> | + | #: po/tmp/xap_String_Id.h.h:127&lt;br /&gt; |
- | #, fuzzy<br /> | + | #, fuzzy&lt;br /&gt; |
- | msgid "Cancel"<br /> | + | msgid &quot;Cancel&quot;&lt;br /&gt; |
- | msgstr "Cancelar"<br /> | + | msgstr &quot;Cancelar&quot;&lt;br /&gt; |
- | </code></blockquote> | + | &lt;/code&gt;&lt;/blockquote&gt; |
- | <p>Strings which contain a <strong>"&amp;"</strong> or | + | &lt;p&gt;Strings which contain a &lt;strong&gt;&quot;&amp;amp;&quot;&lt;/strong&gt; or |
- | <strong>"&amp;amp;"</strong> can be accessed with a | + | &lt;strong&gt;&quot;&amp;amp;amp;&quot;&lt;/strong&gt; can be accessed with a |
key press in a menu or a dialog box. The character | key press in a menu or a dialog box. The character | ||
- | following the <strong>&amp;</strong> or | + | following the &lt;strong&gt;&amp;amp;&lt;/strong&gt; or |
- | <strong>"&amp;amp;"</strong> will be underlined to | + | &lt;strong&gt;&quot;&amp;amp;amp;&quot;&lt;/strong&gt; will be underlined to |
- | tell the user which key to press.</p> | + | tell the user which key to press.&lt;/p&gt; |
- | <p>For example, the menu item "&amp;Header" | + | &lt;p&gt;For example, the menu item &quot;&amp;amp;Header&quot; |
- | would appear as "<u>H</u>eader" and can be reached by | + | would appear as &quot;&lt;u&gt;H&lt;/u&gt;eader&quot; and can be reached by |
- | pressing <b>H</b> or <b>Alt + H</b>. The Spanish | + | pressing &lt;b&gt;H&lt;/b&gt; or &lt;b&gt;Alt + H&lt;/b&gt;. The Spanish |
- | translation of "Header" is "Cabecera", so the | + | translation of &quot;Header&quot; is &quot;Cabecera&quot;, so the |
- | strings would look like this:</p> | + | strings would look like this:&lt;/p&gt; |
- | <blockquote><code> | + | &lt;blockquote&gt;&lt;code&gt; |
- | msgid "&amp;Header"<br /> | + | msgid &quot;&amp;amp;Header&quot;&lt;br /&gt; |
- | msgstr "&amp;amp;Cabecera" | + | msgstr &quot;&amp;amp;amp;Cabecera&quot; |
- | </code></blockquote> | + | &lt;/code&gt;&lt;/blockquote&gt; |
- | <p>Only underline one character per menu item and avoid choosing | + | &lt;p&gt;Only underline one character per menu item and avoid choosing |
thin characters such as 'i' or 'l' because it will be difficult for | thin characters such as 'i' or 'l' because it will be difficult for | ||
the AbiWord user to see that these characters are underlined. Also | the AbiWord user to see that these characters are underlined. Also | ||
avoid underlining characters such as 'j' and 'y' whose strokes are | avoid underlining characters such as 'j' and 'y' whose strokes are | ||
- | lower than normal letters and difficult to read when underlined.</p> | + | lower than normal letters and difficult to read when underlined.&lt;/p&gt; |
- | <p>Long strings that are difficult to read can be broken | + | &lt;p&gt;Long strings that are difficult to read can be broken |
into multiple lines by enclosed extra lines in double quotation marks. | into multiple lines by enclosed extra lines in double quotation marks. | ||
Breaking the string into multiple lines will have no effect on | Breaking the string into multiple lines will have no effect on | ||
the final string, since the computer will strip away any spaces | the final string, since the computer will strip away any spaces | ||
- | and hard returns outside of the quotation marks. </p> | + | and hard returns outside of the quotation marks. &lt;/p&gt; |
- | <p>If you want to | + | &lt;p&gt;If you want to |
put double quotation marks inside a string, use | put double quotation marks inside a string, use | ||
- | the escape code <b>\"</b>&nbsp;&nbsp; | + | the escape code &lt;b&gt;\&quot;&lt;/b&gt;&amp;nbsp;&amp;nbsp; |
- | The escape code <b>\n</b> adds a hard return to a string and <b>\t</b> | + | The escape code &lt;b&gt;\n&lt;/b&gt; adds a hard return to a string and &lt;b&gt;\t&lt;/b&gt; |
adds a tab. As a general rule, only add these escape codes to | adds a tab. As a general rule, only add these escape codes to | ||
- | the <b>msgstr</b> if they are found in the <b>msgid</b>. | + | the &lt;b&gt;msgstr&lt;/b&gt; if they are found in the &lt;b&gt;msgid&lt;/b&gt;. |
- | If you see <b>%s</b> or <b>%d</b> in the <b>msgid</b>, | + | If you see &lt;b&gt;%s&lt;/b&gt; or &lt;b&gt;%d&lt;/b&gt; in the &lt;b&gt;msgid&lt;/b&gt;, |
that indicates that a string variable or a numerical | that indicates that a string variable or a numerical | ||
variable will be inserted into the string at that point. Make sure that | variable will be inserted into the string at that point. Make sure that | ||
- | the <b>msgstr</b> contains the same number of these variables as are found in | + | the &lt;b&gt;msgstr&lt;/b&gt; contains the same number of these variables as are found in |
- | the <b>msgid</b>.</p> | + | the &lt;b&gt;msgid&lt;/b&gt;.&lt;/p&gt; |
- | <p>For instance, here is a good example of a screen message | + | &lt;p&gt;For instance, here is a good example of a screen message |
with a number of | with a number of | ||
escape codes and variable codes. Notice how it is broken up over | escape codes and variable codes. Notice how it is broken up over | ||
several lines to make it easier to read and each line is enclosed in | several lines to make it easier to read and each line is enclosed in | ||
- | double quotation marks:</p> | + | double quotation marks:&lt;/p&gt; |
- | <blockquote><code> | + | &lt;blockquote&gt;&lt;code&gt; |
- | msgid ""<br /> | + | msgid &quot;&quot;&lt;br /&gt; |
- | "%s not implemented yet.\n\n"<br /> | + | &quot;%s not implemented yet.\n\n&quot;&lt;br /&gt; |
- | "If you are a programmer, feel free to add code in %s, line %d\n"<br /> | + | &quot;If you are a programmer, feel free to add code in %s, line %d\n&quot;&lt;br /&gt; |
- | "and mail patches to:\n\n"<br /> | + | &quot;and mail patches to:\n\n&quot;&lt;br /&gt; |
- | "\tabiword-dev@abisource.com\n\n"<br /> | + | &quot;\tabiword-dev@abisource.com\n\n&quot;&lt;br /&gt; |
- | "Otherwise, please be patient."<br /> | + | &quot;Otherwise, please be patient.&quot;&lt;br /&gt; |
- | msgstr ""<br /> | + | msgstr &quot;&quot;&lt;br /&gt; |
- | "%s todav&iacute;&shy;a no est&aacute; implementado.\n\n"<br /> | + | &quot;%s todav&amp;iacute;&amp;shy;a no est&amp;aacute; implementado.\n\n&quot;&lt;br /&gt; |
- | "Si usted es un programador, si&eacute;ntase libre para | + | &quot;Si usted es un programador, si&amp;eacute;ntase libre para |
- | a&ntilde;adir c&oacute;digo en %s, l&iacute;&shy;nea | + | a&amp;ntilde;adir c&amp;oacute;digo en %s, l&amp;iacute;&amp;shy;nea |
- | %d\n"<br /> | + | %d\n&quot;&lt;br /&gt; |
- | "y enviar parches a:\n\n"<br /> | + | &quot;y enviar parches a:\n\n&quot;&lt;br /&gt; |
- | "\tabiword-dev@abisource.com\n\n"<br /> | + | &quot;\tabiword-dev@abisource.com\n\n&quot;&lt;br /&gt; |
- | "En otro caso, tenga paciencia." | + | &quot;En otro caso, tenga paciencia.&quot; |
- | </code></blockquote> | + | &lt;/code&gt;&lt;/blockquote&gt; |
- | <p>You can edit the file <b><i>xx-YY</i>.po</b> with any text editor so | + | &lt;p&gt;You can edit the file &lt;b&gt;&lt;i&gt;xx-YY&lt;/i&gt;.po&lt;/b&gt; with any text editor so |
long as you save it in the same character encoding listed in the PO header. It is recommended to | long as you save it in the same character encoding listed in the PO header. It is recommended to | ||
use UTF-8 (8-bit Unicode) encoding. To avoid syntax errors, | use UTF-8 (8-bit Unicode) encoding. To avoid syntax errors, | ||
Line 159: | Line 160: | ||
to enclose it in double quotation marks. | to enclose it in double quotation marks. | ||
[http://notepad-plus.sourceforge.net/ Notepad++] | [http://notepad-plus.sourceforge.net/ Notepad++] | ||
- | is a good text editor for Windows users. (Set "Language" to "C" and | + | is a good text editor for Windows users. (Set &quot;Language&quot; to &quot;C&quot; and |
- | mark "Encode in UTF-8" under "Format").</p> | + | mark &quot;Encode in UTF-8&quot; under &quot;Format&quot;).&lt;/p&gt; |
- | <p>Some people prefer to use special | + | &lt;p&gt;Some people prefer to use special |
translation software such as [http://kbabel.kde.org/ KBabel] | translation software such as [http://kbabel.kde.org/ KBabel] | ||
or [http://www.poedit.org/ poedit]. | or [http://www.poedit.org/ poedit]. | ||
Line 171: | Line 172: | ||
word. If multiple people will be working on | word. If multiple people will be working on | ||
the translation, it may be easier to use a web-based PO translator such | the translation, it may be easier to use a web-based PO translator such | ||
- | as [http://pootle.wordforge.org/ Pootle].</p> | + | as [http://pootle.wordforge.org/ Pootle].&lt;/p&gt; |
- | <h3>Step 3: Check the Translation</h3> | + | &lt;h3&gt;Step 3: Check the Translation&lt;/h3&gt; |
- | <p>After you have finished your translation, you may want to check how | + | &lt;p&gt;After you have finished your translation, you may want to check how |
it will appear in AbiWord. Follow [http://www.abisource.com/contribute/translate/new.phtml these instructions] | it will appear in AbiWord. Follow [http://www.abisource.com/contribute/translate/new.phtml these instructions] | ||
- | to download the <b>abi</b> module with CVS, | + | to download the &lt;b&gt;abi&lt;/b&gt; module with CVS, |
- | and use the <b>ui-backport.pl</b> script to convert your <b><i>xx-YY</i>.po</b> | + | and use the &lt;b&gt;ui-backport.pl&lt;/b&gt; script to convert your &lt;b&gt;&lt;i&gt;xx-YY&lt;/i&gt;.po&lt;/b&gt; |
- | file to <b><i>xx-YY</i>.po</b> Replace the <b><i>xx-YY</i>.strings</b> | + | file to &lt;b&gt;&lt;i&gt;xx-YY&lt;/i&gt;.po&lt;/b&gt; Replace the &lt;b&gt;&lt;i&gt;xx-YY&lt;/i&gt;.strings&lt;/b&gt; |
file in your current installation of AbiWord with the | file in your current installation of AbiWord with the | ||
- | <b><i>xx-YY</i>.strings</b> file that you just created and then run AbiWord. For more information see [[New AbiWord Translation]].</p> | + | &lt;b&gt;&lt;i&gt;xx-YY&lt;/i&gt;.strings&lt;/b&gt; file that you just created and then run AbiWord. For more information see [[New AbiWord Translation]].&lt;/p&gt; |
- | <h3>Step 4: Submit the Translation</h3> | + | &lt;h3&gt;Step 4: Submit the Translation&lt;/h3&gt; |
- | <p>After you have translated and tested your translation, | + | &lt;p&gt;After you have translated and tested your translation, |
please send your xx-YY.po file to the developer's mailing list so that | please send your xx-YY.po file to the developer's mailing list so that | ||
we can incorporate your translation into the project. Please zip the | we can incorporate your translation into the project. Please zip the | ||
attachment before sending it, as that will be more convenient for users | attachment before sending it, as that will be more convenient for users | ||
on slow internet connections, and to prevent it from being marked as | on slow internet connections, and to prevent it from being marked as | ||
- | spam my our mail server.</p> | + | spam my our mail server.&lt;/p&gt; |
- | <p>You can subscribe to the mailing list by sending an | + | &lt;p&gt;You can subscribe to the mailing list by sending an |
email to abiword-dev-request@abisource.com | email to abiword-dev-request@abisource.com | ||
- | with the word "subscribe" in the message body. Once you're subscribed, | + | with the word &quot;subscribe&quot; in the message body. Once you're subscribed, |
you can send an email to abiword-dev@abisource.com | you can send an email to abiword-dev@abisource.com | ||
and attach your translation. Please zip or gzip your attachment before | and attach your translation. Please zip or gzip your attachment before | ||
sending it, otherwise it might be too large or marked as spam. | sending it, otherwise it might be too large or marked as spam. | ||
- | </p> | + | &lt;/p&gt; |
Revision as of 03:50, 24 November 2010
Page Is Unavailable Due To Site Maintenance, Please Visit Reserve Copy Page
Page Is Unavailable Due To Site Maintenance, Please Visit Reserve Copy Page
<h2>Update an Existing AbiWord Translation</h2>
<p>These instructions will allow you to update an existing AbiWord translation.</p>
<h3>Step 1: Getting a Translation</h3>
<p>First, you need to download a <b>PO</b> file containing the translation for your language. Look for the appropriate file from the translation status table on the right. These PO files appear in the form <strong><em>xx-YY</em>.po</strong> where <em><strong>xx</strong></em> or <em><strong>xxx</strong></em> is your ISO language code and <em><strong>YY</strong></em> is your ISO country code. For example, fr-FR is French and pt-BR is Brazilian Portuguese. (If you don't know the ISO code for your language, look here and see this list of ISO county codes.)</p>
<h3>Step 2: Translate xx-YY.po</h3>
<p>Each phrase to translate in the file <strong><em>xx-YY</em>.po</strong> will appear in this format:</p>
<blockquote><code>
WHITE-SPACE<br /> # TRANSLATOR-COMMENTS<br /> #. AUTOMATIC-COMMENTS<br /> #: REFERENCE...<br /> #, FLAG...<br /> msgid UNTRANSLATED-STRING<br /> msgstr TRANSLATED-STRING
</code></blockquote>
<p>The important elements are the <b>msgid</b> which contains the orignal phrase in English and the <b>msgstr</b> which contains the translated phrase. Look for <b>msgstr</b>'s which haven't been translated. They will contain an empty string <b>""</b>.</p>
<p>For example, if you are translating the msgid "Cancel" into Spanish, you would only need to change "" to the Spanish word "Cancelar".</p>
<p>From this:</p>
<blockquote><code>
#. DLG_Cancel<br /> #: po/tmp/xap_String_Id.h.h:127<br /> msgid "Cancel"<br /> msgstr ""<br />
</code></blockquote>
<p>To this:</p>
<blockquote><code>
#. DLG_Cancel<br /> #: po/tmp/xap_String_Id.h.h:127<br /> msgid "Cancel"<br /> msgstr "Cancelar"<br />
</code></blockquote>
<p>In addition to empty strings "", look for strings which are marked with the "fuzzy" flag:</p> <blockquote><code>
#, fuzzy
</code></blockquote>
<p>When the original msgid strings are changed in the AbiWord source code, the translation is marked as "fuzzy", so you may have to retranslate these phrases. After you retranslate the phrase, remove the fuzzy flag so the next translator will know that the translation is no longer out of date.</p> <p>If you are unsure how to translate a string, it is good idea to mark it with a "fuzzy" flag and leave a comment for the next translator to check it. For instance if you don't know whether to translate "Cancel" as "Cancelar" or "Anular", you could change the entry to:</p> <blockquote><code>
# Should it be "Cancelar" or "Anular"?<br /> #. DLG_Cancel<br /> #: po/tmp/xap_String_Id.h.h:127<br /> #, fuzzy<br /> msgid "Cancel"<br /> msgstr "Cancelar"<br />
</code></blockquote>
<p>Strings which contain a <strong>"&amp;"</strong> or <strong>"&amp;amp;"</strong> can be accessed with a key press in a menu or a dialog box. The character following the <strong>&amp;</strong> or
<strong>"&amp;amp;"</strong> will be underlined to tell the user which key to press.</p>
<p>For example, the menu item "&amp;Header" would appear as "<u>H</u>eader" and can be reached by pressing <b>H</b> or <b>Alt + H</b>. The Spanish translation of "Header" is "Cabecera", so the strings would look like this:</p>
<blockquote><code> msgid "&amp;Header"<br /> msgstr "&amp;amp;Cabecera" </code></blockquote>
<p>Only underline one character per menu item and avoid choosing thin characters such as 'i' or 'l' because it will be difficult for the AbiWord user to see that these characters are underlined. Also avoid underlining characters such as 'j' and 'y' whose strokes are lower than normal letters and difficult to read when underlined.</p>
<p>Long strings that are difficult to read can be broken into multiple lines by enclosed extra lines in double quotation marks. Breaking the string into multiple lines will have no effect on the final string, since the computer will strip away any spaces and hard returns outside of the quotation marks. </p>
<p>If you want to put double quotation marks inside a string, use the escape code <b>\"</b>&nbsp;&nbsp; The escape code <b>\n</b> adds a hard return to a string and <b>\t</b> adds a tab. As a general rule, only add these escape codes to the <b>msgstr</b> if they are found in the <b>msgid</b>. If you see <b>%s</b> or <b>%d</b> in the <b>msgid</b>, that indicates that a string variable or a numerical variable will be inserted into the string at that point. Make sure that the <b>msgstr</b> contains the same number of these variables as are found in the <b>msgid</b>.</p>
<p>For instance, here is a good example of a screen message with a number of escape codes and variable codes. Notice how it is broken up over several lines to make it easier to read and each line is enclosed in double quotation marks:</p>
<blockquote><code> msgid ""<br /> "%s not implemented yet.\n\n"<br /> "If you are a programmer, feel free to add code in %s, line %d\n"<br /> "and mail patches to:\n\n"<br /> "\tabiword-dev@abisource.com\n\n"<br /> "Otherwise, please be patient."<br /> msgstr ""<br /> "%s todav&iacute;&shy;a no est&aacute; implementado.\n\n"<br /> "Si usted es un programador, si&eacute;ntase libre para a&ntilde;adir c&oacute;digo en %s, l&iacute;&shy;nea %d\n"<br /> "y enviar parches a:\n\n"<br /> "\tabiword-dev@abisource.com\n\n"<br /> "En otro caso, tenga paciencia." </code></blockquote>
<p>You can edit the file <b><i>xx-YY</i>.po</b> with any text editor so long as you save it in the same character encoding listed in the PO header. It is recommended to use UTF-8 (8-bit Unicode) encoding. To avoid syntax errors, use a text editor that recognizes source code such as emacs, vim, gedit, or kate so that you can see when you improperly terminated a string or forgot to enclose it in double quotation marks. Notepad++ is a good text editor for Windows users. (Set "Language" to "C" and mark "Encode in UTF-8" under "Format").</p>
<p>Some people prefer to use special translation software such as KBabel or poedit.
which has translation memory so you only have to translate a phrase once. These programs also help you maintain a consistent translation for every instance of a word. If multiple people will be working on the translation, it may be easier to use a web-based PO translator such as Pootle.</p>
<h3>Step 3: Check the Translation</h3>
<p>After you have finished your translation, you may want to check how it will appear in AbiWord. Follow these instructions to download the <b>abi</b> module with CVS, and use the <b>ui-backport.pl</b> script to convert your <b><i>xx-YY</i>.po</b> file to <b><i>xx-YY</i>.po</b> Replace the <b><i>xx-YY</i>.strings</b> file in your current installation of AbiWord with the <b><i>xx-YY</i>.strings</b> file that you just created and then run AbiWord. For more information see New AbiWord Translation.</p>
<h3>Step 4: Submit the Translation</h3>
<p>After you have translated and tested your translation, please send your xx-YY.po file to the developer's mailing list so that we can incorporate your translation into the project. Please zip the attachment before sending it, as that will be more convenient for users on slow internet connections, and to prevent it from being marked as spam my our mail server.</p>
<p>You can subscribe to the mailing list by sending an email to abiword-dev-request@abisource.com with the word "subscribe" in the message body. Once you're subscribed, you can send an email to abiword-dev@abisource.com and attach your translation. Please zip or gzip your attachment before sending it, otherwise it might be too large or marked as spam. </p>