[NTG-context] Simple question
Henning Hraban Ramm
texml at fiee.net
Tue May 10 09:10:43 CEST 2022
Am 10.05.22 um 00:15 schrieb Gerben Wierda via ntg-context:
> What is the easiest way to have a ‘database’ of translations for strings
> and maybe links?
>
> I now have 4 languages and 2 versions so 8 documents, but I’d like to
> have all translatable strings together so I can maintain these in a
> single file. Ideally I can do a file where the key of the translation is
> one language (say English) and the translations are part of that.
>
> Something I can call like this
>
> \translatephrase[English phrase][nl]
> \translatelocation[../LMTX-Output/without-ids/en/file.pdf][nl][simple]
>
> and where I can maintain all the translations a bit like this:
>
> \translationentry[English phrase]{
> \definetranslatephrase[nl]Nederlandse frase]
> \definetranslatephrase[fr][Phrase français]
> }
> }
>
> \translatelocation[../LMTX-Output/without-ids/en/file.pdf][simple][nl][../LMTX-Output/without-ids/nl/file-simple.pdf]]
> \translatelocation[../LMTX-Output/without-ids/en/file.pdf][none][nl][../LMTX-Output/without-ids/nl/file.pdf]]
>
>
> Where the \translatelocation command can be used inside an
> \externalfigure command and \translatephrase can be used as as text.
>
> In the end I’d like to compile with
>
> context language=fr mode=simple mainfile.tex
>
> Doable?
>
> Gerben Wierda (LinkedIn <https://www.linkedin.com/in/gerbenwierda>)
> R&A IT Strategy <https://ea.rna.nl/> (main site)
> Book: Chess and the Art of Enterprise Architecture
> <https://ea.rna.nl/the-book/>
> Book: Mastering ArchiMate <https://ea.rna.nl/the-book-edition-iii/>
>
Hi Gerben,
a lot is doable, it depends on by whom ;)
But this looks like a quite easy case.
Of course the answer is always “Lua tables”, but I guess the
translations would be most easy to maintain in a CSV file (you can edit
it in LibreOffice or Excel, while the latter often botches the encoding).
It could look like:
key;en;de;nl
yes;yes;ja;ja
LANG;English;Deutsch;Nederlands
i.e. the first column is the keyword and the other columns contain the
translated term (so you can also change the “original” version).
(We’re using the same in a LaTeX3 project made by Marei.)
Without researching I assume there are already Lua functions to read a
CSV file into a Lua table, and the lookup is easy – since I’m not fluent
in Lua, I won’t provide the function(s) for you.
BTW there is already \translate
(https://wiki.contextgarden.net/Command/translate) that changes text
depending on the current language.
And there is the translate module that changes terms within the whole
text:
https://source.contextgarden.net/tex/context/modules/mkiv/m-translate.mkiv
Other options like .po files might be more versatile but also much more
involved.
This covers \translatephrase; for your figures I’d just just a language
variable in the path, like \externalfigure[images/\LANG/cow.pdf]
If this is always the current language, use \currentlanguage.
You can also setup the language dependent directory in
\setupexternalfigures.
Regarding modes, the current language is set as a system mode (*en,
*nl), and of course you can query modes with one of the many \doif
macros. (https://wiki.contextgarden.net/Modes)
Since it doesn’t make sense to try
\externalfigure[path/\currentmode/cow] (you never know how many modes
are active), you can set a macro or variable depending on a mode:
\doifmode{simple}{\setvariable{gerben}{level}{simple}}
and then
\externalfigure[images/\getvariable{gerben}{level}/\currentlanguage/cow]
Hraban
More information about the ntg-context
mailing list