mirror of
https://github.com/moparisthebest/pacman
synced 2024-11-17 23:05:00 -05:00
c54af84180
Replace harcoded language code in example Signed-off-by: Miguel de Val-Borro <miguel@archlinux.net> Signed-off-by: Allan McRae <allan@archlinux.org>
158 lines
6.0 KiB
Plaintext
158 lines
6.0 KiB
Plaintext
Pacman - Translating
|
|
====================
|
|
|
|
This document is here to guide you in helping translate pacman messages,
|
|
libalpm messages, and the manual pages for the entire pacman package.
|
|
|
|
We are currently using http://www.transifex.com/[Transifex] as the translation
|
|
platform for pacman and libalpm. You will need to sign up for an account there
|
|
and then register with a translation team on the
|
|
http://www.transifex.com/projects/p/archlinux-pacman/[pacman project page].
|
|
|
|
NOTE: This may be old information due to our switch to Transifex, but the
|
|
gettext website is a very useful guide to read before embarking on translation
|
|
work, as it describes many of the commands in more detail than I will here:
|
|
https://www.gnu.org/software/gettext/manual/html_node/gettext.html[].
|
|
|
|
|
|
Translating Messages
|
|
--------------------
|
|
|
|
Overview
|
|
~~~~~~~~
|
|
|
|
There are two separate message catalogs in pacman: one for the back-end
|
|
(libalpm) and one for the front-end (pacman and scripts). These correspond to
|
|
the `lib/libalpm/po` and `po` directories in the pacman source, respectively.
|
|
|
|
Translation message files are a specially formatted text file containing the
|
|
original message and the corresponding translation. These po files can then
|
|
either be hand-edited, or modified with a tool such as poedit, gtranslator or
|
|
kbabel. Using a translation tool tends to make the job easier.
|
|
|
|
Please read up on Transifex usage using the
|
|
http://docs.transifex.com/[Transifex Help] if you are not familiar.
|
|
|
|
Transifex provides a command-line client to help with translations. Here is
|
|
an example set of commands if you have a source code checkout and are not
|
|
worried about any local translations being overwritten. The .tx/ directory is
|
|
checked into the git repository so is preconfigured with the two project
|
|
resources (See `tx status` output for a quick overview).
|
|
|
|
tx pull -f
|
|
poedit po/<mylang>.po
|
|
poedit lib/libalpm/po/<mylang>.po
|
|
tx push -t -l <mylang>
|
|
|
|
Or to just push one of the two available resources:
|
|
|
|
tx push -r archlinux-pacman.pacman-pot -t -l <mylang>
|
|
tx push -r archlinux-pacman.libalpm-pot -t -l <mylang>
|
|
|
|
See the <<Notes,Notes>> section for additional hints on translating.
|
|
|
|
Pre-release Updates
|
|
~~~~~~~~~~~~~~~~~~~
|
|
|
|
A week or two before each release, the codebase will go into a string freeze
|
|
and an email will be sent to the mailto:pacman-dev@archlinux.org[pacman-dev]
|
|
mailing list asking for translations. This email will have a prefix of
|
|
*[translation]* for anyone looking to set up an email filter.
|
|
|
|
At this time, the latest `.po` language files will be made available at the
|
|
Transifex project page. Each language will have two files available (back-end
|
|
and front-end). Translators interested in helping are encouraged to use the
|
|
features of Transifex to let others know they are currently translating their
|
|
language.
|
|
|
|
Once a translator has completed the translation (*OR* realizes they do not have
|
|
time to finish), please upload your progress back to the Transifex site.
|
|
|
|
NOTE: Please upload your translations as soon as possible- this will give other
|
|
speakers of your language time to review your translations and update them as
|
|
necessary.
|
|
|
|
Incremental Updates
|
|
~~~~~~~~~~~~~~~~~~~
|
|
|
|
If you have more advanced needs you will have to get a copy of the pacman
|
|
repository.
|
|
|
|
git clone git://projects.archlinux.org/pacman.git pacman
|
|
|
|
Next, you will need to run `./autogen.sh` and `./configure` in the base
|
|
directory to generate the correct Makefiles. At this point, all necessary
|
|
make targets will be generated and we can begin updating the translation
|
|
files.
|
|
|
|
We need to first update the main message catalog file. Navigate into either the
|
|
`lib/libalpm/po` or `po` directory depending on which translation you wish to
|
|
work on first, and execute the following command. If you are working in the
|
|
`po/` tree, replace 'libalpm.pot' with 'pacman.pot':
|
|
|
|
make libalpm.pot-update
|
|
|
|
Next, update your specific language's translation file:
|
|
|
|
make <po file>-update
|
|
|
|
At this point, you can do the translation. To submit your changes, either email
|
|
the new `.po` file to the mailing-list with *[translation]* in the subject, or
|
|
submit a Git-formatted patch (please do not include any `.pot` file changes).
|
|
|
|
As a shortcut, all translation files (including `.pot` files) can be updated
|
|
with the following command:
|
|
|
|
make update-po
|
|
|
|
Adding a New Language
|
|
~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
Making a new language is not too hard, but be sure to follow all the steps.
|
|
You will have to do the following steps in both the `lib/libalpm/po/` and `po/`
|
|
directories, substituting where appropriate. First, edit the `LINGUAS` file and
|
|
add your new language code at the bottom. Next, run the following command,
|
|
substituting 'libalpm.pot' or 'pacman.pot' for potfile depending on which
|
|
directory you are currently working in:
|
|
|
|
msginit -l <lang code> -o <lang code>.po -i <potfile>
|
|
|
|
You can then also add your language code to the end of the `LINGUAS` file
|
|
located in each po directory.
|
|
|
|
Look at the current message files for more guidance if necessary. Once you
|
|
create the new language file, you may need to slightly modify the headers;
|
|
try to make them look similar to the other .po file headers. In addition, for
|
|
all new translations we would strongly recommend using UTF-8 encoding.
|
|
|
|
Notes[[Notes]]
|
|
~~~~~~~~~~~~~~
|
|
|
|
msgid and msgstr 'variables' can be on as many lines as necessary. Line breaks
|
|
are ignored; if you need a literal line break, use an `\n` in your string. The
|
|
following two translations are equivalent:
|
|
|
|
msgstr "This is a test translation"
|
|
|
|
msgstr ""
|
|
"This is a test translation"
|
|
|
|
If you want to test the translation (for example, the front-end one):
|
|
|
|
rm *.gmo stamp-po
|
|
make
|
|
cp <lang code>.gmo /usr/share/locale/<lang code>/LC_MESSAGES/pacman.mo
|
|
|
|
|
|
Translating Manpages
|
|
--------------------
|
|
There are currently no efforts underway to include translated manual pages in
|
|
the pacman codebase. However, this is not to say translations are unwelcome. If
|
|
someone has experience with i18n man pages and how to best include them with our
|
|
source, please contact the pacman-dev mailing list at
|
|
mailto:pacman-dev@archlinux.org[].
|
|
|
|
/////
|
|
vim:set ts=4 sw=4 syntax=asciidoc noet spell spelllang=en_us:
|
|
/////
|