]> git.lyx.org Git - lyx.git/blobdiff - lib/languages
Use call_once to ensure something is only called once
[lyx.git] / lib / languages
index a922cb8678583419dda7c3745378079d76a821f0..d56d03029396cc6e78f7f7fe6e5be0e5f8c3145b 100644 (file)
@@ -6,10 +6,12 @@
 #
 # Language <lyxname>
 #      GuiName            "<Gui Name>"
+#      HasGuiSupport      <true|false>
 #      BabelName          <babelname>
 #      PolyglossiaName    <polyglossianame>
 #      PolyglossiaOpts    "<language-specific options>"
 #      Encoding           <encoding>
+#      FontEncoding       <font encoding>
 #      QuoteStyle         <danish|english|french|german|polish|swedish>
 #      InternalEncoding   <true|false>
 #      RTL                <true|false>
 #
 # * Omitted elements will be treated as empty (if string) or "false"
 #   (if boolean).
+# * When HasGuiSupport is true, the language is candidate to appear in
+#   the list of possible GUI languages in the Preferences dialog. It
+#   will actually appear there only if a corresponding .mo file can be
+#   found among the translations. When several languages correspond to
+#   the same translation -- like English, English (US) and English
+#   (UK) -- try to select the entry that is most generic -- here
+#   English.
 # * The QuoteStyle arguments correspond to the following styles:
 #   - danish:  >>text<<  >text<   (inward guillemets)
 #   - english: ``text''  `text'   (66_99)
 #   Note that the option names have been selected (rather arbitrarily)
 #   because the respective styles are common in the respective countries.
 #   Of course this does not imply any fixed relation to those countries.
-# * Encoding is not relevant for XeTeX (which is utf8 always), and if
-#   Document > Settings > Language > Encoding is not set to "Language
-#   Default"
-# * InternalEncoding is used to tell LyX that babel internally sets a font
-#   encoding (such as hebrew to LHE). See bug #5091.
+# * Encoding is the default encoding used with TeX fonts.
+#   It is only used if Document > Settings > Language > Encoding
+#   is set to "Language Default" and "use non-TeX fonts" is FALSE.
+# * InternalEncoding is used to tell LyX that babel internally sets a
+#   non-standard font encoding (such as hebrew to LHE or greek to LGR).
+#   If True, LyX cares for characters/macros that do not exist in
+#   some font encodings ("<", ">", "|" and straight quote).
+#   It is not required for standard encodings like T2A. See bug #5091.
+# * "FontEncoding none" tells LyX that fontenc should not be loaded with this
+#   language.
 # * AsBabelOptions advices LyX to pass the languages locally to babel, not
 #   globally to the class. Some languages (basically those not directly
 #   supported by babel) need this.
 #   FIXME: in this case, we might still need to pass the other languages
 #          globally, for the use of other packages (such as varioref).
 # * LangCode is also used for spellchecking and thesaurus, where the
-#   dictionaries are named accordingly. Thus, check this when intoducing/
+#   dictionaries are named accordingly. Thus, check this when introducing/
 #   changing language codes (especially aspell, thesaurus).
 #   TODO: maybe use Best Current Practice (BCP 47) codes for LangCode
 #         http://www.rfc-editor.org/rfc/bcp/bcp47.txt
@@ -115,20 +129,28 @@ Language american
        LangCode         en_US
 End
 
-# not supported by babel
+# In Babel, this is supported since v. 1.8a of babel-greek (2013-12-03)
+# We introduce it with LyX 2.2 to give the support time to settle.
 Language ancientgreek
-       GuiName          "Greek (ancient)"
-       PolyglossiaName  greek
-       PolyglossiaOpts  variant=ancient
+       GuiName           "Greek (ancient)"
+       BabelName         greek
+       PostBabelPreamble
+       \languageattribute{greek}{ancient}
+       EndPostBabelPreamble
+       PolyglossiaName   greek
+       PolyglossiaOpts   variant=ancient
        QuoteStyle        french
-       Encoding         iso8859-7
-       LangCode         grc_GR
+       Encoding          iso8859-7
+       InternalEncoding  true
+       FontEncoding      LGR
+       LangCode          grc_GR
 End
 
 # FIXME: dummy babel language for arabic_arabtex to be able
 # to switch the language the way of the ArabTeX-package
 Language arabic_arabtex
        GuiName          "Arabic (ArabTeX)"
