]> git.lyx.org Git - lyx.git/blobdiff - lib/languages
Use call_once to ensure something is only called once
[lyx.git] / lib / languages
index e4c0dd5c941037eaaa1f4bf76ec5879ce633facf..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
-       QuoteStyle       french
-       Encoding         iso8859-7
-       LangCode         grc_GR
+       GuiName           "Greek (ancient)"
+       BabelName         greek
+       PostBabelPreamble
+       \languageattribute{greek}{ancient}
+       EndPostBabelPreamble
+       PolyglossiaName   greek
+       PolyglossiaOpts   variant=ancient
+       QuoteStyle        french
+       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,6 +165,7 @@ Language arabic_arabi
        PolyglossiaName  arabic
        QuoteStyle       french
        Encoding         cp1256
+       FontEncoding     "LFE,LAE"
        RTL              true
        AsBabelOptions   true
        LangCode         ar_SA
@@ -193,6 +216,7 @@ End
 
 Language bahasa
        GuiName          "Indonesian"
+       HasGuiSupport    true
        BabelName        bahasa
        PolyglossiaName  bahasai
        QuoteStyle       english
@@ -211,6 +235,7 @@ End
 
 Language basque
        GuiName          "Basque"
+       HasGuiSupport    true
        BabelName        basque
        PolyglossiaName  basque
        QuoteStyle       french
@@ -233,6 +258,7 @@ End
 
 Language brazilian
        GuiName          "Portuguese (Brazil)"
+       HasGuiSupport    true
        BabelName        brazil
        PolyglossiaName  brazil
        QuoteStyle       english
@@ -265,6 +291,7 @@ Language bulgarian
        PolyglossiaName  bulgarian
        QuoteStyle       german
        Encoding         cp1251
+       FontEncoding     T2A
        LangCode         bg_BG
 End
 
@@ -292,6 +319,7 @@ End
 
 Language catalan
        GuiName          "Catalan"
+       HasGuiSupport    true
        BabelName        catalan
        PolyglossiaName  catalan
        PolyglossiaOpts  "babelshorthands=true"
@@ -303,6 +331,7 @@ End
 # uses CJK package
 Language chinese-simplified
        GuiName          "Chinese (simplified)"
+       HasGuiSupport    true
        Encoding         euc-cn
        QuoteStyle       english
        LangCode         zh_CN
@@ -312,6 +341,7 @@ End
 # uses CJK package
 Language chinese-traditional
        GuiName         "Chinese (traditional)"
+       HasGuiSupport    true
        QuoteStyle       english
        Encoding        utf8-cjk
        LangCode        zh_TW
@@ -337,6 +367,7 @@ End
 
 Language czech
        GuiName          "Czech"
+       HasGuiSupport    true
        BabelName        czech
        PolyglossiaName  czech
        QuoteStyle       german
@@ -346,6 +377,7 @@ End
 
 Language danish
        GuiName          "Danish"
+       HasGuiSupport    true
        BabelName        danish
        PolyglossiaName  danish
        QuoteStyle       danish
@@ -363,6 +395,7 @@ End
 
 Language dutch
        GuiName          "Dutch"
+       HasGuiSupport    true
        BabelName        dutch
        PolyglossiaName  dutch
        PolyglossiaOpts  "babelshorthands=true"
@@ -373,6 +406,7 @@ End
 
 Language english
        GuiName          "English"
+       HasGuiSupport    true
        BabelName        english
        PolyglossiaName  english
        QuoteStyle       english
@@ -410,6 +444,7 @@ Language farsi
        BabelName        farsi
        PolyglossiaName  farsi
        Encoding         utf8
+       FontEncoding     "LFE,LAE"
        RTL              true
        LangCode         fa_IR
        PostBabelPreamble
@@ -420,6 +455,7 @@ End
 
 Language finnish
        GuiName          "Finnish"
+       HasGuiSupport    true
        BabelName        finnish
        PolyglossiaName  finnish
        QuoteStyle       swedish
@@ -430,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
@@ -445,6 +482,7 @@ End
 
 Language galician
        GuiName          "Galician"
+       HasGuiSupport    true
        BabelName        galician
        PolyglossiaName  galician
        QuoteStyle       french
@@ -455,6 +493,15 @@ Language galician
        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)
 Language german
        GuiName          "German (old spelling)"
@@ -469,6 +516,7 @@ End
 
 Language ngerman
        GuiName          "German"
+       HasGuiSupport    true
        BabelName        ngerman
        PolyglossiaName  german
        PolyglossiaOpts  "babelshorthands=true"
@@ -479,7 +527,8 @@ End
 
 # 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.
