ntg-context - mailing list for ConTeXt users
 help / color / mirror / Atom feed
From: Henning Hraban Ramm via ntg-context <ntg-context@ntg.nl>
To: Gerben Wierda via ntg-context <ntg-context@ntg.nl>
Cc: Henning Hraban Ramm <texml@fiee.net>
Subject: Re: Simple question
Date: Tue, 10 May 2022 09:10:43 +0200	[thread overview]
Message-ID: <d76c2bff-2f18-e9c1-8938-6ad24b5fba30@fiee.net> (raw)
In-Reply-To: <C19B2BDB-40A3-4B46-91F4-FF1D66E0230F@rna.nl>

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
___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the Wiki!

maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://context.aanhet.net
archive  : https://bitbucket.org/phg/context-mirror/commits/
wiki     : http://contextgarden.net
___________________________________________________________________________________

  reply	other threads:[~2022-05-10  7:10 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-05-09 22:15 Gerben Wierda via ntg-context
2022-05-10  7:10 ` Henning Hraban Ramm via ntg-context [this message]
2022-05-10  7:16 ` Database of translations (was: Simple question) Marco Patzer via ntg-context
2022-05-10 15:21 ` Simple question Wolfgang Schuster via ntg-context
2022-05-10 16:47   ` Gerben Wierda via ntg-context
2022-05-10 18:05     ` Denis Maier via ntg-context
     [not found] <009338BB68A541498BE072F8D0E602FA01ECA3@sbsserver.hoofdkant oor.lokaal>
2002-09-16 14:20 ` simple question Hans Hagen
  -- strict thread matches above, loose matches on Subject: below --
2002-09-16 13:53 Michel van Ast
2002-09-16 18:00 ` Tobias Burnus
2002-09-16 18:11 ` Willi Egger

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=d76c2bff-2f18-e9c1-8938-6ad24b5fba30@fiee.net \
    --to=ntg-context@ntg.nl \
    --cc=texml@fiee.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).