Sugar i18n: Difference between revisions

From OLPC
Jump to navigation Jump to search
(tweaking... possibly merge)
(redirect to a section)
 
(3 intermediate revisions by 3 users not shown)
Line 1: Line 1:
#redirect [[Localization#Sugar i18n]]
{{merge | Customizing NAND images}}
----

This is a tutorial (recovered from an [[IRC]] session in the <tt>#olpc-peru</tt> channel, on how to enable [[Sugar]] in [[Spanish]]. Other locales/languages may adapt accordingly.

; WARNING : What follows is more an empiric report instead of a well thought out, fact-based, guide. If anybody can give more 'academic weight' to the subject by means of annotations or corrections, please do so.

== Verify i18n ==

Most of the ''internaliz/sation'' (aka i18n) present in the [[activities]] or environment relies on three things:
# the <tt>LANG</tt> and <tt>LANGUAGES</tt> environment variables;
# the different ''locales'' in the system; and
# the existance of the appropriate 'catalogs' of localized strings in each ''locale'' (<tt>.mo</tt> files).

; <tt>LANG</tt> and <tt>LANGUAGES</tt> : serve to declare the ''base'' <tt>LANG</tt>uage, and the default sequence of linguistic preferences when trying to chose one that is not available. They are defined in the <tt>/etc/sysconfig/i18n</tt>
<blockquote>{{Box File | /etc/sysconfig/i18n |
LANG&#61;es_AR
LANGUAGE&#61;es_AR.UTF-8:es_AR:es.UTF-8:es:en_US.UTF-8:en}}</blockquote>
; Locales & string catalogs : are basically the definition of how a particular location represents some aspects (ie: decimal and thousands separators, time formats, etc.) Each ''locale'' has an <tt>LC_MESSAGES</tt> sub-directory where catalogs of strings (<tt>.mo</tt> files) are stored by applications.
<blockquote><pre>
/usr/share/locale
/es_AR.UTF-8/LC_MESSAGES
/es_AR/LC_MESSAGES
/es.UTF-8/LC_MESSAGES
/es/LC_MESSAGES
/en_US.UTF-8/LC_MESSAGES
/en/LC_MESSAGES</pre></blockquote>
: A particular application or [[activity]] may have a set of (i18n) strings for each locale in a <tt>.mo</tt> file, or most likely a set of standard ones in select locales. What is important, is to have a <tt>sugar.mo</tt> in ''at least'' your base language (ie: <tt>.../locale/es/LC_MESSAGES/sugar.mo</tt> independently if your locale is [[OLPC Argentina|Argentina]], [[OLPC Peru|Peru]] or [[OLPC Uruguay|Uruguay]] in the case of [[Spanish]]. Similarly, for other languages. If the system can't find the right locale, it will default to the native language of the application&mdash;most probably English.

: [[Activity Bundle]]s have their own [[Activity Bundle#Bundle Structure|''locale'' subdirectory structure]] where they store their string catalogs (<tt>.mo</tt> files).

:''NOTE: given that .PO files also store language info, the above relationship between .mo (a derivative of a .po files) and the actual directory needs to be verified!''

So in order to have [[Sugar]] in your own language, you must have a <tt>.mo</tt> (derived from an appropriate <tt>.po</tt> file) in a corresponding <tt>.../locale/''language_pref''/LC_MESSAGES</tt> directory.

In order to verify this you can do the following:
echo LANG # to see what is the currently default language of your system
echo LANGUAGES # to see the sequence of languages the system fallbacks to
And verify in which of those ''locales'' a <tt>sugar.mo</tt> file is found. If you fail to have the appropriate combination, then you should try to set it up by following the instructions below.

== Sugar in your language ==

=== Obtaining the .po ===

In order to generate the corresponding <tt>.mo</tt> file, we must have a <tt>.po</tt> for the target language (ie: <tt>es.po</tt>). You can find the currently available file in the [http://dev.laptop.org/git?p=sugar;a=tree;h=b88c3744a456d9d72e243d98ea5fd1deba41fb45;hb=7b0d65a21147388790dc6e490d8735d93759762e;f=po git po tree] (currently it has the [http://dev.laptop.org/git?p=sugar;a=blob_plain;h=50b6dbee2ea4a8118c95c0bd5358e495531e4540;f=po/es.po es.po], [http://dev.laptop.org/git?p=sugar;a=blob_plain;h=fb37cfbbc9ebc875ff44baacf233868623ff3d96;f=po/ha.po ha.po], [http://dev.laptop.org/git?p=sugar;a=blob_plain;h=e7824d6f3615660c1e8d316e8a66ba6461eb1776;f=po/ig.po ig.po], [http://dev.laptop.org/git?p=sugar;a=blob_plain;h=318d23fef56282a0a9814b94111f64eb3c53699f;f=po/it.po it.po], and [http://dev.laptop.org/git?p=sugar;a=blob_plain;h=6752ed89ccd193f39dfa01af60e4a30d699a147e;f=po/yo.po yo.po] files).

If you don't find the <tt>.po</tt> in your language you can always grab an existing one, copy it to an appropriate name (ie: ur.po) and translate it into said language (in the example ur=urdu).

=== Making the .mo ===

In order to generate a particular <tt>.mo</tt> from its <tt>.po</tt> you must have access to <tt>gettext</tt>, which if you don't have in your system you can install it by doing
yum install gettext # for Red Hat / Fedora systems
apt-get install gettext # for Ubuntu / Debian systems
msgfmt es.po -o es.mo # to create the given .mo

cp es.mo /usr/share/locale/es.UTF-8/LC_MESSAGES/sugar.mo

== Keyboard in your language ==

What good is seeing the interface in a particular language if your keyboard is in another? Here's how you get your keyboard in your language. (extracted from [[Customizing NAND images]]).

{{ Box File | /etc/X11/xorg.conf |Section "InputDevice"
: Identifier "Keyboard1"
: ...
: Option "XkbLayout" "'''en'''"
: Option "XkbOptions" "olpc"
EndSection}}
You should modify the <tt>"XkbLayout" "'''en'''"</tt> to whatever layout you want (ie: <tt>es, pt, ...</tt>). In order to enable the language switch ([[Image:Key arabic.jpg]] or [[Image:Key thai.jpg]]) you should set <tt>"XkbLayout" "'''en,ara'''"</tt> or other combinations (ie: <tt>"en,th"; "en,ur"; etc.</tt>) and <tt>Option "XkbOptions" "olpc"</tt> to <tt>"olpc,olpc2"</tt>
{{ Box File | /etc/X11/xorg.conf |Section "InputDevice"
: Identifier "Keyboard1"
: ...
: Option "XkbLayout" "'''en,th'''"
: Option "XkbOptions" "olpc,olpc2"
EndSection}}

After saving the changes, and in order to enable them, you must either reboot the machine, or issue the following commands:
/sbin/telinit 3
/sbin/telinit 5


----
----


{{cleanup}}
: ''what follows is a dump/resume of the chat session... will translate and format''

* entrar en consola (o vía ssh) y fijarse si existe el siguiente archivo:
*: /usr/share/locale/es/LC_MESSAGES/sugar.mo
*: (pueden existir otros como aspell.mo y hal.mo)
* el es.PO esta en:
*: [http://dev.laptop.org/git?p=sugar;a=blob;h=50b6dbee2ea4a8118c95c0bd5358e495531e4540;hb=c1346a530301a420eb30918f45dc18b142fa1589;f=po/es.po HTML]
*: [http://dev.laptop.org/git?p=sugar;a=blob_plain;h=50b6dbee2ea4a8118c95c0bd5358e495531e4540;f=po/es.po UTF-8]
*: other - http://gnrfan.org/files/olpc/l10n/es.po.gz
*::wget -c http://gnrfan.org/files/olpc/l10n/es.po.gz
*::gunzip es.po.gz
*: si tienen un .POT (Portable Object *Template*) y quieren crear un .PO para nu nuevo idioma se lo renombra:
*:* cp sugar.pot es.po
* proceder a instalar <tt>gettext</tt> segun la distro: (por lo menos en el build 406 no está)
** yum install gettext # Red Hat
** apt-get install gettext # Ubuntu / Debian
* crear el .MO
*: msgfmt es.po -o es.mo
* asegurarse que el LANG esté bien configurado (fundamental el .UTF-8)
*: es_AR.UTF-8
* instalar el .MO
*: mkdir -p /usr/share/locale/es.UTF-8/LC_MESSAGES
*: cp es.mo /usr/share/locale/es.UTF-8/LC_MESSAGES/sugar.mo
* configurar la variable de entorno en /etc/sysconfig/i18n debe decir
*: LANG="es.UTF-8"
*: la variable LANGUAGE va poniendo lenguajes por prioridad
*:: LANGUAGE="es_PE.UTF-8:es_ES.UTF-8:es.UTF-8:es_PE:es_UE:es:en_US.UTF-8:en"
* reboot!


[[Category:Sugar]]
[[Category:Language support]]
[[Category:HowTo]]

Latest revision as of 20:05, 11 September 2007