+       HasGuiSupport    true
        BabelName        arabtex
        QuoteStyle       french
        Encoding         cp1256
@@ -143,7 +165,9 @@ Language arabic_arabi
        PolyglossiaName  arabic
        QuoteStyle       french
        Encoding         cp1256
+       FontEncoding     "LFE,LAE"
        RTL              true
+       AsBabelOptions   true
        LangCode         ar_SA
 End
 
@@ -166,19 +190,25 @@ Language australian
        LangCode         en_AU
 End
 
-# not yet supported by polyglossia
+# In polyglossia, this is supported since release 1.33.4 (May 2014)
+# We introduce it with LyX 2.2 to give the support time to settle.
 Language austrian
        GuiName          "German (Austria, old spelling)"
        BabelName        austrian
+       PolyglossiaName  german
+       PolyglossiaOpts  "variant=austrian,spelling=old,babelshorthands=true"
        QuoteStyle       german
        Encoding         iso8859-15
        LangCode         de_AT
 End
 
-# not yet supported by polyglossia
+# In polyglossia, this is supported since release 1.33.4 (May 2014)
+# We introduce it with LyX 2.2 to give the support time to settle.
 Language naustrian
        GuiName          "German (Austria)"
        BabelName        naustrian
+       PolyglossiaName  german
+       PolyglossiaOpts  "variant=austrian,babelshorthands=true"
        QuoteStyle       german
        Encoding         iso8859-15
        LangCode         de_AT
@@ -186,6 +216,7 @@ End
 
 Language bahasa
        GuiName          "Indonesian"
+       HasGuiSupport    true
        BabelName        bahasa
        PolyglossiaName  bahasai
        QuoteStyle       english
@@ -204,11 +235,15 @@ End
 
 Language basque
        GuiName          "Basque"
+       HasGuiSupport    true
        BabelName        basque
        PolyglossiaName  basque
        QuoteStyle       french
        Encoding         iso8859-15
        LangCode         eu_ES
+       PostBabelPreamble
+       \addto\extrasbasque{\bbl@deactivate{~}}
+       EndPostBabelPreamble
 End
 
 # not yet supported by polyglossia
@@ -218,10 +253,12 @@ Language belarusian
        QuoteStyle       french
        Encoding         cp1251
        LangCode         be_BY
+       AsBabelOptions   true
 End
 
 Language brazilian
        GuiName          "Portuguese (Brazil)"
+       HasGuiSupport    true
        BabelName        brazil
        PolyglossiaName  brazil
        QuoteStyle       english
@@ -254,6 +291,7 @@ Language bulgarian
        PolyglossiaName  bulgarian
        QuoteStyle       german
        Encoding         cp1251
+       FontEncoding     T2A
        LangCode         bg_BG
 End
 
@@ -281,6 +319,7 @@ End
 
 Language catalan
        GuiName          "Catalan"
+       HasGuiSupport    true
        BabelName        catalan
        PolyglossiaName  catalan
        PolyglossiaOpts  "babelshorthands=true"
@@ -292,6 +331,7 @@ End
 # uses CJK package
 Language chinese-simplified
        GuiName          "Chinese (simplified)"
+       HasGuiSupport    true
        Encoding         euc-cn
        QuoteStyle       english
        LangCode         zh_CN
@@ -301,9 +341,10 @@ End
 # uses CJK package
 Language chinese-traditional
        GuiName         "Chinese (traditional)"
+       HasGuiSupport    true
        QuoteStyle       english
        Encoding        utf8-cjk
-       LangCode        zh_CN
+       LangCode        zh_TW
        Requires         CJK
 End
 
@@ -326,6 +367,7 @@ End
 
 Language czech
        GuiName          "Czech"
+       HasGuiSupport    true
        BabelName        czech
        PolyglossiaName  czech
        QuoteStyle       german
@@ -335,6 +377,7 @@ End
 
 Language danish
        GuiName          "Danish"
+       HasGuiSupport    true
        BabelName        danish
        PolyglossiaName  danish
        QuoteStyle       danish
