• Home
  • Raw
  • Download

Lines Matching +refs:po +refs:consider +refs:as +refs:auxiliary

79 It also serves as a reference for the free Translation Project.
352 * po/POTFILES.in:: @file{POTFILES.in} in @file{po/}
353 * po/LINGUAS:: @file{LINGUAS} in @file{po/}
354 * po/Makevars:: @file{Makevars} in @file{po/}
355 * po/Rules-*:: Extending @file{Makefile} in @file{po/}
370 * AM_PO_SUBDIRS:: AM_PO_SUBDIRS in @file{po.m4}
371 * AM_XGETTEXT_OPTION:: AM_XGETTEXT_OPTION in @file{po.m4}
536 to other aspects of national and cultural variance, as they apply
550 to males or females. Besides, as you might guess, GNU @code{gettext}
584 use their mother tongue for day to day's work, as far as possible.
598 as it is an asset on which we may build many other steps. This package
633 internationalization on program sources, keeping this impact as small
634 and hardly noticeable as possible. Internationalization has better
639 as a vehicle for documenting its structure and methods. This goes
641 proper. By so doing, translators will find in a single place, as
642 far as possible, all they need to know for properly doing their
726 by which this can be done, these hooks are not integrated as well as they
736 could be internationalized independently, as the effort needed is
750 be descriptive for the English readers; one might want to consider
751 offering translated versions for program options as well.
765 The manual accompanying a package, as well as all documentation files
811 The symbols used vary from country to country as does the position
820 in 1994 is written as 12/25/94 in the USA and as 25/12/94 in Australia.
823 Time of the day may be noted as @var{hh}:@var{mm}, @var{hh}.@var{mm},
825 mode rather than as AM or PM. Further, the nature and yearly extent
871 the ISO C standard and the POSIX:2001 standard (also known as the SUSV3
879 @cindex files, @file{.po} and @file{.mo}
880 The letters PO in @file{.po} files means Portable Object, to
882 Object. This paradigm, as well as the PO file format, is inspired
903 as part of the Native Language Support coming with the system, but the
937 │ ├────> msgmerge ──────> LANG.po ────>────────╯ │
941 │ ├─── New LANG.po <────────────────────╯
963 | +----> msgmerge ------> LANG.po ---->--------' |
967 | +--- New LANG.po <--------------------'
1031 are set to empty. The letter @code{t} in @file{.pot} marks this as
1037 spare yourself typing the @code{xgettext} command, as @code{make}
1040 The first time through, there is no @file{@var{lang}.po} yet, so the
1042 @file{@var{package}.pot} to @file{@var{lang}.po}, where @var{lang}
1054 While adding the translated messages into the @file{@var{lang}.po}
1059 as this is the way many people have handled PO files around 1995.
1078 translators be kept as free as possible of programming concerns.
1081 strings as translatable, when they should be, and do not otherwise
1082 worry about them being translated, as this will come in proper time.
1086 evolving over time, so the translations carried by @file{@var{lang}.po}
1099 existing @file{@var{lang}.po} file, by comparing it with a newer
1103 move as programs are modified. Also, @code{msgmerge} comments out as
1104 obsolete, in @file{@var{lang}.po}, those already translated entries
1107 the resulting PO file as untranslated entries (@pxref{Untranslated
1112 @file{@var{lang}.po} file offering translations for all strings.
1123 maintainers should consider themselves fairly relieved of any concern
1180 as one installable package per language.
1182 At this point it is good to consider the intended use of the machine: If
1186 consider the needs of guest users. If you have a guest from abroad, for
1194 same machine. He can specify it, typically after the first login, as
1261 still refers to the German locale as of 2000 that stores characters in
1276 On other systems, some variations of this scheme are used, such as
1282 @c the "POSIX locale", we mean the "locale as specified in the POSIX way", and
1372 abbreviated as @samp{@var{ll}} to denote the language's main dialect.
1373 For example, @samp{de} is equivalent to @samp{de_DE} (German as spoken in
1374 Germany), and @samp{pt} to @samp{pt_PT} (Portuguese as spoken in Portugal)
1389 On Windows, consoles such as the one started by the @code{cmd.exe}
1396 @code{OUTPUT_CHARSET} to the ``OEM'' encoding, through a command such as
1440 contains some @file{@var{ll}.po} files; often they are kept together in a
1441 directory called @file{po/}. Each @file{@var{ll}.po} file contains the
1447 @cindex file format, @file{.po}
1474 about the format details, as PO mode takes care of them for her.
1510 first the untranslated string as it appears in the original program
1516 have to pay attention to the precise quoting format, as PO mode fully
1519 The @code{msgid} strings, as well as automatic comments, are produced
1523 On the other hand, the @code{msgstr} string, as well as translator
1528 not completely ignored by the programs as comments generally are. The
1540 acceptable as is. Once satisfied with the translation, she then removes
1551 system as proposed here, the user's changes would be thrown away again as
1552 soon as the @code{xgettext} program generates a new template file.
1780 #: src/msgcmp.c:338 src/po-lex.c:699
1846 line, while keeping the multi-line presentation left-justified, as
1857 One should carefully distinguish between end of lines marked as
1925 the same code in every program, as demonstrated below:
2003 such as found in the modules @samp{c-ctype}, @samp{c-strcase},
2143 in other places as well, you will do a favour to the translator by not
2163 such as the input options, the output options, and the informative
2195 can be used as a formatting directive for outputting an @samp{int64_t}
2215 as well, and at runtime the @code{gettext} function's result will
2237 All this applies to other programming languages as well. For example, in
2339 produced by formatting. The format string needs translation, as
2340 well as some strings inserted through some @samp{%s} specification
2348 return the proper translation, as far as possible or wanted, for the
2350 positions, that is, attached to variables or given as parameters to
2361 keyword, macro or function, it is easily used @emph{as is}. However,
2372 Many packages use @samp{_} (a simple underline) as a keyword,
2393 string as sole argument. It is also possible to define marking functions
2399 in @ref{po/Makevars} and @ref{AM_XGETTEXT_OPTION}.
2406 Later on, the maintenance is relatively easy. If, as a programmer,
2456 This is not a problem at all, as you may safely open a new, empty PO
2458 fill in while you mark strings as translatable in your program sources.
2464 candidate for translation (@code{po-tags-search}).
2468 Mark the last string found with @samp{_()} (@code{po-mark-translatable}).
2474 keywords (@code{po-select-mark-and-mark}).
2478 @efindex po-tags-search@r{, PO Mode command}
2479 The @kbd{,} (@code{po-tags-search}) command searches for the next
2492 a row will be considered as a candidate if it has more letters than
2510 recently marked as translatable will be automatically skipped.
2515 independent @kbd{,} search sequence. However, as implemented, the
2520 @efindex po-mark-translatable@r{, PO Mode command}
2521 @efindex po-select-mark-and-mark@r{, PO Mode command}
2522 The @kbd{M-,} (@code{po-mark-translatable}) command will mark the
2524 (@code{po-select-mark-and-mark}) command will request that you type
2566 @samp{gettext} and @samp{_} are known as keywords, and @samp{gettext}
2568 prefer @samp{_}, as this one is already built in the @kbd{M-,} command.
2596 string is regarded as the address.
2618 useful for @code{msgfmt} to test all the strings in the @file{.po} file.
2624 only a heuristic. In the @file{.po} file the entry is marked using the
2632 the programmer take over the decision. If in the same line as or
2637 @code{xgettext} does not recognize the string as a format string but
2639 comment is in the same line as the @code{gettext} keyword, it must be
2645 @code{xgettext} does not recognize this as a format string but what
2651 round, i.e.@: a string marked as a format string actually is not a format
2653 would prevent translating the @file{.po} file. The method to prevent
2874 the name as perfectly as you can within the usual character set of your
2883 Here is an example, using Greek as the target script:
3008 @code{xgettext} creates a file named @file{@var{domainname}.po}. You
3031 @file{@var{LANG}.po}, as a copy of the @file{@var{package}.pot} template
3040 $ cd po
3046 @file{@var{LANG}.po}. Then she modifies the initial comments and
3070 type @kbd{M-x po-mode RET} and then @kbd{RET} again to start editing the
3145 designator, such as @samp{latin} or @samp{cyrillic}.
3154 combinations denoting a language's main dialect are abbreviated as
3156 (German as spoken in Germany), and @samp{pt} to @samp{pt_PT} (Portuguese as
3164 translation, such as @samp{@@euro}, are not used.
3175 @code{msgmerge} and @code{msgfmt} programs, as well as for users whose
3323 auxiliary and compendium PO files, as well as for following references into
3326 of program strings as translatable, and the validation of PO files
3358 @code{msgmerge}, as well as their available message catalogs. To
3370 (cons '("\\.po\\'\\|\\.po\\." . po-mode) auto-mode-alist))
3371 (autoload 'po-mode "po-mode" "Major mode for translators to edit PO files" t)
3374 Later, whenever you edit some @file{.po}
3375 file, or any file having the string @samp{.po.} within its name,
3376 Emacs loads @file{po-mode.elc} (or @file{po-mode.el}) as needed, and
3390 (modify-coding-system-alist 'file "\\.po\\'\\|\\.po\\."
3391 'po-find-file-coding-system)
3392 (autoload 'po-find-file-coding-system "po-mode")
3408 po-mode-map, which is a genuine Emacs mode, in a way that is not derived
3409 from text mode in any way. Functions found on @code{po-mode-hook},
3431 Undo last modification to the PO file (@code{po-undo}).
3435 Quit processing and save the PO file (@code{po-quit}).
3439 Quit processing, possibly after confirmation (@code{po-confirm-and-quit}).
3443 Temporary leave the PO file window (@code{po-other-window}).
3449 Show help about PO mode (@code{po-help}).
3453 Give some PO file statistics (@code{po-statistics}).
3457 Batch validate the format of the whole PO file (@code{po-validate}).
3462 @efindex po-undo@r{, PO Mode command}
3463 The command @kbd{_} (@code{po-undo}) interfaces to the Emacs
3475 @efindex po-quit@r{, PO Mode command}
3476 @efindex po-confirm-and-quit@r{, PO Mode command}
3477 The commands @kbd{Q} (@code{po-quit}) and @kbd{q}
3478 (@code{po-confirm-and-quit}) are used when the translator is done with the
3488 @efindex po-other-window@r{, PO Mode command}
3489 The command @kbd{0} (@code{po-other-window}) is another, softer way,
3502 @efindex po-help@r{, PO Mode command}
3503 The command @kbd{h} (@code{po-help}) displays a summary of all available PO
3506 as @kbd{h}.
3509 @efindex po-statistics@r{, PO Mode command}
3510 The command @kbd{=} (@code{po-statistics}) computes the total number of
3516 @efindex po-validate@r{, PO Mode command}
3517 The command @kbd{V} (@code{po-validate}) launches @code{msgfmt} in
3523 as well as all individual entries.
3530 (@code{next-error}), as well as other usual compile commands, allow the
3557 Redisplay the current entry (@code{po-current-entry}).
3561 Select the entry after the current one (@code{po-next-entry}).
3565 Select the entry before the current one (@code{po-previous-entry}).
3569 Select the first entry in the PO file (@code{po-first-entry}).
3573 Select the last entry in the PO file (@code{po-last-entry}).
3578 (@code{po-push-location}).
3582 Return to a previously saved entry location (@code{po-pop-location}).
3587 (@code{po-exchange-location}).
3592 @efindex po-current-entry@r{, PO Mode command}
3599 (@code{po-current-entry}) has the sole purpose of redisplaying the
3608 disposition might be offered as a PO mode option that the translator
3613 programmers, as opinions from an experienced translator are surely
3618 @efindex po-next-entry@r{, PO Mode command}
3620 @efindex po-previous-entry@r{, PO Mode command}
3621 The commands @kbd{n} (@code{po-next-entry}) and @kbd{p}
3622 (@code{po-previous-entry}) move the cursor the entry following,
3628 @efindex po-first-entry@r{, PO Mode command}
3630 @efindex po-last-entry@r{, PO Mode command}
3631 The commands @kbd{<} (@code{po-first-entry}) and @kbd{>}
3632 (@code{po-last-entry}) move the cursor to the first entry, or last
3650 @efindex po-push-location@r{, PO Mode command}
3652 @efindex po-pop-location@r{, PO Mode command}
3654 onto a special stack. The command @kbd{m} (@code{po-push-location})
3657 @kbd{r} (@code{po-pop-location}) consumes the top stack element and
3669 @efindex po-exchange-location@r{, PO Mode command}
3670 The command @kbd{x} (@code{po-exchange-location}) simultaneously
3697 way of representing equivalent strings would be useful, as the internal
3709 @item M-x po-normalize
3710 @efindex po-normalize@r{, PO Mode command}
3715 The special command @kbd{M-x po-normalize}, which has no associated
3724 @kbd{M-x po-normalize} presently makes three passes over the entries.
3740 convention, evolution driven mostly by aesthetic concerns, as of now.
3741 It is easy to make suggested adjustments at a later time, as the
3792 a translation, and which is not marked as fuzzy (@pxref{Fuzzy Entries}),
3803 Find the next translated entry (@code{po-next-translated-entry}).
3807 Find the previous translated entry (@code{po-previous-translated-entry}).
3812 @efindex po-next-translated-entry@r{, PO Mode command}
3814 @efindex po-previous-translated-entry@r{, PO Mode command}
3815 The commands @kbd{t} (@code{po-next-translated-entry}) and @kbd{T}
3816 (@code{po-previous-translated-entry}) move forwards or backwards, chasing
3820 @evindex po-auto-fuzzy-on-edit@r{, PO Mode variable}
3823 variable @code{po-auto-fuzzy-on-edit} is not @code{nil}, the entry having
3850 might mark some entries as being fuzzy.
3853 Also, the translator may decide herself to mark an entry as fuzzy
3862 Find the next fuzzy entry (@code{po-next-fuzzy-entry}).
3866 Find the previous fuzzy entry (@code{po-previous-fuzzy-entry}).
3870 Remove the fuzzy attribute of the current entry (@code{po-unfuzzy}).
3875 @efindex po-next-fuzzy-entry@r{, PO Mode command}
3877 @efindex po-previous-fuzzy-entry@r{, PO Mode command}
3878 The commands @kbd{f} (@code{po-next-fuzzy-entry}) and @kbd{F}
3879 (@code{po-previous-fuzzy-entry}) move forwards or backwards, chasing for
3884 @efindex po-unfuzzy@r{, PO Mode command}
3885 @evindex po-auto-select-on-unfuzzy@r{, PO Mode variable}
3886 The command @kbd{@key{TAB}} (@code{po-unfuzzy}) removes the fuzzy
3888 Further, if the variable @code{po-auto-select-on-unfuzzy} has not
3891 @code{po-auto-select-on-unfuzzy} is @code{nil}.
3893 The initial value of @code{po-auto-fuzzy-on-edit} is @code{nil}. However,
3894 if the variable @code{po-auto-fuzzy-on-edit} is set to @code{t}, any entry
3895 edited through the @kbd{@key{RET}} command is marked fuzzy, as a way to
3904 @efindex po-fade-out-entry@r{, PO Mode command}
3906 (@code{po-fade-out-entry}) over any translated entry to mark it as being
3926 The usual commands moving from entry to entry consider untranslated
3927 entries on the same level as active entries. Untranslated entries
3931 The work of the translator might be (quite naively) seen as the process
3940 Find the next untranslated entry (@code{po-next-untranslated-entry}).
3944 Find the previous untranslated entry (@code{po-previous-untransted-entry}).
3948 Turn the current entry into an untranslated one (@code{po-kill-msgstr}).
3953 @efindex po-next-untranslated-entry@r{, PO Mode command}
3955 @efindex po-previous-untransted-entry@r{, PO Mode command}
3956 The commands @kbd{u} (@code{po-next-untranslated-entry}) and @kbd{U}
3957 (@code{po-previous-untransted-entry}) move forwards or backwards,
3962 @efindex po-kill-msgstr@r{, PO Mode command}
3965 (@code{po-kill-msgstr}). @xref{Modifying Translations}.
3979 The usual commands moving from entry to entry consider obsolete
3980 entries on the same level as active entries. Obsolete entries are
3998 Find the next obsolete entry (@code{po-next-obsolete-entry}).
4002 Find the previous obsolete entry (@code{po-previous-obsolete-entry}).
4007 (@code{po-fade-out-entry}).
4012 @efindex po-next-obsolete-entry@r{, PO Mode command}
4014 @efindex po-previous-obsolete-entry@r{, PO Mode command}
4015 The commands @kbd{o} (@code{po-next-obsolete-entry}) and @kbd{O}
4016 (@code{po-previous-obsolete-entry}) move forwards or backwards,
4027 @efindex po-fade-out-entry@r{, PO Mode command}
4033 The command @kbd{@key{DEL}} (@code{po-fade-out-entry}) pushes the current entry
4046 I think it might be a quite hard problem to do this algorithmically, as
4061 as those errors would be easily made. Other kinds of errors are
4075 Interactively edit the translation (@code{po-edit-msgstr}).
4082 (@code{po-msgid-to-msgstr}).
4086 Save the translation on the kill ring, and delete it (@code{po-kill-msgstr}).
4091 (@code{po-kill-ring-save-msgstr}).
4096 (@code{po-yank-msgstr}).
4101 @efindex po-edit-msgstr@r{, PO Mode command}
4102 The command @kbd{@key{RET}} (@code{po-edit-msgstr}) opens a new Emacs
4114 @efindex po-msgid-to-msgstr@r{, PO Mode command}
4115 The command @kbd{@key{LFD}} (@code{po-msgid-to-msgstr}) initializes, or
4120 @evindex po-auto-edit-with-msgid@r{, PO Mode variable}
4123 @code{po-auto-edit-with-msgid} to @code{t}, the translation gets
4125 The default value for @code{po-auto-edit-with-msgid} is @code{nil}.
4135 like having the original string right under her eyes, as she will
4141 @efindex po-kill-msgstr@r{, PO Mode command}
4143 @efindex po-kill-ring-save-msgstr@r{, PO Mode command}
4144 The command @kbd{k} (@code{po-kill-msgstr}) merely empties the
4147 a special place, known as the kill ring. The command @kbd{w}
4148 (@code{po-kill-ring-save-msgstr}) has also the effect of taking a
4155 of her work, as the kill ring may hold several saved translations.
4170 @efindex po-yank-msgstr@r{, PO Mode command}
4171 The command @kbd{y} (@code{po-yank-msgstr}) completely replaces the
4193 on the kill ring, as almost any PO mode command replacing translation
4255 Interactively edit the translator comments (@code{po-edit-comment}).
4260 (@code{po-kill-comment}).
4265 (@code{po-kill-ring-save-comment}).
4270 (@code{po-yank-comment}).
4275 strings, and behave much the same way as they do, except that they handle
4282 @efindex po-edit-comment@r{, PO Mode command}
4283 The command @kbd{#} (@code{po-edit-comment}) opens a new Emacs window
4294 @evindex po-subedit-mode-hook@r{, PO Mode variable}
4295 Functions found on @code{po-subedit-mode-hook}, if any, are executed after
4299 @efindex po-kill-comment@r{, PO Mode command}
4301 @efindex po-kill-ring-save-comment@r{, PO Mode command}
4303 @efindex po-yank-comment@r{, PO Mode command}
4304 The command @kbd{K} (@code{po-kill-comment}) gets rid of all
4306 The command @kbd{W} (@code{po-kill-ring-save-comment}) takes
4309 (@code{po-yank-comment}) completely replaces the translator comments
4346 Complete edition (@code{po-subedit-exit}).
4350 Abort edition (@code{po-subedit-abort}).
4354 Consult auxiliary PO files (@code{po-subedit-cycle-auxiliary}).
4360 @efindex po-subedit-exit@r{, PO Mode command}
4364 (@code{po-subedit-exit}) may be used to return the edited translation into
4369 @efindex po-subedit-abort@r{, PO Mode command}
4373 (@code{po-subedit-abort}) to merely get rid of edition, while preserving
4379 @efindex po-subedit-cycle-auxiliary@r{, PO Mode command}
4380 The command @w{@kbd{C-c C-a}} (@code{po-subedit-cycle-auxiliary})
4385 auxiliary PO files are already available to her (@pxref{Auxiliary}).
4387 Functions found on @code{po-subedit-mode-hook}, if any, are executed after
4402 @emph{as is}, with all trailing newlines, even if invisible. Also, if
4405 in the editing window, as ending with two @code{<} in a row.
4431 created through GNU @code{gettext} utilities, as those utilities
4437 often faced with an original string which is not as informative as
4465 (@code{po-cycle-source-reference}).
4470 (@code{po-select-source-reference}).
4475 (@code{po-consider-source-path}).
4480 (@code{po-ignore-source-path}).
4485 @efindex po-cycle-source-reference@r{, PO Mode command}
4487 @efindex po-select-source-reference@r{, PO Mode command}
4488 The commands @kbd{s} (@code{po-cycle-source-reference}) and @kbd{M-s}
4489 (@code{po-select-source-reference}) both open another window displaying
4495 command diagnoses this as an error.
4520 references, as a reminder of which are the acceptable answers.
4525 @efindex po-consider-source-path@r{, PO Mode command}
4527 @efindex po-ignore-source-path@r{, PO Mode command}
4537 The command @kbd{S} (@code{po-consider-source-path}) is used to interactively
4539 @kbd{M-S} (@code{po-ignore-source-path}) is used to select, with completion,
4549 language translations as additional context for her own work. Moreover,
4553 @cindex auxiliary PO file
4554 @emindex auxiliary PO file
4555 An @dfn{auxiliary} PO file is an existing PO file meant for the same
4557 tongue language. Commands exist for declaring and handling auxiliary
4560 Here are the auxiliary file commands available in PO mode.
4565 Seek auxiliary files for another translation for the same entry
4566 (@code{po-cycle-auxiliary}).
4570 Switch to a particular auxiliary file (@code{po-select-auxiliary}).
4574 Declare this PO file as an auxiliary file (@code{po-consider-as-auxiliary}).
4578 Remove this PO file from the list of auxiliary files
4579 (@code{po-ignore-as-auxiliary}).
4584 @efindex po-consider-as-auxiliary@r{, PO Mode command}
4586 @efindex po-ignore-as-auxiliary@r{, PO Mode command}
4587 Command @kbd{A} (@code{po-consider-as-auxiliary}) adds the current
4588 PO file to the list of auxiliary files, while command @kbd{M-A}
4589 (@code{po-ignore-as-auxiliary} just removes it.
4592 @efindex po-cycle-auxiliary@r{, PO Mode command}
4593 The command @kbd{a} (@code{po-cycle-auxiliary}) seeks all auxiliary PO
4595 having an @code{msgid} field identical as the one for the current entry.
4598 file is also made into an auxiliary file, if not already. So, @kbd{a}
4603 @efindex po-select-auxiliary@r{, PO Mode command}
4604 The command @kbd{C-c C-a} (@code{po-select-auxiliary}) asks the translator
4605 for her choice of a particular auxiliary file, with completion, and
4607 the selected file has an @code{msgid} field identical as the one for
4611 For all this to work fully, auxiliary PO files will have to be normalized,
4615 proper behaviour of the auxiliary file commands of PO mode. This is not
4616 expected to be much a problem in practice, as most existing PO files have
4648 declared as a valid compendium. Often the translator wants to have
4649 special compendia; let's consider two cases: @cite{concatenating PO
4660 msgcat -o compendium.po file1.po file2.po
4664 for the same string. Those occurrences will be marked as @code{fuzzy}
4666 @file{file1.po}:
4676 and @file{file2.po}:
4693 "#-#-#-#-# file1.po #-#-#-#-#\n"
4695 "#-#-#-#-# file2.po #-#-#-#-#\n"
4710 msgcat --use-first -o compendium.po file1.po file2.po
4727 msggrep --location src/getopt.c -o compendium.po file.po
4743 msgmerge --compendium compendium.po -o file.po /dev/null file.pot
4754 msgcat --use-first -o update.po compendium1.po compendium2.po file.po
4755 msgmerge update.po file.pot | msgattrib --no-obsolete > file.po
4789 dialect or orthography --- for example, German as written in Switzerland
4790 versus German as written in Germany --- she needs to apply some text
4821 @samp{msgen} is useful as a first step for preparing English translation
4906 a PO file on standard output, such as @code{msgcat}, @code{msgmerge},
4951 Thus, a command like @samp{msgcat vi.po} will produce colorized output
4952 when called by itself in a command window. Whereas in a pipe, such as
4953 @samp{msgcat vi.po | less -R}, it will not produce colorized output. To
4955 @samp{msgcat --color vi.po | less -R}.
4975 by using the @samp{infocmp} command, using @samp{man 5 terminfo} as a
5018 The default style file is @file{$prefix/share/gettext/styles/po-default.css},
5023 @item po-vim.css
5026 @item po-emacs-x.css
5029 @item po-emacs-xterm.css
5030 @itemx po-emacs-xterm16.css
5031 @itemx po-emacs-xterm256.css
5117 as well as the entire obsolete messages).
5229 weights: @code{normal} and @code{bold}. Values >= 600 are rendered as
5252 msgcat --to-code=UTF-8 --color xyz.po | less -R
5258 less xyz.po
5276 @code{LESSCLOSE} environment variables, as indicated in the manual page
5286 *.po)
5331 The functions are declared in the header file @samp{<gettext-po.h>}, and are
5346 handling code is omitted, as its implementation is delegated to the user
5405 Its pointer is defined as @code{po_xerror_handler_t}. Contains
5462 is given as argument. The return value is a handle to the PO file's contents,
5466 This function is exported as @samp{po_file_read_v3} at ABI level, but is
5467 defined as @code{po_file_read} in C code after the inclusion of
5468 @samp{<gettext-po.h>}.
5477 This function is exported as @samp{po_file_write_v2} at ABI level, but
5478 is defined as @code{po_file_write} in C code after the inclusion of
5479 @samp{<gettext-po.h>}.
5490 which is valid as long as the @var{file} handle is valid. For PO files which
5532 inserted into a file to manage its memory, as there is no
5537 that the results are valid as long as the @var{file} handle is valid.
5572 @code{NULL} is provided as @var{msgid_plural}.
5599 Use @code{NULL} as the value of @var{msgstr_plural} with
5665 provided as @var{prev_msgid_plural}.
5670 is marked as obsolete.
5680 is marked as fuzzy.
5690 is marked as being a format string of @var{format_type}.
5717 the empty string as @code{msgid}.
5721 memory. The value @code{NULL} provided as @var{domain} denotes the
5795 format string if the message is marked as being a format string. If it
5798 This function is exported as @samp{po_message_check_format_v2} at ABI
5799 level, but is defined as @code{po_message_check_format} in C code after
5800 the inclusion of @samp{<gettext-po.h>}.
5841 old ones and handle their contents, as far as possible. For now the
5874 the MO file. This also has another advantage, as the empty string
5920 platform dependent as well.)
6055 The function takes as the argument the name of the catalog. This usual
6059 is to use @code{0} as the value. The return value is a handle to the
6082 as a default value in case when one of the addressing stages fail. One
6090 The last of these functions is used and behaves as expected:
6110 chaos but one as the other fails in one aspect or the other. We don't
6214 Another case are messages from a library, as these @emph{have} to be
6247 file anymore (as it would be by solely using @code{textdomain}). A
6251 again as for all the other functions is true that none of the return
6268 wide string (in UTF-16 encoding, as usual on Windows).
6298 which can be represented in two different ways as the sum of two cubes.}
6385 with contexts. They are implemented as thin macros and inline functions
6406 use a comment in the form of a complete English sentence as @var{msgctxt} --
6428 As as example consider the following fictional situation. A GUI program
6502 @code{catgets} functions as well) have one problem in the real world
6587 the numerical argument and the first string as a key, the implementation
6598 (as well as the GNU @code{gettext} package) are written as part of the
6605 as it finds the message catalogs in the same way. But it takes two
6607 form of the string to be converted. It is also used as the key for the
6620 @code{printf} function as well. It is not sufficient to pass it only to
6662 specify it as a comment directed to the @code{xgettext} tool. This
6734 must be greater or equal to zero and smaller than the value given as the
6741 generalized for the whole family (as can be easily seen in the table
6747 use it as a baseline (@pxref{msginit Invocation}).}
7007 About larger integer types, such as @samp{uintmax_t} or
7113 application using NLS provided by @code{gettext} we proceed as always.
7125 result is the same as if no NLS code is used. When you take a look at
7155 (@pxref{Special cases}). One usually defines @code{gettext_noop} as a
7156 no-op macro. So you should consider the following code for your project:
7164 the @file{po/} directory of GNU @code{gettext} knows by default both of the
7173 quality in the message catalog as the GNU @code{gettext} program
7210 difficult one can also consider changing one of the conflicting string a
7272 as soon as the @code{dcgettext} function is called. But this also means
7278 the @code{dcgettext} function as long as no new catalog is loaded. But
7332 agree on anything, so no messaging system was included as part
7334 includes the XPG3 messaging interfaces, ``@dots{}as an example of
7345 @code{catgets} as a base. I think it important to present both
7356 It seems as if every Unix vendor had a look at the operating system
7388 we recommend? At least for Linux, we need to attract as many
7389 software developers as possible. Hence we need to make it as easy
7390 for them to port their software as possible. Which means supporting
7393 another message catalog access scheme within our @code{libc} as well?
7403 a number of deficiencies. Are we going to abandon them as well and
7462 code for your language. Language codes are @emph{not} the same as
7494 teams have begun to organize, using these packages as a starting
7513 teams have begun to organize, using these packages as a starting
7527 currently, English is used as the main communicating language between
7554 speaking them sometimes consider that there may not be all that much
7611 to use @code{libintl} as a shared library, even for non-free programs.
7612 But it gives the right to use @code{libintl} as a static library or
7671 My role as coordinator would simply be to refer to Ulrich any German
7814 in there and manage it as they want. My feeling is that, in the long
7817 subscribe as they see fit, as long as each team is represented in it.
7828 right now, as I put forward nearly a dozen of localizable programs, I
7833 Then he submits the translation files to me @emph{as the maintainer}.
7891 Suppose the line looks as follows:
7943 Can you do this in your translation as well?
7951 or to other numbers as well. If, according to the plural formula,
7981 will be created as needed. On systems with GNU @code{libc} a shared library
8016 $ msguniq $HOME/gettextlogused > missing.po
8026 $ sed -n -e 's,^domain "\(.*\)"$,\1,p' < missing.po | sort | uniq
8039 She takes the latest copy of @file{$lang.po} from the Translation Project,
8040 or from the package (in most cases, @file{$package/po/$lang.po}), or
8042 She then uses the following commands to mark the not urgent messages as
8048 $ msggrep --domain=$domain missing.po | grep -v '^domain' \
8049 > $domain-missing.po
8050 $ msgattrib --set-obsolete --ignore-file $domain-missing.po $domain.$lang.po \
8051 > $domain.$lang-urgent.po
8054 The she translates @file{$domain.$lang-urgent.po} by use of a PO file editor
8057 preserve obsolete messages, as they should.)
8062 $ msgmerge --no-fuzzy-matching $domain.$lang-urgent.po $package/po/$domain.pot \
8063 > $domain.$lang.po
8066 Then she can submit @file{$domain.$lang.po} and proceed to the next domain.
8083 project, and as many other good free packages as possible. So, the
8111 Some free software packages are distributed as @code{tar} files which unpack
8127 recommend to use non-flat approach in this case as well.
8132 use this as an opportunity to unflatten their package structure.
8157 tool and the @file{Makefile} in the @file{po/} directory therefore
8160 Those four packages are only needed by you, as a maintainer; the
8181 Your @file{po/} directory should receive all PO files submitted to you
8182 by the translator teams, each having @file{@var{ll}.po} as a name.
8193 to authenticate the origin of the submission as being the representative
8198 PO files in @file{po/} for distribution.
8214 Teams ought to settle their problems themselves, if any. If you, as
8239 GNU @code{hello} packages, as they are intended to be good examples for
8243 * po/POTFILES.in:: @file{POTFILES.in} in @file{po/}
8244 * po/LINGUAS:: @file{LINGUAS} in @file{po/}
8245 * po/Makevars:: @file{Makevars} in @file{po/}
8246 * po/Rules-*:: Extending @file{Makefile} in @file{po/}
8257 @node po/POTFILES.in
8258 @subsection @file{POTFILES.in} in @file{po/}
8261 The @file{po/} directory should receive a file named
8292 it is recommended to list in @file{po/POTFILES.in} the real source file
8296 @node po/LINGUAS
8297 @subsection @file{LINGUAS} in @file{po/}
8300 The @file{po/} directory should also receive a file named
8326 a terminal emulator which supports the VT100 escape sequences (such as
8333 in the @file{po/} directory. You can copy them from GNU gettext's @file{po/}
8336 @node po/Makevars
8337 @subsection @file{Makevars} in @file{po/}
8340 The @file{po/} directory also has a file named @file{Makevars}. It
8341 contains variables that are specific to your project. @file{po/Makevars}
8342 gets inserted into the @file{po/Makefile} when the latter is created.
8347 single message domain and, accordingly, a single @file{po/} directory.
8348 Only packages which have multiple @file{po/} directories at different
8356 @node po/Rules-*
8357 @subsection Extending @file{Makefile} in @file{po/}
8360 All files called @file{Rules-*} in the @file{po/} directory get appended to
8361 the @file{po/Makefile} when it is created. They present an opportunity to
8363 with @file{po/Makefile.in.in}.
8368 building catalogs @file{en@@quot.po} and @file{en@@boldquot.po}. The
8369 effect of @file{en@@quot.po} is that people who set their @code{LANGUAGE}
8373 enable this catalog, simply add @code{en@@quot} to the @file{po/LINGUAS}
8374 file. The effect of @file{en@@boldquot.po} is that people who set
8379 @file{po/LINGUAS} file.
8416 and @samp{@value{VERSION}} by its version numbers, exactly as they
8439 AC_OUTPUT([@var{existing configuration files} po/Makefile.in],
8444 for substitution in the @file{po/} directory.
8445 Note the @samp{.in} suffix used for @file{po/} only. This is because
8446 the distributed file is really @file{po/Makefile.in.in}.
8496 @file{po.m4}, @file{progtest.m4} from GNU @code{gettext}'s @file{m4/}
8503 etc.), as they usually
8505 Their contents may vary as we get more experience with strange systems
8511 @file{lib-prefix.m4}, @file{nls.m4}, @file{po.m4}, @file{progtest.m4} from
8570 so the @samp{dist:} goal will work properly (as explained further down):
8579 you also process the subdirectory @samp{po}. Special
8593 SUBDIRS = doc lib src po
8597 A delicate point is the @samp{dist:} goal, as @file{po/Makefile} will later
8653 You might also want to define @code{subdir} as @samp{src}, later
8689 @code{@@LTLIBINTL@@} as a library. @code{@@LIBINTL@@} is for use without
8756 @code{@@LTLIBINTL@@} as a library, add the following to
8782 Internationalization of packages, as provided by GNU @code{gettext}, is
8829 auxiliary include files. In many GNU packages, there is a directory
8849 * AM_PO_SUBDIRS:: AM_PO_SUBDIRS in @file{po.m4}
8850 * AM_XGETTEXT_OPTION:: AM_XGETTEXT_OPTION in @file{po.m4}
8861 @code{AM_PO_SUBDIRS}, thus preparing the @file{po/} directories of the
8886 among the various alternatives is as follows: @samp{need-formatstring-macros}
8907 might have been installed as part of the GNU @code{gettext} package.
8968 @subsection AM_PO_SUBDIRS in @file{po.m4}
8971 The @code{AM_PO_SUBDIRS} macro prepares the @file{po/} directories of the
8981 variables in each @file{po/} directory.
8984 @subsection AM_XGETTEXT_OPTION in @file{po.m4}
8988 used in the invocations of @code{xgettext} in the @file{po/} directories
8998 invocations that occur as fifth argument to this function as @samp{c-format}.
9004 @samp{XGETTEXT_OPTIONS} variable in @file{po/Makevars}.
9116 context of a version controlled repository, such as @file{configure}
9118 from @code{@var{parser}.y}, or @code{po/Makefile.in.in} autoinstalled
9166 all the files that @code{gettextize} mentions as "copy". Instead, he
9180 The version number used as argument to @code{AM_GNU_GETTEXT_VERSION} is
9195 Since translations are valuable assets as well as the source code, it
9211 are regenerated as a dependency. On the other hand, some maintainers
9225 file and do @code{make update-po} manually.
9228 Location comments such as @code{#: lib/error.c:116} are sometimes
9253 automatically update the PO files as needed.
9260 $ (cd po; make update-po)
9272 are installed in such a way as to allow translation of
9285 Internationalized packages have usually many @file{@var{ll}.po}
9297 implicitly applies to C++ as well, its scope is far broader than that:
9338 environment variables than @code{LC_MESSAGES}, such as @code{LC_TIME} or
9341 referenceable from within the language, usually either as enumeration
9342 values or as strings.
9356 Remember that gettext will act as a no-op if the @code{LC_MESSAGES} and
9386 GNU @code{xgettext} can function as a front end to your string extractor.
9420 your language to @file{po-mode.el}.
9439 @code{gettext} features (such as the @code{LANGUAGE} environment
9447 For the programmer, the general procedure is the same as for the C
9457 The translator works exactly as in the C language case. The only
9502 Although format strings with positions that reorder arguments, such as
9548 the Python built-in format operator @code{%}, labelled as
9566 @code{MessageFormat.format} function, labelled as @samp{java-format},
9568 @code{PrintStream.printf} functions, labelled as @samp{java-printf-format}.
9620 Note that as of version 21, XEmacs supports numbered argument specifications
9653 Shell format strings, as supported by GNU gettext and the @samp{envsubst}
9717 KDE 4 format strings are defined as follows:
9720 must occur as well, except possibly one of them.
9740 In summary, a directive has either the same syntax as in a C format string,
9741 such as @samp{%1$+5d}, or may be surrounded by vertical bars, such as
9743 between percent signs, such as @samp{%1%}.
9755 Perl built-in function @code{printf}, labelled as @samp{perl-format},
9757 labelled as @samp{perl-brace-format}.
9823 variable in @file{po/Makevars} (@pxref{po/Makevars}) should be adjusted to
9827 in @file{po/Makefile.in.in}. It is recommended to make one @code{xgettext}
9835 @c Here is a list of programming languages, as used for Free Software projects
9836 @c on SourceForge/Freshmeat, as of February 2002. Those supported by gettext
9977 @item po-mode marking
10019 @code{pot}, @code{po}
10207 an ITS rule with an XML file. If the above ITS file is saved as
10264 strings can have arbitrary XML constructs, such as elements for markup.
10318 @code{po}
10420 @code{xgettext} (usually by listing the template in @code{po/POTFILES.in}).
10439 example, the high-five sign, in some cultures, is perceived as an
10564 of Greg McGary, as a kind of contribution to Ulrich's package.
10576 2000. Bruno added the plural form handling to the tools as well, added
10592 @cite{Internationalization Reference List}, which is available as:
10613 over the responsibility of maintaining it. It may be found as: