20 releases
0.2.0 | Jun 15, 2024 |
---|---|
0.1.0 | May 19, 2024 |
0.0.11 | May 19, 2024 |
#1849 in Command line utilities
68 downloads per month
49KB
1.5K
SLoC
TS Gettext Extractor
A command line utility to generate Gettext template files (.pot
) from Javascript/Typescript code.
Uses SWC to parse JS files.
Usage
See help for more details
$ ts-gettext-extractor --help
Generate Gettext template files from Javascript/Typescript code
Usage: ts-gettext-extractor [OPTIONS] --output-folder <OUTPUT_FOLDER>
Options:
--exclude [<EXCLUDE>...]
A list of patterns to exclude [default: /.git/ /node_modules/ /__tests__/ .test. /__mocks__/ .mock. .story. .cy.]
--path <PATH>
The path to the file to read. Defaults to current folder
--output-folder <OUTPUT_FOLDER>
The folder where pot files will be written. Each domain will have its own file
--references-relative-to <REFERENCES_RELATIVE_TO>
Which folder the references are relative to. Defaults to the output folder
--default-domain <DEFAULT_DOMAIN>
The default domain to use for strings that don't have a domain specified [default: default]
-h, --help
Print help
Supported functions
gettext
or__
— e.g.__('String')
ngettext
or__n
— e.g.__n('1 item', '%n items', count)
pgettext
or__p
— e.g.__p('context', 'String')
npgettext
or__np
— e.g.__np('context', '1 item', '%n items', count)
dgettext
or__d
— e.g.__d('domain', 'String')
dngettext
or__dn
— e.g.__dn('domain', '1 item', '%n items', count)
dpgettext
or__dp
— e.g.__dp('domain', 'context', 'String')
dnpgettext
or__dnp
— e.g.__dnp('domain', 'context', '1 item', '%n items', count)
One tagged template literal is supported, which is __
with no variables. E.g. __`My string`
Metadata
This library produces a few metadata in the POT files as below.
References
References to the code is produced in accordance with the po file spec. Each reference mentioned the source file name and line number. References are relative to the --references-relative-to
argument (or --output-folder
).
Comments
Comments before or after a gettext
function call are also extracted. This only applies to comments directly before the function call, not comments on the previous line.
For example, this WILL be extracted:
const myText = /* ✅ A comment that will be extracted */ __('My text');
This WILL NOT be extracted:
/* ❌ A comment that won't be extracted */
const myText = __('My text');
Dependencies
~14–23MB
~390K SLoC