Cambia il titolo del sommario in modalità Org in base alla lingua del documento


14

Esiste un'opzione che modifica il titolo predefinito del sommario in modalità Org?
Il mio documento non è in inglese, quindi desidero tradurre il titolo del sommario.


Risposta

Come diceva JeanPierre, riguarda le impostazioni di esportazione. È possibile impostare LANGUAGEnella parte superiore del orgdocumento in questo modo:

#+LANGUAGE: fr

E il francese verrà utilizzato come lingua predefinita di tutte le stringhe orgprodotte durante l'esportazione.
La costante responsabile dei mapping delle traduzioni è org-export-dictionarydentro ox.ele se la tua lingua non è supportata puoi lasciarla lì e eval-defunlasciare che avvenga il cambiamento. Nel mio caso:

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

Ho scritto una funzione ingenua che può essere utile in 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")

disconoscimento

Non funziona se si desidera esportare tramite Latex (Latex viene utilizzato quando l'organizzazione esporta in PDF). Guarda la risposta e i commenti di Tyler.


In quale formato stai esportando? PDF, html o?
Tyler,

@TylerI Esportazione principalmente in ODT e HTML.
Foki,

Risposte:


3

Il manuale dell'organizzazione dice questo sulle impostazioni di esportazione (dovresti essere in grado di sfogliarlo nelle informazioni di Emacs C-h i m Org m exporting):

'LINGUAGGIO'

La lingua utilizzata per tradurre alcune stringhe ('org-export-default-language'). Ad esempio, '# + LINGUA: fr' dirà a Org di tradurre File (inglese) in Fichier (francese) nell'orologio.

Non l'ho provato ma mi aspetto che dovrebbe fare quello che vuoi.


1
Non sufficiente per tutti gli esportatori, per le esportazioni di lattice, potresti dare un'occhiata alla risposta @ rené.
Jocelyn delalande,

10

Come indicato dalla risposta JeanPierre, è necessario specificare l'impostazione di esportazione della lingua. Per il francese la riga successiva funziona:

#+LANGUAGE: fr

Non tutte le lingue sono supportate e, come hai detto, è possibile vedere quali stanno visualizzando la org-latex-export-dictionaryvariabile (puoi usare il comando emacs C-h ve scrivere il nome della variabile). Alcune lingue potrebbero essere supportate solo parzialmente o non supportate affatto come il serbo. Se vuoi che funzioni con un linguaggio non supportato aggiungi le stringhe tradotte alla variabile e preferibilmente inviale agli sviluppatori in modo che finisca in modalità org.

LaTex e PDF

Se stai esportando in LaTex e vuoi lasciare che Babel cambi il testo usa:

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

Questo funzionerà sia in HTML che in latex poiché la parola chiave AUTO verrà sostituita dal nome della lingua Babel corrispondente. Per visualizzare quali lingue sono supportate visualizzare la org-latex-babel-language-alistvariabile. Non tutte le lingue disponibili in Babel sono presenti, ma il serbo è e funziona (testato e "Contenuto" appare come "Sadržaj").

Se la tua lingua non è in org-latex-babel-language-alistma è disponibile in babel, come il bretone, usa:

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

Come Breton non è org-latex-export-dictionaryla LANGUAGEvariabile non farà nulla per l'esportazione HTML, sarà in inglese, ma è necessario. Questo perché ciò che finirà nel file LaTex sarà \usepackage[breton, <default-lang>]{babel}dove default-langsarà l'inglese se LANGUAGEnon è presente e l'ultima lingua è considerata predefinita da Babel. Dato che brnon org-latex-babel-language-alistci troviamo alla fine \usepackage[breton, ]{babel}, Breton è l'impostazione predefinita.

Se viene aggiunto Breton org-latex-babel-language-alistfunzionerà comunque ( \usepackage[breton, breton]{babel}). Se Breton è incluso org-latex-export-dictionary, ora funzionerà anche in HTML. Se Breton non è stato supportato da Babel funzionerà comunque ma sarà in inglese, quindi questa configurazione è quella che ti dà il più possibile nella lingua specificata con l'inglese come fallback. Preferisco usare AUTOse disponibile in quanto esiste solo un posto dove mettere la lingua.

Se non ti piace ciò che Babel inserisce come "Contenuto" ma desideri comunque utilizzarlo, puoi fare qualcosa del tipo:

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

Questa è come la risposta di Tyler, ma per Babele.


Grazie! Funziona per l'esportazione standard in pdf ma non funziona con l'esportazione delle diapositive Beamer.
foki,

4

Se si esporta in PDF, la modalità org chiamerà LaTeX per eseguire la conversione. In tal caso, dovresti essere in grado di inserire il comando LaTeX per modificare l'intestazione TOC con la seguente riga:

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

Mettilo nella parte superiore del tuo file e prova l'esportazione.


Al momento non ho impostato l'ambiente LATEX, quindi non posso provarlo con PDF. Ora voglio esportare in ODT e HTML, quindi il comando LATEX non aiuta qui (dimmi se sbaglio).
Foki,

1
Quando esporti in LaTeX, è meglio utilizzare la gestione delle lingue di LaTeX \usepackage[mylanguage]{babel}.
JeanPierre,

@JeanPierre Ho appena notato un comportamento strano. L'approccio di Tyler non lavoro per me, ma il comportamento manifestato utilizzando JeanPierre di è ancora più interessante - ho dichiarato sia, #+LANGUAGE: fre #+LATEX_HEADER: \usepackage[english]{babel}in questo caso gli effetti di esportazione lattice la prima impostazione e traduce le stringhe in omologhi francesi. Se dichiaro denel primo frencheo frenchbnel secondo - deviene utilizzato. Ho anche notato che in casi descritti esportatore non usa org-export-dictionary, più probabilmente usa linguaggi in lattice. Hai qualche idea?
foki,

@foki scusa, mi mancava un colon :. Ho corretto la mia risposta.
Tyler,

2
Strano, se lo uso #+LANGUAGE: frda solo, viene ignorato - l'output LaTeX è in inglese. Se lo uso e #+LATEX_HEADER: \usepackage[english]{babel}, LaTeX risultante include la linea \usepackage[english, frenchb]{babel}. E se uso solo #+LATEX_HEADER: \usepackage[french]{babel}, senza impostazione LANGUAGE:, ciò che viene effettivamente inserito è \usepackage[frenchb, english]{babel}. Nessuno di loro cambia il PDF, è sempre inglese.
Tyler,

0

Risposta breve: per le esportazioni pdf, il pacchetto texlive-lang-francese è richiesto

org 9.1.9: L'impostazione #+LANGUAGE: frda sola non ha alcun effetto.

farlo accadere con

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

o

#+LANGUAGE: fr
#+LATEX_HEADER: \usepackage[AUTO]{babel}
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.