Re: più lingue in un documento

#43190
Up
0
Down
::

Benvenuto! Non sono sicuro che tu voglia davvero fare come chiedi, ma qui c’è una possibile soluzione.
`\documentclass[a4paper]{article}
\usepackage[english,italian]{babel} % questa se il documento è in italiano
% \usepackage[italian,english]{babel} % questa se il documento è in inglese
\newcommand{\frase}{\iflanguage{italian}}
\begin{document}
\frase{una frase in italiano}{a sentence in English}
\end{document}`
Ciao
Enrico

è più o meno quello che volevo, grazie mille! l’unica cosa è che dovrei modificare il documento e commentare / decommentare volta per volta mentre invece io potrei non voler nemmeno prendermi quel disturbo (ihih).

c’è modo di passare, che so, un parametro in fase di compilazione per distinguere fra le due lingue ? secondariamente, è possibile discernere fra un numero arbitrario di lingue senza annidare troppi frase{} diversi ?

per ora io ho risolto scrivendo uno script python che processa un file latex in cui le stringhe da scegliere e tradurre sono nella forma “@[[stringa in lingua 1],…,[stringa in lingua n]]”, così lo chiamo una volta sola e mi compila il pdf in tutte le lingue – se qualcuno è interessato glielo mando.

Vediamo con tre lingue, chiamiamo “mydoc.tex” il seguente file:
`\def\choosemainlanguage{%
\ifcase\mylanguage
english,german,italian\or
german,italian,english\or
italian,english,german\fi}

\documentclass[a4paper]{article}
\expandafter\usepackage\expandafter[\choosemainlanguage]{babel}

\newcommand{\frase}[3]{%
\ifcase\mylanguage#1\or#1\or#3\fi}

\begin{document}
\frase{Io sono}{I am}{Ich bin}
\end{document}`
Per scegliere la lingua devi chiamare la compilazione da terminale:
`pdflatex “\chardef\mylanguage=0 \input mydoc”
pdflatex “\chardef\mylanguage=1 \input mydoc”
pdflatex “\chardef\mylanguage=2 \input mydoc”`
Con la prima chiamata scegli l’italiano, con la seconda l’inglese, con la terza il tedesco.

Un semplice “shell script” automatizza il tutto:
`#!/bin/sh
pdflatex “\chardef\mylanguage=$1 \input $2″`
Se lo script è domydoc, basta chiamarlo con “domydoc 0 mydoc” o con gli altri numeri.

Ciao
Enrico

Go to top