Ubah daftar judul konten dalam mode Org sesuai dengan bahasa dokumen

14

Apakah ada opsi yang mengubah judul default daftar isi dalam mode Org?
Dokumen saya tidak dalam bahasa Inggris, jadi saya ingin menerjemahkan tabel judul konten.


Menjawab

Seperti kata JeanPierre, Ini tentang pengaturan ekspor. Anda dapat mengatur LANGUAGEdi bagian atas orgdokumen Anda dengan cara ini:

#+LANGUAGE: fr

Dan bahasa Prancis akan digunakan sebagai bahasa default semua string yang orgmenghasilkan selama ekspor.
Konstanta yang bertanggung jawab atas pemetaan terjemahan ada org-export-dictionarydi ox.eldan jika bahasa Anda tidak didukung, Anda dapat menjatuhkannya di sana dan kemudian eval-defunmembiarkan perubahan terjadi. Dalam kasus saya:

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

Saya telah menulis fungsi naif yang dapat berguna dalam 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")

Penolakan

Tidak berfungsi jika Anda ingin mengekspor melalui Lateks (Lateks digunakan ketika Org mengekspor ke PDF). Lihatlah jawaban dan komentar Tyler.

foki
sumber
Anda mengekspor format apa? PDF, html, atau?
Tyler
@ TylerI Saya mengekspor sebagian besar ke ODT dan HTML.
foki

Jawaban:

3

Manual organisasi mengatakan ini tentang pengaturan ekspor (Anda harus dapat menjelajahinya di info emacs C-h i m Org m exporting):

'BAHASA'

Bahasa yang digunakan untuk menerjemahkan beberapa string ('org-ekspor-default-bahasa'). Misalnya, '# + LANGUAGE: fr' akan menyuruh Org untuk menerjemahkan File (bahasa Inggris) ke Fichier (bahasa Prancis) dalam tabel jam.

Saya belum mencobanya tetapi saya berharap itu akan melakukan apa yang Anda inginkan.

JeanPierre
sumber
1
Tidak cukup untuk semua eksportir, untuk ekspor Lateks, Anda mungkin ingin melihat jawaban @ rené.
Jocelyn delalande
10

Seperti yang ditunjukkan JeanPierre, Anda perlu menentukan pengaturan ekspor bahasa. Untuk bahasa Prancis, baris selanjutnya berfungsi:

#+LANGUAGE: fr

Tidak semua bahasa didukung dan, seperti yang Anda katakan, dimungkinkan untuk melihat mana yang melihat org-latex-export-dictionaryvariabel (Anda dapat menggunakan perintah emacs C-h vkemudian menulis nama variabel). Beberapa bahasa mungkin hanya didukung sebagian atau tidak didukung sama sekali seperti Bahasa Serbia. Jika Anda ingin itu berfungsi dengan bahasa yang tidak didukung tambahkan string yang diterjemahkan ke variabel dan lebih baik mengirimnya ke devs sehingga berakhir dengan mode-org.

LaTex dan PDF

Jika Anda mengekspor ke LaTex dan ingin membiarkan Babel mengubah penggunaan teks:

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

Ini akan berfungsi dalam HTML dan lateks karena kata kunci AUTO akan diganti dengan nama bahasa Babel yang sesuai. Untuk melihat bahasa mana yang didukung, lihat org-latex-babel-language-alistvariabelnya. Tidak semua bahasa yang tersedia di Babel ada tetapi bahasa Serbia ada dan berfungsi (mengujinya dan "Konten" muncul sebagai "Sadržaj").

Jika bahasa Anda tidak ada org-latex-babel-language-alisttetapi tersedia dalam babel, seperti Breton, gunakan:

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

Seperti Breton tidak di org-latex-export-dictionarydalam LANGUAGEvariabel tidak akan melakukan apapun untuk ekspor HTML, maka akan dalam bahasa Inggris, tetapi diperlukan. Itu karena apa yang akan berakhir di file LaTex adalah di \usepackage[breton, <default-lang>]{babel}mana default-langakan menjadi bahasa Inggris jika LANGUAGEtidak ada dan bahasa terakhir dianggap sebagai default oleh Babel. Karena brtidak ada dalam org-latex-babel-language-alistkita akhirnya \usepackage[breton, ]{babel}, ada Breton adalah default.

