Cambiar el título de la tabla de contenido en modo Org según el idioma del documento

14

¿Existe alguna opción que cambie el título predeterminado de la tabla de contenido en modo Org?
Mi documento no está en inglés, así que quiero traducir el título de la tabla de contenido.


Responder

Como dijo JeanPierre, se trata de configuraciones de exportación. Puede establecer LANGUAGEen la parte superior de su orgdocumento de esta manera:

#+LANGUAGE: fr

Y el francés se usará como idioma predeterminado de todas las cadenas que se orgproducen durante la exportación.
El responsable constante de las asignaciones de traducción está org-export-dictionaryen ox.ely si su idioma no es compatible, puede dejarlo allí y luego eval-defundejar que se produzca el cambio. En mi caso:

(defconst org-export-dictionary 
    ...   
    ("Table of Contents"
         ...
         ("sr" :html "Sadržaj" :utf-8 "Sadržaj")
         ...)
    ...)

He escrito una función ingenua que puede ser útil en init.el:

(defun org-export-translate-to-lang (term-translations &optional lang)
  "Adds desired translations to `org-export-dictionary'.
   TERM-TRANSLATIONS is alist consisted of term you want to translate
   and its corresponding translation, first as :default then as :html and
   :utf-8. LANG is language you want to translate to."
  (dolist (term-translation term-translations)
    (let* ((term (car term-translation))
           (translation-default (nth 1 term-translation))
           (translation-html (nth 2 term-translation))
           (translation-utf-8 (nth 3 term-translation))
           (term-list (assoc term org-export-dictionary))
           (term-langs (cdr term-list)))
      (setcdr term-list (append term-langs
                                (list
                                 (list lang
                                       :default translation-default
                                       :html translation-html
                                       :utf-8 translation-utf-8)))))))

(org-export-translate-to-lang '(("Table of Contents"
                                 "Sadržaj"
                                 "Sadržaj"
                                 "Sadržaj")
                                ("Another term"
                                 "coilogji"))
                              "sr")

Descargo de responsabilidad

No funciona si desea exportar a través de Latex (Latex se usa cuando Org exporta a PDF). Mira la respuesta y los comentarios de Tyler.

foki
fuente
¿A qué formato está exportando? PDF, html o?
Tyler
@TylerI exporto principalmente a ODT y HTML.
foki

Respuestas:

3

El manual de la organización dice esto sobre la configuración de exportación (debería poder navegar en la información de emacs C-h i m Org m exporting):

'IDIOMA'

El idioma utilizado para traducir algunas cadenas ('org-export-default-language'). Por ejemplo, '# + IDIOMA: fr' le indicará a Org que traduzca el Archivo (inglés) al Fichier (francés) en la tabla de reloj.

No lo he probado, pero espero que haga lo que quieras.

Jean Pierre
fuente
1
No es suficiente para todos los exportadores, para las exportaciones de látex, es posible que desee ver la respuesta @ rené.
Jocelyn delalande
10

Como señaló JeanPierre, debe especificar la configuración de exportación de idioma. Para el francés, la siguiente línea hace el trabajo:

#+LANGUAGE: fr

No todos los idiomas son compatibles y, como dijiste, es posible ver cuáles están viendo la org-latex-export-dictionaryvariable (puedes usar el comando emacs y C-h vluego escribir el nombre de la variable). Algunos idiomas pueden ser solo parcialmente compatibles o no ser compatibles, como el serbio. Si desea que funcione con un idioma no compatible, agregue las cadenas traducidas a la variable y preferiblemente envíelas a los desarrolladores para que termine el modo org.

LaTex y PDF

Si está exportando a LaTex y desea que Babel cambie el uso del texto:

#+LANGUAGE: fr
#+LATEX_HEADER: \usepackage[AUTO]{babel}

Esto funcionará tanto en HTML como en látex, ya que la palabra clave AUTO será sustituida por el nombre del lenguaje Babel correspondiente. Para ver qué idiomas son compatibles, vea la org-latex-babel-language-alistvariable. No todos los idiomas disponibles en Babel están allí, pero el serbio está y funciona (lo probó y "Contenido" aparece como "Sadržaj").

