blender/po
Campbell Barton 9a0776c54a improvements to translation message generator
- for rna stringsinclude the path as comment, eg:
  #~ bpy.types.VertexGroup.name

- skip strings like %dx%d or -X.

- for strings extracted from python scripts include file:line reference as with C files.

- have messages in order they appear in the file, files and classes sorted so it reads more logically.

- extract these comments from the messages.txt file into the pot file.
2011-09-29 17:15:58 +00:00
..
messages.txt i18n: fake_gettext is no longer needed for python 2011-09-20 08:38:16 +00:00
POTFILES.in i18n: wrote small instruction for translators 2011-09-28 08:13:06 +00:00
README.txt i18n: wrote small instruction for translators 2011-09-28 08:13:06 +00:00
update_mo.py making PO/POT/... update scripts py3.2 compatible + making it almost win compatible 2011-09-29 06:34:58 +00:00
update_msg.py improvements to translation message generator 2011-09-29 17:15:58 +00:00
update_po.py making PO/POT/... update scripts py3.2 compatible + making it almost win compatible 2011-09-29 06:34:58 +00:00
update_pot.py improvements to translation message generator 2011-09-29 17:15:58 +00:00

Blender translation HOWTO
=========================

I'll try briefly explain how translation works and how to update translation files.

1. How it works
---------------

This folder contains source files for translation system. This source files have
got .po extension and they've got pretty simple syntax:

msgid "some message id"
msgstr "translation for this message"

This means when string "some message id" is used as operator name, tooltip, menu
and so it'll be displayed on the screen as "translation for this message".
Pretty simple.

This source files are pre-compiled into ../relese/dbin/.blender/locale/<language>/LC_MESSAGES/blender.mo,
so they aren't getting compiled every time Blender is compiling to same some time and prevent
failure on systems which doesn't have needed tools for compiling .po files.

2. How to update translations
-----------------------------

It's also pretty simple. If you can find string you want to translate in <language>.po
file as msgid, just write correct msgstr string for it. If msgid is marked as fuzzy,
i.e.

#, fuzzy
msgid "some message id"
msgstr "translation for this message"

it means translation used to exist for this message, but message was changed, so translation
also have to be updated (it's easier to make new translation based on previos translation).
When translation was updated, remove line with '#, fuzzy' and it'll work.

If there's no message in .po file you want to translate, probably .po file should be updated.
Use the following steps for this:
- With newly compiled blender run `blender --background --python update_msg.py` to update
  messages.txt file (this file contains strings collected automatically from RNA system and
  python UI scripts)
- Run update_pot.py script which will update blender.pot file. This file contains all
  strings which should be transated.
- Run update_po.py script to merge all .po files with blender.pot (so all .po files
  will contain all msgid-s declared in blender.pot) or update_po.py <language> to
  update only needed .po file(s) to save time when you're busy with translation.
  But before ocmmit all .po files better be updated.

When you've finished with translation, you should re-compile .po file into .mo file.
It's also pretty simple: just run update_mo.py script to recompile all languages or
just update_mo.py <language> to re-compile only needed language(s).

NOTE: msgfmt, msgmerge and xgettext tools should be available in your PATH.

This steps to update template, translation files and compile them can be made in "batch" mode
using GNUMakefile:

make -f GNUMakefile translations

NOTE: Blender has to be compiled using GNUMakefile first.