Space types:
[blender.git] / po / README.txt
1 Blender translation HOWTO
2 =========================
3
4 I'll try briefly explain how translation works and how to update translation files.
5
6 1. How it works
7 ---------------
8
9 This folder contains source files for translation system. These source files have
10 got .po extension and they've got pretty simple syntax:
11
12 msgid "some message id"
13 msgstr "translation for this message"
14
15 This means when string "some message id" is used as operator name, tooltip, menu
16 and so it'll be displayed on the screen as "translation for this message".
17 Pretty simple.
18
19 This source files are pre-compiled into ../release/datafiles/locale/<language>/LC_MESSAGES/blender.mo,
20 so they aren't getting compiled every time Blender is compiling to save some time and prevent
21 failure on systems which don't have needed tools for compiling .po files.
22
23 2. How to update translations
24 -----------------------------
25
26 It's also pretty simple. If you can find string you want to translate in <language>.po
27 file as msgid, just write correct msgstr string for it. If msgid is marked as fuzzy,
28 i.e.
29
30 #, fuzzy
31 msgid "some message id"
32 msgstr "translation for this message"
33
34 it means translation used to exist for this message, but message was changed, so translation
35 also have to be updated (it's easier to make new translation based on previous translation).
36 When translation was updated, remove line with '#, fuzzy' and it'll work.
37
38 If there's no message in .po file you want to translate, probably .po file should be updated.
39 Use the following steps for this:
40 - With newly compiled blender run:
41   `blender --background --factory-startup --python update_msg.py`
42   to update messages.txt file (this file contains strings collected
43   automatically from RNA system and python UI scripts)
44 - Run update_pot.py script which will update blender.pot file. This file contains all
45   strings which should be transated.
46 - Run update_po.py script to merge all .po files with blender.pot (so all .po files
47   will contain all msgid-s declared in blender.pot) or update_po.py <language> to
48   update only needed .po file(s) to save time when you're busy with translation.
49   But before commit all .po files better be updated.
50
51 When you've finished with translation, you should re-compile .po file into .mo file.
52 It's also pretty simple: just run update_mo.py script to recompile all languages or
53 just update_mo.py <language> to re-compile only needed language(s).
54
55 NOTE: msgfmt, msgmerge and xgettext tools should be available in your PATH.
56
57 These steps to update template, translation files and compile them can be made in "batch" mode
58 using GNUMakefile:
59
60 make -f GNUMakefile translations
61
62 NOTE: Blender has to be compiled using GNUMakefile first.
63
64
65 3. Note for Windows users
66 -------------------------
67 You can find compiled builds of gettext in the lib folder under "binaries\gettext\" for both windows and win64.
68 In order to run the scripts you will need to replace the location of the GETTEXT_..._EXECUTABLE.
69
70 For example in update_pot.py:
71 -GETTEXT_XGETTEXT_EXECUTABLE = "xgettext"
72 +GETTEXT_XGETTEXT_EXECUTABLE = "C:\\Blender\\lib\\\windows\\\binaries\\\gettext\\xgettext.exe"
73
74 4. Other scripts
75 ----------------
76
77 - check_po.py: this script checks if all messages declared in blender.pot exists in.po files
78                and that no extra messages are declared in .po files
79 - clean_po.py: this script removes all commented messages which aren't required by .pot file anymore.
80 - merge_po.py: this script accepts two files as arguments and copies translations from second file
81                into first file.