@@ -352,6 +395,7 @@ End
 
 Language dutch
        GuiName          "Dutch"
+       HasGuiSupport    true
        BabelName        dutch
        PolyglossiaName  dutch
        PolyglossiaOpts  "babelshorthands=true"
@@ -362,6 +406,7 @@ End
 
 Language english
        GuiName          "English"
+       HasGuiSupport    true
        BabelName        english
        PolyglossiaName  english
        QuoteStyle       english
@@ -387,6 +432,9 @@ Language estonian
        QuoteStyle       polish
        Encoding         iso8859-15
        LangCode         et_EE
+       PostBabelPreamble
+       \addto\extrasestonian{\bbl@deactivate{~}}
+       EndPostBabelPreamble
 End
 
 # the preamble definitions are only used due to bugs in the
@@ -396,6 +444,7 @@ Language farsi
        BabelName        farsi
        PolyglossiaName  farsi
        Encoding         utf8
+       FontEncoding     "LFE,LAE"
        RTL              true
        LangCode         fa_IR
        PostBabelPreamble
@@ -406,6 +455,7 @@ End
 
 Language finnish
        GuiName          "Finnish"
+       HasGuiSupport    true
        BabelName        finnish
        PolyglossiaName  finnish
        QuoteStyle       swedish
@@ -416,6 +466,7 @@ End
 # We redefine \og and \fg (guillemets) for older french language definitions
 Language french
        GuiName          "French"
+       HasGuiSupport    true
        BabelName        french
        PolyglossiaName  french
        QuoteStyle       french
@@ -431,11 +482,24 @@ End
 
 Language galician
        GuiName          "Galician"
+       HasGuiSupport    true
        BabelName        galician
        PolyglossiaName  galician
        QuoteStyle       french
        Encoding         iso8859-15
        LangCode         gl_ES
+       PostBabelPreamble
+       \addto\shorthandsgalician{\galiciandeactivate{~}}
+       EndPostBabelPreamble
+End
+
+Language georgian
+       GuiName          "Georgian"
+       BabelName        georgian
+       QuoteStyle       german
+       Encoding         utf8
+       FontEncoding     T8M
+       LangCode         ka_GE
 End
 
 # german does not use a country code (due to the variety)
@@ -452,6 +516,7 @@ End
 
 Language ngerman
        GuiName          "German"
+       HasGuiSupport    true
        BabelName        ngerman
        PolyglossiaName  german
        PolyglossiaOpts  "babelshorthands=true"
@@ -460,25 +525,44 @@ Language ngerman
        LangCode         de_DE
 End
 
-# Swiss German is not supported by babel and polyglossia yet
-# We use ngerman for now (spellchecking is supported though!)
+# In Babel, this is supported since release 2.7 of babel-german (Dec 2013)
+# We introduce it with LyX 2.2 to give the support time to settle.
+# In polyglossia, this is supported since release 1.33.6 (May 2015)
+# We use german until TL 2015 is out, though.
 Language german-ch
        GuiName          "German (Switzerland)"
-       BabelName        ngerman
+       BabelName        nswissgerman
        PolyglossiaName  german
        PolyglossiaOpts  "babelshorthands=true"
+#      PolyglossiaOpts  "variant=swiss,babelshorthands=true"
        QuoteStyle       danish
        Encoding         iso8859-15
        LangCode         de_CH
 End
 
+# In Babel, this is supported since release 2.7 of babel-german (Dec 2013)
+# In polyglossia, this is supported since release 1.33.6 (May 2015)
+# We use ngerman until TL 2015 is out, though.
+Language german-ch-old
+       GuiName          "German (Switzerland, old spelling)"
+       BabelName        swissgerman
+       PolyglossiaName  german
+       PolyglossiaOpts  "spelling=old,babelshorthands=true"
+#      PolyglossiaOpts  "variant=swiss,spelling=old,babelshorthands=true"
+       QuoteStyle       danish
+       Encoding         iso8859-15
+       LangCode         de_CH
+End
+
 Language greek
        GuiName           "Greek"
+       HasGuiSupport     true
        BabelName         greek
        PolyglossiaName   greek
        QuoteStyle        french
        Encoding          iso8859-7
        InternalEncoding  true
+       FontEncoding      LGR
        LangCode          el_GR
 End
 
