![](https://secure.gravatar.com/avatar/74d41c3215dcdd377343cdc47311757c.jpg?s=120&d=mm&r=g)
Jan Willem Flamma schrieb am 11.06.2020 um 10:41:
Dear list members,
I write training manuals and use the Modes mechanism a lot to create documents at various competency levels using a single set of source files. So far the manuals have been written in English but now a separate Dutch translation has to be created.
It is important that the two manuals are setup similarly so the section/subsection numbers and question numbers are the same in the English manual and the Dutch manual. Note: I do not intend to create a manual that has the English and Dutch text at opposite sides (as can be done using streams)
I’m keen to continue using a single set of source files and thought it would be best to simply type the translated sections and subsections just below the original English sections and subsections using modeset. This gives me the option of creating an English case and a Dutch case. Within this two cases I would still apply all sorts of other modes using \startmode and \doifmode.
Duplication is unavoidable but it would make sense to try and re-use the existing structural elements such as \startsection \startsubsection \placefigure etc as much as possible. After all, only the title and caption text needs to be translated.
I tried doing this but in the case of \startchapter using a \doifmode but the PDF bookmarks text is not correctly generated.
You need \enabledirectives[references.bookmarks.preroll] in your setup files to get the correct text in the bookmarks.
I also tried placing a figure in between 2 modeset cases but this does not work.
See attached .tex file.
A alternative to modes is the selector mechanism to choose between different arguments. \setupinteraction[state=start] \placebookmarks \enabledirectives[references.bookmarks.preroll] \defineselector [language] [max=2,n=1] \startmode[en] \setupselector[language][n=1] \stopmode \startmode[nl] \setupselector[language][n=2] \stopmode \starttext \placecontent \section{\select{language}{English section title}{Dutch section title}} \startplacefigure[title=\select{language}{English float title}{Dutch float title}] \externalfigure[dummy] \stopplacefigure \stoptext
Finally in the attached PDF below, I noticed that a double space appears depending on the position of the text and curly bracket. Is this intended?
Yes because you add spaces between the braces and the text which appear in the output. \startmodeset [...] {<space> ...<space> } [...] {<space> ...<space> } \stopmodeset
Questions:
* Is the modeset mechanism indeed the best way forward or are there better ways to achieve the desired outcome? * How can I re-use the existing ConTeXt code as much as possible and still have the correct English and Dutch title and caption text for all the structural elements and floats.
There are different ways with pros and contras: - But the english and dutch texts for each section in separate files - Use buffers for each paragraph and load the one you need - Store the texts in variables and flush the ones you need - Use XML as input and tags your texts which you can filter - ... Wolfgang
![](https://secure.gravatar.com/avatar/7a94d20fb3adbe5b23efd6892e387543.jpg?s=120&d=mm&r=g)
Den tors 11 juni 2020 10:45Jan Willem Flamma
Dear list members,
I write training manuals and use the Modes mechanism a lot to create documents at various competency levels using a single set of source files. So far the manuals have been written in English but now a separate Dutch translation has to be created.
It is important that the two manuals are setup similarly so the section/subsection numbers and question numbers are the same in the English manual and the Dutch manual. Note: I do not intend to create a manual that has the English and Dutch text at opposite sides (as can be done using streams)
I’m keen to continue using a single set of source files and thought it would be best to simply type the translated sections and subsections just below the original English sections and subsections using modeset. This gives me the option of creating an English case and a Dutch case. Within this two cases I would still apply all sorts of other modes using \startmode and \doifmode.
I have done that with LaTeX and IMHO that way lies madness. It may work for shorter text but for text(s) of any length it gets messy. You lose the "flow" in both texts, and it shows when you read the typeset text, and the source becomes hard to navigate. You are probably better off using an editor which allows you to have the two versions open side by side in their own viewports (I use what Vim calls "windows"). If each section heading is on its own line you might try something like a Perl script to loop over the lines in the English version and print only the section headings to a new file, where you translate them and build up the Dutch version around them. It's even better if the editor has the capacity to show an outline pane for each version — if there is an outline mode which understands ConTeXt. I'm sorry to discourage you but chances are that you end up with an intractable mess which you will have to spend much time disentangling later.
![](https://secure.gravatar.com/avatar/d7a5b83b6ac73773980f3ee00fdd24b6.jpg?s=120&d=mm&r=g)
I tried this too, a number of times. For lengthy texts it makes little sense. One important thing is that, as BPJ says, you loose the flow during writing. When the document is finished, it is difficult to get an overview. If you consider it using for lengthy documents, I would consider to set up an xml file. You can then have the overview via scripts. Yet for short texts it can be a solution. I have case material for my trainings in both English and Dutch in the same file. Instead of modes, I use blocks. Like this: \defineblock[ENblok] \defineblock[NLblok] \setupblock[NLblok][before={\mainlanguage[nl]},after=] \setupblock[ENblok][before={\mainlanguage[en]},after=] Then, determine which blocks you want to use in your file: \hideblocks[NLblok] %\hideblocks[ENblok] For the titles I use another method: %\def\NL#1{#1} \def\NL#1{{}} %\def\EN#1{} \def\EN#1{#1} You have to comment and uncomment, depending on the language, but I think you can put them in the NLblok or ENbloks instead. \definecomplexenumeration[Casus] … definition \def\refno#1{{\em{(no. \small #1})}} My files look like this: \starttext \startCasus[casus-349][\NL{Een moeilijke zaak}\EN{A complicated case}] \refno{casus-349}\crlf The casus-349 element is used as a label. After the text I have a list of questions for this case in a separate block for questions, introduced by \in[casus-349]). You can probably also use something like \section[\NL{Een moeilijke zaak}\EN{A complicated case}]{xxxx} \begin[NLblok] \startlinenumbering text ... \stoplinenumbering \end[NLblok] \begin[Enblok] \startlinenumbering text... \stoplinenumbering \end[Enblok] \stoptext I hope this helps finding a solution. Robert
Op 11 jun. 2020, om 20:53 heeft BPJ
het volgende geschreven: Den tors 11 juni 2020 10:45Jan Willem Flamma
mailto:register12c@gmail.com> skrev: Dear list members,
I write training manuals and use the Modes mechanism a lot to create documents at various competency levels using a single set of source files. So far the manuals have been written in English but now a separate Dutch translation has to be created.
It is important that the two manuals are setup similarly so the section/subsection numbers and question numbers are the same in the English manual and the Dutch manual. Note: I do not intend to create a manual that has the English and Dutch text at opposite sides (as can be done using streams)
I’m keen to continue using a single set of source files and thought it would be best to simply type the translated sections and subsections just below the original English sections and subsections using modeset. This gives me the option of creating an English case and a Dutch case. Within this two cases I would still apply all sorts of other modes using \startmode and \doifmode.
I have done that with LaTeX and IMHO that way lies madness. It may work for shorter text but for text(s) of any length it gets messy. You lose the "flow" in both texts, and it shows when you read the typeset text, and the source becomes hard to navigate. You are probably better off using an editor which allows you to have the two versions open side by side in their own viewports (I use what Vim calls "windows"). If each section heading is on its own line you might try something like a Perl script to loop over the lines in the English version and print only the section headings to a new file, where you translate them and build up the Dutch version around them. It's even better if the editor has the capacity to show an outline pane for each version — if there is an outline mode which understands ConTeXt.
I'm sorry to discourage you but chances are that you end up with an intractable mess which you will have to spend much time disentangling later. ___________________________________________________________________________________ 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 ___________________________________________________________________________________
![](https://secure.gravatar.com/avatar/e5aa6984b53b8925e405ebbdbc051ad9.jpg?s=120&d=mm&r=g)
Am 12.06.2020 um 11:26 schrieb Jan Willem Flamma
: Thank you Wolfgang, BPJ and Robert for your answers and feedback. Much appreciated.
I will explorer the solutions that have been offered to extend my knowledge on using ConTeXt but at the same time I value the advice of not going down that route for large document.
The project that pays my bills is technical documentation in several languages (in LaTeX3, setup by Marei). Each manual is constructed from many small building blocks of text. Each block is in its own file. That makes editing one whole manual somewhat tedious, but pays off if you recycle the same blocks. E.g. each block is only translated once, even if it appears in several manuals (think of security instructions or legal stuff that is the same in all). Each block has an explicite change date to keep track of the state of the different translations. The two main files of each product are one that contains just a few settings and one that pulls in all the needed building blocks. In this case all blocks with the same content in different languages are kept together in one directory (files have a language code). Another approach would be same structures and file names below a main language directory. If you have only one translation, the latter might be better. If you need to keep several translations in sync, the first approach might make more sense. Hraban
participants (5)
-
BPJ
-
Henning Hraban Ramm
-
Jan Willem Flamma
-
r.ermers@hccnet.nl
-
Wolfgang Schuster