Update localization guide
This commit is contained in:
parent
edb756c084
commit
b5d96e4ed6
@ -1,44 +1,75 @@
|
||||
From the begining you need to have GNUgettext and PoEdit.
|
||||
GNUgettext package contains a set of tools to extract strings from the source code and
|
||||
to create the Catalog to translation.
|
||||
PoEdit provide good interface for the translators.
|
||||
# Localization and translation guide
|
||||
|
||||
The purpose of this guide is to describe how to contribute to the Slic3rPE translations. We use GNUgettext for extracting string resources from the project and PoEdit for editing translations.
|
||||
|
||||
Those are possible to download here:
|
||||
GNUgettext - https://sourceforge.net/directory/os:windows/?q=gnu+gettext
|
||||
PoEdit - https://poedit.net/
|
||||
- https://sourceforge.net/directory/os:windows/?q=gnu+gettext GNUgettext package contains a set of tools to extract strings from the source code and to create the translation Catalog.
|
||||
- https://poedit.net PoEdit provides good interface for the translators.
|
||||
|
||||
When GNUgettext and poEdit are downloaded and installationed, next step is
|
||||
to add path to gettext/bin directory to your PATH variable.
|
||||
You can use gettext from cmdline now.
|
||||
After GNUgettext is installed it is recommended to add the path to gettext/bin to PATH variable.
|
||||
|
||||
Full manual for GNUgettext you can see here: http://www.gnu.org/software/gettext/manual/gettext.html
|
||||
|
||||
|
||||
In Slic3rPE we have one macro (L) used to markup strings to localizations.
|
||||
### Scenario 1. How do I add a translation or fix the existing translation
|
||||
1. Get PO-file from corresponding folder here:
|
||||
https://github.com/prusa3d/Slic3r/tree/master/resources/localization
|
||||
2. Open this file in PoEdit as "Edit a translation"
|
||||
3. Apply your corrections to translation
|
||||
4. Push changed Slic3rPE.po and Slic3rPE.mo (will create automatically after saving of Slic3r.po in PoEdit) back to to the enter folder.
|
||||
|
||||
So, to create Catalog to translation there are next steps:
|
||||
1. create list of files with this macro (list.txt)
|
||||
### Scenario 2. How do I add a new language support
|
||||
1. Get file Slic3rPE.pot here :
|
||||
https://github.com/prusa3d/Slic3r/tree/master/resources/localization
|
||||
2. Open it in PoEdit for "Create new translation"
|
||||
3. Select Translation Language (for example French).
|
||||
4. As a result you will have fr.po - the file contaning translation to French.
|
||||
Notice. When the transtation is complete you need to:
|
||||
- Rename the file to Slic3rPE.po
|
||||
- Click "Save file" button. Slic3rPE.mo will be created immediatly
|
||||
- Both Slic3rPE.po and Slic3rPE.mo have to be saved here:
|
||||
https://github.com/prusa3d/Slic3r/tree/master/resources/localization/fr
|
||||
( name of folder "fr" means "French" - the translation language).
|
||||
|
||||
2. create template file(*.POT) with command:
|
||||
xgettext --keyword=L --from-code=UTF-8 --debug -o Slic3rPE.pot -f list.txt
|
||||
Use flag --from-code=UTF-8 to specify that the source strings are in UTF-8 encoding
|
||||
Use flag --debug to correctly extract formated strings(used %d, %s etc.)
|
||||
### Scenario 3. How do I add a new text resource when implementing a feature to Slic3rPE
|
||||
Each string resource in Slic3rPE available for translation needs to be explicitly marked using L() macro like this:
|
||||
```C++
|
||||
auto msg = L("This message to be localized")
|
||||
```
|
||||
To get translated text use one of needed macro/function (`_(s)`, `_CHB(s)` or `L_str(s)` ).
|
||||
If you add new file resourse, add it to list of files contaned macro `L()`
|
||||
|
||||
3.1 if you start to create PO-file for your projest just open this POT-file in PoEdit.
|
||||
When you select translation language after first opening of POT-files,
|
||||
PO-file will be created immediatly.
|
||||
### Scenario 4. How do I use GNUgettext to localize my own application taking Slic3rPE as an example
|
||||
|
||||
3.2 if you already have PO-file created before, you have to merge old PO-file with
|
||||
strings from creaded POT-file. You can do that with command:
|
||||
msgmerge -N -o new.po old.po new.pot
|
||||
Use option -N to not using fuzzy matching when an exact match is not found.
|
||||
1. For conviniance create list of files with this macro `L(s)`. We have
|
||||
https://github.com/prusa3d/Slic3r/tree/master/resources/localization/list.txt.
|
||||
|
||||
3.3 if you already have PO-file created before and new PO-file created from new sourse files
|
||||
which is not related with first one, you have to concatenate old PO-file with
|
||||
strings from new PO-file. You can do that with command:
|
||||
msgcat -o new.po old.po
|
||||
2. Create template file(*.POT) with GNUgettext command:
|
||||
```
|
||||
xgettext --keyword=L --from-code=UTF-8 --debug -o Slic3rPE.pot -f list.txt
|
||||
```
|
||||
|
||||
4. create an English translation catalog with command:
|
||||
msgen -o new.po old.po
|
||||
Notice, in this Catalog it will be totally same strings for initial text and translated.
|
||||
Use flag `--from-code=UTF-8` to specify that the source strings are in UTF-8 encoding
|
||||
Use flag `--debug` to correctly extract formated strings(used %d, %s etc.)
|
||||
|
||||
3. Create PO- and MO-files for your project as described above.
|
||||
|
||||
4. To merge old PO-file with strings from creaded new POT-file use command:
|
||||
```
|
||||
msgmerge -N -o new.po old.po new.pot
|
||||
```
|
||||
Use option `-N` to not using fuzzy matching when an exact match is not found.
|
||||
|
||||
5. To concatenate old PO-file with strings from new PO-file use command:
|
||||
```
|
||||
msgcat -o new.po old.po
|
||||
```
|
||||
|
||||
6. Create an English translation catalog with command:
|
||||
```
|
||||
msgen -o new.po old.po
|
||||
```
|
||||
Notice, in this Catalog it will be totally same strings for initial text and translated.
|
||||
|
||||
When you have Catalog to translation open POT or PO file in PoEdit and start to translation.
|
||||
It's very important to keep attention to every gaps and punctuation. Especially with
|
||||
|
Loading…
Reference in New Issue
Block a user