@@ -490,16 +574,21 @@ Language polutonikogreek
        QuoteStyle        french
        Encoding          iso8859-7
        InternalEncoding  true
+       FontEncoding      LGR
        LangCode          el_GR
 End
 
 Language hebrew
        GuiName           "Hebrew"
+       HasGuiSupport     true
        BabelName         hebrew
        PolyglossiaName   hebrew
        Encoding          cp1255
        QuoteStyle        english
        InternalEncoding  true
+# Hebrew babel loads the font encodings
+# itself in the appropriate order
+#      FontEncoding      LHE
        RTL               true
        LangCode          he_IL
 End
@@ -536,6 +625,7 @@ End
 # language. We therefore the name of its hunspell dictionary.
 Language interlingua
        GuiName          "Interlingua"
+       HasGuiSupport    true
        BabelName        interlingua
        PolyglossiaName  interlingua
        Encoding         iso8859-15
@@ -553,6 +643,7 @@ End
 
 Language italian
        GuiName          "Italian"
+       HasGuiSupport    true
        BabelName        italian
        PolyglossiaName  italian
        QuoteStyle       french
@@ -563,13 +654,18 @@ End
 # japanese must be loaded locally with babel options,
 # not globally via class options
 # http://www.lyx.org/trac/ticket/4597#c4
+# Since japanese does not load fontenc, we set
+# InternalEncoding to true.
 Language japanese
        GuiName          "Japanese"
+       HasGuiSupport    true
        BabelName        japanese
-       Encoding         jis-plain
+       Encoding         jis-platex
        LangCode         ja_JP
        AsBabelOptions   true
        Requires         japanese
+       InternalEncoding true
+       FontEncoding     None
 End
 
 # uses CJK package
@@ -581,11 +677,15 @@ Language japanese-cjk
 End
 
 # not yet supported by polyglossia
+# not supported by babel
 Language kazakh
        GuiName         "Kazakh"
-       BabelName       kazakh
-       Encoding        pt154
+       Encoding        ascii
        LangCode        kk_KZ
+       PostBabelPreamble
+       \input{t2aenc.def}
+       \AtBeginDocument{\fontencoding{T2A}\selectfont}
+       EndPostBabelPreamble
 End
 
 Language korean
@@ -631,6 +731,7 @@ Language latvian
        PolyglossiaName  latvian
        QuoteStyle       danish
        Encoding         iso8859-4
+#      FontEncoding     L7x # (required for hyphenation but not set by babel)
        LangCode         lv_LV
        AsBabelOptions   true
 End
@@ -643,6 +744,7 @@ Language lithuanian
        PolyglossiaName  lithuanian
        QuoteStyle       german
        Encoding         iso8859-13
+       FontEncoding     L7x
        LangCode         lt_LT
        AsBabelOptions   true
 End
@@ -658,6 +760,7 @@ End
 
 Language magyar
        GuiName          "Hungarian"
+       HasGuiSupport    true
        BabelName        magyar
        PolyglossiaName  magyar
        QuoteStyle       polish
@@ -680,6 +783,7 @@ Language mongolian
        GuiName          "Mongolian"
        BabelName        mongolian
        Encoding         utf8
+       FontEncoding     T2A
        LangCode         mn_MN
        AsBabelOptions   true
 End
@@ -696,6 +800,7 @@ End
 
 Language norsk
        GuiName          "Norwegian (Bokmaal)"
+       HasGuiSupport    true
        BabelName        norsk
        PolyglossiaName  norsk
        QuoteStyle       french
@@ -705,6 +810,7 @@ End
 
 Language nynorsk
        GuiName          "Norwegian (Nynorsk)"
+       HasGuiSupport    true
        BabelName        nynorsk
        PolyglossiaName  nynorsk
        QuoteStyle       french
@@ -733,15 +839,18 @@ End
 
 Language polish
        GuiName          "Polish"
+       HasGuiSupport    true
        BabelName        polish
        PolyglossiaName  polish
        QuoteStyle       polish
        Encoding         iso8859-2
+#      FontEncoding     QX # (required for hyphenation but not set by babel)
        LangCode         pl_PL
 End
 
 Language portuguese
        GuiName          "Portuguese"
