Description
Command line tool to automate the manipulation of i18n string files in Rails and Android.
Features include:
- Generate a list all English translations that have been updated or added since the last translation
- Integrate a list of newly translated strings into the right place in the project translation file(s)
- Validate that all languages have the same keys
Requirements
- Must be used in context of git controlled project
- Assumes that android string files are called strings.xml under res/values-xx
Installation
Install the gem in your project
gem install vocab
Set the current git commit to be the starting point for the next translation diff
vocab init
You may need to change the SHA hash in .vocab to match the commit of the last translation
Usage
Android
Extract Changed and Updated Strings For Translation
cd APP_ROOT
vocab extract android
This will create two files in the current directory:
strings.diff.xml
Contains all the keys that need to be updated for existing languages
strings.full.xml
Contains all keys for a full translation
Send these files off to the appropriate translator. When they files come back,
put the partial language translations in tmp/translations
. For example:
tmp/translations/values-zn/strings.xml
tmp/translations/values-es/es-strings-7.xml
The file must be in the properly named folder and end with xml.
For new language files, just put them directly under the res
directory.
Merging new translations into project string files
For new languages, you simply take the file containing the full translation and put
it in the proper directory under the res
directory.
Integrate partial the translations with the following command:
cd APP_ROOT
vocab merge android
Validating that all translations have the same keys
cd APP_ROOT
vocab validate android
Rails
Extract Changed and Updated Strings For Translation
cd RAILS_ROOT
vocab extract rails
This will create two files in the current directory:
en.diff.yml
Contains all the keys that need to be updated for existing languages
en.full.yml
Contains all keys for a full translation
Send these files off to the appropriate translator. When they files come back,
put them in tmp/translations
. For example:
tmp/translations/zn.yml
tmp/translations/es.yml
Merging new translations into project string files
Integrate the translations with the following command:
cd RAILS_ROOT
vocab merge rails
Keys will be put in the correct nested yml file. You can put whole or partial translations in tmp/translations.
Validating that all translations have the same keys
cd RAILS_ROOT
vocab validate rails
Other details
Keys starting with 'debug_' are ignored for both Rails and Android string files. Prepend development-only strings with 'debug_' to avoid these keys being sent to translators.
TODO
- Better documentation (omnigraffle graphic)
- Dry run extract
- Add .processed to each tmp/translation after success
- Handle full translations under tmp/translations when no existing translation exists in android
- Add iOS support
- Add AIR support
- Add Chrome support
- Add Firefox support