Jika Breton ditambahkan ke org-latex-babel-language-alistitu akan tetap bekerja ( \usepackage[breton, breton]{babel}). Jika Breton termasuk di org-latex-export-dictionarydalamnya sekarang akan berfungsi dalam HTML juga. Jika Breton tidak didukung oleh babel itu akan tetap bekerja tetapi dalam bahasa Inggris, jadi konfigurasi ini adalah yang memberi Anda sebanyak mungkin dalam bahasa yang ditentukan dengan bahasa Inggris sebagai back back. Saya lebih suka menggunakan AUTOjika tersedia karena hanya ada satu tempat untuk meletakkan bahasa.

Jika Anda tidak menyukai apa yang Babel masukkan sebagai "Konten" tetapi masih ingin menggunakannya Anda dapat melakukan sesuatu seperti:

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

Ini seperti jawaban Tyler tetapi untuk Babel.

René
sumber
Terima kasih! Ini berfungsi untuk ekspor pdf standar tetapi tidak berfungsi dengan ekspor slide Beamer.
foki
4

Jika Anda mengekspor ke PDF, mode-org akan memanggil LaTeX untuk melakukan konversi. Dalam hal ini, Anda harus dapat memasukkan perintah LaTeX untuk mengubah judul TOC dengan baris berikut:

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

Letakkan itu di bagian atas file Anda dan coba ekspor.

Tyler
sumber
Saat ini saya tidak memiliki lingkungan LATEX yang diatur sehingga saya tidak dapat mencobanya dengan PDF. Sekarang saya ingin mengekspor ke ODT dan HTML sehingga perintah LATEX tidak membantu di sini (beri tahu saya jika saya salah).
foki
1
Saat mengekspor ke LaTeX, Anda sebaiknya menggunakan bahasa LaTeX sendiri \usepackage[mylanguage]{babel}.
JeanPierre
@ JeanPierre Saya baru saja memperhatikan perilaku aneh. Pendekatan Tyler tidak melakukan pekerjaan untuk saya, tapi perilaku diwujudkan menggunakan Jeanpierre ini bahkan lebih menarik - saya telah menyatakan baik, #+LANGUAGE: frdan #+LATEX_HEADER: \usepackage[english]{babel}dan dalam hal ini Lateks ekspor hal pengaturan pertama dan menerjemahkan string di rekan-rekan Perancis. Jika saya mendeklarasikan dedalam yang pertama dan frenchatau frenchbyang kedua - dedigunakan. Saya juga memperhatikan bahwa dalam kasus yang dijelaskan eksportir tidak menggunakan org-export-dictionary, lebih mungkin menggunakan bahasa Lateks. Punya ide?
foki
@ foki maaf, saya kehilangan titik dua :. Saya sudah mengoreksi jawaban saya.
Tyler
2
Aneh, jika saya gunakan #+LANGUAGE: frsendiri, itu diabaikan - output LaTeX dalam bahasa Inggris. Jika saya menggunakannya dan #+LATEX_HEADER: \usepackage[english]{babel}, LaTeX yang dihasilkan termasuk baris \usepackage[english, frenchb]{babel}. Dan jika saya hanya menggunakan #+LATEX_HEADER: \usepackage[french]{babel}, tanpa pengaturan LANGUAGE:, apa yang sebenarnya dimasukkan adalah \usepackage[frenchb, english]{babel}. Tak satu pun dari mereka mengubah PDF, itu selalu bahasa Inggris.
Tyler
0

Jawaban singkat: untuk ekspor pdf, paket TeXLive-lang-french diperlukan

org 9.1.9: Pengaturan #+LANGUAGE: frsaja tidak berpengaruh.

mewujudkannya dengan

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

atau

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