From 88498d7b70cffdf8f74768c9d5f477637261da47 Mon Sep 17 00:00:00 2001 From: Bruno Haible Date: Fri, 30 Nov 2001 15:24:16 +0000 Subject: Automatically generated. --- doc/gettext.info-6 | 1137 +++++++++++++++++++++++++ doc/gettext.info-7 | 2352 +++++++++++++++++++++++++++++++++++++++++++++++++++ doc/gettext_15.html | 523 ++++++++++++ doc/gettext_16.html | 745 ++++++++++++++++ po/cs.gmo | Bin 0 -> 10416 bytes po/et.gmo | Bin 0 -> 10295 bytes po/gl.gmo | Bin 0 -> 10520 bytes po/id.gmo | Bin 0 -> 6746 bytes po/it.gmo | Bin 0 -> 7084 bytes po/ru.gmo | Bin 0 -> 11002 bytes po/sk.gmo | Bin 0 -> 10509 bytes po/zh.gmo | Bin 0 -> 9060 bytes 12 files changed, 4757 insertions(+) create mode 100644 doc/gettext.info-6 create mode 100644 doc/gettext.info-7 create mode 100644 doc/gettext_15.html create mode 100644 doc/gettext_16.html create mode 100644 po/cs.gmo create mode 100644 po/et.gmo create mode 100644 po/gl.gmo create mode 100644 po/id.gmo create mode 100644 po/it.gmo create mode 100644 po/ru.gmo create mode 100644 po/sk.gmo create mode 100644 po/zh.gmo diff --git a/doc/gettext.info-6 b/doc/gettext.info-6 new file mode 100644 index 0000000..e31199b --- /dev/null +++ b/doc/gettext.info-6 @@ -0,0 +1,1137 @@ +This is gettext.info, produced by makeinfo version 4.0 from +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, 1998, 2001 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: Trans Intro 1, Next: Discussions, Prev: Trans Intro 0, Up: Translators + +Introduction 1 +============== + + This is now official, GNU is going international! Here is the +announcement submitted for the January 1995 GNU Bulletin: + + A handful of GNU packages have already been adapted and provided + with message translations for several languages. Translation + teams have begun to organize, using these packages as a starting + point. But there are many more packages and many languages for + which we have no volunteer translators. If you'd like to + volunteer to work at translating messages, please send mail to + `translation@iro.umontreal.ca' indicating what language(s) you can + work on. + + This document should answer many questions for those who are curious +about the process or would like to contribute. Please at least skim +over it, hoping to cut down a little of the high volume of e-mail +generated by this collective effort towards internationalization of +free software. + + Most free programming which is widely shared is done in English, and +currently, English is used as the main communicating language between +national communities collaborating to free software. This very document +is written in English. This will not change in the foreseeable future. + + However, there is a strong appetite from national communities for +having more software able to write using national language and habits, +and there is an on-going effort to modify free software in such a way +that it becomes able to do so. The experiments driven so far raised an +enthusiastic response from pretesters, so we believe that +internationalization of free software is dedicated to succeed. + + For suggestion clarifications, additions or corrections to this +document, please e-mail to `translation@iro.umontreal.ca'. + + +File: gettext.info, Node: Discussions, Next: Organization, Prev: Trans Intro 1, Up: Translators + +Discussions +=========== + + Facing this internationalization effort, a few users expressed their +concerns. Some of these doubts are presented and discussed, here. + + * Smaller groups + + Some languages are not spoken by a very large number of people, so + people speaking them sometimes consider that there may not be all + that much demand such versions of free software packages. + Moreover, many people being _into computers_, in some countries, + generally seem to prefer English versions of their software. + + On the other end, people might enjoy their own language a lot, and + be very motivated at providing to themselves the pleasure of + having their beloved free software speaking their mother tongue. + They do themselves a personal favor, and do not pay that much + attention to the number of people beneficiating of their work. + + * Misinterpretation + + Other users are shy to push forward their own language, seeing in + this some kind of misplaced propaganda. Someone thought there + must be some users of the language over the networks pestering + other people with it. + + But any spoken language is worth localization, because there are + people behind the language for whom the language is important and + dear to their hearts. + + * Odd translations + + The biggest problem is to find the right translations so that + everybody can understand the messages. Translations are usually a + little odd. Some people get used to English, to the extent they + may find translations into their own language "rather pushy, + obnoxious and sometimes even hilarious." As a French speaking + man, I have the experience of those instruction manuals for goods, + so poorly translated in French in Korea or Taiwan... + + The fact is that we sometimes have to create a kind of national + computer culture, and this is not easy without the collaboration of + many people liking their mother tongue. This is why translations + are better achieved by people knowing and loving their own + language, and ready to work together at improving the results they + obtain. + + * Dependencies over the GPL or LGPL + + Some people wonder if using GNU `gettext' necessarily brings their + package under the protective wing of the GNU General Public + License or the GNU Library General Public License, when they do + not want to make their program free, or want other kinds of + freedom. The simplest answer is "normally not". + + The GNU `gettext' library, i.e. the contents of `libintl', is + covered by the GNU Library General Public License. The rest of + the GNU `gettext' package is covered by the GNU General Public + License. + + The mere marking of localizable strings in a package, or + conditional inclusion of a few lines for initialization, is not + really including GPL'ed or LGPL'ed code. However, since the + localization routines in `libintl' are under the LGPL, the LGPL + needs to be considered. It gives the right to distribute the + complete unmodified source of `libintl' even with non-free + programs. It also gives the right to use `libintl' as a shared + library, even for non-free programs. But it gives the right to + use `libintl' as a static library or to incorporate `libintl' into + another library only to free software. + + + +File: gettext.info, Node: Organization, Next: Information Flow, Prev: Discussions, Up: Translators + +Organization +============ + + On a larger scale, the true solution would be to organize some kind +of fairly precise set up in which volunteers could participate. I gave +some thought to this idea lately, and realize there will be some touchy +points. I thought of writing to Richard Stallman to launch such a +project, but feel it might be good to shake out the ideas between +ourselves first. Most probably that Linux International has some +experience in the field already, or would like to orchestrate the +volunteer work, maybe. Food for thought, in any case! + + I guess we have to setup something early, somehow, that will help +many possible contributors of the same language to interlock and avoid +work duplication, and further be put in contact for solving together +problems particular to their tongue (in most languages, there are many +difficulties peculiar to translating technical English). My Swedish +contributor acknowledged these difficulties, and I'm well aware of them +for French. + + This is surely not a technical issue, but we should manage so the +effort of locale contributors be maximally useful, despite the national +team layer interface between contributors and maintainers. + + The Translation Project needs some setup for coordinating language +coordinators. Localizing evolving programs will surely become a +permanent and continuous activity in the free software community, once +well started. The setup should be minimally completed and tested +before GNU `gettext' becomes an official reality. The e-mail address +`translation@iro.umontreal.ca' has been setup for receiving offers from +volunteers and general e-mail on these topics. This address reaches +the Translation Project coordinator. + +* Menu: + +* Central Coordination:: Central Coordination +* National Teams:: National Teams +* Mailing Lists:: Mailing Lists + + +File: gettext.info, Node: Central Coordination, Next: National Teams, Prev: Organization, Up: Organization + +Central Coordination +-------------------- + + I also think GNU will need sooner than it thinks, that someone setup +a way to organize and coordinate these groups. Some kind of group of +groups. My opinion is that it would be good that GNU delegates this +task to a small group of collaborating volunteers, shortly. Perhaps in +`gnu.announce' a list of this national committee's can be published. + + My role as coordinator would simply be to refer to Ulrich any German +speaking volunteer interested to localization of free software +packages, and maybe helping national groups to initially organize, +while maintaining national registries for until national groups are +ready to take over. In fact, the coordinator should ease volunteers to +get in contact with one another for creating national teams, which +should then select one coordinator per language, or country +(regionalized language). If well done, the coordination should be +useful without being an overwhelming task, the time to put delegations +in place. + + +File: gettext.info, Node: National Teams, Next: Mailing Lists, Prev: Central Coordination, Up: Organization + +National Teams +-------------- + + I suggest we look for volunteer coordinators/editors for individual +languages. These people will scan contributions of translation files +for various programs, for their own languages, and will ensure high and +uniform standards of diction. + + From my current experience with other people in these days, those who +provide localizations are very enthusiastic about the process, and are +more interested in the localization process than in the program they +localize, and want to do many programs, not just one. This seems to +confirm that having a coordinator/editor for each language is a good +idea. + + We need to choose someone who is good at writing clear and concise +prose in the language in question. That is hard--we can't check it +ourselves. So we need to ask a few people to judge each others' +writing and select the one who is best. + + I announce my prerelease to a few dozen people, and you would not +believe all the discussions it generated already. I shudder to think +what will happen when this will be launched, for true, officially, +world wide. Who am I to arbitrate between two Czekolsovak users +contradicting each other, for example? + + I assume that your German is not much better than my French so that +I would not be able to judge about these formulations. What I would +suggest is that for each language there is a group for people who +maintain the PO files and judge about changes. I suspect there will be +cultural differences between how such groups of people will behave. +Some will have relaxed ways, reach consensus easily, and have anyone of +the group relate to the maintainers, while others will fight to death, +organize heavy administrations up to national standards, and use strict +channels. + + The German team is putting out a good example. Right now, they are +maybe half a dozen people revising translations of each other and +discussing the linguistic issues. I do not even have all the names. +Ulrich Drepper is taking care of coordinating the German team. He +subscribed to all my pretest lists, so I do not even have to warn him +specifically of incoming releases. + + I'm sure, that is a good idea to get teams for each language working +on translations. That will make the translations better and more +consistent. + +* Menu: + +* Sub-Cultures:: Sub-Cultures +* Organizational Ideas:: Organizational Ideas + + +File: gettext.info, Node: Sub-Cultures, Next: Organizational Ideas, Prev: National Teams, Up: National Teams + +Sub-Cultures +............ + + Taking French for example, there are a few sub-cultures around +computers which developed diverging vocabularies. Picking volunteers +here and there without addressing this problem in an organized way, +soon in the project, might produce a distasteful mix of +internationalized programs, and possibly trigger endless quarrels among +those who really care. + + Keeping some kind of unity in the way French localization of +internationalized programs is achieved is a difficult (and delicate) +job. Knowing the latin character of French people (:-), if we take this +the wrong way, we could end up nowhere, or spoil a lot of energies. +Maybe we should begin to address this problem seriously _before_ GNU +`gettext' become officially published. And I suspect that this means +soon! + + +File: gettext.info, Node: Organizational Ideas, Prev: Sub-Cultures, Up: National Teams + +Organizational Ideas +.................... + + I expect the next big changes after the official release. Please +note that I use the German translation of the short GPL message. We +need to set a few good examples before the localization goes out for +true in the free software community. Here are a few points to discuss: + + * Each group should have one FTP server (at least one master). + + * The files on the server should reflect the latest version (of + course!) and it should also contain a RCS directory with the + corresponding archives (I don't have this now). + + * There should also be a ChangeLog file (this is more useful than the + RCS archive but can be generated automatically from the later by + Emacs). + + * A "core group" should judge about questionable changes (for now + this group consists solely by me but I ask some others + occasionally; this also seems to work). + + + +File: gettext.info, Node: Mailing Lists, Prev: National Teams, Up: Organization + +Mailing Lists +------------- + + If we get any inquiries about GNU `gettext', send them on to: + + `translation@iro.umontreal.ca' + + The `*-pretest' lists are quite useful to me, maybe the idea could +be generalized to many GNU, and non-GNU packages. But each maintainer +his/her way! + + Franc,ois, we have a mechanism in place here at `gnu.ai.mit.edu' to +track teams, support mailing lists for them and log members. We have a +slight preference that you use it. If this is OK with you, I can get +you clued in. + + Things are changing! A few years ago, when Daniel Fekete and I +asked for a mailing list for GNU localization, nested at the FSF, we +were politely invited to organize it anywhere else, and so did we. For +communicating with my pretesters, I later made a handful of mailing +lists located at iro.umontreal.ca and administrated by `majordomo'. +These lists have been _very_ dependable so far... + + I suspect that the German team will organize itself a mailing list +located in Germany, and so forth for other countries. But before they +organize for true, it could surely be useful to offer mailing lists +located at the FSF to each national team. So yes, please explain me +how I should proceed to create and handle them. + + We should create temporary mailing lists, one per country, to help +people organize. Temporary, because once regrouped and structured, it +would be fair the volunteers from country bring back _their_ list in +there and manage it as they want. My feeling is that, in the long run, +each team should run its own list, from within their country. There +also should be some central list to which all teams could subscribe as +they see fit, as long as each team is represented in it. + + +File: gettext.info, Node: Information Flow, Prev: Organization, Up: Translators + +Information Flow +================ + + There will surely be some discussion about this messages after the +packages are finally released. If people now send you some proposals +for better messages, how do you proceed? Jim, please note that right +now, as I put forward nearly a dozen of localizable programs, I receive +both the translations and the coordination concerns about them. + + If I put one of my things to pretest, Ulrich receives the +announcement and passes it on to the German team, who make last minute +revisions. Then he submits the translation files to me _as the +maintainer_. For free packages I do not maintain, I would not even +hear about it. This scheme could be made to work for the whole +Translation Project, I think. For security reasons, maybe Ulrich +(national coordinators, in fact) should update central registry kept at +the Translation Project (Jim, me, or Len's recruits) once in a while. + + In December/January, I was aggressively ready to internationalize +all of GNU, giving myself the duty of one small GNU package per week or +so, taking many weeks or months for bigger packages. But it does not +work this way. I first did all the things I'm responsible for. I've +nothing against some missionary work on other maintainers, but I'm also +loosing a lot of energy over it--same debates over again. + + And when the first localized packages are released we'll get a lot of +responses about ugly translations :-). Surely, and we need to have +beforehand a fairly good idea about how to handle the information flow +between the national teams and the package maintainers. + + Please start saving somewhere a quick history of each PO file. I +know for sure that the file format will change, allowing for comments. +It would be nice that each file has a kind of log, and references for +those who want to submit comments or gripes, or otherwise contribute. +I sent a proposal for a fast and flexible format, but it is not +receiving acceptance yet by the GNU deciders. I'll tell you when I +have more information about this. + + +File: gettext.info, Node: Maintainers, Next: Programming Languages, Prev: Translators, Up: Top + +The Maintainer's View +********************* + + The maintainer of a package has many responsibilities. One of them +is ensuring that the package will install easily on many platforms, and +that the magic we described earlier (*note Users::) will work for +installers and end users. + + Of course, there are many possible ways by which GNU `gettext' might +be integrated in a distribution, and this chapter does not cover them +in all generality. Instead, it details one possible approach which is +especially adequate for many free software distributions following GNU +standards, or even better, Gnits standards, because GNU `gettext' is +purposely for helping the internationalization of the whole GNU +project, and as many other good free packages as possible. So, the +maintainer's view presented here presumes that the package already has +a `configure.in' file and uses GNU Autoconf. + + Nevertheless, GNU `gettext' may surely be useful for free packages +not following GNU standards and conventions, but the maintainers of such +packages might have to show imagination and initiative in organizing +their distributions so `gettext' work for them in all situations. +There are surely many, out there. + + Even if `gettext' methods are now stabilizing, slight adjustments +might be needed between successive `gettext' versions, so you should +ideally revise this chapter in subsequent releases, looking for changes. + +* Menu: + +* Flat and Non-Flat:: Flat or Non-Flat Directory Structures +* Prerequisites:: Prerequisite Works +* gettextize Invocation:: Invoking the `gettextize' Program +* Adjusting Files:: Files You Must Create or Alter + + +File: gettext.info, Node: Flat and Non-Flat, Next: Prerequisites, Prev: Maintainers, Up: Maintainers + +Flat or Non-Flat Directory Structures +===================================== + + Some free software packages are distributed as `tar' files which +unpack in a single directory, these are said to be "flat" distributions. +Other free software packages have a one level hierarchy of +subdirectories, using for example a subdirectory named `doc/' for the +Texinfo manual and man pages, another called `lib/' for holding +functions meant to replace or complement C libraries, and a +subdirectory `src/' for holding the proper sources for the package. +These other distributions are said to be "non-flat". + + We cannot say much about flat distributions. A flat directory +structure has the disadvantage of increasing the difficulty of updating +to a new version of GNU `gettext'. Also, if you have many PO files, +this could somewhat pollute your single directory. Also, GNU +`gettext''s libintl sources consist of C sources, shell scripts, `sed' +scripts and complicated Makefile rules, which don't fit well into an +existing flat structure. For these reasons, we recommend to use +non-flat approach in this case as well. + + Maybe because GNU `gettext' itself has a non-flat structure, we have +more experience with this approach, and this is what will be described +in the remaining of this chapter. Some maintainers might use this as +an opportunity to unflatten their package structure. + + +File: gettext.info, Node: Prerequisites, Next: gettextize Invocation, Prev: Flat and Non-Flat, Up: Maintainers + +Prerequisite Works +================== + + There are some works which are required for using GNU `gettext' in +one of your package. These works have some kind of generality that +escape the point by point descriptions used in the remainder of this +chapter. So, we describe them here. + + * Before attempting to use `gettextize' you should install some + other packages first. Ensure that recent versions of GNU `m4', + GNU Autoconf and GNU `gettext' are already installed at your site, + and if not, proceed to do this first. If you got to install these + things, beware that GNU `m4' must be fully installed before GNU + Autoconf is even _configured_. + + To further ease the task of a package maintainer the `automake' + package was designed and implemented. GNU `gettext' now uses this + tool and the `Makefile's in the `intl/' and `po/' therefore know + about all the goals necessary for using `automake' and `libintl' + in one project. + + Those four packages are only needed to you, as a maintainer; the + installers of your own package and end users do not really need + any of GNU `m4', GNU Autoconf, GNU `gettext', or GNU `automake' + for successfully installing and running your package, with messages + properly translated. But this is not completely true if you + provide internationalized shell scripts within your own package: + GNU `gettext' shall then be installed at the user site if the end + users want to see the translation of shell script messages. + + * Your package should use Autoconf and have a `configure.in' or + `configure.ac' file. If it does not, you have to learn how. The + Autoconf documentation is quite well written, it is a good idea + that you print it and get familiar with it. + + * Your C sources should have already been modified according to + instructions given earlier in this manual. *Note Sources::. + + * Your `po/' directory should receive all PO files submitted to you + by the translator teams, each having `LL.po' as a name. This is + not usually easy to get translation work done before your package + gets internationalized and available! Since the cycle has to + start somewhere, the easiest for the maintainer is to start with + absolutely no PO files, and wait until various translator teams + get interested in your package, and submit PO files. + + + It is worth adding here a few words about how the maintainer should +ideally behave with PO files submissions. As a maintainer, your role is +to authentify the origin of the submission as being the representative +of the appropriate translating teams of the Translation Project (forward +the submission to `translation@iro.umontreal.ca' in case of doubt), to +ensure that the PO file format is not severely broken and does not +prevent successful installation, and for the rest, to merely to put +these PO files in `po/' for distribution. + + As a maintainer, you do not have to take on your shoulders the +responsibility of checking if the translations are adequate or +complete, and should avoid diving into linguistic matters. Translation +teams drive themselves and are fully responsible of their linguistic +choices for the Translation Project. Keep in mind that translator +teams are _not_ driven by maintainers. You can help by carefully +redirecting all communications and reports from users about linguistic +matters to the appropriate translation team, or explain users how to +reach or join their team. The simplest might be to send them the +`ABOUT-NLS' file. + + Maintainers should _never ever_ apply PO file bug reports +themselves, short-cutting translation teams. If some translator has +difficulty to get some of her points through her team, it should not be +an issue for her to directly negotiate translations with maintainers. +Teams ought to settle their problems themselves, if any. If you, as a +maintainer, ever think there is a real problem with a team, please +never try to _solve_ a team's problem on your own. + + +File: gettext.info, Node: gettextize Invocation, Next: Adjusting Files, Prev: Prerequisites, Up: Maintainers + +Invoking the `gettextize' Program +================================= + + Some files are consistently and identically needed in every package +internationalized through GNU `gettext'. As a matter of convenience, +the `gettextize' program puts all these files right in your package. +This program has the following synopsis: + + gettextize [ OPTION... ] [ DIRECTORY ] + +and accepts the following options: + +`-c' +`--copy' + Copy the needed files instead of making symbolic links. Using + links would allow the package to always use the latest `gettext' + code available on the system, but it might disturb some mechanism + the maintainer is used to apply to the sources. Because running + `gettextize' is easy there shouldn't be problems with using copies. + +`-f' +`--force' + Force replacement of files which already exist. + +`--intl' + Install the libintl sources in a subdirectory named `intl/'. This + libintl will be used to provide internationalization on systems + that don't have GNU libintl installed. If this option is omitted, + the call to `AM_GNU_GETTEXT' in `configure.in' should read: + `AM_GNU_GETTEXT([external])', and internationalization will not be + enabled on systems lacking GNU gettext. + +`-h' +`--help' + Display this help and exit. + +`--version' + Output version information and exit. + + If DIRECTORY is given, this is the top level directory of a package +to prepare for using GNU `gettext'. If not given, it is assumed that +the current directory is the top level directory of such a package. + + The program `gettextize' provides the following files. However, no +existing file will be replaced unless the option `--force' (`-f') is +specified. + + 1. The `ABOUT-NLS' file is copied in the main directory of your + package, the one being at the top level. This file gives the main + indications about how to install and use the Native Language + Support features of your program. You might elect to use a more + recent copy of this `ABOUT-NLS' file than the one provided through + `gettextize', if you have one handy. You may also fetch a more + recent copy of file `ABOUT-NLS' from Translation Project sites, + and from most GNU archive sites. + + 2. A `po/' directory is created for eventually holding all + translation files, but initially only containing the file + `po/Makefile.in.in' from the GNU `gettext' distribution. (beware + the double `.in' in the file name) and a few auxiliary files. If + the `po/' directory already exists, it will be preserved along + with the files it contains, and only `Makefile.in.in' and the + auxiliary files will be overwritten. + + 3. Only of `--intl' has been specified: A `intl/' directory is + created and filled with most of the files originally in the + `intl/' directory of the GNU `gettext' distribution. Also, if + option `--force' (`-f') is given, the `intl/' directory is emptied + first. + + + If your site support symbolic links, `gettextize' will not actually +copy the files into your package, but establish symbolic links instead. +This avoids duplicating the disk space needed in all packages. Merely +using the `-h' option while creating the `tar' archive of your +distribution will resolve each link by an actual copy in the +distribution archive. So, to insist, you really should use `-h' option +with `tar' within your `dist' goal of your main `Makefile.in'. + + It is interesting to understand that most new files for supporting +GNU `gettext' facilities in one package go in `intl/' and `po/' +subdirectories. One distinction between these two directories is that +`intl/' is meant to be completely identical in all packages using GNU +`gettext', while all newly created files, which have to be different, +go into `po/'. There is a common `Makefile.in.in' in `po/', because +the `po/' directory needs its own `Makefile', and it has been designed +so it can be identical in all packages. + + +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.11-pre2 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/' +* po/LINGUAS:: `LINGUAS' in `po/' +* po/Makevars:: `Makefile' pieces in `po/' +* configure.in:: `configure.in' at top level +* config.guess:: `config.guess', `config.sub' 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: po/LINGUAS, 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/gettext.c + src/msgfmt.c + src/xgettext.c + +Hash-marked 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: po/LINGUAS, Next: po/Makevars, Prev: po/POTFILES.in, Up: Adjusting Files + +`LINGUAS' in `po/' +------------------ + + The `po/' directory should also receive a file named `LINGUAS'. +This file contains the list of available translations. It is a +whitespace separated list. Hash-marked comments and white lines are +ignored. Here is an example file: + + # Set of available languages. + 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 the `LINGUAS' file, but +rather by using the `LINGUAS' environment variable (*note Installers::). + + +File: gettext.info, Node: po/Makevars, Next: configure.in, Prev: po/LINGUAS, Up: Adjusting Files + +`Makefile' pieces in `po/' +-------------------------- + + The `po/' directory also has a file named `Makevars'. It can be +left unmodified if your package has a single message domain and, +accordingly, a single `po/' directory. Only packages which have +multiple `po/' directories at different locations need to adjust the +three variables defined in `Makevars'. + + `po/Makevars' gets inserted into the `po/Makefile' when the latter +is created. At the same time, all files called `Rules-*' in the `po/' +directory get appended to the `po/Makefile'. They present an +opportunity to add rules for special PO files to the Makefile, without +needing to mess with `po/Makefile.in.in'. + + GNU gettext comes with a `Rules-quot' file, containing rules for +building catalogs `en@quot.po' and `en@boldquot.po'. The effect of +`en@quot.po' is that people who set their `LANGUAGE' environment +variable to `en@quot' will get messages with proper looking symmetric +Unicode quotation marks instead of abusing the ASCII grave accent and +the ASCII apostrophe for indicating quotations. To enable this catalog, +simply add `en@quot' to the `po/LINGUAS' file. The effect of +`en@boldquot.po' is that people who set `LANGUAGE' to `en@boldquot' +will get not only proper quotation marks, but also the quoted text will +be shown in a bold font on terminals and consoles. This catalog is +useful only for command-line programs, not GUI programs. To enable it, +similarly add `en@boldquot' to the `po/LINGUAS' file. + + +File: gettext.info, Node: configure.in, Next: config.guess, Prev: po/Makevars, Up: Adjusting Files + +`configure.in' at top level +--------------------------- + + `configure.in' or `configure.ac' - this is the source from which +`autoconf' generates the `configure' script. + + 1. Declare the package and version. + + This is done by a set of lines like these: + + PACKAGE=gettext + VERSION=0.11-pre2 + 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.11-pre2' by its version numbers, exactly as they should + appear in the packaged `tar' file name of your distribution + (`gettext-0.11-pre2.tar.gz', here). + + 2. 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. + + If you have suppressed the `intl/' subdirectory by calling + `gettextize' without `--intl' option, this call should read + + AM_GNU_GETTEXT([external]) + + 3. 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'. + + If you have suppressed the `intl/' subdirectory by calling + `gettextize' without `--intl' option, then you don't need to add + `intl/Makefile' to the `AC_OUTPUT' line. + + + +File: gettext.info, Node: config.guess, Next: aclocal, Prev: configure.in, Up: Adjusting Files + +`config.guess', `config.sub' at top level +----------------------------------------- + + If you don't have suppressed the `intl/' subdirectory, you need to +add the GNU `config.guess' and `config.sub' files to your distribution. +They are needed because the `intl/' directory has platform dependent +support for determining the locale's character encoding and therefore +needs to identify the platform. + + You can obtain the newest version of `config.guess' and `config.sub' +from `ftp://ftp.gnu.org/pub/gnu/config/'. Less recent versions are +also contained in the GNU `automake' and GNU `libtool' packages. + + Normally, `config.guess' and `config.sub' are put at the top level +of a distribution. But it is also possible to put them in a +subdirectory, altogether with other configuration support files like +`install-sh', `ltconfig', `ltmain.sh', `mkinstalldirs' or `missing'. +All you need to do, other than moving the files, is to add the +following line to your `configure.in'. + + AC_CONFIG_AUX_DIR([SUBDIR]) + + +File: gettext.info, Node: aclocal, Next: acconfig, Prev: config.guess, Up: Adjusting Files + +`aclocal.m4' at top level +------------------------- + + If you do not have an `aclocal.m4' file in your distribution, the +simplest is to concatenate the files `codeset.m4', `gettext.m4', +`glibc21.m4', `iconv.m4', `isc-posix.m4', `lcmessage.m4', `progtest.m4' +from GNU `gettext''s `m4/' directory into a single file. If you have +suppressed the `intl/' directory, only `gettext.m4', `iconv.m4', +`progtest.m4' need to be concatenated. + + If you already have an `aclocal.m4' file, then you will have to +merge the said macro files into your `aclocal.m4'. Note that if you +are upgrading from a previous release of GNU `gettext', you should most +probably _replace_ the macros (`AM_GNU_GETTEXT', etc.), 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 +------------------------- + + Earlier GNU `gettext' releases required to put definitions for +`ENABLE_NLS', `HAVE_GETTEXT' and `HAVE_LC_MESSAGES', `HAVE_STPCPY', +`PACKAGE' and `VERSION' into an `acconfig.h' file. This is not needed +any more; you can remove them from your `acconfig.h' file unless your +package uses them independently from the `intl/' directory. + + +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 intl lib src @POSUB@ + + Note that you must arrange for `make' to descend into the `intl' + directory before descending into other directories containing code + which make use of the `libintl.h' header file. For this reason, + here we mention `intl' before `lib' and `src'. + + 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. The `main' function of your program will normally call + `bindtextdomain' (see *note Triggering::), like this: + + bindtextdomain (PACKAGE, LOCALEDIR); + + To make LOCALEDIR known to the program, add the following lines to + Makefile.in: + + datadir = @datadir@ + localedir = $(datadir)/locale + DEFS = -DLOCALEDIR=\"$(localedir)\" @DEFS@ + + Note that `@datadir@' defaults to `$(prefix)/share', thus + `$(localedir)' defaults to `$(prefix)/share/locale'. + + 5. 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, the + support library (say `libsupport.a') should be placed before + `@INTLLIBS@' and `@LIBS@' in the above example. So one has to + write this: + + LIBS = ../lib/libsupport.a @INTLLIBS@ @LIBS@ + + 6. 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. + + 7. 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: Programming Languages, Next: Conclusion, Prev: Maintainers, Up: Top + +Other Programming Languages +*************************** + + While the presentation of `gettext' focuses mostly on C and +implicitly applies to C++ as well, its scope is far broader than that: +Many programming languages, scripting languages and other textual data +like GUI resources or package descriptions can make use of the gettext +approach. + +* Menu: + +* Language Implementors:: The Language Implementor's View +* Programmers for other Languages:: The Programmer's View +* Translators for other Languages:: The Translator's View +* List of Programming Languages:: Individual Programming Languages +* List of Data Formats:: Internationalizable Data + + +File: gettext.info, Node: Language Implementors, Next: Programmers for other Languages, Prev: Programming Languages, Up: Programming Languages + +The Language Implementor's View +=============================== + + All programming and scripting languages that have the notion of +strings are eligible to supporting `gettext'. Supporting `gettext' +means the following: + + 1. You should add to the language a syntax for translatable strings. + In principle, a function call of `gettext' would do, but a + shorthand syntax helps keeping the legibility of internationalized + programs. For example, in C we use the syntax `_("string")', in + bash we use the syntax `$"string"', and in GNU awk we use the + shorthand `_"string"'. + + 2. You should arrange that evaluation of such a translatable string at + runtime calls the `gettext' function, or performs equivalent + processing. + + 3. Similarly, you should make the functions `ngettext', `dcgettext', + `dcngettext' available from within the language. These functions + are less often used, but are nevertheless necessary for particular + purposes: `ngettext' for correct plural handling, and `dcgettext' + and `dcngettext' for obeying other locale environment variables + than `LC_MESSAGES', such as `LC_TIME' or `LC_MONETARY'. For these + latter functions, you need to make the `LC_*' constants, available + in the C header `', referenceable from within the + language, usually either as enumeration values or as strings. + + 4. You should allow the programmer to designate a message domain, + either by making the `textdomain' function available from within + the language, or by introducing a magic variable called + `TEXTDOMAIN'. Similarly, you should allow the programmer to + designate where to search for message catalogs, by providing + access to the `bindtextdomain' function. + + 5. You should either perform a `setlocale (LC_ALL, "")' call during + the startup of your language runtime, or allow the programmer to + do so. Remember that gettext will act as a no-op if the + `LC_MESSAGES' and `LC_CTYPE' locale facets are not both set. + + 6. A programmer should have a way to extract translatable strings + from a program into a PO file. The GNU `xgettext' program is being + extended to support very different programming languages. Please + contact the GNU `gettext' maintainers to help them doing this. If + the string extractor is best integrated into your language's + parser, GNU `xgettext' can function as a front end to your string + extractor. + + 7. The language's library should have a string formatting facility + where the arguments of a format string are denoted by a positional + number or a name. This is needed because for some languages and + some messages with more than one substitutable argument, the + translation will need to output the substituted arguments in + different order. *Note c-format::. + + 8. If the language has more than one implementation, and not all of + the implementations use `gettext', but the programs should be + portable across implementations, you should provide a no-i18n + emulation, that makes the other implementations accept programs + written for yours, without actually translating the strings. + + 9. To help the programmer in the task of marking translatable strings, + which is usually performed using the Emacs PO mode, you are + welcome to contact the GNU `gettext' maintainers, so they can add + support for your language to `po-mode.el'. + + On the implementation side, three approaches are possible, with +different effects on portability and copyright: + + * You may integrate the GNU `gettext''s `intl/' directory in your + package, as described in *Note Maintainers::. This allows you to + have internationalization on all kinds of platforms. Note that + when you then distribute your package, it legally falls under the + GNU General Public License, and the GNU project will be glad about + your contribution to the Free Software pool. + + * You may link against GNU `gettext' functions if they are found in + the C library. For example, an autoconf test for `gettext()' and + `ngettext()' will detect this situation. For the moment, this test + will succeed on GNU systems and not on other platforms. No severe + copyright restrictions apply. + + * You may emulate or reimplement the GNU `gettext' functionality. + This has the advantage of full portability and no copyright + restrictions, but also the drawback that you have to reimplement + the GNU `gettext' features (such as the `LANGUAGE' environment + variable, the locale aliases database, the automatic charset + conversion, and plural handling). + + +File: gettext.info, Node: Programmers for other Languages, Next: Translators for other Languages, Prev: Language Implementors, Up: Programming Languages + +The Programmer's View +===================== + + For the programmer, the general procedure is the same as for the C +language. The Emacs PO mode supports other languages, and the GNU +`xgettext' string extractor recognizes other languages based on the +file extension or a command-line option. In some languages, +`setlocale' is not needed because it is already performed by the +underlying language runtime. + + +File: gettext.info, Node: Translators for other Languages, Next: List of Programming Languages, Prev: Programmers for other Languages, Up: Programming Languages + +The Translator's View +===================== + + The translator works exactly as in the C language case. The only +difference is that when translating format strings, she has to be aware +of the language's particular syntax for positional arguments in format +strings. + diff --git a/doc/gettext.info-7 b/doc/gettext.info-7 new file mode 100644 index 0000000..30197ad --- /dev/null +++ b/doc/gettext.info-7 @@ -0,0 +1,2352 @@ +This is gettext.info, produced by makeinfo version 4.0 from +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, 1998, 2001 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: List of Programming Languages, Next: List of Data Formats, Prev: Translators for other Languages, Up: Programming Languages + +Individual Programming Languages +================================ + +* Menu: + +* C:: C, C++, Objective C +* sh:: sh - Shell Script +* bash:: bash - Bourne-Again Shell Script +* Python:: Python +* Common Lisp:: GNU clisp - Common Lisp +* clisp C:: GNU clisp C sources +* Emacs Lisp:: Emacs Lisp +* librep:: librep +* Smalltalk:: GNU Smalltalk +* Java:: Java +* gawk:: GNU awk +* Pascal:: Pascal - Free Pascal Compiler +* wxWindows:: wxWindows library +* YCP:: YCP - YaST2 scripting language +* Perl:: Perl +* PHP:: PHP Hypertext Preprocessor +* Pike:: Pike + + +File: gettext.info, Node: C, Next: sh, Prev: List of Programming Languages, Up: List of Programming Languages + +C, C++, Objective C +------------------- + +RPMs + gcc, gpp, gobjc, glibc, gettext + +File extension + For C: `c', `h'. + For C++: `C', `c++', `cc', `cxx', `cpp', `hpp'. + For Objective C: `m'. + +String syntax + `"abc"' + +gettext shorthand + `_("abc")' + +gettext/ngettext functions + `gettext', `dgettext', `dcgettext', `ngettext', `dngettext', + `dcngettext' + +textdomain + `textdomain' function + +bindtextdomain + `bindtextdomain' function + +setlocale + Programmer must call `setlocale (LC_ALL, "")' + +Prerequisite + `#include ' + `#include ' + `#define _(string) gettext (string)' + +Use or emulate GNU gettext + Use + +Extractor + `xgettext -k_' + +Formatting with positions + `fprintf "%2$d %1$d"' (POSIX but not C 99) + +Portability + autoconf (gettext.m4) and #if ENABLE_NLS + +po-mode marking + yes + + +File: gettext.info, Node: sh, Next: bash, Prev: C, Up: List of Programming Languages + +sh - Shell Script +----------------- + +RPMs + bash, gettext + +File extension + `sh' + +String syntax + `"abc"', `'abc'', `abc' + +gettext shorthand + `"`gettext "abc"`"' + +gettext/ngettext functions + `gettext', `ngettext' programs + +textdomain + environment variable `TEXTDOMAIN' + +bindtextdomain + environment variable `TEXTDOMAINDIR' + +setlocale + automatic + +Prerequisite + -- + +Use or emulate GNU gettext + use + +Extractor + -- + +Formatting with positions + -- + +Portability + -- + +po-mode marking + -- + + +File: gettext.info, Node: bash, Next: Python, Prev: sh, Up: List of Programming Languages + +bash - Bourne-Again Shell Script +-------------------------------- + +RPMs + bash 2.0 or newer, gettext + +File extension + `sh' + +String syntax + `"abc"', `'abc'', `abc' + +gettext shorthand + `$"abc"' + +gettext/ngettext functions + `gettext', `ngettext' programs + +textdomain + environment variable `TEXTDOMAIN' + +bindtextdomain + environment variable `TEXTDOMAINDIR' + +setlocale + automatic + +Prerequisite + -- + +Use or emulate GNU gettext + use + +Extractor + `bash --dump-po-strings' + +Formatting with positions + -- + +Portability + -- + +po-mode marking + -- + + +File: gettext.info, Node: Python, Next: Common Lisp, Prev: bash, Up: List of Programming Languages + +Python +------ + +RPMs + python + +File extension + `py' + +String syntax + `'abc'', `u'abc'', `r'abc'', `ur'abc'', + `"abc"', `u"abc"', `r"abc"', `ur"abc"', + `'''abc'''', `u'''abc'''', `r'''abc'''', `ur'''abc'''', + `"""abc"""', `u"""abc"""', `r"""abc"""', `ur"""abc"""' + +gettext shorthand + `_('abc')' etc. + +gettext/ngettext functions + `gettext.gettext', `gettext.dgettext', also `ugettext' + +textdomain + `gettext.textdomain' function, or `gettext.install(DOMAIN)' + function + +bindtextdomain + `gettext.bindtextdomain' function, or + `gettext.install(DOMAIN,LOCALEDIR)' function + +setlocale + not used by the gettext emulation + +Prerequisite + `import gettext' + +Use or emulate GNU gettext + emulate. Bug: uses only the first found .mo file, not all of them + +Extractor + pygettext.py + +Formatting with positions + `'...%(ident)d...' % { 'ident': value }' + +Portability + fully portable + +po-mode marking + -- + + +File: gettext.info, Node: Common Lisp, Next: clisp C, Prev: Python, Up: List of Programming Languages + +GNU clisp - Common Lisp +----------------------- + +RPMs + clisp 2.28 or newer + +File extension + `lisp' + +String syntax + `"abc"' + +gettext shorthand + `(_ "abc")', `(ENGLISH "abc")' + +gettext/ngettext functions + `i18n:gettext', `i18n:ngettext' + +textdomain + `i18n:textdomain' + +bindtextdomain + `i18n:textdomaindir' + +setlocale + automatic + +Prerequisite + -- + +Use or emulate GNU gettext + use + +Extractor + `clisp-xgettext' + +Formatting with positions + `format "~1@*~D ~0@*~D"' + +Portability + On platforms without gettext, no translation. + +po-mode marking + -- + + +File: gettext.info, Node: clisp C, Next: Emacs Lisp, Prev: Common Lisp, Up: List of Programming Languages + +GNU clisp C sources +------------------- + +RPMs + clisp + +File extension + `d' + +String syntax + `"abc"' + +gettext shorthand + `ENGLISH ? "abc" : ""' + `GETTEXT("abc")' + `GETTEXTL("abc")' + +gettext/ngettext functions + `clgettext', `clgettextl' + +textdomain + -- + +bindtextdomain + -- + +setlocale + automatic + +Prerequisite + `#include "lispbibl.c"' + +Use or emulate GNU gettext + use + +Extractor + `clisp-xgettext' + +Formatting with positions + `fprintf "%2$d %1$d"' (POSIX but not C 99) + +Portability + On platforms without gettext, no translation. + +po-mode marking + -- + + +File: gettext.info, Node: Emacs Lisp, Next: librep, Prev: clisp C, Up: List of Programming Languages + +Emacs Lisp +---------- + +RPMs + emacs, xemacs + +File extension + `el' + +String syntax + `"abc"' + +gettext shorthand + `(_"abc")' + +gettext/ngettext functions + `gettext', `dgettext' (xemacs only) + +textdomain + `domain' special form (xemacs only) + +bindtextdomain + `bind-text-domain' function (xemacs only) + +setlocale + automatic + +Prerequisite + -- + +Use or emulate GNU gettext + use + +Extractor + xpot + +Formatting with positions + `format "%2$d %1$d"' + +Portability + Only XEmacs. Without `I18N3' defined at build time, no translation. + +po-mode marking + -- + + +File: gettext.info, Node: librep, Next: Smalltalk, Prev: Emacs Lisp, Up: List of Programming Languages + +librep +------ + +RPMs + librep + +File extension + `jl' + +String syntax + `"abc"' + +gettext shorthand + `(_"abc")' + +gettext/ngettext functions + `gettext' + +textdomain + `textdomain' function + +bindtextdomain + `bindtextdomain' function + +setlocale + -- + +Prerequisite + `(require 'rep.i18n.gettext)' + +Use or emulate GNU gettext + use + +Extractor + `rep-xgettext' + +Formatting with positions + `format "%2$d %1$d"' + +Portability + On platforms without gettext, no translation. + +po-mode marking + -- + + +File: gettext.info, Node: Smalltalk, Next: Java, Prev: librep, Up: List of Programming Languages + +GNU Smalltalk +------------- + +RPMs + smalltalk + +File extension + `st' + +String syntax + `''abc''' + +gettext shorthand + `NLS? ''abc''' + `self? ''abc''' + +gettext/ngettext functions + `LcMessagesDomain>>#at:', `LcMessagesDomain>>#at:plural:with:' + +textdomain + `LcMessages>>#?' (returns a `LcMessagesDomain' object). + Example: `Locale default messages ? 'gettext'' + +bindtextdomain + `LcMessages>>#domain:directory:' (returns a `LcMessagesDomain' + object) + +setlocale + You can obtain any `Locale' object from `Locale' class methods + such as `#fromString:' or `#default'. + Example: `Locale default messages' gives the `LcMessages' object + for the default locale. + +Prerequisite + The gettext code is contained in the `I18N' package. + +Use or emulate GNU gettext + emulate + +Extractor + -- + +Formatting with positions + `'%1 %2' bindWith: 'Hello' with: 'world'' + +Portability + fully portable + +po-mode marking + -- + + +File: gettext.info, Node: Java, Next: gawk, Prev: Smalltalk, Up: List of Programming Languages + +Java +---- + +RPMs + java, java2 + +File extension + `java' + +String syntax + "abc" + +gettext shorthand + _("abc") + +gettext/ngettext functions + `GettextResource.gettext', `GettextResource.ngettext' + +textdomain + --, use `ResourceBundle.getResource' instead + +bindtextdomain + --, use CLASSPATH instead + +setlocale + automatic + +Prerequisite + -- + +Use or emulate GNU gettext + --, uses a Java specific message catalog format + +Extractor + `xgettext -k_' + +Formatting with positions + `MessageFormat.format "{1,number} {0,number}"' + +Portability + fully portable + +po-mode marking + -- + + Before marking strings as internationalizable, uses of the string +concatenation operator need to be converted to `MessageFormat' +applications. For example, `"file "+filename+" not found"' becomes +`MessageFormat.format("file {0} not found", new Object[] { filename })'. +Only after this is done, can the strings be marked and extracted. + + GNU gettext uses the native Java internationalization mechanism, +namely `ResourceBundle's. To convert a PO file to a ResourceBundle, the +`msgfmt' program can be used with the option `--java' or `--java2'. To +convert a ResourceBundle back to a PO file, the `msgunfmt' program can +be used with the option `--java'. + + Two different programmatic APIs can be used to access +ResourceBundles. Note that both APIs work with all kinds of +ResourceBundles, whether GNU gettext generated classes, or other +`.class' or `.properties' files. + + 1. The `java.util.ResourceBundle' API. + + In particular, its `getString' function returns a string + translation. Note that a missing translation yields a + `MissingResourceException'. + + This has the advantage of being the standard API. And it does not + require any additional libraries, only the `msgfmt' generated + `.class' files. But it cannot do plural handling, even if the + resource was generated from a PO file with plural handling. + + 2. The `gnu.gettext.GettextResource' API. + + Reference documentation in Javadoc 1.1 style format is in the + javadoc1 directory (javadoc1/tree.html) and in Javadoc 2 style + format in the javadoc2 directory (javadoc2/index.html). + + Its `gettext' function returns a string translation. Note that when + a translation is missing, the MSGID argument is returned unchanged. + + This has the advantage of having the `ngettext' function for plural + handling. + + To use this API, one needs the `libintl.jar' file which is part of + the GNU gettext package and distributed under the LGPL. + + +File: gettext.info, Node: gawk, Next: Pascal, Prev: Java, Up: List of Programming Languages + +GNU awk +------- + +RPMs + gawk 3.1 or newer + +File extension + `awk' + +String syntax + `"abc"' + +gettext shorthand + `_"abc"' + +gettext/ngettext functions + `dcgettext' + +textdomain + `TEXTDOMAIN' variable + +bindtextdomain + `bindtextdomain' function + +setlocale + automatic, but missing `setlocale (LC_MESSAGES, "")' in gawk-3.1.0 + +Prerequisite + -- + +Use or emulate GNU gettext + use + +Extractor + `gawk --gen-po' + +Formatting with positions + `printf "%2$d %1$d"' (GNU awk only) + +Portability + On platforms without gettext, no translation. On non-GNU awks, + you must define `dcgettext' and `bindtextdomain' yourself. + +po-mode marking + -- + + +File: gettext.info, Node: Pascal, Next: wxWindows, Prev: gawk, Up: List of Programming Languages + +Pascal - Free Pascal Compiler +----------------------------- + +RPMs + fpk + +File extension + `pp', `pas' + +String syntax + `'abc'' + +gettext shorthand + automatic + +gettext/ngettext functions + --, use `ResourceString' data type instead + +textdomain + --, use `TranslateResourceStrings' function instead + +bindtextdomain + --, use `TranslateResourceStrings' function instead + +setlocale + automatic, but uses only LANG, not LC_MESSAGES or LC_ALL + +Prerequisite + `{$mode delphi}' or `{$mode objfpc}' + `uses gettext;' + +Use or emulate GNU gettext + emulate partially + +Extractor + `ppc386' followed by `xgettext' or `rstconv' + +Formatting with positions + `uses sysutils;' + `format "%1:d %0:d"' + +Portability + ? + +po-mode marking + -- + + The Pascal compiler has special support for the `ResourceString' data +type. It generates a `.rst' file. This is then converted to a `.pot' +file by use of `xgettext' or `rstconv'. At runtime, a `.mo' file +corresponding to translations of this `.pot' file can be loaded using +the `TranslateResourceStrings' function in the `gettext' unit. + + +File: gettext.info, Node: wxWindows, Next: YCP, Prev: Pascal, Up: List of Programming Languages + +wxWindows library +----------------- + +RPMs + wxGTK, gettext + +File extension + `cpp' + +String syntax + `"abc"' + +gettext shorthand + `_("abc")' + +gettext/ngettext functions + `wxLocale::GetString', `wxGetTranslation' + +textdomain + `wxLocale::AddCatalog' + +bindtextdomain + `wxLocale::AddCatalogLookupPathPrefix' + +setlocale + `wxLocale::Init', `wxSetLocale' + +Prerequisite + `#include ' + +Use or emulate GNU gettext + emulate, see `include/wx/intl.h' and `src/common/intl.cpp' + +Extractor + `xgettext' + +Formatting with positions + -- + +Portability + fully portable + +po-mode marking + yes + + +File: gettext.info, Node: YCP, Next: Perl, Prev: wxWindows, Up: List of Programming Languages + +YCP - YaST2 scripting language +------------------------------ + +RPMs + libycp, libycp-devel, yast2-core-translator + +File extension + `ycp' + +String syntax + `"abc"' + +gettext shorthand + `_("abc")' + +gettext/ngettext functions + `_()' with 1 or 3 arguments + +textdomain + `textdomain' statement + +bindtextdomain + -- + +setlocale + -- + +Prerequisite + -- + +Use or emulate GNU gettext + use maps instead + +Extractor + `xgettext' + +Formatting with positions + `sformat "%2 %1"' + +Portability + fully portable + +po-mode marking + -- + + +File: gettext.info, Node: Perl, Next: PHP, Prev: YCP, Up: List of Programming Languages + +Perl +---- + +RPMs + perl, perl-gettext + +File extension + `pl', `PL' + +String syntax + `"abc"' + +gettext shorthand + -- + +gettext/ngettext functions + `gettext', `dgettext', `dcgettext' + +textdomain + `textdomain' function + +bindtextdomain + `bindtextdomain' function + +setlocale + Use `setlocale (LC_ALL, "");' + +Prerequisite + `use POSIX;' + `use Locale::gettext;' + +Use or emulate GNU gettext + use + +Extractor + ? + +Formatting with positions + -- + +Portability + ? + +po-mode marking + -- + + +File: gettext.info, Node: PHP, Next: Pike, Prev: Perl, Up: List of Programming Languages + +PHP Hypertext Preprocessor +-------------------------- + +RPMs + mod_php4, phplib, phpdoc + +File extension + `php', `php3', `php4' + +String syntax + `"abc"' + +gettext shorthand + `_("abc")' + +gettext/ngettext functions + `gettext', `dgettext', `dcgettext' + +textdomain + `textdomain' function + +bindtextdomain + `bindtextdomain' function + +setlocale + `setlocale' function + +Prerequisite + -- + +Use or emulate GNU gettext + use + +Extractor + -- + +Formatting with positions + -- + +Portability + On platforms without gettext, the functions are not available. + +po-mode marking + -- + + +File: gettext.info, Node: Pike, Prev: PHP, Up: List of Programming Languages + +Pike +---- + +RPMs + roxen + +File extension + `pike' + +String syntax + `"abc"' + +gettext shorthand + -- + +gettext/ngettext functions + `gettext', `dgettext', `dcgettext' + +textdomain + `textdomain' function + +bindtextdomain + `bindtextdomain' function + +setlocale + `setlocale' function + +Prerequisite + `import Locale.Gettext;' + +Use or emulate GNU gettext + use + +Extractor + -- + +Formatting with positions + -- + +Portability + On platforms without gettext, the functions are not available. + +po-mode marking + -- + + +File: gettext.info, Node: List of Data Formats, Prev: List of Programming Languages, Up: Programming Languages + +Internationalizable Data +======================== + + Here is a list of other data formats which can be internationalized +using GNU gettext. + +* Menu: + +* POT:: POT - Portable Object Template +* RST:: Resource String Table + + +File: gettext.info, Node: POT, Next: RST, Prev: List of Data Formats, Up: List of Data Formats + +POT - Portable Object Template +------------------------------ + +RPMs + gettext + +File extension + `pot', `po' + +Extractor + `xgettext' + + +File: gettext.info, Node: RST, Prev: POT, Up: List of Data Formats + +Resource String Table +--------------------- + +RPMs + fpk + +File extension + `rst' + +Extractor + `xgettext', `rstconv' + + +File: gettext.info, Node: Conclusion, Next: Language Codes, Prev: Programming Languages, 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. + + In 1997, Ulrich Drepper released the GNU libc 2.0, which included the +`gettext', `textdomain' and `bindtextdomain' functions. + + In 2000, Ulrich Drepper added plural form handling (the `ngettext' +function) to GNU libc. Later, in 2001, he released GNU libc 2.2.x, +which is the first free C library with full internationalization +support. + + Ulrich being quite busy in his role of General Maintainer of GNU +libc, he handed over the GNU `gettext' maintenance to Bruno Haible in +2000. Bruno added the plural form handling to the tools as well, added +support for UTF-8 and CJK locales, and wrote a few new tools for +manipulating PO files. + + +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: Language Codes, Next: Country Codes, Prev: Conclusion, Up: Top + +Language Codes +************** + + The ISO 639 standard defines two character codes for many languages. +All abbreviations for languages used in the Translation Project should +come from this standard. + +`aa' + Afar. + +`ab' + Abkhazian. + +`ae' + Avestan. + +`af' + Afrikaans. + +`am' + Amharic. + +`ar' + Arabic. + +`as' + Assamese. + +`ay' + Aymara. + +`az' + Azerbaijani. + +`ba' + Bashkir. + +`be' + Byelorussian; Belarusian. + +`bg' + Bulgarian. + +`bh' + Bihari. + +`bi' + Bislama. + +`bn' + Bengali; Bangla. + +`bo' + Tibetan. + +`br' + Breton. + +`bs' + Bosnian. + +`ca' + Catalan. + +`ce' + Chechen. + +`ch' + Chamorro. + +`co' + Corsican. + +`cs' + Czech. + +`cu' + Church Slavic. + +`cv' + Chuvash. + +`cy' + Welsh. + +`da' + Danish. + +`de' + German. + +`dz' + Dzongkha; Bhutani. + +`el' + Greek. + +`en' + English. + +`eo' + Esperanto. + +`es' + Spanish. + +`et' + Estonian. + +`eu' + Basque. + +`fa' + Persian. + +`fi' + Finnish. + +`fj' + Fijian; Fiji. + +`fo' + Faroese. + +`fr' + French. + +`fy' + Frisian. + +`ga' + Irish. + +`gd' + Scots; Gaelic. + +`gl' + Gallegan; Galician. + +`gn' + Guarani. + +`gu' + Gujarati. + +`gv' + Manx. + +`ha' + Hausa (?). + +`he' + Hebrew (formerly iw). + +`hi' + Hindi. + +`ho' + Hiri Motu. + +`hr' + Croatian. + +`hu' + Hungarian. + +`hy' + Armenian. + +`hz' + Herero. + +`ia' + Interlingua. + +`id' + Indonesian (formerly in). + +`ie' + Interlingue. + +`ik' + Inupiak. + +`is' + Icelandic. + +`it' + Italian. + +`iu' + Inuktitut. + +`ja' + Japanese. + +`jw' + Javanese. + +`ka' + Georgian. + +`ki' + Kikuyu. + +`kj' + Kuanyama. + +`kk' + Kazakh. + +`kl' + Kalaallisut; Greenlandic. + +`km' + Khmer; Cambodian. + +`kn' + Kannada. + +`ko' + Korean. + +`ks' + Kashmiri. + +`ku' + Kurdish. + +`kv' + Komi. + +`kw' + Cornish. + +`ky' + Kirghiz. + +`la' + Latin. + +`lb' + Letzeburgesch. + +`ln' + Lingala. + +`lo' + Lao; Laotian. + +`lt' + Lithuanian. + +`lv' + Latvian; Lettish. + +`mg' + Malagasy. + +`mh' + Marshall. + +`mi' + Maori. + +`mk' + Macedonian. + +`ml' + Malayalam. + +`mn' + Mongolian. + +`mo' + Moldavian. + +`mr' + Marathi. + +`ms' + Malay. + +`mt' + Maltese. + +`my' + Burmese. + +`na' + Nauru. + +`nb' + Norwegian Bokmaal. + +`nd' + Ndebele, North. + +`ne' + Nepali. + +`ng' + Ndonga. + +`nl' + Dutch. + +`nn' + Norwegian Nynorsk. + +`no' + Norwegian. + +`nr' + Ndebele, South. + +`nv' + Navajo. + +`ny' + Chichewa; Nyanja. + +`oc' + Occitan; Provenc,al. + +`om' + (Afan) Oromo. + +`or' + Oriya. + +`os' + Ossetian; Ossetic. + +`pa' + Panjabi; Punjabi. + +`pi' + Pali. + +`pl' + Polish. + +`ps' + Pashto, Pushto. + +`pt' + Portuguese. + +`qu' + Quechua. + +`rm' + Rhaeto-Romance. + +`rn' + Rundi; Kirundi. + +`ro' + Romanian. + +`ru' + Russian. + +`rw' + Kinyarwanda. + +`sa' + Sanskrit. + +`sc' + Sardinian. + +`sd' + Sindhi. + +`se' + Northern Sami. + +`sg' + Sango; Sangro. + +`si' + Sinhalese. + +`sk' + Slovak. + +`sl' + Slovenian. + +`sm' + Samoan. + +`sn' + Shona. + +`so' + Somali. + +`sq' + Albanian. + +`sr' + Serbian. + +`ss' + Swati; Siswati. + +`st' + Sesotho; Sotho, Southern. + +`su' + Sundanese. + +`sv' + Swedish. + +`sw' + Swahili. + +`ta' + Tamil. + +`te' + Telugu. + +`tg' + Tajik. + +`th' + Thai. + +`ti' + Tigrinya. + +`tk' + Turkmen. + +`tl' + Tagalog. + +`tn' + Tswana; Setswana. + +`to' + Tonga (?). + +`tr' + Turkish. + +`ts' + Tsonga. + +`tt' + Tatar. + +`tw' + Twi. + +`ty' + Tahitian. + +`ug' + Uighur. + +`uk' + Ukrainian. + +`ur' + Urdu. + +`uz' + Uzbek. + +`vi' + Vietnamese. + +`vo' + Volapu"k; Volapuk. + +`wo' + Wolof. + +`xh' + Xhosa. + +`yi' + Yiddish (formerly ji). + +`yo' + Yoruba. + +`za' + Zhuang. + +`zh' + Chinese. + +`zu' + Zulu. + + +File: gettext.info, Node: Country Codes, Prev: Language Codes, Up: Top + +Country Codes +************* + + The ISO 3166 standard defines two character codes for many countries +and territories. All abbreviations for countries used in the +Translation Project should come from this standard. + +`AD' + Andorra. + +`AE' + United Arab Emirates. + +`AF' + Afghanistan. + +`AG' + Antigua and Barbuda. + +`AI' + Anguilla. + +`AL' + Albania. + +`AM' + Armenia. + +`AN' + Netherlands Antilles. + +`AO' + Angola. + +`AQ' + Antarctica. + +`AR' + Argentina. + +`AS' + Samoa (American). + +`AT' + Austria. + +`AU' + Australia. + +`AW' + Aruba. + +`AZ' + Azerbaijan. + +`BA' + Bosnia and Herzegovina. + +`BB' + Barbados. + +`BD' + Bangladesh. + +`BE' + Belgium. + +`BF' + Burkina Faso. + +`BG' + Bulgaria. + +`BH' + Bahrain. + +`BI' + Burundi. + +`BJ' + Benin. + +`BM' + Bermuda. + +`BN' + Brunei. + +`BO' + Bolivia. + +`BR' + Brazil. + +`BS' + Bahamas. + +`BT' + Bhutan. + +`BV' + Bouvet Island. + +`BW' + Botswana. + +`BY' + Belarus. + +`BZ' + Belize. + +`CA' + Canada. + +`CC' + Cocos (Keeling) Islands. + +`CD' + Congo (Dem. Rep.). + +`CF' + Central African Rep.. + +`CG' + Congo (Rep.). + +`CH' + Switzerland. + +`CI' + Cote d'Ivoire. + +`CK' + Cook Islands. + +`CL' + Chile. + +`CM' + Cameroon. + +`CN' + China. + +`CO' + Colombia. + +`CR' + Costa Rica. + +`CU' + Cuba. + +`CV' + Cape Verde. + +`CX' + Christmas Island. + +`CY' + Cyprus. + +`CZ' + Czech Republic. + +`DE' + Germany. + +`DJ' + Djibouti. + +`DK' + Denmark. + +`DM' + Dominica. + +`DO' + Dominican Republic. + +`DZ' + Algeria. + +`EC' + Ecuador. + +`EE' + Estonia. + +`EG' + Egypt. + +`EH' + Western Sahara. + +`ER' + Eritrea. + +`ES' + Spain. + +`ET' + Ethiopia. + +`FI' + Finland. + +`FJ' + Fiji. + +`FK' + Falkland Islands. + +`FM' + Micronesia. + +`FO' + Faeroe Islands. + +`FR' + France. + +`GA' + Gabon. + +`GB' + Britain (UK). + +`GD' + Grenada. + +`GE' + Georgia. + +`GF' + French Guiana. + +`GH' + Ghana. + +`GI' + Gibraltar. + +`GL' + Greenland. + +`GM' + Gambia. + +`GN' + Guinea. + +`GP' + Guadeloupe. + +`GQ' + Equatorial Guinea. + +`GR' + Greece. + +`GS' + South Georgia and the South Sandwich Islands. + +`GT' + Guatemala. + +`GU' + Guam. + +`GW' + Guinea-Bissau. + +`GY' + Guyana. + +`HK' + Hong Kong. + +`HM' + Heard Island and McDonald Islands. + +`HN' + Honduras. + +`HR' + Croatia. + +`HT' + Haiti. + +`HU' + Hungary. + +`ID' + Indonesia. + +`IE' + Ireland. + +`IL' + Israel. + +`IN' + India. + +`IO' + British Indian Ocean Territory. + +`IQ' + Iraq. + +`IR' + Iran. + +`IS' + Iceland. + +`IT' + Italy. + +`JM' + Jamaica. + +`JO' + Jordan. + +`JP' + Japan. + +`KE' + Kenya. + +`KG' + Kyrgyzstan. + +`KH' + Cambodia. + +`KI' + Kiribati. + +`KM' + Comoros. + +`KN' + St Kitts and Nevis. + +`KP' + Korea (North). + +`KR' + Korea (South). + +`KW' + Kuwait. + +`KY' + Cayman Islands. + +`KZ' + Kazakhstan. + +`LA' + Laos. + +`LB' + Lebanon. + +`LC' + St Lucia. + +`LI' + Liechtenstein. + +`LK' + Sri Lanka. + +`LR' + Liberia. + +`LS' + Lesotho. + +`LT' + Lithuania. + +`LU' + Luxembourg. + +`LV' + Latvia. + +`LY' + Libya. + +`MA' + Morocco. + +`MC' + Monaco. + +`MD' + Moldova. + +`MG' + Madagascar. + +`MH' + Marshall Islands. + +`MK' + Macedonia. + +`ML' + Mali. + +`MM' + Myanmar (Burma). + +`MN' + Mongolia. + +`MO' + Macao. + +`MP' + Northern Mariana Islands. + +`MQ' + Martinique. + +`MR' + Mauritania. + +`MS' + Montserrat. + +`MT' + Malta. + +`MU' + Mauritius. + +`MV' + Maldives. + +`MW' + Malawi. + +`MX' + Mexico. + +`MY' + Malaysia. + +`MZ' + Mozambique. + +`NA' + Namibia. + +`NC' + New Caledonia. + +`NE' + Niger. + +`NF' + Norfolk Island. + +`NG' + Nigeria. + +`NI' + Nicaragua. + +`NL' + Netherlands. + +`NO' + Norway. + +`NP' + Nepal. + +`NR' + Nauru. + +`NU' + Niue. + +`NZ' + New Zealand. + +`OM' + Oman. + +`PA' + Panama. + +`PE' + Peru. + +`PF' + French Polynesia. + +`PG' + Papua New Guinea. + +`PH' + Philippines. + +`PK' + Pakistan. + +`PL' + Poland. + +`PM' + St Pierre and Miquelon. + +`PN' + Pitcairn. + +`PR' + Puerto Rico. + +`PS' + Palestine. + +`PT' + Portugal. + +`PW' + Palau. + +`PY' + Paraguay. + +`QA' + Qatar. + +`RE' + Reunion. + +`RO' + Romania. + +`RU' + Russia. + +`RW' + Rwanda. + +`SA' + Saudi Arabia. + +`SB' + Solomon Islands. + +`SC' + Seychelles. + +`SD' + Sudan. + +`SE' + Sweden. + +`SG' + Singapore. + +`SH' + St Helena. + +`SI' + Slovenia. + +`SJ' + Svalbard and Jan Mayen. + +`SK' + Slovakia. + +`SL' + Sierra Leone. + +`SM' + San Marino. + +`SN' + Senegal. + +`SO' + Somalia. + +`SR' + Suriname. + +`ST' + Sao Tome and Principe. + +`SV' + El Salvador. + +`SY' + Syria. + +`SZ' + Swaziland. + +`TC' + Turks and Caicos Is. + +`TD' + Chad. + +`TF' + French Southern and Antarctic Lands. + +`TG' + Togo. + +`TH' + Thailand. + +`TJ' + Tajikistan. + +`TK' + Tokelau. + +`TM' + Turkmenistan. + +`TN' + Tunisia. + +`TO' + Tonga. + +`TP' + East Timor. + +`TR' + Turkey. + +`TT' + Trinidad and Tobago. + +`TV' + Tuvalu. + +`TW' + Taiwan. + +`TZ' + Tanzania. + +`UA' + Ukraine. + +`UG' + Uganda. + +`UM' + US minor outlying islands. + +`US' + United States. + +`UY' + Uruguay. + +`UZ' + Uzbekistan. + +`VA' + Vatican City. + +`VC' + St Vincent. + +`VE' + Venezuela. + +`VG' + Virgin Islands (UK). + +`VI' + Virgin Islands (US). + +`VN' + Vietnam. + +`VU' + Vanuatu. + +`WF' + Wallis and Futuna. + +`WS' + Samoa (Western). + +`YE' + Yemen. + +`YT' + Mayotte. + +`YU' + Yugoslavia. + +`ZA' + South Africa. + +`ZM' + Zambia. + +`ZW' + Zimbabwe. + + diff --git a/doc/gettext_15.html b/doc/gettext_15.html new file mode 100644 index 0000000..932a986 --- /dev/null +++ b/doc/gettext_15.html @@ -0,0 +1,523 @@ + + + + +GNU gettext utilities - A Language Codes + + +Go to the first, previous, next, last section, table of contents. +


