เปลี่ยนชื่อสารบัญในโหมดองค์กรตามภาษาของเอกสาร


14

มีตัวเลือกที่เปลี่ยนชื่อสารบัญเริ่มต้นในโหมดองค์กรหรือไม่?
เอกสารของฉันไม่ได้เป็นภาษาอังกฤษดังนั้นฉันต้องการแปลชื่อสารบัญ


ตอบ

ดังที่ JeanPierre กล่าวว่ามันเกี่ยวกับการตั้งค่าการส่งออก คุณสามารถตั้งค่าLANGUAGEที่ด้านบนของorgเอกสารของคุณด้วยวิธีนี้:

#+LANGUAGE: fr

และภาษาฝรั่งเศสจะถูกใช้เป็นภาษาเริ่มต้นของสตริงทั้งหมดที่orgสร้างขึ้นในระหว่างการส่งออก
ความรับผิดชอบในการแมปการแปลอย่างต่อเนื่องอยู่org-export-dictionaryในox.elและถ้าภาษาของคุณไม่ได้รับการสนับสนุนคุณสามารถวางมันไว้ที่นั่นแล้วeval-defunปล่อยให้การเปลี่ยนแปลงเกิดขึ้น ในกรณีของฉัน:

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

ฉันได้เขียนฟังก์ชันไร้เดียงสาซึ่งมีประโยชน์ใน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")

คำปฏิเสธ

มันจะไม่ทำงานถ้าคุณต้องการส่งออกผ่านลาเท็กซ์ (ยางพาราจะใช้เมื่อองค์กรส่งออกเป็น PDF) ดูคำตอบและความคิดเห็นของไทเลอร์


คุณส่งออกรูปแบบใดไป PDF, html หรือ
Tyler

@TylerI ฉันส่งออกส่วนใหญ่ไปยัง ODT และ HTML
foki

คำตอบ:


3

Org Manualกล่าวถึงสิ่งนี้เกี่ยวกับการตั้งค่าการส่งออก (คุณควรจะสามารถเรียกดูได้ในข้อมูล emacs C-h i m Org m exporting):

'ภาษา'

ภาษาที่ใช้ในการแปลสตริง ('org-export-default-language') เช่น '# + LANGUAGE: fr' จะบอกองค์กรให้แปลไฟล์ (ภาษาอังกฤษ) เป็นFichier (ฝรั่งเศส) ในตารางนาฬิกา

ฉันไม่ได้ลอง แต่ฉันคาดหวังว่ามันควรจะทำในสิ่งที่คุณต้องการ


1
ไม่เพียงพอสำหรับผู้ส่งออกทั้งหมดสำหรับการส่งออกน้ำยางคุณอาจต้องการ @ @ คำตอบ
โจเซลีนเดอลาลันด์

10

ดังที่คำตอบของ JeanPierre ชี้ไปคุณต้องระบุการตั้งค่าการส่งออกภาษา สำหรับภาษาฝรั่งเศสบรรทัดถัดไปใช้งานได้:

#+LANGUAGE: fr

ไม่มีภาษาทั้งหมดที่รองรับและอย่างที่คุณบอกว่าเป็นไปได้ที่จะดูว่าคนใดกำลังดูorg-latex-export-dictionaryตัวแปร (คุณสามารถใช้คำสั่ง emacs C-h vแล้วเขียนชื่อตัวแปร) บางภาษาอาจได้รับการสนับสนุนเพียงบางส่วนเท่านั้นหรือไม่รองรับเลยเช่นเซอร์เบีย หากคุณต้องการให้มันทำงานกับภาษาที่ไม่ได้รับการสนับสนุนให้เพิ่มสตริงที่แปลแล้วไปยังตัวแปรและควรส่งพวกเขาไปยัง devs เพื่อให้มันจบลงด้วยโหมดองค์กร

LaTex และ PDF

หากคุณกำลังส่งออกไปยัง LaTex และต้องการให้ Babel เปลี่ยนการใช้ข้อความ:

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

สิ่งนี้จะทำงานทั้งใน HTML และลาเท็กซ์เนื่องจากคำหลักอัตโนมัติจะถูกแทนที่ด้วยชื่อภาษา Babel ที่เกี่ยวข้อง ในการดูภาษาที่รองรับดูorg-latex-babel-language-alistตัวแปร ไม่ใช่ทุกภาษาที่มีใน Babel แต่มีเซอร์เบียเป็นและใช้งานได้ (ทดสอบแล้วและ "เนื้อหา" จะปรากฏเป็น "Sadržaj")

หากภาษาของคุณไม่ได้อยู่ในorg-latex-babel-language-alistนั้น แต่มีให้บริการในภาษาบาเบลเช่นเบรตตันให้ใช้:

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