Si su idioma no está en org-latex-babel-language-alistpero está disponible en babel, como bretón, use:

#+LANGUAGE: br
#+LATEX_HEADER: \usepackage[breton]{babel}

Como Breton no está en org-latex-export-dictionaryla LANGUAGEvariable, no hará nada para exportar HTML, será en inglés, pero es necesario. Esto se debe a que lo que terminará en el archivo LaTex será \usepackage[breton, <default-lang>]{babel}dónde default-langestará el inglés si LANGUAGEno está presente y Babel considera el último idioma como el predeterminado. Como brno es en lo org-latex-babel-language-alistque terminamos \usepackage[breton, ]{babel}, Breton es el valor predeterminado.

Si se agrega Breton org-latex-babel-language-alist, funcionará de todos modos ( \usepackage[breton, breton]{babel}). Si se incluye Breton org-latex-export-dictionary, ahora también funcionará en HTML. Si Breton no fue compatible con babel, funcionará de todos modos, pero estará en inglés, por lo que esta configuración es la que le brinda la mayor cantidad posible en el idioma especificado con inglés como alternativa. Prefiero usar AUTOsi está disponible, ya que solo hay un lugar para poner el idioma.

Si no le gusta lo que Babel pone como "Contenido" pero aún quiere usarlo, puede hacer algo como:

#+LANGUAGE: en
#+LATEX_HEADER: \usepackage[AUTO]{babel}
#+LATEX_HEADER: \addto\captionsenglish{\renewcommand\contentsname{Outline}}

Esto es como la respuesta de Tyler, pero para Babel.

René
fuente
¡Gracias! Funciona para la exportación estándar de PDF, pero no funciona con la exportación de diapositivas de Beamer.
foki
4

Si está exportando a PDF, org-mode llamará a LaTeX para realizar la conversión. En ese caso, debería poder insertar el comando LaTeX para cambiar el encabezado TOC con la siguiente línea:

#+LATEX_HEADER: \renewcommand*{\contentsname}{My Table of Contents Header}

Pon eso en la parte superior de tu archivo y prueba la exportación.

Tyler
fuente
Actualmente no tengo configurado el entorno LATEX, así que no puedo probarlo con PDF. Ahora quiero exportar a ODT y HTML para que el comando LATEX no ayude aquí (dime si estoy equivocado).
foki
1
Al exportar a LaTeX, es mejor que use el manejo de idiomas de LaTeX \usepackage[mylanguage]{babel}.
JeanPierre
@JeanPierre Acabo de notar un comportamiento extraño. El enfoque de Tyler no funciona para mí, pero el comportamiento manifestado con JeanPierre es aún más interesante: he declarado ambos #+LANGUAGE: fry , #+LATEX_HEADER: \usepackage[english]{babel}en este caso, la exportación de látex respeta la primera configuración y traduce cadenas en sus contrapartes francesas. Si declaro deen el primero y / frencho frenchben el segundo - dese utiliza. También he notado que en los casos descritos el exportador no usa org-export-dictionary, es más probable que use lenguajes Latex. ¿Tienes alguna idea?
foki
@foki lo siento, me faltaba un colon :. He corregido mi respuesta.
Tyler
2
Extraño, si lo uso #+LANGUAGE: frsolo, se ignora: la salida LaTeX está en inglés. Si lo uso y #+LATEX_HEADER: \usepackage[english]{babel}, el LaTeX resultante incluye la línea \usepackage[english, frenchb]{babel}. Y si solo uso #+LATEX_HEADER: \usepackage[french]{babel}, sin configurar LANGUAGE:, lo que realmente se inserta es \usepackage[frenchb, english]{babel}. Ninguno de ellos cambia el PDF, siempre es inglés.
Tyler
0

Respuesta corta: para exportaciones de pdf, se requiere el paquete texlive-lang-french

org 9.1.9: La configuración por #+LANGUAGE: frsí sola no tiene ningún efecto.

haz que suceda con

#+LATEX_HEADER: \usepackage[frenchb]{babel}

o

#+LANGUAGE: fr
#+LATEX_HEADER: \usepackage[AUTO]{babel}
Pedernal
fuente