+ + +

A Language Codes

+ +

+The ISO 639 standard defines two character codes for many languages. +All abbreviations for languages used in the Translation Project should +come from this standard. + +

+
+ +
`aa´ +
+Afar. +
`ab´ +
+Abkhazian. +
`ae´ +
+Avestan. +
`af´ +
+Afrikaans. +
`am´ +
+Amharic. +
`ar´ +
+Arabic. +
`as´ +
+Assamese. +
`ay´ +
+Aymara. +
`az´ +
+Azerbaijani. +
`ba´ +
+Bashkir. +
`be´ +
+Byelorussian; Belarusian. +
`bg´ +
+Bulgarian. +
`bh´ +
+Bihari. +
`bi´ +
+Bislama. +
`bn´ +
+Bengali; Bangla. +
`bo´ +
+Tibetan. +
`br´ +
+Breton. +
`bs´ +
+Bosnian. +
`ca´ +
+Catalan. +
`ce´ +
+Chechen. +
`ch´ +
+Chamorro. +
`co´ +
+Corsican. +
`cs´ +
+Czech. +
`cu´ +
+Church Slavic. +
`cv´ +
+Chuvash. +
`cy´ +
+Welsh. +
`da´ +
+Danish. +
`de´ +
+German. +
`dz´ +
+Dzongkha; Bhutani. +
`el´ +
+Greek. +
`en´ +
+English. +
`eo´ +
+Esperanto. +
`es´ +
+Spanish. +
`et´ +
+Estonian. +
`eu´ +
+Basque. +
`fa´ +
+Persian. +
`fi´ +
+Finnish. +
`fj´ +
+Fijian; Fiji. +
`fo´ +
+Faroese. +
`fr´ +
+French. +
`fy´ +
+Frisian. +
`ga´ +
+Irish. +
`gd´ +
+Scots; Gaelic. +
`gl´ +
+Gallegan; Galician. +
`gn´ +
+Guarani. +
`gu´ +
+Gujarati. +
`gv´ +
+Manx. +
`ha´ +
+Hausa (?). +
`he´ +
+Hebrew (formerly iw). +
`hi´ +
+Hindi. +
`ho´ +
+Hiri Motu. +
`hr´ +
+Croatian. +
`hu´ +
+Hungarian. +
`hy´ +
+Armenian. +
`hz´ +
+Herero. +
`ia´ +
+Interlingua. +
`id´ +
+Indonesian (formerly in). +
`ie´ +
+Interlingue. +
`ik´ +
+Inupiak. +
`is´ +
+Icelandic. +
`it´ +
+Italian. +
`iu´ +
+Inuktitut. +
`ja´ +
+Japanese. +
`jw´ +
+Javanese. +
`ka´ +
+Georgian. +
`ki´ +
+Kikuyu. +
`kj´ +
+Kuanyama. +
`kk´ +
+Kazakh. +
`kl´ +
+Kalaallisut; Greenlandic. +
`km´ +
+Khmer; Cambodian. +
`kn´ +
+Kannada. +
`ko´ +
+Korean. +
`ks´ +
+Kashmiri. +
`ku´ +
+Kurdish. +
`kv´ +
+Komi. +
`kw´ +
+Cornish. +
`ky´ +
+Kirghiz. +
`la´ +
+Latin. +
`lb´ +
+Letzeburgesch. +
`ln´ +
+Lingala. +
`lo´ +
+Lao; Laotian. +
`lt´ +
+Lithuanian. +
`lv´ +
+Latvian; Lettish. +
`mg´ +
+Malagasy. +
`mh´ +
+Marshall. +
`mi´ +
+Maori. +
`mk´ +
+Macedonian. +
`ml´ +
+Malayalam. +
`mn´ +
+Mongolian. +
`mo´ +
+Moldavian. +
`mr´ +
+Marathi. +
`ms´ +
+Malay. +
`mt´ +
+Maltese. +
`my´ +
+Burmese. +
`na´ +
+Nauru. +
`nb´ +
+Norwegian Bokmål. +
`nd´ +
+Ndebele, North. +
`ne´ +
+Nepali. +
`ng´ +
+Ndonga. +
`nl´ +
+Dutch. +
`nn´ +
+Norwegian Nynorsk. +
`no´ +
+Norwegian. +
`nr´ +
+Ndebele, South. +
`nv´ +
+Navajo. +
`ny´ +
+Chichewa; Nyanja. +
`oc´ +
+Occitan; Provençal. +
`om´ +
+(Afan) Oromo. +
`or´ +
+Oriya. +
`os´ +
+Ossetian; Ossetic. +
`pa´ +
+Panjabi; Punjabi. +
`pi´ +
+Pali. +
`pl´ +
+Polish. +
`ps´ +
+Pashto, Pushto. +
`pt´ +
+Portuguese. +
`qu´ +
+Quechua. +
`rm´ +
+Rhaeto-Romance. +
`rn´ +
+Rundi; Kirundi. +
`ro´ +
+Romanian. +
`ru´ +
+Russian. +
`rw´ +
+Kinyarwanda. +
`sa´ +
+Sanskrit. +
`sc´ +
+Sardinian. +
`sd´ +
+Sindhi. +
`se´ +
+Northern Sami. +
`sg´ +
+Sango; Sangro. +
`si´ +
+Sinhalese. +
`sk´ +
+Slovak. +
`sl´ +
+Slovenian. +
`sm´ +
+Samoan. +
`sn´ +
+Shona. +
`so´ +
+Somali. +
`sq´ +
+Albanian. +
`sr´ +
+Serbian. +
`ss´ +
+Swati; Siswati. +
`st´ +
+Sesotho; Sotho, Southern. +
`su´ +
+Sundanese. +
`sv´ +
+Swedish. +
`sw´ +
+Swahili. +
`ta´ +
+Tamil. +
`te´ +
+Telugu. +
`tg´ +
+Tajik. +
`th´ +
+Thai. +
`ti´ +
+Tigrinya. +
`tk´ +
+Turkmen. +
`tl´ +
+Tagalog. +
`tn´ +
+Tswana; Setswana. +
`to´ +
+Tonga (?). +
`tr´ +
+Turkish. +
`ts´ +
+Tsonga. +
`tt´ +
+Tatar. +
`tw´ +
+Twi. +
`ty´ +
+Tahitian. +
`ug´ +
+Uighur. +
`uk´ +
+Ukrainian. +
`ur´ +
+Urdu. +
`uz´ +
+Uzbek. +
`vi´ +
+Vietnamese. +
`vo´ +
+Volapük; Volapuk. +
`wo´ +
+Wolof. +
`xh´ +
+Xhosa. +
`yi´ +
+Yiddish (formerly ji). +
`yo´ +
+Yoruba. +
`za´ +
+Zhuang. +
`zh´ +
+Chinese. +
`zu´ +
+Zulu. +
+ +


+Go to the first, previous, next, last section, table of contents. + + diff --git a/doc/gettext_16.html b/doc/gettext_16.html new file mode 100644 index 0000000..1e6332c --- /dev/null +++ b/doc/gettext_16.html @@ -0,0 +1,745 @@ + + + + +GNU gettext utilities - B Country Codes + + +Go to the first, previous, next, last section, table of contents. +


+ + +

B Country Codes

+ +

+The ISO 3166 standard defines two character codes for many countries +and territories. All abbreviations for countries used in the Translation +Project should come from this standard. + +

+
+ +
`AD´ +
+Andorra. +
`AE´ +
+United Arab Emirates. +
`AF´ +
+Afghanistan. +
`AG´ +
+Antigua and Barbuda. +
`AI´ +
+Anguilla. +
`AL´ +
+Albania. +
`AM´ +
+Armenia. +
`AN´ +
+Netherlands Antilles. +
`AO´ +
+Angola. +
`AQ´ +
+Antarctica. +
`AR´ +
+Argentina. +
`AS´ +
+Samoa (American). +
`AT´ +
+Austria. +
`AU´ +
+Australia. +
`AW´ +
+Aruba. +
`AZ´ +
+Azerbaijan. +
`BA´ +
+Bosnia and Herzegovina. +
`BB´ +
+Barbados. +
`BD´ +
+Bangladesh. +
`BE´ +
+Belgium. +
`BF´ +
+Burkina Faso. +
`BG´ +
+Bulgaria. +
`BH´ +
+Bahrain. +
`BI´ +
+Burundi. +
`BJ´ +
+Benin. +
`BM´ +
+Bermuda. +
`BN´ +
+Brunei. +
`BO´ +
+Bolivia. +
`BR´ +
+Brazil. +
`BS´ +
+Bahamas. +
`BT´ +
+Bhutan. +
`BV´ +
+Bouvet Island. +
`BW´ +
+Botswana. +
`BY´ +
+Belarus. +
`BZ´ +
+Belize. +
`CA´ +
+Canada. +
`CC´ +
+Cocos (Keeling) Islands. +
`CD´ +
+Congo (Dem. Rep.). +
`CF´ +
+Central African Rep.. +
`CG´ +
+Congo (Rep.). +
`CH´ +
+Switzerland. +
`CI´ +
+Cote d'Ivoire. +
`CK´ +
+Cook Islands. +
`CL´ +
+Chile. +
`CM´ +
+Cameroon. +
`CN´ +
+China. +
`CO´ +
+Colombia. +
`CR´ +
+Costa Rica. +
`CU´ +
+Cuba. +
`CV´ +
+Cape Verde. +
`CX´ +
+Christmas Island. +
`CY´ +
+Cyprus. +
`CZ´ +
+Czech Republic. +
`DE´ +
+Germany. +
`DJ´ +
+Djibouti. +
`DK´ +
+Denmark. +
`DM´ +
+Dominica. +
`DO´ +
+Dominican Republic. +
`DZ´ +
+Algeria. +
`EC´ +
+Ecuador. +
`EE´ +
+Estonia. +
`EG´ +
+Egypt. +
`EH´ +
+Western Sahara. +
`ER´ +
+Eritrea. +
`ES´ +
+Spain. +
`ET´ +
+Ethiopia. +
`FI´ +
+Finland. +
`FJ´ +
+Fiji. +
`FK´ +
+Falkland Islands. +
`FM´ +
+Micronesia. +
`FO´ +
+Faeroe Islands. +
`FR´ +
+France. +
`GA´ +
+Gabon. +
`GB´ +
+Britain (UK). +
`GD´ +
+Grenada. +
`GE´ +
+Georgia. +
`GF´ +
+French Guiana. +
`GH´ +
+Ghana. +
`GI´ +
+Gibraltar. +
`GL´ +
+Greenland. +
`GM´ +
+Gambia. +
`GN´ +
+Guinea. +
`GP´ +
+Guadeloupe. +
`GQ´ +
+Equatorial Guinea. +
`GR´ +
+Greece. +
`GS´ +
+South Georgia and the South Sandwich Islands. +
`GT´ +
+Guatemala. +
`GU´ +
+Guam. +
`GW´ +
+Guinea-Bissau. +
`GY´ +
+Guyana. +
`HK´ +
+Hong Kong. +
`HM´ +
+Heard Island and McDonald Islands. +
`HN´ +
+Honduras. +
`HR´ +
+Croatia. +
`HT´ +
+Haiti. +
`HU´ +
+Hungary. +
`ID´ +
+Indonesia. +
`IE´ +
+Ireland. +
`IL´ +
+Israel. +
`IN´ +
+India. +
`IO´ +
+British Indian Ocean Territory. +
`IQ´ +
+Iraq. +
`IR´ +
+Iran. +
`IS´ +
+Iceland. +
`IT´ +
+Italy. +
`JM´ +
+Jamaica. +
`JO´ +
+Jordan. +
`JP´ +
+Japan. +
`KE´ +
+Kenya. +
`KG´ +
+Kyrgyzstan. +
`KH´ +
+Cambodia. +
`KI´ +
+Kiribati. +
`KM´ +
+Comoros. +
`KN´ +
+St Kitts and Nevis. +
`KP´ +
+Korea (North). +
`KR´ +
+Korea (South). +
`KW´ +
+Kuwait. +
`KY´ +
+Cayman Islands. +
`KZ´ +
+Kazakhstan. +
`LA´ +
+Laos. +
`LB´ +
+Lebanon. +
`LC´ +
+St Lucia. +
`LI´ +
+Liechtenstein. +
`LK´ +
+Sri Lanka. +
`LR´ +
+Liberia. +
`LS´ +
+Lesotho. +
`LT´ +
+Lithuania. +
`LU´ +
+Luxembourg. +
`LV´ +
+Latvia. +
`LY´ +
+Libya. +
`MA´ +
+Morocco. +
`MC´ +
+Monaco. +
`MD´ +
+Moldova. +
`MG´ +
+Madagascar. +
`MH´ +
+Marshall Islands. +
`MK´ +
+Macedonia. +
`ML´ +
+Mali. +
`MM´ +
+Myanmar (Burma). +
`MN´ +
+Mongolia. +
`MO´ +
+Macao. +
`MP´ +
+Northern Mariana Islands. +
`MQ´ +
+Martinique. +
`MR´ +
+Mauritania. +
`MS´ +
+Montserrat. +
`MT´ +
+Malta. +
`MU´ +
+Mauritius. +
`MV´ +
+Maldives. +
`MW´ +
+Malawi. +
`MX´ +
+Mexico. +
`MY´ +
+Malaysia. +
`MZ´ +
+Mozambique. +
`NA´ +
+Namibia. +
`NC´ +
+New Caledonia. +
`NE´ +
+Niger. +
`NF´ +
+Norfolk Island. +
`NG´ +
+Nigeria. +
`NI´ +
+Nicaragua. +
`NL´ +
+Netherlands. +
`NO´ +
+Norway. +
`NP´ +
+Nepal. +
`NR´ +
+Nauru. +
`NU´ +
+Niue. +
`NZ´ +
+New Zealand. +
`OM´ +
+Oman. +
`PA´ +
+Panama. +
`PE´ +
+Peru. +
`PF´ +
+French Polynesia. +
`PG´ +
+Papua New Guinea. +
`PH´ +
+Philippines. +
`PK´ +
+Pakistan. +
`PL´ +
+Poland. +
`PM´ +
+St Pierre and Miquelon. +
`PN´ +
+Pitcairn. +
`PR´ +
+Puerto Rico. +
`PS´ +
+Palestine. +
`PT´ +
+Portugal. +
`PW´ +
+Palau. +
`PY´ +
+Paraguay. +
`QA´ +
+Qatar. +
`RE´ +
+Reunion. +
`RO´ +
+Romania. +
`RU´ +
+Russia. +
`RW´ +
+Rwanda. +
`SA´ +
+Saudi Arabia. +
`SB´ +
+Solomon Islands. +
`SC´ +
+Seychelles. +
`SD´ +
+Sudan. +
`SE´ +
+Sweden. +
`SG´ +
+Singapore. +
`SH´ +
+St Helena. +
`SI´ +
+Slovenia. +
`SJ´ +
+Svalbard and Jan Mayen. +
`SK´ +
+Slovakia. +
`SL´ +
+Sierra Leone. +
`SM´ +
+San Marino. +
`SN´ +
+Senegal. +
`SO´ +
+Somalia. +
`SR´ +
+Suriname. +
`ST´ +
+Sao Tome and Principe. +
`SV´ +
+El Salvador. +
`SY´ +
+Syria. +
`SZ´ +
+Swaziland. +
`TC´ +
+Turks and Caicos Is. +
`TD´ +
+Chad. +
`TF´ +
+French Southern and Antarctic Lands. +
`TG´ +
+Togo. +
`TH´ +
+Thailand. +
`TJ´ +
+Tajikistan. +
`TK´ +
+Tokelau. +
`TM´ +
+Turkmenistan. +
`TN´ +
+Tunisia. +
`TO´ +
+Tonga. +
`TP´ +
+East Timor. +
`TR´ +
+Turkey. +
`TT´ +
+Trinidad and Tobago. +
`TV´ +
+Tuvalu. +
`TW´ +
+Taiwan. +
`TZ´ +
+Tanzania. +
`UA´ +
+Ukraine. +
`UG´ +
+Uganda. +
`UM´ +
+US minor outlying islands. +
`US´ +
+United States. +
`UY´ +
+Uruguay. +
`UZ´ +
+Uzbekistan. +
`VA´ +
+Vatican City. +
`VC´ +
+St Vincent. +
`VE´ +
+Venezuela. +
`VG´ +
+Virgin Islands (UK). +
`VI´ +
+Virgin Islands (US). +
`VN´ +
+Vietnam. +
`VU´ +
+Vanuatu. +
`WF´ +
+Wallis and Futuna. +
`WS´ +
+Samoa (Western). +
`YE´ +
+Yemen. +
`YT´ +
+Mayotte. +
`YU´ +
+Yugoslavia. +
`ZA´ +
+South Africa. +
`ZM´ +
+Zambia. +
`ZW´ +
+Zimbabwe. +
+ +


