853 lines
20 KiB
Plaintext
853 lines
20 KiB
Plaintext
This is Info file gettext.info, produced by Makeinfo version 1.68 from
|
||
the input file gettext.texi.
|
||
|
||
INFO-DIR-SECTION GNU Gettext Utilities
|
||
START-INFO-DIR-ENTRY
|
||
* Gettext: (gettext). GNU gettext utilities.
|
||
* gettextize: (gettext)gettextize Invocation. Prepare a package for gettext.
|
||
* msgfmt: (gettext)msgfmt Invocation. Make MO files out of PO files.
|
||
* msgmerge: (gettext)msgmerge Invocation. Update two PO files into one.
|
||
* xgettext: (gettext)xgettext Invocation. Extract strings into a PO file.
|
||
END-INFO-DIR-ENTRY
|
||
|
||
This file provides documentation for GNU `gettext' utilities. It
|
||
also serves as a reference for the free Translation Project.
|
||
|
||
Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
|
||
|
||
Permission is granted to make and distribute verbatim copies of this
|
||
manual provided the copyright notice and this permission notice are
|
||
preserved on all copies.
|
||
|
||
Permission is granted to copy and distribute modified versions of
|
||
this manual under the conditions for verbatim copying, provided that
|
||
the entire resulting derived work is distributed under the terms of a
|
||
permission notice identical to this one.
|
||
|
||
Permission is granted to copy and distribute translations of this
|
||
manual into another language, under the above conditions for modified
|
||
versions, except that this permission notice may be stated in a
|
||
translation approved by the Foundation.
|
||
|
||
|
||
File: gettext.info, Node: Adjusting Files, Prev: gettextize Invocation, Up: Maintainers
|
||
|
||
Files You Must Create or Alter
|
||
==============================
|
||
|
||
Besides files which are automatically added through `gettextize',
|
||
there are many files needing revision for properly interacting with GNU
|
||
`gettext'. If you are closely following GNU standards for Makefile
|
||
engineering and auto-configuration, the adaptations should be easier to
|
||
achieve. Here is a point by point description of the changes needed in
|
||
each.
|
||
|
||
So, here comes a list of files, each one followed by a description of
|
||
all alterations it needs. Many examples are taken out from the GNU
|
||
`gettext' 0.10.35 distribution itself. You may indeed refer to the
|
||
source code of the GNU `gettext' package, as it is intended to be a
|
||
good example and master implementation for using its own functionality.
|
||
|
||
* Menu:
|
||
|
||
* po/POTFILES.in:: `POTFILES.in' in `po/'
|
||
* configure.in:: `configure.in' at top level
|
||
* aclocal:: `aclocal.m4' at top level
|
||
* acconfig:: `acconfig.h' at top level
|
||
* Makefile:: `Makefile.in' at top level
|
||
* src/Makefile:: `Makefile.in' in `src/'
|
||
|
||
|
||
File: gettext.info, Node: po/POTFILES.in, Next: configure.in, Prev: Adjusting Files, Up: Adjusting Files
|
||
|
||
`POTFILES.in' in `po/'
|
||
----------------------
|
||
|
||
The `po/' directory should receive a file named `POTFILES.in'. This
|
||
file tells which files, among all program sources, have marked strings
|
||
needing translation. Here is an example of such a file:
|
||
|
||
# List of source files containing translatable strings.
|
||
# Copyright (C) 1995 Free Software Foundation, Inc.
|
||
|
||
# Common library files
|
||
lib/error.c
|
||
lib/getopt.c
|
||
lib/xmalloc.c
|
||
|
||
# Package source files
|
||
src/gettextp.c
|
||
src/msgfmt.c
|
||
src/xgettext.c
|
||
|
||
Dashed comments and white lines are ignored. All other lines list
|
||
those source files containing strings marked for translation (*note
|
||
Mark Keywords::.), in a notation relative to the top level of your
|
||
whole distribution, rather than the location of the `POTFILES.in' file
|
||
itself.
|
||
|
||
|
||
File: gettext.info, Node: configure.in, Next: aclocal, Prev: po/POTFILES.in, Up: Adjusting Files
|
||
|
||
`configure.in' at top level
|
||
---------------------------
|
||
|
||
1. Declare the package and version.
|
||
|
||
This is done by a set of lines like these:
|
||
|
||
PACKAGE=gettext
|
||
VERSION=0.10.35
|
||
AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE")
|
||
AC_DEFINE_UNQUOTED(VERSION, "$VERSION")
|
||
AC_SUBST(PACKAGE)
|
||
AC_SUBST(VERSION)
|
||
|
||
Of course, you replace `gettext' with the name of your package,
|
||
and `0.10.35' by its version numbers, exactly as they should
|
||
appear in the packaged `tar' file name of your distribution
|
||
(`gettext-0.10.35.tar.gz', here).
|
||
|
||
2. Declare the available translations.
|
||
|
||
This is done by defining `ALL_LINGUAS' to the white separated,
|
||
quoted list of available languages, in a single line, like this:
|
||
|
||
ALL_LINGUAS="de fr"
|
||
|
||
This example means that German and French PO files are available,
|
||
so that these languages are currently supported by your package.
|
||
If you want to further restrict, at installation time, the set of
|
||
installed languages, this should not be done by modifying
|
||
`ALL_LINGUAS' in `configure.in', but rather by using the `LINGUAS'
|
||
environment variable (*note Installers::.).
|
||
|
||
3. Check for internationalization support.
|
||
|
||
Here is the main `m4' macro for triggering internationalization
|
||
support. Just add this line to `configure.in':
|
||
|
||
AM_GNU_GETTEXT
|
||
|
||
This call is purposely simple, even if it generates a lot of
|
||
configure time checking and actions.
|
||
|
||
4. Have output files created.
|
||
|
||
The `AC_OUTPUT' directive, at the end of your `configure.in' file,
|
||
needs to be modified in two ways:
|
||
|
||
AC_OUTPUT([EXISTING CONFIGURATION FILES intl/Makefile po/Makefile.in],
|
||
EXISTING ADDITIONAL ACTIONS])
|
||
|
||
The modification to the first argument to `AC_OUTPUT' asks for
|
||
substitution in the `intl/' and `po/' directories. Note the `.in'
|
||
suffix used for `po/' only. This is because the distributed file
|
||
is really `po/Makefile.in.in'.
|
||
|
||
|
||
|
||
File: gettext.info, Node: aclocal, Next: acconfig, Prev: configure.in, Up: Adjusting Files
|
||
|
||
`aclocal.m4' at top level
|
||
-------------------------
|
||
|
||
If you do not have an `aclocal.m4' file in your distribution, the
|
||
simplest is taking a copy of `aclocal.m4' from GNU `gettext'. But to
|
||
be precise, you only need macros `AM_LC_MESSAGES', `AM_WITH_NLS' and
|
||
`AM_GNU_GETTEXT', and `AM_PATH_PROG_WITH_TEST', which is called by
|
||
`AM_WITH_NLS', so you may use an editor and remove macros you do not
|
||
need.
|
||
|
||
If you already have an `aclocal.m4' file, then you will have to
|
||
merge the said macros into your `aclocal.m4'. Note that if you are
|
||
upgrading from a previous release of GNU `gettext', you should most
|
||
probably *replace* the said macros, as they usually change a little
|
||
from one release of GNU `gettext' to the next. Their contents may vary
|
||
as we get more experience with strange systems out there.
|
||
|
||
These macros check for the internationalization support functions
|
||
and related informations. Hopefully, once stabilized, these macros
|
||
might be integrated in the standard Autoconf set, because this piece of
|
||
`m4' code will be the same for all projects using GNU `gettext'.
|
||
|
||
|
||
File: gettext.info, Node: acconfig, Next: Makefile, Prev: aclocal, Up: Adjusting Files
|
||
|
||
`acconfig.h' at top level
|
||
-------------------------
|
||
|
||
If you do not have an `acconfig.h' file in your distribution, the
|
||
simplest is use take a copy of `acconfig.h' from GNU `gettext'. But to
|
||
be precise, you only need the lines and comments for `ENABLE_NLS',
|
||
`HAVE_CATGETS', `HAVE_GETTEXT' and `HAVE_LC_MESSAGES', `HAVE_STPCPY',
|
||
`PACKAGE' and `VERSION', so you may use an editor and remove everything
|
||
else. If you already have an `acconfig.h' file, then you should merge
|
||
the said definitions into your `acconfig.h'.
|
||
|
||
|
||
File: gettext.info, Node: Makefile, Next: src/Makefile, Prev: acconfig, Up: Adjusting Files
|
||
|
||
`Makefile.in' at top level
|
||
--------------------------
|
||
|
||
Here are a few modifications you need to make to your main, top-level
|
||
`Makefile.in' file.
|
||
|
||
1. Add the following lines near the beginning of your `Makefile.in',
|
||
so the `dist:' goal will work properly (as explained further down):
|
||
|
||
PACKAGE = @PACKAGE@
|
||
VERSION = @VERSION@
|
||
|
||
2. Add file `ABOUT-NLS' to the `DISTFILES' definition, so the file
|
||
gets distributed.
|
||
|
||
3. Wherever you process subdirectories in your `Makefile.in', be sure
|
||
you also process dir subdirectories `intl' and `po'. Special
|
||
rules in the `Makefiles' take care for the case where no
|
||
internationalization is wanted.
|
||
|
||
If you are using Makefiles, either generated by automake, or
|
||
hand-written so they carefully follow the GNU coding standards,
|
||
the effected goals for which the new subdirectories must be
|
||
handled include `installdirs', `install', `uninstall', `clean',
|
||
`distclean'.
|
||
|
||
Here is an example of a canonical order of processing. In this
|
||
example, we also define `SUBDIRS' in `Makefile.in' for it to be
|
||
further used in the `dist:' goal.
|
||
|
||
SUBDIRS = doc lib @INTLSUB@ src @POSUB@
|
||
|
||
that you will have to adapt to your own package.
|
||
|
||
4. A delicate point is the `dist:' goal, as both `intl/Makefile' and
|
||
`po/Makefile' will later assume that the proper directory has been
|
||
set up from the main `Makefile'. Here is an example at what the
|
||
`dist:' goal might look like:
|
||
|
||
distdir = $(PACKAGE)-$(VERSION)
|
||
dist: Makefile
|
||
rm -fr $(distdir)
|
||
mkdir $(distdir)
|
||
chmod 777 $(distdir)
|
||
for file in $(DISTFILES); do \
|
||
ln $$file $(distdir) 2>/dev/null || cp -p $$file $(distdir); \
|
||
done
|
||
for subdir in $(SUBDIRS); do \
|
||
mkdir $(distdir)/$$subdir || exit 1; \
|
||
chmod 777 $(distdir)/$$subdir; \
|
||
(cd $$subdir && $(MAKE) $@) || exit 1; \
|
||
done
|
||
tar chozf $(distdir).tar.gz $(distdir)
|
||
rm -fr $(distdir)
|
||
|
||
|
||
|
||
File: gettext.info, Node: src/Makefile, Prev: Makefile, Up: Adjusting Files
|
||
|
||
`Makefile.in' in `src/'
|
||
-----------------------
|
||
|
||
Some of the modifications made in the main `Makefile.in' will also
|
||
be needed in the `Makefile.in' from your package sources, which we
|
||
assume here to be in the `src/' subdirectory. Here are all the
|
||
modifications needed in `src/Makefile.in':
|
||
|
||
1. In view of the `dist:' goal, you should have these lines near the
|
||
beginning of `src/Makefile.in':
|
||
|
||
PACKAGE = @PACKAGE@
|
||
VERSION = @VERSION@
|
||
|
||
2. If not done already, you should guarantee that `top_srcdir' gets
|
||
defined. This will serve for `cpp' include files. Just add the
|
||
line:
|
||
|
||
top_srcdir = @top_srcdir@
|
||
|
||
3. You might also want to define `subdir' as `src', later allowing
|
||
for almost uniform `dist:' goals in all your `Makefile.in'. At
|
||
list, the `dist:' goal below assume that you used:
|
||
|
||
subdir = src
|
||
|
||
4. You should ensure that the final linking will use `@INTLLIBS@' as
|
||
a library. An easy way to achieve this is to manage that it gets
|
||
into `LIBS', like this:
|
||
|
||
LIBS = @INTLLIBS@ @LIBS@
|
||
|
||
In most packages internationalized with GNU `gettext', one will
|
||
find a directory `lib/' in which a library containing some helper
|
||
functions will be build. (You need at least the few functions
|
||
which the GNU `gettext' Library itself needs.) However some of
|
||
the functions in the `lib/' also give messages to the user which
|
||
of course should be translated, too. Taking care of this it is
|
||
not enough to place the support library (say `libsupport.a') just
|
||
between the `@INTLLIBS@' and `@LIBS@' in the above example.
|
||
Instead one has to write this:
|
||
|
||
LIBS = ../lib/libsupport.a @INTLLIBS@ ../lib/libsupport.a @LIBS@
|
||
|
||
5. You should also ensure that directory `intl/' will be searched for
|
||
C preprocessor include files in all circumstances. So, you have to
|
||
manage so both `-I../intl' and `-I$(top_srcdir)/intl' will be
|
||
given to the C compiler.
|
||
|
||
6. Your `dist:' goal has to conform with others. Here is a
|
||
reasonable definition for it:
|
||
|
||
distdir = ../$(PACKAGE)-$(VERSION)/$(subdir)
|
||
dist: Makefile $(DISTFILES)
|
||
for file in $(DISTFILES); do \
|
||
ln $$file $(distdir) 2>/dev/null || cp -p $$file $(distdir); \
|
||
done
|
||
|
||
|
||
|
||
File: gettext.info, Node: Conclusion, Next: Country Codes, Prev: Maintainers, Up: Top
|
||
|
||
Concluding Remarks
|
||
******************
|
||
|
||
We would like to conclude this GNU `gettext' manual by presenting an
|
||
history of the Translation Project so far. We finally give a few
|
||
pointers for those who want to do further research or readings about
|
||
Native Language Support matters.
|
||
|
||
* Menu:
|
||
|
||
* History:: History of GNU `gettext'
|
||
* References:: Related Readings
|
||
|
||
|
||
File: gettext.info, Node: History, Next: References, Prev: Conclusion, Up: Conclusion
|
||
|
||
History of GNU `gettext'
|
||
========================
|
||
|
||
Internationalization concerns and algorithms have been informally
|
||
and casually discussed for years in GNU, sometimes around GNU `libc',
|
||
maybe around the incoming `Hurd', or otherwise (nobody clearly
|
||
remembers). And even then, when the work started for real, this was
|
||
somewhat independently of these previous discussions.
|
||
|
||
This all began in July 1994, when Patrick D'Cruze had the idea and
|
||
initiative of internationalizing version 3.9.2 of GNU `fileutils'. He
|
||
then asked Jim Meyering, the maintainer, how to get those changes
|
||
folded into an official release. That first draft was full of
|
||
`#ifdef's and somewhat disconcerting, and Jim wanted to find nicer
|
||
ways. Patrick and Jim shared some tries and experimentations in this
|
||
area. Then, feeling that this might eventually have a deeper impact on
|
||
GNU, Jim wanted to know what standards were, and contacted Richard
|
||
Stallman, who very quickly and verbally described an overall design for
|
||
what was meant to become `glocale', at that time.
|
||
|
||
Jim implemented `glocale' and got a lot of exhausting feedback from
|
||
Patrick and Richard, of course, but also from Mitchum DSouza (who wrote
|
||
a `catgets'-like package), Roland McGrath, maybe David MacKenzie,
|
||
Franc,ois Pinard, and Paul Eggert, all pushing and pulling in various
|
||
directions, not always compatible, to the extent that after a couple of
|
||
test releases, `glocale' was torn apart.
|
||
|
||
While Jim took some distance and time and became dad for a second
|
||
time, Roland wanted to get GNU `libc' internationalized, and got Ulrich
|
||
Drepper involved in that project. Instead of starting from `glocale',
|
||
Ulrich rewrote something from scratch, but more conformant to the set
|
||
of guidelines who emerged out of the `glocale' effort. Then, Ulrich
|
||
got people from the previous forum to involve themselves into this new
|
||
project, and the switch from `glocale' to what was first named
|
||
`msgutils', renamed `nlsutils', and later `gettext', became officially
|
||
accepted by Richard in May 1995 or so.
|
||
|
||
Let's summarize by saying that Ulrich Drepper wrote GNU `gettext' in
|
||
April 1995. The first official release of the package, including PO
|
||
mode, occurred in July 1995, and was numbered 0.7. Other people
|
||
contributed to the effort by providing a discussion forum around
|
||
Ulrich, writing little pieces of code, or testing. These are quoted in
|
||
the `THANKS' file which comes with the GNU `gettext' distribution.
|
||
|
||
While this was being done, Franc,ois adapted half a dozen of GNU
|
||
packages to `glocale' first, then later to `gettext', putting them in
|
||
pretest, so providing along the way an effective user environment for
|
||
fine tuning the evolving tools. He also took the responsibility of
|
||
organizing and coordinating the Translation Project. After nearly a
|
||
year of informal exchanges between people from many countries,
|
||
translator teams started to exist in May 1995, through the creation and
|
||
support by Patrick D'Cruze of twenty unmoderated mailing lists for that
|
||
many native languages, and two moderated lists: one for reaching all
|
||
teams at once, the other for reaching all willing maintainers of
|
||
internationalized free software packages.
|
||
|
||
Franc,ois also wrote PO mode in June 1995 with the collaboration of
|
||
Greg McGary, as a kind of contribution to Ulrich's package. He also
|
||
gave a hand with the GNU `gettext' Texinfo manual.
|
||
|
||
|
||
File: gettext.info, Node: References, Prev: History, Up: Conclusion
|
||
|
||
Related Readings
|
||
================
|
||
|
||
Eugene H. Dorr (`dorre@well.com') maintains an interesting
|
||
bibliography on internationalization matters, called
|
||
`Internationalization Reference List', which is available as:
|
||
ftp://ftp.ora.com/pub/examples/nutshell/ujip/doc/i18n-books.txt
|
||
|
||
Michael Gschwind (`mike@vlsivie.tuwien.ac.at') maintains a
|
||
Frequently Asked Questions (FAQ) list, entitled `Programming for
|
||
Internationalisation'. This FAQ discusses writing programs which can
|
||
handle different language conventions, character sets, etc.; and is
|
||
applicable to all character set encodings, with particular emphasis on
|
||
ISO 8859-1. It is regularly published in Usenet groups
|
||
`comp.unix.questions', `comp.std.internat',
|
||
`comp.software.international', `comp.lang.c', `comp.windows.x',
|
||
`comp.std.c', `comp.answers' and `news.answers'. The home location of
|
||
this document is:
|
||
ftp://ftp.vlsivie.tuwien.ac.at/pub/8bit/ISO-programming
|
||
|
||
Patrick D'Cruze (`pdcruze@li.org') wrote a tutorial about NLS
|
||
matters, and Jochen Hein (`Hein@student.tu-clausthal.de') took over the
|
||
responsibility of maintaining it. It may be found as:
|
||
ftp://sunsite.unc.edu/pub/Linux/utils/nls/catalogs/Incoming/...
|
||
...locale-tutorial-0.8.txt.gz
|
||
|
||
This site is mirrored in:
|
||
ftp://ftp.ibp.fr/pub/linux/sunsite/
|
||
|
||
A French version of the same tutorial should be findable at:
|
||
ftp://ftp.ibp.fr/pub/linux/french/docs/
|
||
|
||
together with French translations of many Linux-related documents.
|
||
|
||
|
||
File: gettext.info, Node: Country Codes, Prev: Conclusion, Up: Top
|
||
|
||
Country Codes
|
||
*************
|
||
|
||
The ISO 639 standard defines two character codes for many countries.
|
||
All abreviations for countries or languages used in the Translation
|
||
Project should come from this standard.
|
||
|
||
`aa'
|
||
Afar.
|
||
|
||
`ab'
|
||
Abkhazian.
|
||
|
||
`af'
|
||
Afrikaans.
|
||
|
||
`am'
|
||
Amharic.
|
||
|
||
`ar'
|
||
Arabic.
|
||
|
||
`as'
|
||
Assamese.
|
||
|
||
`ay'
|
||
Aymara.
|
||
|
||
`az'
|
||
Azerbaijani.
|
||
|
||
`ba'
|
||
Bashkir.
|
||
|
||
`be'
|
||
Byelorussian.
|
||
|
||
`bg'
|
||
Bulgarian.
|
||
|
||
`bh'
|
||
Bihari.
|
||
|
||
`bi'
|
||
Bislama.
|
||
|
||
`bn'
|
||
Bengali; Bangla.
|
||
|
||
`bo'
|
||
Tibetan.
|
||
|
||
`br'
|
||
Breton.
|
||
|
||
`ca'
|
||
Catalan.
|
||
|
||
`co'
|
||
Corsican.
|
||
|
||
`cs'
|
||
Czech.
|
||
|
||
`cy'
|
||
Welsh.
|
||
|
||
`da'
|
||
Danish.
|
||
|
||
`de'
|
||
German.
|
||
|
||
`dz'
|
||
Bhutani.
|
||
|
||
`el'
|
||
Greek.
|
||
|
||
`en'
|
||
English.
|
||
|
||
`eo'
|
||
Esperanto.
|
||
|
||
`es'
|
||
Spanish.
|
||
|
||
`et'
|
||
Estonian.
|
||
|
||
`eu'
|
||
Basque.
|
||
|
||
`fa'
|
||
Persian.
|
||
|
||
`fi'
|
||
Finnish.
|
||
|
||
`fj'
|
||
Fiji.
|
||
|
||
`fo'
|
||
Faroese.
|
||
|
||
`fr'
|
||
French.
|
||
|
||
`fy'
|
||
Frisian.
|
||
|
||
`ga'
|
||
Irish.
|
||
|
||
`gd'
|
||
Scots Gaelic.
|
||
|
||
`gl'
|
||
Galician.
|
||
|
||
`gn'
|
||
Guarani.
|
||
|
||
`gu'
|
||
Gujarati.
|
||
|
||
`ha'
|
||
Hausa.
|
||
|
||
`he'
|
||
Hebrew (formerly iw).
|
||
|
||
`hi'
|
||
Hindi.
|
||
|
||
`hr'
|
||
Croatian.
|
||
|
||
`hu'
|
||
Hungarian.
|
||
|
||
`hy'
|
||
Armenian.
|
||
|
||
`ia'
|
||
Interlingua.
|
||
|
||
`id'
|
||
Indonesian (formerly in).
|
||
|
||
`ie'
|
||
Interlingue.
|
||
|
||
`ik'
|
||
Inupiak.
|
||
|
||
`is'
|
||
Icelandic.
|
||
|
||
`it'
|
||
Italian.
|
||
|
||
`iu'
|
||
Inuktitut.
|
||
|
||
`ja'
|
||
Japanese.
|
||
|
||
`jw'
|
||
Javanese.
|
||
|
||
`ka'
|
||
Georgian.
|
||
|
||
`kk'
|
||
Kazakh.
|
||
|
||
`kl'
|
||
Greenlandic.
|
||
|
||
`km'
|
||
Cambodian.
|
||
|
||
`kn'
|
||
Kannada.
|
||
|
||
`ko'
|
||
Korean.
|
||
|
||
`ks'
|
||
Kashmiri.
|
||
|
||
`ku'
|
||
Kurdish.
|
||
|
||
`ky'
|
||
Kirghiz.
|
||
|
||
`la'
|
||
Latin.
|
||
|
||
`ln'
|
||
Lingala.
|
||
|
||
`lo'
|
||
Laothian.
|
||
|
||
`lt'
|
||
Lithuanian.
|
||
|
||
`lv'
|
||
Latvian, Lettish.
|
||
|
||
`mg'
|
||
Malagasy.
|
||
|
||
`mi'
|
||
Maori.
|
||
|
||
`mk'
|
||
Macedonian.
|
||
|
||
`ml'
|
||
Malayalam.
|
||
|
||
`mn'
|
||
Mongolian.
|
||
|
||
`mo'
|
||
Moldavian.
|
||
|
||
`mr'
|
||
Marathi.
|
||
|
||
`ms'
|
||
Malay.
|
||
|
||
`mt'
|
||
Maltese.
|
||
|
||
`my'
|
||
Burmese.
|
||
|
||
`na'
|
||
Nauru.
|
||
|
||
`ne'
|
||
Nepali.
|
||
|
||
`nl'
|
||
Dutch.
|
||
|
||
`no'
|
||
Norwegian.
|
||
|
||
`oc'
|
||
Occitan.
|
||
|
||
`om'
|
||
(Afan) Oromo.
|
||
|
||
`or'
|
||
Oriya.
|
||
|
||
`pa'
|
||
Punjabi.
|
||
|
||
`pl'
|
||
Polish.
|
||
|
||
`ps'
|
||
Pashto, Pushto.
|
||
|
||
`pt'
|
||
Portuguese.
|
||
|
||
`qu'
|
||
Quechua.
|
||
|
||
`rm'
|
||
Rhaeto-Romance.
|
||
|
||
`rn'
|
||
Kirundi.
|
||
|
||
`ro'
|
||
Romanian.
|
||
|
||
`ru'
|
||
Russian.
|
||
|
||
`rw'
|
||
Kinyarwanda.
|
||
|
||
`sa'
|
||
Sanskrit.
|
||
|
||
`sd'
|
||
Sindhi.
|
||
|
||
`sg'
|
||
Sangro.
|
||
|
||
`sh'
|
||
Serbo-Croatian.
|
||
|
||
`si'
|
||
Sinhalese.
|
||
|
||
`sk'
|
||
Slovak.
|
||
|
||
`sl'
|
||
Slovenian.
|
||
|
||
`sm'
|
||
Samoan.
|
||
|
||
`sn'
|
||
Shona.
|
||
|
||
`so'
|
||
Somali.
|
||
|
||
`sq'
|
||
Albanian.
|
||
|
||
`sr'
|
||
Serbian.
|
||
|
||
`ss'
|
||
Siswati.
|
||
|
||
`st'
|
||
Sesotho.
|
||
|
||
`su'
|
||
Sundanese.
|
||
|
||
`sv'
|
||
Swedish.
|
||
|
||
`sw'
|
||
Swahili.
|
||
|
||
`ta'
|
||
Tamil.
|
||
|
||
`te'
|
||
Telugu.
|
||
|
||
`tg'
|
||
Tajik.
|
||
|
||
`th'
|
||
Thai.
|
||
|
||
`ti'
|
||
Tigrinya.
|
||
|
||
`tk'
|
||
Turkmen.
|
||
|
||
`tl'
|
||
Tagalog.
|
||
|
||
`tn'
|
||
Setswana.
|
||
|
||
`to'
|
||
Tonga.
|
||
|
||
`tr'
|
||
Turkish.
|
||
|
||
`ts'
|
||
Tsonga.
|
||
|
||
`tt'
|
||
Tatar.
|
||
|
||
`tw'
|
||
Twi.
|
||
|
||
`ug'
|
||
Uighur.
|
||
|
||
`uk'
|
||
Ukrainian.
|
||
|
||
`ur'
|
||
Urdu.
|
||
|
||
`uz'
|
||
Uzbek.
|
||
|
||
`vi'
|
||
Vietnamese.
|
||
|
||
`vo'
|
||
Volapuk.
|
||
|
||
`wo'
|
||
Wolof.
|
||
|
||
`xh'
|
||
Xhosa.
|
||
|
||
`yi'
|
||
Yiddish (formerly ji).
|
||
|
||
`yo'
|
||
Yoruba.
|
||
|
||
`za'
|
||
Zhuang.
|
||
|
||
`zh'
|
||
Chinese.
|
||
|
||
`zu'
|
||
Zulu.
|
||
|
||
|