machine-gettext is a node module for adding machine translations to GNU gettext .po files.
To translate content, it uses Google translate cloud service.
this is a fork of https://github.com/signavio/machine-gettext
Install machine-gettext by running npm install -g machine-gettext.
You can use machine-gettext via the command line or require it in a JavaScript file.
On the command line you can run machine-gettext with the following arguments:
-
-in, --input: Relative path to input file -
-out, --output: Relative path to output file -
-f, --fuzzy: If specified, mark added translation as fuzzy -
-o, --overwrite: If specified, overwrite existing fuzzy translations
The following example writes all missing translations as non-fuzzy msgstrs into messages and overwrites fuzzy messages:
machine-gettext -i=messages.po -o=messages.po -m=non-fuzzy-overwrite
You can also require the module as translateGettext in a JavaScript file and execute translateGettext as a function with the following arguments:
-
input(string): Relative path to input file -
markAsFuzzy(boolean): Iftrue, mark added translation as fuzzy -
overwrite(boolean): Iftrue, overwrite existing fuzzy translations -
callback(function): Executed after all messages have been processed. Takes a gettext-parser.po file object as its argument. -
output(string, optional): Relative path to output file
The following example loads the content of ./messages.po, adds missing translations and logs the new content:
const translateGettext = require('translateGettext')
poFile = parser.po.parse(fileSystem.readFileSync('./messages.po'))
translateGettext(poFile, true, false, processedPoFile => {
console.log(processedPoFile)
})Note: The example code marks the new translations as fuzzy and doesn't overwrite existing fuzzy translations.
Contributions are welcome.
Make sure you run the tests with npm run test before creating a pull request and add test cases that cover the contributed code.
Possible improvement are, for example:
-
explicitely set the target language (currently determined via the .po file header),
-
allow integration with alternative translation services,
-
better support for interpolation and pluralization,
-
support list of terms that shouldn't be translated (for example: product names),
-
translation memory support.
- Timotheus Kampik - @TimKam
- Oleg Yarin - @monapasan