summaryrefslogtreecommitdiffstats
path: root/translation-help
blob: 1a092ea3041403e7dd96971bbf6a2eea33d9eb2b (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
HOWTO: Help with translations
-----------------------------

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/
and src/pacman/po/. 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. 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:
	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 gtranslator or kbabel.

These steps make it easier to just update your language and not every po file.
If you are working in the src/pacman 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
src/pacman/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' 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.

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

Some other 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)