+Go to the first, previous, next, last section, table of contents. + + diff --git a/po/cs.gmo b/po/cs.gmo new file mode 100644 index 0000000..5977667 Binary files /dev/null and b/po/cs.gmo differ diff --git a/po/et.gmo b/po/et.gmo new file mode 100644 index 0000000..00c8700 Binary files /dev/null and b/po/et.gmo differ diff --git a/po/gl.gmo b/po/gl.gmo new file mode 100644 index 0000000..587b57d Binary files /dev/null and b/po/gl.gmo differ diff --git a/po/id.gmo b/po/id.gmo new file mode 100644 index 0000000..1e49279 Binary files /dev/null and b/po/id.gmo differ diff --git a/po/it.gmo b/po/it.gmo new file mode 100644 index 0000000..07129b7 Binary files /dev/null and b/po/it.gmo differ diff --git a/po/ru.gmo b/po/ru.gmo new file mode 100644 index 0000000..ae7152b Binary files /dev/null and b/po/ru.gmo differ diff --git a/po/sk.gmo b/po/sk.gmo new file mode 100644 index 0000000..b53bbc8 Binary files /dev/null and b/po/sk.gmo differ diff --git a/po/zh.gmo b/po/zh.gmo new file mode 100644 index 0000000..518f625 Binary files /dev/null and b/po/zh.gmo differ -- cgit v1.1