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