DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH
 

(gettext.info.gz) Marking

Info Catalog (gettext.info.gz) Mark Keywords (gettext.info.gz) Sources (gettext.info.gz) c-format Flag
 
 4.5 Marking Translatable Strings
 ================================
 
 In PO mode, one set of features is meant more for the programmer than
 for the translator, and allows him to interactively mark which strings,
 in a set of program sources, are translatable, and which are not.  Even
 if it is a fairly easy job for a programmer to find and mark such
 strings by other means, using any editor of his choice, PO mode makes
 this work more comfortable.  Further, this gives translators who feel a
 little like programmers, or programmers who feel a little like
 translators, a tool letting them work at marking translatable strings
 in the program sources, while simultaneously producing a set of
 translation in some language, for the package being internationalized.
 
    The set of program sources, targeted by the PO mode commands describe
 here, should have an Emacs tags table constructed for your project,
 prior to using these PO file commands.  This is easy to do.  In any
 shell window, change the directory to the root of your project, then
 execute a command resembling:
 
      etags src/*.[hc] lib/*.[hc]
 
 presuming here you want to process all `.h' and `.c' files from the
 `src/' and `lib/' directories.  This command will explore all said
 files and create a `TAGS' file in your root directory, somewhat
 summarizing the contents using a special file format Emacs can
 understand.
 
    For packages following the GNU coding standards, there is a make
 goal `tags' or `TAGS' which constructs the tag files in all directories
 and for all files containing source code.
 
    Once your `TAGS' file is ready, the following commands assist the
 programmer at marking translatable strings in his set of sources.  But
 these commands are necessarily driven from within a PO file window, and
 it is likely that you do not even have such a PO file yet.  This is not
 a problem at all, as you may safely open a new, empty PO file, mainly
 for using these commands.  This empty PO file will slowly fill in while
 you mark strings as translatable in your program sources.
 
 `,'
      Search through program sources for a string which looks like a
      candidate for translation (`po-tags-search').
 
 `M-,'
      Mark the last string found with `_()' (`po-mark-translatable').
 
 `M-.'
      Mark the last string found with a keyword taken from a set of
      possible keywords.  This command with a prefix allows some
      management of these keywords (`po-select-mark-and-mark').
 
 
    The `,' (`po-tags-search') command searches for the next occurrence
 of a string which looks like a possible candidate for translation, and
 displays the program source in another Emacs window, positioned in such
 a way that the string is near the top of this other window.  If the
 string is too big to fit whole in this window, it is positioned so only
 its end is shown.  In any case, the cursor is left in the PO file
 window.  If the shown string would be better presented differently in
 different native languages, you may mark it using `M-,' or `M-.'.
 Otherwise, you might rather ignore it and skip to the next string by
 merely repeating the `,' command.
 
    A string is a good candidate for translation if it contains a
 sequence of three or more letters.  A string containing at most two
 letters in a row will be considered as a candidate if it has more
 letters than non-letters.  The command disregards strings containing no
 letters, or isolated letters only.  It also disregards strings within
 comments, or strings already marked with some keyword PO mode knows
 (see below).
 
    If you have never told Emacs about some `TAGS' file to use, the
 command will request that you specify one from the minibuffer, the
 first time you use the command.  You may later change your `TAGS' file
 by using the regular Emacs command `M-x visit-tags-table', which will
 ask you to name the precise `TAGS' file you want to use.   Tag
 Tables (emacs)Tags.
 
    Each time you use the `,' command, the search resumes from where it
 was left by the previous search, and goes through all program sources,
 obeying the `TAGS' file, until all sources have been processed.
 However, by giving a prefix argument to the command (`C-u ,'), you may
 request that the search be restarted all over again from the first
 program source; but in this case, strings that you recently marked as
 translatable will be automatically skipped.
 
    Using this `,' command does not prevent using of other regular Emacs
 tags commands.  For example, regular `tags-search' or
 `tags-query-replace' commands may be used without disrupting the
 independent `,' search sequence.  However, as implemented, the
 _initial_ `,' command (or the `,' command is used with a prefix) might
 also reinitialize the regular Emacs tags searching to the first tags
 file, this reinitialization might be considered spurious.
 
    The `M-,' (`po-mark-translatable') command will mark the recently
 found string with the `_' keyword.  The `M-.'
 (`po-select-mark-and-mark') command will request that you type one
 keyword from the minibuffer and use that keyword for marking the
 string.  Both commands will automatically create a new PO file
 untranslated entry for the string being marked, and make it the current
 entry (making it easy for you to immediately proceed to its
 translation, if you feel like doing it right away).  It is possible
 that the modifications made to the program source by `M-,' or `M-.'
 render some source line longer than 80 columns, forcing you to break
 and re-indent this line differently.  You may use the `O' command from
 PO mode, or any other window changing command from Emacs, to break out
 into the program source window, and do any needed adjustments.  You
 will have to use some regular Emacs command to return the cursor to the
 PO file window, if you want command `,' for the next string, say.
 
    The `M-.' command has a few built-in speedups, so you do not have to
 explicitly type all keywords all the time.  The first such speedup is
 that you are presented with a _preferred_ keyword, which you may accept
 by merely typing `<RET>' at the prompt.  The second speedup is that you
 may type any non-ambiguous prefix of the keyword you really mean, and
 the command will complete it automatically for you.  This also means
 that PO mode has to _know_ all your possible keywords, and that it will
 not accept mistyped keywords.
 
    If you reply `?' to the keyword request, the command gives a list of
 all known keywords, from which you may choose.  When the command is
 prefixed by an argument (`C-u M-.'), it inhibits updating any program
 source or PO file buffer, and does some simple keyword management
 instead.  In this case, the command asks for a keyword, written in
 full, which becomes a new allowed keyword for later `M-.' commands.
 Moreover, this new keyword automatically becomes the _preferred_
 keyword for later commands.  By typing an already known keyword in
 response to `C-u M-.', one merely changes the _preferred_ keyword and
 does nothing more.
 
    All keywords known for `M-.' are recognized by the `,' command when
 scanning for strings, and strings already marked by any of those known
 keywords are automatically skipped.  If many PO files are opened
 simultaneously, each one has its own independent set of known keywords.
 There is no provision in PO mode, currently, for deleting a known
 keyword, you have to quit the file (maybe using `q') and reopen it
 afresh.  When a PO file is newly brought up in an Emacs window, only
 `gettext' and `_' are known as keywords, and `gettext' is preferred for
 the `M-.' command.  In fact, this is not useful to prefer `_', as this
 one is already built in the `M-,' command.
 
Info Catalog (gettext.info.gz) Mark Keywords (gettext.info.gz) Sources (gettext.info.gz) c-format Flag
automatically generated byinfo2html