NAME
ort-xliff —
extract and merge translatable strings
from ort configurations
SYNOPSIS
ort-xliff |
[-c] -j
config [xliff] |
ort-xliff |
[-c] -j
[config...] -x
[xliff...] |
ort-xliff |
[-c] -u
config [xliff] |
ort-xliff |
[-c] -u
[config...] -x
[xliff] |
ort-xliff |
[-c] [config...] |
DESCRIPTION
The ort-xliff utility accepts
ort(5)
config files, defaulting to standard input, and
extracts, merges, and updates translatable strings. The translated strings
are used only by ort-javascript(1). The arguments are as follows:
-c- Instead of creating an empty target when extracting strings, joining translation, or updating with new translations, fill in the target with the source.
-j- Merges one or more xliff files with an untranslated config, producing another configuration containing the translated strings.
-u- Update the xliff file with new translation labels found in config.
- xliff
- An XLIFF 1.2 file containing translated strings.
- config
- A ort(5) configuration file. There may be multiple files in a single configuration.
By default, ort-xliff produces results to
standard output.
When invoked with -j or
-u, multiple ort(5) configuration files and XLIFF files as arguments must be
broken up by the -x flag, which signals the
beginning of the XLIFF files.
Translatable content in ort(5) is limited to jslabel phrases for
enumerations and bitfields.
The usual usage sequence is as follows:
- Extract translatable content from a ort(5) configuration into an XLIFF file.
- Give the XLIFF file a target language and translate the strings.
- Merge the XLIFF file back into the original ort(5) with
-j. Already-translated labels for the given language are not overriden by default. - Use the produced configuration for further use in ort-javascript(1).
With these steps, integral enumeration values produced by the JSON output of ort-c-source(1) and ort-c-header(1) may be translated into human-readable, language-specific labels.
Encoding
Labels with XML special characters "&", "<", ">", "'", and """ encode as the XML escaped "&", "<", ">", "'", and """, respectively, when compared with source identifiers in XLIFF files. Thus, "<source>a<b&c</source>" matches with the label "a<b&c".
All other XML escapes are passed through verbatim, so "<source>©</source>" matches with the label "©" instead of the copyright marker. Numbered entities should be encoded in their UTF-8 representations instead.
EXIT STATUS
The ort-xliff utility exits 0 on
success, and >0 if an error occurs.
EXAMPLES
Take a dummy configuration foo.ort containing the following:
enum foo {
item bar 0 jslabel "bar";
item foo 1 jslabel "foo";
};
Begin by extracting translatable strings from the input.
% ort-xliff foo.ort
<xliff version="1.2">
<file target-language="TODO" tool="ort-xliff">
<body>
<trans-unit id="1">
<source>bar</source>
</trans-unit>
<trans-unit id="2">
<source>foo</source>
</trans-unit>
</body>
</file>
</xliff>
Change the language into something useful, such as "fr", and translate the strings into "le bar" and "le foo", respectively. Then join the output, foo.fr.xliff, with the input configuration.
% ort-xliff -j foo.ort foo.fr.xliff
enum foo {
item bar 0
jslabel "bar"
jslabel.fr "le bar";
item foo 1
jslabel "foo"
jslabel.fr "le foo";
};
This output file can then be used with ort-javascript(1) to have per-language label filling.
Multiple configuration files, when joining, may also be specified.
% ort-xliff -j foo1.ort foo2.ort -x foo.fr.xliff
The configuration or XLIFF files may also be passed on standard
input by omitting the file. In the first case, the configuration is omitted.
(The special “--” is used to prevent
-x from being interpreted as a command-line option.)
In the second case, it's the translation file.
% ort-xliff -j -- -x foo.fr.xliff < foo.ort % ort-xliff -j foo1.ort foo2.ort -x < foo.xliff
SEE ALSO
CAVEATS
ort-xliff currently only supports language
tags without non-alpha characters, e.g., the hyphen. These are stipulated by
RFC 4646, and will be added at a later date.