-# Polyglossia does not yet support Swiss German. We use ngerman for now.
+# 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        nswissgerman
@@ -492,7 +541,8 @@ Language german-ch
 End
 
 # In Babel, this is supported since release 2.7 of babel-german (Dec 2013)
-# Polyglossia does not yet support Swiss German. We use german for now.
+# 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
@@ -506,11 +556,13 @@ End
 
 Language greek
        GuiName           "Greek"
+       HasGuiSupport     true
        BabelName         greek
        PolyglossiaName   greek
        QuoteStyle        french
        Encoding          iso8859-7
        InternalEncoding  true
+       FontEncoding      LGR
        LangCode          el_GR
 End
 
@@ -522,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
@@ -568,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
@@ -585,6 +643,7 @@ End
 
 Language italian
        GuiName          "Italian"
+       HasGuiSupport    true
        BabelName        italian
        PolyglossiaName  italian
        QuoteStyle       french
@@ -599,12 +658,14 @@ End
 # InternalEncoding to true.
 Language japanese
        GuiName          "Japanese"
+       HasGuiSupport    true
        BabelName        japanese
        Encoding         jis-platex
        LangCode         ja_JP
        AsBabelOptions   true
        Requires         japanese
        InternalEncoding true
+       FontEncoding     None
 End
 
 # uses CJK package
@@ -670,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
@@ -682,6 +744,7 @@ Language lithuanian
        PolyglossiaName  lithuanian
        QuoteStyle       german
        Encoding         iso8859-13
+       FontEncoding     L7x
        LangCode         lt_LT
        AsBabelOptions   true
 End
@@ -697,6 +760,7 @@ End
 
 Language magyar
        GuiName          "Hungarian"
+       HasGuiSupport    true
        BabelName        magyar
        PolyglossiaName  magyar
        QuoteStyle       polish
@@ -719,6 +783,7 @@ Language mongolian
        GuiName          "Mongolian"
        BabelName        mongolian
        Encoding         utf8
+       FontEncoding     T2A
        LangCode         mn_MN
        AsBabelOptions   true
 End
@@ -735,6 +800,7 @@ End
 
 Language norsk
        GuiName          "Norwegian (Bokmaal)"
+       HasGuiSupport    true
        BabelName        norsk
        PolyglossiaName  norsk
        QuoteStyle       french
@@ -744,6 +810,7 @@ End
 
 Language nynorsk
        GuiName          "Norwegian (Nynorsk)"
+       HasGuiSupport    true
        BabelName        nynorsk
        PolyglossiaName  nynorsk
        QuoteStyle       french
@@ -772,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
@@ -790,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-r
+       FontEncoding     T2A
        LangCode         ru_RU
 End
 
@@ -833,10 +906,12 @@ End
 
 Language serbian
        GuiName          "Serbian"
+       HasGuiSupport    true
        BabelName        serbianc
        PolyglossiaName  serbian
        QuoteStyle       german
-       Encoding         iso8859-5
+       Encoding         utf8
+       FontEncoding     T2A
        LangCode         sr_RS
        AsBabelOptions   true
 End
@@ -845,7 +920,7 @@ Language serbian-latin
        GuiName          "Serbian (Latin)"
        BabelName        serbian
        PolyglossiaName  serbian
-       PolyglossiaOpts  "script=latin"
+       PolyglossiaOpts  "script=Latin"
        QuoteStyle       german
        Encoding         iso8859-2
        LangCode         sr_RS-Latin
@@ -853,6 +928,7 @@ End
 
 Language slovak
        GuiName          "Slovak"
+       HasGuiSupport    true
        BabelName        slovak
        PolyglossiaName  slovak
        QuoteStyle       german
@@ -871,6 +947,7 @@ End
 
 Language spanish
        GuiName          "Spanish"
+       HasGuiSupport    true
        BabelName        spanish
        PolyglossiaName  spanish
        QuoteStyle       french
@@ -896,6 +973,7 @@ End
 
 Language swedish
        GuiName          "Swedish"
+       HasGuiSupport    true
        BabelName        swedish
        PolyglossiaName  swedish
        QuoteStyle       swedish
@@ -934,6 +1012,7 @@ Language thai
        PolyglossiaName  thai
        QuoteStyle       english
        Encoding         tis620-0
+#      FontEncoding     LTH
        LangCode         th_TH
        PostBabelPreamble
        \usepackage{thswitch}
@@ -950,6 +1029,7 @@ End
 
 Language turkish
        GuiName          "Turkish"
+       HasGuiSupport    true
        BabelName        turkish
        PolyglossiaName  turkish
        QuoteStyle       french
@@ -974,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