Lines Matching +refs:po +refs:edit +refs:string
114 * c-format Flag:: Telling something about the following string
243 * po/POTFILES.in:: `POTFILES.in' in `po/'
244 * po/LINGUAS:: `LINGUAS' in `po/'
245 * po/Makevars:: `Makevars' in `po/'
246 * po/Rules-*:: Extending `Makefile' in `po/'
263 * AM_PO_SUBDIRS:: AM_PO_SUBDIRS in `po.m4'
671 The letters PO in `.po' files means Portable Object, to distinguish it
678 each original, translatable string of a given package with its
724 | +----> msgmerge ------> LANG.po ---->--------' |
728 | +--- New LANG.po <--------------------'
772 C sources each string is used. All translations are set to empty. The
781 The first time through, there is no `LANG.po' yet, so the `msgmerge'
783 `LANG.po', where LANG represents the target language. See *Note
794 While adding the translated messages into the `LANG.po' PO file, if
825 time, so the translations carried by `LANG.po' are slowly fading out of
837 existing `LANG.po' file, by comparing it with a newer `PACKAGE.pot'
841 `msgmerge' comments out as obsolete, in `LANG.po', those already
849 `LANG.po' file offering translations for all strings.
924 the distribution for the `ABOUT-NLS' information file, for some `LL.po'
925 files, often kept together into some `po/' directory, or for an `intl/'
926 directory. Internationalized packages have usually many `LL.po' files,
967 between an original untranslated string and its corresponding
1006 previous untranslated string for which the translator gave a
1012 first the untranslated string as it appears in the original program
1013 sources, and then, the translation of this string. The original string
1024 hand, the `msgstr' string, as well as translator comments, are really
1037 string might not be a correct translation (anymore). Only the
1052 The `c-format' flag tells that the untranslated string and the
1055 untranslated string happens to look like a C format string (with
1058 In case the `c-format' flag is given for a string the `msgfmt'
1161 different CONTEXT. Note that an empty CONTEXT string and an absent
1182 #: src/msgcmp.c:338 src/po-lex.c:699
1208 syntax for a character string, including the surrounding quotes and
1212 continued, and an opening quote should resume the string at the
1216 "Here is an example of how one might continue a very long string\n"
1217 "for the common case the string represents multi-line output.\n"
1219 In this example, the empty string is used on the first line, to allow
1223 string does not change the resulting overall string, but it is a way
1225 string on the same line, while keeping the multi-line presentation
1227 string could have been omitted, but only if the string starting with
1235 _inside_ quotes, which are part of the represented string, and end of
1236 lines in the PO file itself, outside string quotes, which have no
1237 incidence on the represented string.
1273 * c-format Flag:: Telling something about the following string
1292 calls with a format string that could be a translated C string (even if
1293 the C string comes from a different C module) should contain the line:
1376 be adjusted. Usually preparing a string for translation is done right
1387 * Use format strings instead of string concatenation.
1419 string `"File %s is %s protected"', which is unintelligible. Change
1435 and then combining these two half-sentences through dumb string
1472 translatable string changes, the translator is faced with the task of
1473 updating the entire translated string. Maybe only a single word will
1474 have changed in the English string, but the translator doesn't see that
1486 Hardcoded string concatenation is sometimes used to construct English
1498 format string:
1505 through `printf'. It expands to a constant string, usually "d" or "ld"
1516 The PO file will contain the string "The amount is %0<PRId64>\n". The
1519 appropriate constant string, "d" or "ld" or "lld".
1538 example, in Java and C#, string concatenation is very frequently used,
1544 into a statement involving a format string:
1554 into a statement involving a format string:
1571 string. This is flawed. Some translators may convert it to a simple
1590 Marking is done in such a way that each translatable string appears to
1596 by formatting. The format string needs translation, as well as some
1606 string. Most localizable strings are found in executable positions,
1629 `_("Translatable string")' instead of `gettext ("Translatable
1630 string")'. Further, the coding rule, from GNU standards, wanting that
1633 overhead per translatable string is reduced to only three characters:
1644 The marking keywords `gettext' and `_' take the translatable string
1652 adjacent string tokens. Automatic string concatenation is performed at
1657 you add or modify a string, you will have to ask yourself if the new or
1658 altered string requires translation, and include it within `_()' if you
1660 string _not_ requiring translation. But `"%s: %d"' _does_ require
1708 Search through program sources for a string which looks like a
1709 candidate for translation (`po-tags-search').
1712 Mark the last string found with `_()' (`po-mark-translatable').
1715 Mark the last string found with a keyword taken from a set of
1717 management of these keywords (`po-select-mark-and-mark').
1720 The `,' (`po-tags-search') command searches for the next occurrence
1721 of a string which looks like a possible candidate for translation, and
1723 a way that the string is near the top of this other window. If the
1724 string is too big to fit whole in this window, it is positioned so only
1726 window. If the shown string would be better presented differently in
1728 Otherwise, you might rather ignore it and skip to the next string by
1731 A string is a good candidate for translation if it contains a
1732 sequence of three or more letters. A string containing at most two
1762 The `M-,' (`po-mark-translatable') command will mark the recently
1763 found string with the `_' keyword. The `M-.'
1764 (`po-select-mark-and-mark') command will request that you type one
1766 string. Both commands will automatically create a new PO file
1767 untranslated entry for the string being marked, and make it the current
1776 PO file window, if you want command `,' for the next string, say.
1822 A possible German translation for the above string might be:
1830 string is regarded as the address.
1834 translation string match in type and number. If this is not the case
1848 useful for `msgfmt' to test all the strings in the `.po' file. This
1849 might cause problems because the string might contain what looks like a
1850 format specifier, but the string is not used in `printf'.
1853 thinks might be a format string. There is no absolute rule for this,
1854 only a heuristic. In the `.po' file the entry is marked using the
1863 will mark the string in any case with the `c-format' flag. This kind
1864 of comment should be used when `xgettext' does not recognize the string
1865 as a format string but it really is one and it should be tested.
1867 keyword, it must be before the string to be translated.
1872 `xgettext' does not recognize this as a format string but what happens
1878 round, i.e. a string marked as a format string actually is not a format
1879 string. In this case the `msgfmt' might give too many warnings and
1880 would prevent translating the `.po' file. The method to prevent this
1882 use must contain the string `xgettext:no-c-format'.
1884 If a string is marked with `c-format' and this is not correct the
1896 to mark translatable string with `gettext' or something like this.
1904 const char *string;
1906 string
1909 fputs (string);
1913 While it is no problem to mark the string `"a default message"' it
1914 is not possible to mark the string initializers for `messages'. What
1917 can find them, and second we have to translate the string at runtime
1922 string from the array. So one solution can look like this:
1931 const char *string;
1933 string
1936 fputs (string);
1940 Please convince yourself that the string which is written by `fputs'
1954 const char *string;
1956 string
1959 fputs (gettext (string));
1964 uses `gettext_noop' for the string `"a default message"'. A use of
2038 major hassle for translators using GNU Emacs or XEmacs with po-mode.
2132 `xgettext' creates a file named `DOMAINNAME.po'. You should then
2168 searched relative to this list of directories. The resulting `.po'
2179 Use `NAME.po' for output (instead of `messages.po').
2183 Write output to specified file (instead of `NAME.po' or
2184 `messages.po').
2272 the ARGNUMth argument as a string with context, using the GNOME
2340 possible format string indicators, such as `c-format', and their
2344 format string. (For those of you familiar with GCC function
2352 This is useful when such strings contain no format string
2354 ensure that translators cannot accidentally use format string
2358 yield a format string, then its ARGth argument must yield a format
2359 string of the same type as well. (If you know GCC function
2366 string requirement for a `_("string")' call to its first argument,
2367 the literal `"string"', and thus mark it as a format string. This
2368 is useful when such strings contain no format string directives:
2370 translators cannot accidentally use format string directives that
2392 responsible for marking a message as a format string. The latter
2407 `--force-po'
2412 Write the .po file using indented style.
2541 `LANG.po', as a copy of the `PACKAGE.pot' template file with
2550 $ cd po
2554 do so, the translator copies `PACKAGE.pot' to `LANG.po'. Then she
2672 Emacs, type `M-x po-mode RET' and then `RET' again to start editing the
2720 `http://www.iro.umontreal.ca/contrib/po/HTML/', in the "National
2854 msgmerge [OPTION] DEF.po REF.pot
2856 The `msgmerge' program merges two Uniforum style .po files together.
2857 The DEF.po file is an existing PO file with translations which will be
2870 `DEF.po'
2879 searched relative to this list of directories. The resulting `.po'
2893 Update DEF.po. Do nothing if DEF.po is already up to date.
2910 The result is written back to DEF.po.
2913 Make a backup of DEF.po
2949 Apply REF.pot to each of the domains in DEF.po.
2976 `--force-po'
2981 Write the .po file using indented style.
3128 (cons '("\\.po\\'\\|\\.po\\." . po-mode) auto-mode-alist))
3129 (autoload 'po-mode "po-mode" "Major mode for translators to edit PO files" t)
3131 Later, whenever you edit some `.po' file, or any file having the
3132 string `.po.' within its name, Emacs loads `po-mode.elc' (or
3133 `po-mode.el') as needed, and automatically activates PO mode commands
3134 for the associated buffer. The string _PO_ appears in the mode line
3145 (modify-coding-system-alist 'file "\\.po\\'\\|\\.po\\."
3146 'po-find-file-coding-system)
3147 (autoload 'po-find-file-coding-system "po-mode")
3162 po-mode-map, which is a genuine Emacs mode, in a way that is not derived
3163 from text mode in any way. Functions found on `po-mode-hook', if any,
3168 entries of each kind are held in the PO file. For example, the string
3183 Undo last modification to the PO file (`po-undo').
3186 Quit processing and save the PO file (`po-quit').
3190 (`po-confirm-and-quit').
3193 Temporary leave the PO file window (`po-other-window').
3197 Show help about PO mode (`po-help').
3200 Give some PO file statistics (`po-statistics').
3203 Batch validate the format of the whole PO file (`po-validate').
3206 The command `_' (`po-undo') interfaces to the Emacs _undo_ facility.
3215 The commands `Q' (`po-quit') and `q' (`po-confirm-and-quit') are
3225 The command `0' (`po-other-window') is another, softer way, to leave
3233 the PO file window, or by asking Emacs to edit this file once again, PO
3236 The command `h' (`po-help') displays a summary of all available PO
3240 The command `=' (`po-statistics') computes the total number of
3245 The command `V' (`po-validate') launches `msgfmt' in checking and
3281 Redisplay the current entry (`po-current-entry').
3284 Select the entry after the current one (`po-next-entry').
3287 Select the entry before the current one (`po-previous-entry').
3290 Select the first entry in the PO file (`po-first-entry').
3293 Select the last entry in the PO file (`po-last-entry').
3297 (`po-push-location').
3300 Return to a previously saved entry location (`po-pop-location').
3304 (`po-exchange-location').
3312 especially try to enforce. The command `.' (`po-current-entry') has
3330 The commands `n' (`po-next-entry') and `p' (`po-previous-entry')
3335 The commands `<' (`po-first-entry') and `>' (`po-last-entry') move
3354 saved onto a special stack. The command `m' (`po-push-location')
3357 (`po-pop-location') consumes the top stack element and repositions the
3367 The command `x' (`po-exchange-location') simultaneously repositions
3381 There are many different ways for encoding a particular string into a
3386 particular string encoded into the `msgid' field of some entry. Even
3405 `M-x po-normalize'
3409 The special command `M-x po-normalize', which has no associated
3416 speeding up `msgid' string lookup for some other PO mode commands.
3418 `M-x po-normalize' presently makes three passes over the entries.
3421 using K&R style C string syntax for multi-line strings. These
3435 greatly automate conformance. A description of the canonical string
3441 string goes multi-line if and only if it has _embedded_ newlines, that
3459 lump together all initial newlines into the empty string, and also all
3461 newlines would go together on a separate string), so making the
3469 There are a few yet undecided little points about string
3489 Find the next translated entry (`po-next-translated-entry').
3493 (`po-previous-translated-entry').
3496 The commands `t' (`po-next-translated-entry') and `T'
3497 (`po-previous-translated-entry') move forwards or backwards, chasing
3503 the variable `po-auto-fuzzy-on-edit' is not `nil', the entry having
3527 original string (the `msgid' string) should often be reflected in the
3528 translated string, and this requires the intervention of the
3538 Find the next fuzzy entry (`po-next-fuzzy-entry').
3541 Find the previous fuzzy entry (`po-previous-fuzzy-entry').
3544 Remove the fuzzy attribute of the current entry (`po-unfuzzy').
3547 The commands `z' (`po-next-fuzzy-entry') and `Z'
3548 (`po-previous-fuzzy-entry') move forwards or backwards, chasing for a
3552 The command `<TAB>' (`po-unfuzzy') removes the fuzzy attribute
3554 the variable `po-auto-select-on-unfuzzy' has not the `nil' value, the
3556 to work on. The initial value of `po-auto-select-on-unfuzzy' is `nil'.
3558 The initial value of `po-auto-fuzzy-on-edit' is `nil'. However, if
3559 the variable `po-auto-fuzzy-on-edit' is set to `t', any entry edited
3569 (`po-fade-out-entry') over any translated entry to mark it as being
3574 `q' command, the translator is asked for confirmation, if fuzzy string
3584 initializes the `msgid' field with the untranslated string, and leaves
3585 the `msgstr' string to be empty. Such entries, having an empty
3587 programmer slightly modifies some string right in the program, this
3589 untranslated entry for the modified string.
3602 Find the next untranslated entry (`po-next-untranslated-entry').
3606 (`po-previous-untransted-entry').
3609 Turn the current entry into an untranslated one (`po-kill-msgstr').
3612 The commands `u' (`po-next-untranslated-entry') and `U'
3613 (`po-previous-untransted-entry') move forwards or backwards, chasing
3618 emptying its translation, using the command `k' (`po-kill-msgstr').
3623 untranslated string still exists.
3641 the original untranslated string. Commands interfacing with the kill
3643 user may interactively edit the translation. All these commands may
3651 Find the next obsolete entry (`po-next-obsolete-entry').
3654 Find the previous obsolete entry (`po-previous-obsolete-entry').
3658 (`po-fade-out-entry').
3661 The commands `o' (`po-next-obsolete-entry') and `O'
3662 (`po-previous-obsolete-entry') move forwards or backwards, chasing for
3668 untranslated string which does not correspond to any marked string in
3674 disappearance of a translation by using the untranslated string. The
3675 command `<DEL>' (`po-fade-out-entry') pushes the current entry a little
3688 entries, for initializing the translation of a newly appeared string.
3690 we have to develop good and efficient measures of string similarity.
3717 Interactively edit the translation (`po-edit-msgstr').
3721 Reinitialize the translation with the original, untranslated string
3722 (`po-msgid-to-msgstr').
3726 (`po-kill-msgstr').
3730 (`po-kill-ring-save-msgstr').
3734 (`po-yank-msgstr').
3737 The command `<RET>' (`po-edit-msgstr') opens a new Emacs window
3738 meant to edit in a new translation, or to modify an already existing
3747 The command `<LFD>' (`po-msgid-to-msgstr') initializes, or
3748 reinitializes the translation with the original string. This command is
3750 the original string, disregarding any previous work.
3754 `po-auto-edit-with-msgid' to `t', the translation gets initialised with
3755 the original string, in case none exists already. The default value
3756 for `po-auto-edit-with-msgid' is `nil'.
3759 string, or rather with a copy of the original string, is a matter of
3764 the original string. A translator may also like having the original
3765 string right under her eyes, as she will progressively overwrite the
3769 The command `k' (`po-kill-msgstr') merely empties the translation
3770 string, so turning the entry into an untranslated one. But while doing
3772 kill ring. The command `w' (`po-kill-ring-save-msgstr') has also the
3787 translation string put on the kill ring by the `k' command is fully
3793 The command `y' (`po-yank-msgstr') completely replaces the
3794 translation of the current entry by a string taken from the kill ring.
3795 Following Emacs terminology, we then say that the replacement string is
3803 string she really wanted.
3805 When a string is yanked into a PO file entry, it is fully and
3808 push the inserted string inside comments. Once again, translators
3810 course, the necessity of the translated string itself respective to the
3815 strings (or the translator comments) automatically saves the old string
3821 slightly modifies some string right in the program, his change is later
3823 for the modified string, and the fact that the entry translating the
3824 original or unmodified string becomes obsolete. In many cases, the
3834 unmodified string. Once found, she uses the `<DEL>' command for
3841 untranslated string.
3872 Interactively edit the translator comments (`po-edit-comment').
3876 (`po-kill-comment').
3880 (`po-kill-ring-save-comment').
3884 (`po-yank-comment').
3894 The command `#' (`po-edit-comment') opens a new Emacs window
3905 Functions found on `po-subedit-mode-hook', if any, are executed after
3906 the string has been inserted in the edit buffer.
3908 The command `K' (`po-kill-comment') gets rid of all translator
3910 `W' (`po-kill-ring-save-comment') takes a copy of the translator
3912 entry. The command `Y' (`po-yank-comment') completely replaces the
3913 translator comments by a string taken at the front of the kill ring.
3933 wholly replacing them. Then, she should edit the comment right away
3949 Complete edition (`po-subedit-exit').
3952 Abort edition (`po-subedit-abort').
3955 Consult auxiliary PO files (`po-subedit-cycle-auxiliary').
3961 (`po-subedit-exit') may be used to return the edited translation into
3968 (`po-subedit-abort') to merely get rid of edition, while preserving the
3973 The command `C-c C-a' (`po-subedit-cycle-auxiliary') allows for
3980 Functions found on `po-subedit-mode-hook', if any, are executed after
3981 the string has been inserted in the edit buffer.
3985 the translated string if those are not meant to be there, or to removing
3989 the string being edited, but this `<' is not really part of the string.
3993 property and integrally becomes part of the string. If she removes the
3994 delimiting `<', then the edited string is taken _as is_, with all
3995 trailing newlines, even if invisible. Also, if the translated string
3997 be removed; so the string should appear, in the editing window, as
4005 buffer. It is possible to simultaneously edit the translation _and_
4006 the comment of a single entry, or to edit entries in different PO
4008 merely resumes that particular edit. Yet, the translator should better
4026 relate the PO file entry to exactly where the untranslated string
4030 often faced with an original string which is not as informative as it
4032 Before choosing how to translate the string, she needs to understand
4033 better what the string really means and how tight the translation has
4036 string originated, searching for surrounding comments the programmer
4055 them (`po-cycle-source-reference').
4059 (`po-select-source-reference').
4063 (`po-consider-source-path').
4067 (`po-ignore-source-path').
4070 The commands `s' (`po-cycle-source-reference') and `M-s'
4071 (`po-select-source-reference') both open another window displaying some
4073 an actual use of the string to be translated. By doing so, the command
4074 gives source program context for the string. But if the entry has no
4103 only where there are really many contexts available for a single string
4115 (`po-consider-source-path') is used to interactively enter a new
4117 (`po-ignore-source-path') is used to select, with completion, one of
4142 (`po-cycle-auxiliary').
4145 Switch to a particular auxiliary file (`po-select-auxiliary').
4149 (`po-consider-as-auxiliary').
4153 (`po-ignore-as-auxiliary').
4156 Command `A' (`po-consider-as-auxiliary') adds the current PO file to
4158 (`po-ignore-as-auxiliary' just removes it.
4160 The command `a' (`po-cycle-auxiliary') seeks all auxiliary PO files,
4169 The command `C-c C-a' (`po-select-auxiliary') asks the translator
4179 for representing the same string, different writing would break the
4224 msgcat -o compendium.po file1.po file2.po
4227 same string. Those occurrences will be marked as `fuzzy' and highly
4228 visible decorated; calling `msgcat' on `file1.po':
4235 and `file2.po':
4248 "#-#-#-#-# file1.po #-#-#-#-#\n"
4250 "#-#-#-#-# file2.po #-#-#-#-#\n"
4262 msgcat --use-first -o compendium.po file1.po file2.po
4278 msggrep --location src/getopt.c -o compendium.po file.po
4295 msgmerge --compendium compendium.po -o file.po /dev/null file.pot
4304 msgcat --use-first -o update.po compendium1.po compendium2.po file.po
4305 msgmerge update.po file.pot | sed -e '/^#~/d' > file.po
4420 searched relative to this list of directories. The resulting `.po'
4480 `--force-po'
4485 Write the .po file using indented style.
4564 searched relative to this list of directories. The resulting `.po'
4607 `--force-po'
4612 Write the .po file using indented style.
4690 searched relative to this list of directories. The resulting `.po'
4812 `--force-po'
4816 Write the .po file using indented style.
4893 searched relative to this list of directories. The resulting `.po'
4961 file. Thus, it can be used to convert an `sr.po' file to an
4962 `sr@latin.po' file.
4985 `--force-po'
4989 Write the .po file using indented style.
5079 searched relative to this list of directories. The resulting `.po'
5132 `--force-po'
5137 Write the .po file using indented style.
5227 searched relative to this list of directories. The resulting `.po'
5279 `--force-po'
5284 Write the .po file using indented style.
5352 msgcmp [OPTION] DEF.po REF.pot
5354 The `msgcmp' program compares two Uniforum style .po files to check
5355 that both contain the same set of msgid strings. The DEF.po file is an
5365 `DEF.po'
5382 Apply REF.pot to each of the domains in DEF.po.
5385 Consider fuzzy messages in the DEF.po file like translated
5391 Consider untranslated messages in the DEF.po file like translated
5440 searched relative to this list of directories. The resulting `.po'
5535 `--force-po'
5540 Write the .po file using indented style.
5625 searched relative to this list of directories. The resulting `.po'
5658 `--force-po'
5663 Write the .po file using indented style.
5766 searched relative to this list of directories. The resulting `.po'
5811 The functions are declared in the header file `<gettext-po.h>', and
5868 English string) of a message. This is guaranteed to be non-`NULL'.
5873 (untranslated English plural string) of a message with plurals, or
5879 empty string.
5939 msgfmt [OPTION] FILENAME.po ...
5947 `FILENAME.po ...'
5952 searched relative to this list of directories. The resulting `.po'
6085 If the string represents a format string used in a `printf'-like
6094 string is a format string or not. This algorithm is not perfect,
6095 though. It might regard a string as a format string though it is
6122 accelerator in a menu item string is designated by an immediately
6125 untranslated string has exactly one `&' character, the translated
6126 string has exactly one `&' as well. If this option is given with
6178 Uniforum style .po file.
6276 `--force-po'
6281 Write the .po file using indented style.
6360 Then, at offset O and offset T in the picture, two tables of string
6361 descriptors can be found. In both tables, each string descriptor uses
6362 two 32 bits integers, one for the string length, another for the offset
6363 of the string in the MO file, counting in bytes from the start of the
6374 file. This also has another advantage, as the empty string in a PO
6376 attached to that particular MO file, and the empty string necessarily
6390 which appears in the string descriptor. The `msgfmt' program has an
6392 each string is separately aligned so it starts at an offset which is a
6397 <EOT> byte, and the original string, instead of the original string.
6399 Plural forms are stored by letting the plural of the original string
6400 follow the singular of the original string, separated through a <NUL>
6401 byte. The length which appears in the string descriptor includes both.
6402 However, only the singular of the original string takes part in the
6405 length in the string descriptor includes all of them.
6445 O | length & offset 0th string ----------------.
6446 O + 8 | length & offset 1st string ------------------.
6448 O + ((N-1)*8)| length & offset (N-1)th string | | |
6459 | NUL terminated 0th string <----------------' | | |
6461 | NUL terminated 1st string <------------------' | |
6559 char *translation = catgets (catd, set_no, msg_id, "original string");
6571 of catgets is `char *' the resulting string _must not_ be changed. It
6641 perhaps impossible) and b) to access a string in a selected domain.
6651 argument is a null-terminated string, whose characters must be legal in
6665 The translation of the string MSGID is returned if it is available in
6817 string containing the name of the selected codeset. The string is
6845 dependent translation lookup is when a translation for a given string
6847 the same string in a different context can be different. The different
6848 translations of the same string in different contexts can be stored in
6858 In a call of this macro, MSGCTXT and MSGID must be string literals.
6862 The MSGCTXT string is visible in the PO file to the translator. You
6867 Finding a canonical MSGCTXT string that doesn't change over time can
6903 to a function of the `gettext' family. But in two places the string
6932 For more complex cases, where the MSGCTXT or MSGID are not string
6942 Here MSGCTXT and MSGID can be arbitrary string-valued expressions.
6944 expressions are string literals, the macros without the `_expr' suffix
7011 These extra functions are taking instead of the one key string two
7013 the numerical argument and the first string as a key, the implementation
7015 form. The two string arguments then will be used to provide a return
7018 used and it is assumed that the first string argument is the singular
7034 form of the string to be converted. It is also used as the key
7054 that are not consumed by the format string.
7093 the header entry of the PO file (the one with the empty `msgid' string).
7099 many different plural forms exist for this language. The string
7325 string has to be translated in an inner loop. While this is unavoidable
7326 when the string varies from one run of the loop to the other it is
7327 simply a waste of time when the string is always the same. Take the
7338 string is always the same. One way to use this is:
7369 when we come to a string which might be seen by the users and thus has
7380 translatable string to _3_ (in words: three).
7404 `N_' is a short form similar to `_'. The `Makefile' in the `po/'
7409 Every time he comes to a translatable string he has to define a number
7419 for `catgets'. If you have a single word in a string and this string
7428 Here we have to translate two times the string `"number"'. Even if
7447 string a little bit. But it is not impossible to overcome.
8167 $ msguniq $HOME/gettextlogused > missing.po
8175 $ sed -n -e 's,^domain "\(.*\)"$,\1,p' < missing.po | sort | uniq
8185 She takes the latest copy of `$lang.po' from the Translation Project,
8186 or from the package (in most cases, `$package/po/$lang.po'), or creates
8193 $ msggrep --domain=$domain missing.po | grep -v '^domain' \
8194 > $domain-missing.po
8195 $ msgattrib --set-obsolete --ignore-file $domain-missing.po $domain.$lang.po \
8196 > $domain.$lang-urgent.po
8198 The she translates `$domain.$lang-urgent.po' by use of a PO file
8205 $ msgmerge --no-fuzzy-matching $domain.$lang-urgent.po $package/po/$domain.pot \
8206 > $domain.$lang.po
8208 Then she can submit `$domain.$lang.po' and proceed to the next
8301 tool and the `Makefile's in the `intl/' and `po/' therefore know
8322 * Your `po/' directory should receive all PO files submitted to you
8323 by the translator teams, each having `LL.po' as a name. This is
8338 PO files in `po/' for distribution.
8452 2. A `po/' directory is created for eventually holding all
8454 `po/Makefile.in.in' from the GNU `gettext' distribution (beware
8456 the `po/' directory already exists, it will be preserved along
8487 GNU `gettext' facilities in one package go in `intl/', `po/' and `m4/'
8540 * po/POTFILES.in:: `POTFILES.in' in `po/'
8541 * po/LINGUAS:: `LINGUAS' in `po/'
8542 * po/Makevars:: `Makevars' in `po/'
8543 * po/Rules-*:: Extending `Makefile' in `po/'
8555 File: gettext.info, Node: po/POTFILES.in, Next: po/LINGUAS, Prev: Adjusting Files, Up: Adjustin…
8557 13.4.1 `POTFILES.in' in `po/'
8560 The `po/' directory should receive a file named `POTFILES.in'. This
8584 recommended to list in `po/POTFILES.in' the real source file (ending in
8589 File: gettext.info, Node: po/LINGUAS, Next: po/Makevars, Prev: po/POTFILES.in, Up: Adjusting Fi…
8591 13.4.2 `LINGUAS' in `po/'
8594 The `po/' directory should also receive a file named `LINGUAS'. This
8621 `po/' directory. You can copy them from GNU gettext's `po/' directory;
8625 File: gettext.info, Node: po/Makevars, Next: po/Rules-*, Prev: po/LINGUAS, Up: Adjusting Files
8627 13.4.3 `Makevars' in `po/'
8630 The `po/' directory also has a file named `Makevars'. It contains
8631 variables that are specific to your project. `po/Makevars' gets
8632 inserted into the `po/Makefile' when the latter is created. The
8637 a single message domain and, accordingly, a single `po/' directory.
8638 Only packages which have multiple `po/' directories at different
8643 File: gettext.info, Node: po/Rules-*, Next: configure.in, Prev: po/Makevars, Up: Adjusting Files
8645 13.4.4 Extending `Makefile' in `po/'
8648 All files called `Rules-*' in the `po/' directory get appended to the
8649 `po/Makefile' when it is created. They present an opportunity to add
8651 with `po/Makefile.in.in'.
8654 building catalogs `en@quot.po' and `en@boldquot.po'. The effect of
8655 `en@quot.po' is that people who set their `LANGUAGE' environment
8659 catalog, simply add `en@quot' to the `po/LINGUAS' file. The effect of
8660 `en@boldquot.po' is that people who set `LANGUAGE' to `en@boldquot'
8664 similarly add `en@boldquot' to the `po/LINGUAS' file.
8672 File: gettext.info, Node: configure.in, Next: config.guess, Prev: po/Rules-*, Up: Adjusting Fil…
8720 AC_OUTPUT([EXISTING CONFIGURATION FILES intl/Makefile po/Makefile.in],
8724 substitution in the `intl/' and `po/' directories. Note the `.in'
8725 suffix used for `po/' only. This is because the distributed file
8726 is really `po/Makefile.in.in'.
8802 `longdouble.m4', `longlong.m4', `nls.m4', `po.m4', `printf-posix.m4',
8807 `lib-ld.m4', `lib-link.m4', `lib-prefix.m4', `nls.m4', `po.m4',
8900 you also process the subdirectories `intl' and `po'. Special
8914 SUBDIRS = doc intl lib src po
8922 `po/Makefile' will later assume that the proper directory has been
9133 * AM_PO_SUBDIRS:: AM_PO_SUBDIRS in `po.m4'
9146 `po/' directories of the package for building.
9269 13.5.5 AM_PO_SUBDIRS in `po.m4'
9272 The `AM_PO_SUBDIRS' macro prepares the `po/' directories of the package
9282 variables in each `po/' directory.
9392 `po/Makefile.in.in' autoinstalled by `gettextize' or `autopoint'.
9504 The name `autopoint' is an abbreviation of `auto-po-intl-m4'; the
9505 tool copies or updates mostly files in the `po', `intl', `m4'
9522 $ (cd po; make update-po)
9542 Internationalized packages have usually many `LL.po' files. Unless
9583 programs. For example, in C we use the syntax `_("string")', and
9584 in GNU awk we use the shorthand `_"string"'.
9586 2. You should arrange that evaluation of such a translatable string at
9616 the string extractor is best integrated into your language's
9617 parser, GNU `xgettext' can function as a front end to your string
9620 7. The language's library should have a string formatting facility
9621 where the arguments of a format string are denoted by a positional
9637 `po-mode.el'.
9670 GNU `xgettext' string extractor recognizes other languages based on the
9746 untranslated string. (Putting the `I' format directive flag into an
9747 MSGID string would lead to undefined behaviour on platforms without
9938 string, a directive starts with `%', is optionally followed by a size
9941 denotes a character, `s' denotes a string, `i' and `d' denote an
9943 string preceded by a width specification, `H' denotes a `location_t *'
9960 cannot occur more than once in a format string.
9971 directive has either the same syntax as in a C format string, such as
9992 `XGETTEXT_OPTIONS' variable in `po/Makevars' (*note po/Makevars::)
9997 `po/Makefile.in.in'. It is recommended to make one `xgettext'
10068 `#define _(string) gettext (string)'
10084 po-mode marking
10138 po-mode marking
10210 5. For each translatable string, change the output command `echo' or
10211 `$echo' to `gettext' (if the string contains no references to
10221 `eval_gettext' function receives the translatable string before
10258 the argument string.
10452 string and substituting variable values in it: `$"msgid"'. But the use
10457 up the translation of the string, `bash' processes it like it processes
10458 any double-quoted string: dollar and backquote processing, like `eval'
10536 po-mode marking
10586 po-mode marking
10638 po-mode marking
10687 po-mode marking
10735 po-mode marking
10785 po-mode marking
10838 po-mode marking
10889 po-mode marking
10892 Before marking strings as internationalizable, uses of the string
10901 text file which the translators can directly edit, like PO files, but
10925 In particular, its `getString' function returns a string
10941 Its `gettext' function returns a string translation. Note that
11057 po-mode marking
11060 Before marking strings as internationalizable, uses of the string
11121 on a single string.
11150 The `GetString' function returns a string's translation. Note
11164 The `GetString' function returns a string's translation. Note
11168 The `GetPluralString' function returns a string translation with
11268 po-mode marking
11320 po-mode marking
11378 po-mode marking
11426 po-mode marking
11477 po-mode marking
11484 variables into the string need to be converted to `format'
11575 po-mode marking
11588 Perl parser backend offers many more string marking facilities than the
11624 In this context, the string `gettext' looks more like a file handle.
11640 In this case, the string `gettext' will be interpreted as a file
11642 write the string "Hello world!" into it. Even advanced control flow
11749 original string in the translation database and returning the
11784 Perl offers a plethora of different string constructs. Those that can
11836 single quotes, the string is not interpolated. If it is enclosed
11837 in double quotes or has no quotes at all, the string is
11858 a string constant but a variable argument (`$0' is a global variable
11860 interpolation is performed by Perl before the string argument is passed
11864 by accident, the interpolated string is found in the message catalog).
11867 error if it encounters a variable inside of an extracted string. In
11868 general, this will happen for all kinds of string interpolations that
11878 string make it into your message catalog.
11924 These escapes are only considered safe if the string consists of
11985 The `qq'-quoted string is recognized as an argument to `xgettext' in
12016 # single-quoted string!
12046 likewise. This is where the dot operator (the string concatenation
12055 Perl is smart enough to concatenate these constant string fragments
12056 into one long string at compile time, and so is `xgettext'. You will
12060 as the string concatenation operator, and the dot (`.') for
12119 is called, but again, the parser fails to extract the string "Sunday".
12166 your string, or if it describes a syntax, like in this one -, you can
12167 mark the string as `no-perl-brace-format' and use `printf()':
12231 po-mode marking
12281 po-mode marking
12330 po-mode marking
12358 `pot', `po'
15526 * --force-po, msgattrib option: msgattrib Invocation.
15528 * --force-po, msgcat option: msgcat Invocation. (line 94)
15529 * --force-po, msgcomm option: msgcomm Invocation. (line 84)
15530 * --force-po, msgconv option: msgconv Invocation. (line 64)
15531 * --force-po, msgen option: msgen Invocation. (line 60)
15532 * --force-po, msgfilter option: msgfilter Invocation.
15534 * --force-po, msggrep option: msggrep Invocation. (line 143)
15535 * --force-po, msgmerge option: msgmerge Invocation. (line 129)
15536 * --force-po, msgunfmt option: msgunfmt Invocation. (line 108)
15537 * --force-po, msguniq option: msguniq Invocation. (line 81)
15538 * --force-po, xgettext option: xgettext Invocation. (line 265)
16106 * LANGUAGE, environment variable <1>: po/Rules-*. (line 11)
16205 * po-auto-edit-with-msgid, PO Mode variable: Modifying Translations.
16207 * po-auto-fuzzy-on-edit, PO Mode variable: Translated Entries.
16209 * po-auto-select-on-unfuzzy, PO Mode variable: Fuzzy Entries. (line 44)
16210 * po-confirm-and-quit, PO Mode command: Main PO Commands. (line 62)
16211 * po-consider-as-auxiliary, PO Mode command: Auxiliary. (line 36)
16212 * po-consider-source-path, PO Mode command: C Sources Context.
16214 * po-current-entry, PO Mode command: Entry Positioning. (line 46)
16215 * po-cycle-auxiliary, PO Mode command: Auxiliary. (line 40)
16216 * po-cycle-source-reference, PO Mode command: C Sources Context.
16218 * po-edit-comment, PO Mode command: Modifying Comments. (line 46)
16219 * po-edit-msgstr, PO Mode command: Modifying Translations.
16221 * po-exchange-location, PO Mode command: Entry Positioning. (line 106)
16222 * po-fade-out-entry, PO Mode command <1>: Obsolete Entries. (line 47)
16223 * po-fade-out-entry, PO Mode command: Fuzzy Entries. (line 60)
16224 * po-first-entry, PO Mode command: Entry Positioning. (line 74)
16225 * po-help, PO Mode command: Main PO Commands. (line 83)
16226 * po-ignore-as-auxiliary, PO Mode command: Auxiliary. (line 36)
16227 * po-ignore-source-path, PO Mode command: C Sources Context. (line 89)
16228 * po-kill-comment, PO Mode command: Modifying Comments. (line 60)
16229 * po-kill-msgstr, PO Mode command <1>: Modifying Translations.
16231 * po-kill-msgstr, PO Mode command: Untranslated Entries.
16233 * po-kill-ring-save-comment, PO Mode command: Modifying Comments.
16235 * po-kill-ring-save-msgstr, PO Mode command: Modifying Translations.
16237 * po-last-entry, PO Mode command: Entry Positioning. (line 74)
16238 * po-mark-translatable, PO Mode command: Marking. (line 98)
16239 * po-msgid-to-msgstr, PO Mode command: Modifying Translations.
16241 * po-next-entry, PO Mode command: Entry Positioning. (line 69)
16242 * po-next-fuzzy-entry, PO Mode command: Fuzzy Entries. (line 39)
16243 * po-next-obsolete-entry, PO Mode command: Obsolete Entries. (line 36)
16244 * po-next-translated-entry, PO Mode command: Translated Entries.
16246 * po-next-untranslated-entry, PO Mode command: Untranslated Entries.
16248 * po-normalize, PO Mode command: Normalizing. (line 31)
16249 * po-other-window, PO Mode command: Main PO Commands. (line 72)
16250 * po-pop-location, PO Mode command: Entry Positioning. (line 92)
16251 * po-previous-entry, PO Mode command: Entry Positioning. (line 69)
16252 * po-previous-fuzzy-entry, PO Mode command: Fuzzy Entries. (line 39)
16253 * po-previous-obsolete-entry, PO Mode command: Obsolete Entries.
16255 * po-previous-translated-entry, PO Mode command: Translated Entries.
16257 * po-previous-untransted-entry, PO Mode command: Untranslated Entries.
16259 * po-push-location, PO Mode command: Entry Positioning. (line 92)
16260 * po-quit, PO Mode command: Main PO Commands. (line 62)
16261 * po-select-auxiliary, PO Mode command: Auxiliary. (line 49)
16262 * po-select-mark-and-mark, PO Mode command: Marking. (line 98)
16263 * po-select-source-reference, PO Mode command: C Sources Context.
16265 * po-statistics, PO Mode command: Main PO Commands. (line 87)
16266 * po-subedit-abort, PO Mode command: Subedit. (line 27)
16267 * po-subedit-cycle-auxiliary, PO Mode command: Subedit. (line 35)
16268 * po-subedit-exit, PO Mode command: Subedit. (line 20)
16269 * po-subedit-mode-hook, PO Mode variable: Modifying Comments. (line 57)
16270 * po-tags-search, PO Mode command: Marking. (line 56)
16271 * po-undo, PO Mode command: Main PO Commands. (line 53)
16272 * po-unfuzzy, PO Mode command: Fuzzy Entries. (line 44)
16273 * po-validate, PO Mode command: Main PO Commands. (line 92)
16274 * po-yank-comment, PO Mode command: Modifying Comments. (line 60)
16275 * po-yank-msgstr, PO Mode command: Modifying Translations.
16288 * starting a string translation: Modifying Translations.
16290 * string normalization in entries: Normalizing. (line 30)
16391 * C#, string concatenation: Preparing Strings. (line 168)
16482 * file format, .po: PO Files. (line 6)
16483 * files, .po and .mo: Files. (line 6)
16539 * Java, string concatenation: Preparing Strings. (line 168)
16559 * LINGUAS file: po/LINGUAS. (line 6)
16590 * Makefile.in.in extensions: po/Rules-*. (line 6)
16591 * Makevars file: po/Makevars. (line 6)
16594 * marking string initializers: Special cases. (line 6)
16684 * Perl invalid string interpolation: Interpolation I. (line 6)
16691 * Perl valid string interpolation: Interpolation II. (line 6)
16719 * POTFILES.in file: po/POTFILES.in. (line 6)
16732 * quotation marks <1>: po/Rules-*. (line 11)
16753 * shell format string: envsubst Invocation. (line 8)
16764 * string concatenation: Preparing Strings. (line 117)
16765 * string normalization in entries: Normalizing. (line 6)
16773 * testing .po files for equivalence: xgettext Invocation. (line 317)
16906 Node: po/POTFILES.in344099
16907 Node: po/LINGUAS345345
16908 Node: po/Makevars347034
16909 Node: po/Rules-*347782