Lines Matching +refs:po +refs:mark +refs:translatable
321 * po/POTFILES.in:: @file{POTFILES.in} in @file{po/}
322 * po/LINGUAS:: @file{LINGUAS} in @file{po/}
323 * po/Makevars:: @file{Makevars} in @file{po/}
324 * po/Rules-*:: Extending @file{Makefile} in @file{po/}
341 * AM_PO_SUBDIRS:: AM_PO_SUBDIRS in @file{po.m4}
546 translatable strings, or already translated strings.
683 replies which are inherently translatable. For example, one may want
794 @cindex files, @file{.po} and @file{.mo}
795 The letters PO in @file{.po} files means Portable Object, to
802 original, translatable string of a given package with its translation
852 │ ├────> msgmerge ──────> LANG.po ────>────────╯ │
856 │ ├─── New LANG.po <────────────────────╯
876 | +----> msgmerge ------> LANG.po ---->--------' |
880 | +--- New LANG.po <--------------------'
890 @cindex marking translatable strings
893 which are meant to be translatable, and those which are untranslatable.
940 is used to find and extract all translatable strings, and create a
953 The first time through, there is no @file{@var{lang}.po} yet, so the
955 @file{@var{package}.pot} to @file{@var{lang}.po}, where @var{lang}
967 While adding the translated messages into the @file{@var{lang}.po}
994 strings as translatable, when they should be, and do not otherwise
999 evolving over time, so the translations carried by @file{@var{lang}.po}
1012 existing @file{@var{lang}.po} file, by comparing it with a newer
1017 obsolete, in @file{@var{lang}.po}, those already translated entries
1025 @file{@var{lang}.po} file offering translations for all strings.
1099 some @file{@var{ll}.po} files, often kept together into some @file{po/}
1101 have usually many @file{@var{ll}.po} files, where @var{ll} represents
1135 @cindex file format, @file{.po}
1420 #: src/msgcmp.c:338 src/po-lex.c:699
1505 identify, adjust and mark all constant strings in your program
1760 translatable string changes, the translator is faced with the task of
1877 Unusual markup or control characters should not be used in translatable
1898 translatable strings. But please bear in mind that the GNU gettext tools
1906 is done in such a way that each translatable string appears to be
1924 functions. But this is not universal usage, and some translatable
1928 at properly extracting all translatable strings when it scans a set
1931 The canonical keyword for marking translatable strings is
1944 @cindex @code{_}, a macro to mark strings for translation
1950 So, the textual overhead per translatable string is reduced to
1965 The marking keywords @samp{gettext} and @samp{_} take the translatable
1990 for the translator, and allows him to interactively mark which strings,
1991 in a set of program sources, are translatable, and which are not.
1992 Even if it is a fairly easy job for a programmer to find and mark
1996 like translators, a tool letting them work at marking translatable
2018 @emindex @file{TAGS}, and marking translatable strings
2024 the programmer at marking translatable strings in his set of sources.
2029 fill in while you mark strings as translatable in your program sources.
2035 candidate for translation (@code{po-tags-search}).
2039 Mark the last string found with @samp{_()} (@code{po-mark-translatable}).
2045 keywords (@code{po-select-mark-and-mark}).
2049 @efindex po-tags-search@r{, PO Mode command}
2050 The @kbd{,} (@code{po-tags-search}) command searches for the next
2057 presented differently in different native languages, you may mark it
2081 recently marked as translatable will be automatically skipped.
2091 @efindex po-mark-translatable@r{, PO Mode command}
2092 @efindex po-select-mark-and-mark@r{, PO Mode command}
2093 The @kbd{M-,} (@code{po-mark-translatable}) command will mark the
2095 (@code{po-select-mark-and-mark}) command will request that you type
2189 useful for @code{msgfmt} to test all the strings in the @file{.po} file.
2195 only a heuristic. In the @file{.po} file the entry is marked using the
2206 @code{xgettext:c-format}, it will mark the string in any case with
2224 would prevent translating the @file{.po} file. The method to prevent
2238 to mark translatable string with @code{gettext} or something like this.
2259 While it is no problem to mark the string @code{"a default message"} it
2260 is not possible to mark the string initializers for @code{messages}.
2261 What is to be done? We have to fulfill two tasks. First we have to mark the
2267 no-op. For the second we have to mark all access points to a string
2396 for translators using GNU Emacs or XEmacs with po-mode.
2505 @code{xgettext} creates a file named @file{@var{domainname}.po}. You
2528 @file{@var{LANG}.po}, as a copy of the @file{@var{package}.pot} template
2537 $ cd po
2543 @file{@var{LANG}.po}. Then she modifies the initial comments and
2567 type @kbd{M-x po-mode RET} and then @kbd{RET} again to start editing the
2611 Project's homepage, @uref{http://www.iro.umontreal.ca/contrib/po/HTML/},
2768 of program strings as translatable, and the validation of PO files
2813 (cons '("\\.po\\'\\|\\.po\\." . po-mode) auto-mode-alist))
2814 (autoload 'po-mode "po-mode" "Major mode for translators to edit PO files" t)
2817 Later, whenever you edit some @file{.po}
2818 file, or any file having the string @samp{.po.} within its name,
2819 Emacs loads @file{po-mode.elc} (or @file{po-mode.el}) as needed, and
2833 (modify-coding-system-alist 'file "\\.po\\'\\|\\.po\\."
2834 'po-find-file-coding-system)
2835 (autoload 'po-find-file-coding-system "po-mode")
2851 po-mode-map, which is a genuine Emacs mode, in a way that is not derived
2852 from text mode in any way. Functions found on @code{po-mode-hook},
2874 Undo last modification to the PO file (@code{po-undo}).
2878 Quit processing and save the PO file (@code{po-quit}).
2882 Quit processing, possibly after confirmation (@code{po-confirm-and-quit}).
2886 Temporary leave the PO file window (@code{po-other-window}).
2892 Show help about PO mode (@code{po-help}).
2896 Give some PO file statistics (@code{po-statistics}).
2900 Batch validate the format of the whole PO file (@code{po-validate}).
2905 @efindex po-undo@r{, PO Mode command}
2906 The command @kbd{_} (@code{po-undo}) interfaces to the Emacs
2918 @efindex po-quit@r{, PO Mode command}
2919 @efindex po-confirm-and-quit@r{, PO Mode command}
2920 The commands @kbd{Q} (@code{po-quit}) and @kbd{q}
2921 (@code{po-confirm-and-quit}) are used when the translator is done with the
2931 @efindex po-other-window@r{, PO Mode command}
2932 The command @kbd{0} (@code{po-other-window}) is another, softer way,
2945 @efindex po-help@r{, PO Mode command}
2946 The command @kbd{h} (@code{po-help}) displays a summary of all available PO
2952 @efindex po-statistics@r{, PO Mode command}
2953 The command @kbd{=} (@code{po-statistics}) computes the total number of
2959 @efindex po-validate@r{, PO Mode command}
2960 The command @kbd{V} (@code{po-validate}) launches @code{msgfmt} in
3000 Redisplay the current entry (@code{po-current-entry}).
3004 Select the entry after the current one (@code{po-next-entry}).
3008 Select the entry before the current one (@code{po-previous-entry}).
3012 Select the first entry in the PO file (@code{po-first-entry}).
3016 Select the last entry in the PO file (@code{po-last-entry}).
3021 (@code{po-push-location}).
3025 Return to a previously saved entry location (@code{po-pop-location}).
3030 (@code{po-exchange-location}).
3035 @efindex po-current-entry@r{, PO Mode command}
3042 (@code{po-current-entry}) has the sole purpose of redisplaying the
3061 @efindex po-next-entry@r{, PO Mode command}
3063 @efindex po-previous-entry@r{, PO Mode command}
3064 The commands @kbd{n} (@code{po-next-entry}) and @kbd{p}
3065 (@code{po-previous-entry}) move the cursor the entry following,
3071 @efindex po-first-entry@r{, PO Mode command}
3073 @efindex po-last-entry@r{, PO Mode command}
3074 The commands @kbd{<} (@code{po-first-entry}) and @kbd{>}
3075 (@code{po-last-entry}) move the cursor to the first entry, or last
3093 @efindex po-push-location@r{, PO Mode command}
3095 @efindex po-pop-location@r{, PO Mode command}
3097 onto a special stack. The command @kbd{m} (@code{po-push-location})
3100 @kbd{r} (@code{po-pop-location}) consumes the top stack element and
3112 @efindex po-exchange-location@r{, PO Mode command}
3113 The command @kbd{x} (@code{po-exchange-location}) simultaneously
3152 @item M-x po-normalize
3153 @efindex po-normalize@r{, PO Mode command}
3158 The special command @kbd{M-x po-normalize}, which has no associated
3167 @kbd{M-x po-normalize} presently makes three passes over the entries.
3246 Find the next translated entry (@code{po-next-translated-entry}).
3250 Find the previous translated entry (@code{po-previous-translated-entry}).
3255 @efindex po-next-translated-entry@r{, PO Mode command}
3257 @efindex po-previous-translated-entry@r{, PO Mode command}
3258 The commands @kbd{t} (@code{po-next-translated-entry}) and @kbd{T}
3259 (@code{po-previous-translated-entry}) move forwards or backwards, chasing
3263 @evindex po-auto-fuzzy-on-edit@r{, PO Mode variable}
3266 variable @code{po-auto-fuzzy-on-edit} is not @code{nil}, the entry having
3293 might mark some entries as being fuzzy.
3296 Also, the translator may decide herself to mark an entry as fuzzy
3305 Find the next fuzzy entry (@code{po-next-fuzzy-entry}).
3309 Find the previous fuzzy entry (@code{po-previous-fuzzy-entry}).
3313 Remove the fuzzy attribute of the current entry (@code{po-unfuzzy}).
3318 @efindex po-next-fuzzy-entry@r{, PO Mode command}
3320 @efindex po-previous-fuzzy-entry@r{, PO Mode command}
3321 The commands @kbd{z} (@code{po-next-fuzzy-entry}) and @kbd{Z}
3322 (@code{po-previous-fuzzy-entry}) move forwards or backwards, chasing for
3327 @efindex po-unfuzzy@r{, PO Mode command}
3328 @evindex po-auto-select-on-unfuzzy@r{, PO Mode variable}
3329 The command @kbd{@key{TAB}} (@code{po-unfuzzy}) removes the fuzzy
3331 Further, if the variable @code{po-auto-select-on-unfuzzy} has not
3334 @code{po-auto-select-on-unfuzzy} is @code{nil}.
3336 The initial value of @code{po-auto-fuzzy-on-edit} is @code{nil}. However,
3337 if the variable @code{po-auto-fuzzy-on-edit} is set to @code{t}, any entry
3347 @efindex po-fade-out-entry@r{, PO Mode command}
3349 (@code{po-fade-out-entry}) over any translated entry to mark it as being
3383 Find the next untranslated entry (@code{po-next-untranslated-entry}).
3387 Find the previous untranslated entry (@code{po-previous-untransted-entry}).
3391 Turn the current entry into an untranslated one (@code{po-kill-msgstr}).
3396 @efindex po-next-untranslated-entry@r{, PO Mode command}
3398 @efindex po-previous-untransted-entry@r{, PO Mode command}
3399 The commands @kbd{u} (@code{po-next-untranslated-entry}) and @kbd{U}
3400 (@code{po-previous-untransted-entry}) move forwards or backwards,
3405 @efindex po-kill-msgstr@r{, PO Mode command}
3408 (@code{po-kill-msgstr}). @xref{Modifying Translations}.
3441 Find the next obsolete entry (@code{po-next-obsolete-entry}).
3445 Find the previous obsolete entry (@code{po-previous-obsolete-entry}).
3450 (@code{po-fade-out-entry}).
3455 @efindex po-next-obsolete-entry@r{, PO Mode command}
3457 @efindex po-previous-obsolete-entry@r{, PO Mode command}
3458 The commands @kbd{o} (@code{po-next-obsolete-entry}) and @kbd{O}
3459 (@code{po-previous-obsolete-entry}) move forwards or backwards,
3470 @efindex po-fade-out-entry@r{, PO Mode command}
3476 The command @kbd{@key{DEL}} (@code{po-fade-out-entry}) pushes the current entry
3518 Interactively edit the translation (@code{po-edit-msgstr}).
3525 (@code{po-msgid-to-msgstr}).
3529 Save the translation on the kill ring, and delete it (@code{po-kill-msgstr}).
3534 (@code{po-kill-ring-save-msgstr}).
3539 (@code{po-yank-msgstr}).
3544 @efindex po-edit-msgstr@r{, PO Mode command}
3545 The command @kbd{@key{RET}} (@code{po-edit-msgstr}) opens a new Emacs
3557 @efindex po-msgid-to-msgstr@r{, PO Mode command}
3558 The command @kbd{@key{LFD}} (@code{po-msgid-to-msgstr}) initializes, or
3563 @evindex po-auto-edit-with-msgid@r{, PO Mode variable}
3566 @code{po-auto-edit-with-msgid} to @code{t}, the translation gets
3568 The default value for @code{po-auto-edit-with-msgid} is @code{nil}.
3584 @efindex po-kill-msgstr@r{, PO Mode command}
3586 @efindex po-kill-ring-save-msgstr@r{, PO Mode command}
3587 The command @kbd{k} (@code{po-kill-msgstr}) merely empties the
3591 (@code{po-kill-ring-save-msgstr}) has also the effect of taking a
3613 @efindex po-yank-msgstr@r{, PO Mode command}
3614 The command @kbd{y} (@code{po-yank-msgstr}) completely replaces the
3656 to mark the current entry location, then starts chasing obsolete
3698 Interactively edit the translator comments (@code{po-edit-comment}).
3703 (@code{po-kill-comment}).
3708 (@code{po-kill-ring-save-comment}).
3713 (@code{po-yank-comment}).
3725 @efindex po-edit-comment@r{, PO Mode command}
3726 The command @kbd{#} (@code{po-edit-comment}) opens a new Emacs window
3737 @evindex po-subedit-mode-hook@r{, PO Mode variable}
3738 Functions found on @code{po-subedit-mode-hook}, if any, are executed after
3742 @efindex po-kill-comment@r{, PO Mode command}
3744 @efindex po-kill-ring-save-comment@r{, PO Mode command}
3746 @efindex po-yank-comment@r{, PO Mode command}
3747 The command @kbd{K} (@code{po-kill-comment}) gets rid of all
3749 The command @kbd{W} (@code{po-kill-ring-save-comment}) takes
3752 (@code{po-yank-comment}) completely replaces the translator comments
3789 Complete edition (@code{po-subedit-exit}).
3793 Abort edition (@code{po-subedit-abort}).
3797 Consult auxiliary PO files (@code{po-subedit-cycle-auxiliary}).
3803 @efindex po-subedit-exit@r{, PO Mode command}
3807 (@code{po-subedit-exit}) may be used to return the edited translation into
3812 @efindex po-subedit-abort@r{, PO Mode command}
3816 (@code{po-subedit-abort}) to merely get rid of edition, while preserving
3822 @efindex po-subedit-cycle-auxiliary@r{, PO Mode command}
3823 The command @w{@kbd{C-c C-a}} (@code{po-subedit-cycle-auxiliary})
3830 Functions found on @code{po-subedit-mode-hook}, if any, are executed after
3908 (@code{po-cycle-source-reference}).
3913 (@code{po-select-source-reference}).
3918 (@code{po-consider-source-path}).
3923 (@code{po-ignore-source-path}).
3928 @efindex po-cycle-source-reference@r{, PO Mode command}
3930 @efindex po-select-source-reference@r{, PO Mode command}
3931 The commands @kbd{s} (@code{po-cycle-source-reference}) and @kbd{M-s}
3932 (@code{po-select-source-reference}) both open another window displaying
3968 @efindex po-consider-source-path@r{, PO Mode command}
3970 @efindex po-ignore-source-path@r{, PO Mode command}
3980 The command @kbd{S} (@code{po-consider-source-path}) is used to interactively
3982 @kbd{M-S} (@code{po-ignore-source-path}) is used to select, with completion,
4009 (@code{po-cycle-auxiliary}).
4013 Switch to a particular auxiliary file (@code{po-select-auxiliary}).
4017 Declare this PO file as an auxiliary file (@code{po-consider-as-auxiliary}).
4022 (@code{po-ignore-as-auxiliary}).
4027 @efindex po-consider-as-auxiliary@r{, PO Mode command}
4029 @efindex po-ignore-as-auxiliary@r{, PO Mode command}
4030 Command @kbd{A} (@code{po-consider-as-auxiliary}) adds the current
4032 (@code{po-ignore-as-auxiliary} just removes it.
4035 @efindex po-cycle-auxiliary@r{, PO Mode command}
4036 The command @kbd{a} (@code{po-cycle-auxiliary}) seeks all auxiliary PO
4046 @efindex po-select-auxiliary@r{, PO Mode command}
4047 The command @kbd{C-c C-a} (@code{po-select-auxiliary}) asks the translator
4103 msgcat -o compendium.po file1.po file2.po
4109 @file{file1.po}:
4119 and @file{file2.po}:
4136 "#-#-#-#-# file1.po #-#-#-#-#\n"
4138 "#-#-#-#-# file2.po #-#-#-#-#\n"
4146 finally to remove the @code{fuzzy} mark.
4153 msgcat --use-first -o compendium.po file1.po file2.po
4170 msggrep --location src/getopt.c -o compendium.po file.po
4186 msgmerge --compendium compendium.po -o file.po /dev/null file.pot
4197 msgcat --use-first -o update.po compendium1.po compendium2.po file.po
4198 msgmerge update.po file.pot | sed -e '/^#~/d' > file.po
4345 The functions are declared in the header file @samp{<gettext-po.h>}, and are
5678 additional characters per translatable string to @emph{3} (in words:
5699 which contain translatable strings and that's it: we have a running
5714 the @file{po/} directory of GNU @code{gettext} knows by default both of the
5719 programmer. Every time he comes to a translatable string he has to
6468 $ msguniq $HOME/gettextlogused > missing.po
6478 $ sed -n -e 's,^domain "\(.*\)"$,\1,p' < missing.po | sort | uniq
6491 She takes the latest copy of @file{$lang.po} from the Translation Project,
6492 or from the package (in most cases, @file{$package/po/$lang.po}), or
6494 She then uses the following commands to mark the not urgent messages as
6500 $ msggrep --domain=$domain missing.po | grep -v '^domain' \
6501 > $domain-missing.po
6502 $ msgattrib --set-obsolete --ignore-file $domain-missing.po $domain.$lang.po \
6503 > $domain.$lang-urgent.po
6506 The she translates @file{$domain.$lang-urgent.po} by use of a PO file editor
6514 $ msgmerge --no-fuzzy-matching $domain.$lang-urgent.po $package/po/$domain.pot \
6515 > $domain.$lang.po
6518 Then she can submit @file{$domain.$lang.po} and proceed to the next domain.
6609 tool and the @file{Makefile}s in the @file{intl/} and @file{po/}
6634 Your @file{po/} directory should receive all PO files submitted to you
6635 by the translator teams, each having @file{@var{ll}.po} as a name.
6651 PO files in @file{po/} for distribution.
6697 * po/POTFILES.in:: @file{POTFILES.in} in @file{po/}
6698 * po/LINGUAS:: @file{LINGUAS} in @file{po/}
6699 * po/Makevars:: @file{Makevars} in @file{po/}
6700 * po/Rules-*:: Extending @file{Makefile} in @file{po/}
6712 @node po/POTFILES.in, po/LINGUAS, Adjusting Files, Adjusting Files
6713 @subsection @file{POTFILES.in} in @file{po/}
6716 The @file{po/} directory should receive a file named
6723 # List of source files containing translatable strings.
6746 @code{bison}, that doesn't introduce translatable strings by itself,
6747 it is recommended to list in @file{po/POTFILES.in} the real source file
6751 @node po/LINGUAS, po/Makevars, po/POTFILES.in, Adjusting Files
6752 @subsection @file{LINGUAS} in @file{po/}
6755 The @file{po/} directory should also receive a file named
6788 in the @file{po/} directory. You can copy them from GNU gettext's @file{po/}
6791 @node po/Makevars, po/Rules-*, po/LINGUAS, Adjusting Files
6792 @subsection @file{Makevars} in @file{po/}
6795 The @file{po/} directory also has a file named @file{Makevars}. It
6796 contains variables that are specific to your project. @file{po/Makevars}
6797 gets inserted into the @file{po/Makefile} when the latter is created.
6802 single message domain and, accordingly, a single @file{po/} directory.
6803 Only packages which have multiple @file{po/} directories at different
6807 @node po/Rules-*, configure.in, po/Makevars, Adjusting Files
6808 @subsection Extending @file{Makefile} in @file{po/}
6811 All files called @file{Rules-*} in the @file{po/} directory get appended to
6812 the @file{po/Makefile} when it is created. They present an opportunity to
6814 with @file{po/Makefile.in.in}.
6819 building catalogs @file{en@@quot.po} and @file{en@@boldquot.po}. The
6820 effect of @file{en@@quot.po} is that people who set their @code{LANGUAGE}
6824 enable this catalog, simply add @code{en@@quot} to the @file{po/LINGUAS}
6825 file. The effect of @file{en@@boldquot.po} is that people who set
6830 @file{po/LINGUAS} file.
6837 @node configure.in, config.guess, po/Rules-*, Adjusting Files
6897 AC_OUTPUT([@var{existing configuration files} intl/Makefile po/Makefile.in],
6902 for substitution in the @file{intl/} and @file{po/} directories.
6903 Note the @samp{.in} suffix used for @file{po/} only. This is because
6904 the distributed file is really @file{po/Makefile.in.in}.
6984 @file{longdouble.m4}, @file{longlong.m4}, @file{nls.m4}, @file{po.m4},
6992 @file{nls.m4}, @file{po.m4}, @file{progtest.m4} need to be concatenated.
7091 you also process the subdirectories @samp{intl} and @samp{po}. Special
7105 SUBDIRS = doc intl lib src po
7115 @file{intl/Makefile} and @file{po/Makefile} will later assume that the
7380 * AM_PO_SUBDIRS:: AM_PO_SUBDIRS in @file{po.m4}
7392 the @file{po/} directories of the package for building.
7525 @subsection AM_PO_SUBDIRS in @file{po.m4}
7528 The @code{AM_PO_SUBDIRS} macro prepares the @file{po/} directories of the
7538 variables in each @file{po/} directory.
7650 @code{@var{parser}.y}, or @code{po/Makefile.in.in} autoinstalled by
7742 $ (cd po; make update-po)
7767 Internationalized packages have usually many @file{@var{ll}.po}
7804 You should add to the language a syntax for translatable strings. In
7811 You should arrange that evaluation of such a translatable string at
7842 A programmer should have a way to extract translatable strings from a
7864 To help the programmer in the task of marking translatable strings,
7868 your language to @file{po-mode.el}.
8181 variable in @file{po/Makevars} (@pxref{po/Makevars}) should be adjusted to
8185 in @file{po/Makefile.in.in}. It is recommended to make one @code{xgettext}
8321 @item po-mode marking
8379 @item po-mode marking
8434 Simplify translatable strings so that they don't contain command substitution
8466 For each translatable string, change the output command @samp{echo} or
8476 function receives the translatable string before the variable values are
8662 @item po-mode marking
8714 @item po-mode marking
8766 @item po-mode marking
8814 @item po-mode marking
8862 @item po-mode marking
8915 @item po-mode marking
8967 @item po-mode marking
9018 @item po-mode marking
9215 @item po-mode marking
9464 @item po-mode marking
9516 @item po-mode marking
9575 @item po-mode marking
9624 @item po-mode marking
9676 @item po-mode marking
9776 @item po-mode marking
9872 scanning for translatable strings, but rather use heuristics in order
9875 Another problem is the ambiguity of the slash and the question mark.
9893 pattern match, whereas the question mark may act as the ternary
9901 (the slash or the question mark) in the input stream, regardless of
10196 code written in the target (programming) language with translatable
10228 Only the translatable portions of the code will be extracted here, and
10363 @code{xgettext} is quite smart in extracting translatable strings from
10449 mark the string as @code{no-perl-brace-format} and use @code{printf()}:
10516 @item po-mode marking
10566 @item po-mode marking
10615 @item po-mode marking
10652 @item po-mode marking
10677 @code{pot}, @code{po}