+       HasGuiSupport    true
        BabelName        portuges
        PolyglossiaName  portuges
        QuoteStyle       english
@@ -751,19 +860,22 @@ End
 
 Language romanian
        GuiName          "Romanian"
+       HasGuiSupport    true
        BabelName        romanian
        PolyglossiaName  romanian
        QuoteStyle       polish
-       Encoding         iso8859-2
+       Encoding         iso8859-16
        LangCode         ro_RO
 End
 
 Language russian
        GuiName          "Russian"
+       HasGuiSupport    true
        BabelName        russian
        PolyglossiaName  russian
        QuoteStyle       french
-       Encoding         koi8
+       Encoding         koi8-r
+       FontEncoding     T2A
        LangCode         ru_RU
 End
 
@@ -794,25 +906,29 @@ End
 
 Language serbian
        GuiName          "Serbian"
-       BabelName        serbian
+       HasGuiSupport    true
+       BabelName        serbianc
        PolyglossiaName  serbian
        QuoteStyle       german
-       Encoding         iso8859-5
+       Encoding         utf8
+       FontEncoding     T2A
        LangCode         sr_RS
+       AsBabelOptions   true
 End
 
 Language serbian-latin
        GuiName          "Serbian (Latin)"
        BabelName        serbian
        PolyglossiaName  serbian
-       PolyglossiaOpts  "script=latin"
+       PolyglossiaOpts  "script=Latin"
        QuoteStyle       german
        Encoding         iso8859-2
-       LangCode         sr_RS
+       LangCode         sr_RS-Latin
 End
 
 Language slovak
        GuiName          "Slovak"
+       HasGuiSupport    true
        BabelName        slovak
        PolyglossiaName  slovak
        QuoteStyle       german
@@ -831,6 +947,7 @@ End
 
 Language spanish
        GuiName          "Spanish"
+       HasGuiSupport    true
        BabelName        spanish
        PolyglossiaName  spanish
        QuoteStyle       french
@@ -856,6 +973,7 @@ End
 
 Language swedish
        GuiName          "Swedish"
+       HasGuiSupport    true
        BabelName        swedish
        PolyglossiaName  swedish
        QuoteStyle       swedish
@@ -864,12 +982,13 @@ Language swedish
 End
 
 # not supported by babel
-Language syriac
-       GuiName          "Syriac"
-       PolyglossiaName  syriac
-       Encoding         utf8
-       LangCode         syr_SY
-End
+#Language syriac
+#      GuiName          "Syriac"
+#      PolyglossiaName  syriac
+#      Encoding         utf8
+#      RTL              true
+#      LangCode         syr_SY
+#End
 
 # not supported by babel
 Language tamil
@@ -893,14 +1012,24 @@ Language thai
        PolyglossiaName  thai
        QuoteStyle       english
        Encoding         tis620-0
+#      FontEncoding     LTH
        LangCode         th_TH
        PostBabelPreamble
        \usepackage{thswitch}
        EndPostBabelPreamble
 End
 
+# not supported by babel
+Language tibetan
+       GuiName          "Tibetan"
+       PolyglossiaName  tibetan
+       Encoding         utf8
+       LangCode         bo_CN
+End
+
 Language turkish
        GuiName          "Turkish"
+       HasGuiSupport    true
        BabelName        turkish
        PolyglossiaName  turkish
        QuoteStyle       french
@@ -925,10 +1054,12 @@ End
 
 Language ukrainian
        GuiName          "Ukrainian"
+       HasGuiSupport    true
        BabelName        ukrainian
        PolyglossiaName  ukrainian
        QuoteStyle       french
        Encoding         koi8-u
+       FontEncoding     T2A
        LangCode         uk_UA
 End
 
@@ -942,12 +1073,13 @@ Language uppersorbian
 End
 
 # not supported by babel
-Language urdu
-       GuiName          "Urdu"
-       PolyglossiaName  urdu
-       Encoding         utf8
-       LangCode         ur_PK
-End
+#Language urdu
+#      GuiName          "Urdu"
+#      PolyglossiaName  urdu
+#      Encoding         utf8
+#      RTL              true
+#      LangCode         ur_PK
+#End
 
 # vietnam must be loaded locally with babel options,
 # not globally via class options, see