summaryrefslogtreecommitdiff
path: root/translation-help
blob: 8887b37ad365eb7f3a6e223b46fe5e33534a6322 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
Pacman - Translating
====================

This document is here to guide you in helping translate pacman messages,
libalpm messages, and the manpages for the entire pacman package.

A quick note- 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:
http://www.gnu.org/software/gettext/manual/html_node/gettext.html[]

In addition, this site presents a small tutorial that I found useful:
http://oriya.sarovar.org/docs/gettext/[]

Translating Messages
--------------------

The message files are located in two directories in pacman- lib/libalpm/po/ for
the translation of the backend, and po/ for the translation of the frontend and
the scripts.
Each language has a .po file associated with it; the .pot file is the template
file for creating new .po files and updating the messages in them when the code
changes.

First things first. If you haven't already, you will need 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. To update all the translation
files, run this command in one of the two message file directories:

    make update-po

At this point, the .pot file is regenerated from the source code with an
updated string list, and the existing po files are merged if necessary to add
new messages or remove old ones. These po files can then either be hand edited,
or modified with a tool such as poedit, gtranslator or kbabel.

These steps make it easier to just update your language and not every po file.
If you are working in the `po/` tree, replace 'libalpm.pot' with 'pacman.pot':

    make libalpm.pot-update
    make <po file>-update

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.

If you want to test the translation (for example, the frontend one):

    rm *.gmo stamp-po
    make
    cp <lang code>.gmo /usr/share/locale/<lang code>/LC_MESSAGES/pacman.mo

Finally, submitting your translations in patch form is not essential for new
languages, but highly recommended for future updates to the translations.

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"


Translating Manpages
--------------------

(To Be Announced)

/////
vim: set ts=2 sw=2 syntax=asciidoc et:
/////