ในฐานะที่เป็น Breton ไม่ได้อยู่ในตัวแปรจะไม่ทำอะไรเพื่อการส่งออก HTML, มันจะอยู่ในภาษาอังกฤษ แต่เป็นสิ่งที่จำเป็น นั่นเป็นเพราะสิ่งที่จะสิ้นสุดในไฟล์ LaTex จะเป็นที่ที่เป็นภาษาอังกฤษหากไม่มีอยู่และภาษาสุดท้ายจะถือเป็นค่าเริ่มต้นโดย Babel ในฐานะที่เป็นไม่ได้อยู่ในเราท้ายที่สุดมี Breton เป็นค่าเริ่มต้นorg-latex-export-dictionaryLANGUAGE\usepackage[breton, <default-lang>]{babel}default-langLANGUAGEbrorg-latex-babel-language-alist\usepackage[breton, ]{babel}

หากเพิ่ม Breton ลงไปorg-latex-babel-language-alistมันจะทำงานต่อไป ( \usepackage[breton, breton]{babel}) ถ้ารวม Breton ไว้ด้วยorg-latex-export-dictionaryจะสามารถใช้ HTML ได้เช่นกัน หากเบรอตงไม่ได้รับการสนับสนุนจาก Babel มันจะใช้ได้ แต่เป็นภาษาอังกฤษดังนั้นการกำหนดค่านี้จึงเป็นภาษาที่ให้คุณได้มากที่สุดในภาษาที่กำหนดให้มากที่สุดโดยใช้ภาษาอังกฤษในการถอยกลับ ฉันควรใช้AUTOถ้ามีเพราะมีที่เดียวที่จะใส่ภาษา

หากคุณไม่ชอบสิ่งที่บาเบลใช้เป็น "เนื้อหา" แต่ยังคงต้องการใช้มันคุณสามารถทำสิ่งต่อไปนี้ได้:

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

นี่เป็นเหมือนคำตอบของ Tyler แต่สำหรับ Babel


ขอบคุณ! ใช้งานได้กับการส่งออก PDF มาตรฐาน แต่ไม่สามารถใช้งานกับการส่งออกสไลด์ของ Beamer
foki

4

หากคุณส่งออกเป็น PDF โหมดองค์กรจะโทรหา LaTeX เพื่อทำการแปลง ในกรณีนั้นคุณควรจะสามารถแทรกคำสั่ง LaTeX เพื่อเปลี่ยนส่วนหัว TOC ด้วยบรรทัดต่อไปนี้:

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

ใส่ที่ด้านบนของไฟล์ของคุณและลองส่งออก


ขณะนี้ฉันยังไม่ได้ตั้งค่าสภาพแวดล้อม LATEX ดังนั้นฉันจึงไม่สามารถลองด้วย PDF ได้ ตอนนี้ฉันต้องการส่งออกไปยัง ODT และ HTML ดังนั้นคำสั่ง LATEX จะไม่ช่วยที่นี่ (บอกฉันว่าฉันผิด)
foki

1
\usepackage[mylanguage]{babel}เมื่อส่งออกไปยังน้ำยางคุณควรที่จะจัดการเองดีกว่าการใช้น้ำยางของภาษา
JeanPierre

@JeanPierre ฉันเพิ่งสังเกตเห็นพฤติกรรมแปลก ๆ วิธีการของไทเลอร์จะไม่ได้ทำงานสำหรับฉัน แต่พฤติกรรมที่ประจักษ์โดยใช้ JeanPierre เป็นที่น่าสนใจมากยิ่งขึ้น - ฉันได้ประกาศทั้งสอง#+LANGUAGE: frและ#+LATEX_HEADER: \usepackage[english]{babel}และในกรณีนี้การส่งออกน้ำยางข้นประการแรกการตั้งค่าและแปลสตริงในคู่ของฝรั่งเศส ถ้าผมประกาศdeในครั้งแรกและfrenchหรือfrenchbในครั้งที่สอง - deถูกนำมาใช้ ฉันได้สังเกตเห็นด้วยว่าในกรณีที่ผู้ส่งออกไม่ได้ใช้org-export-dictionaryมักจะใช้ภาษาลาเท็กซ์ มีความคิดใด ๆ
foki

@foki :ขอโทษฉันหายไปลำไส้ใหญ่ ฉันแก้ไขคำตอบของฉันแล้ว
Tyler

2
แปลกถ้าฉันใช้#+LANGUAGE: frด้วยตัวเองมันจะถูกละเว้น - เอาท์พุท LaTeX เป็นภาษาอังกฤษ ถ้าฉันใช้และ#+LATEX_HEADER: \usepackage[english]{babel}LaTeX ที่ได้นั้นจะมีบรรทัด\usepackage[english, frenchb]{babel}อยู่ และถ้าผมจะใช้#+LATEX_HEADER: \usepackage[french]{babel}โดยไม่ต้องตั้งค่าอะไรจริงได้รับใส่อยู่LANGUAGE: \usepackage[frenchb, english]{babel}ไม่มีใครเปลี่ยนแปลง PDF เลยมันเป็นภาษาอังกฤษเสมอ
Tyler

0

คำตอบสั้น ๆ : สำหรับการส่งออกในรูปแบบ pdf จำเป็นต้องมีแพ็คเกจtexlive-lang-french

org 9.1.9: การตั้งค่า #+LANGUAGE: frอย่างเดียวไม่มีผล

ทำให้มันเกิดขึ้นกับ

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

หรือ

#+LANGUAGE: fr
#+LATEX_HEADER: \usepackage[AUTO]{babel}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.