]> git.lyx.org Git - features.git/blobdiff - lib/languages
Re-fix #2005
[features.git] / lib / languages
index 20b3a7415e78343041f342ae05e1a3d57c8f28fa..ca08344f80d5635fddac19321b56aa30f4c8c628 100644 (file)
@@ -10,6 +10,7 @@
 #      BabelName          <babelname>
 #      PolyglossiaName    <polyglossianame>
 #      PolyglossiaOpts    "<language-specific options>"
+#      ActiveChars        <activated characters>
 #      QuoteStyle         <british|danish|english|french|frenchin|
 #                           german|polish|russian|swedish|swedishg|swiss|plain>
 #      DateFormats        "<long>|<medium>|<short>"
@@ -17,7 +18,7 @@
 #      FontEncoding       <font encoding|font encoding|...>
 #      InternalEncoding   <true|false>
 #      RTL                <true|false>
-#      AsBabelOptions     <true|false>
+#      WordWrap           <true|false>
 #      LangCode           <language_code>
 #      LangVariety        <language_variety>
 #      PreBabelPreamble
@@ -81,7 +82,8 @@
 #   * yyyy     the year as four digit number
 # * 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.
+#   is set to "Language Default" or "Language Default (no inputenc)"
+#   and "use non-TeX fonts" is FALSE.
 #   Encoding "inherit" means: keep encoding of the context (used by
 #   latex_language).
 # * FontEncoding is a bar-separated list of font encodings.
 #   If True, LyX takes care 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.
-# * AsBabelOptions advices LyX to pass the languages locally to babel, not
-#   globally to the class. In the old days, some languages (basically those
-#   not natively supported by babel) needed this.
-#   FIXME: in this case, we might still need to pass the other languages
-#          globally, for the use of other packages (such as varioref).
+# * WordWrap is only used for on-screen display: when is is true (the default), rows are broken
+#   at word boundary; otherwise, they can be ended at arbitrary position. This
+#   setting is useful for CJK languages.
 # * LangCode is also used for spellchecking and thesaurus, where the
 #   dictionaries are named accordingly. Thus, check this when introducing/
 #   changing language codes (especially aspell, thesaurus).
 # * Provides lists features that are provided by specific Babel languages,
 #   but are available globally if this language is used (not only for this
 #   language. Examples are \textgreek (Greek) and \textcyrillic (Russian).
+# * ActiveChars provides a string of the characters that are made active
+#   by the language. We record particularly those characters that have to 
+#   be de-activated in some contexts (such as - or =).
 #
 ##########################################################################
 
@@ -160,6 +163,14 @@ End
 Language albanian
        GuiName          "Albanian"
        BabelName        albanian
+       # babel-albanian (albanian.ldf) (re-)defines the functions
+       # \sh \ch \th \cth \arsh \arch \arth \arcth \tg \ctg \arctg
+       # as math operators. This clashes with \th == letter thorn
+       # in font encoding T1
+       PostBabelPreamble
+         % fix albanian: restore \th as LATIN LETTER THORN
+         \@ifl@aded{def}{t1enc}{\DeclareTextSymbol{\th}{T1}{254}}{}
+       EndPostBabelPreamble
        PolyglossiaName  albanian
        QuoteStyle       swiss
        Encoding         iso8859-2
@@ -192,20 +203,20 @@ End
 # 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)"
-       BabelName         greek
+       GuiName          "Greek (ancient)"
+       BabelName        greek
        PostBabelPreamble
        \languageattribute{greek}{ancient}
        EndPostBabelPreamble
-       PolyglossiaName   greek
-       PolyglossiaOpts   "variant=ancient"
-       QuoteStyle        french
-       Encoding          iso8859-7
-       InternalEncoding  true
-       FontEncoding      LGR
+       PolyglossiaName  greek
+       PolyglossiaOpts  "variant=ancient"
+       QuoteStyle       french
+       Encoding         iso8859-7
+       InternalEncoding true
+       FontEncoding     LGR
        DateFormats      "dd MMMM yyyy|dd MMM yyyy|dd/MM/yyyy"
-       LangCode          grc_GR
-       Provides          textgreek
+       LangCode         grc_GR
+       Provides         textgreek
 End
 
 # FIXME: dummy babel language for arabic_arabtex to be able
@@ -231,6 +242,26 @@ Language arabic_arabi
        FontEncoding     LAE
        DateFormats      "d MMMM، yyyy|dd/MM/yyyy|d/M/yyyy"
        RTL              true
+       PostBabelPreamble
+         % arabic + hyperref redefines \noboundary as local textcommand
+         \let\orig@noboundary\noboundary
+         \DeclareTextCommandDefault{\noboundary}{\orig@noboundary}
+         % work around too simple test for article-like classes in arabicore.sty
+         \ifdefined\chapter\else
+           \def\thesection{\protect\if@rl\protect\I{\number\c@section}%
+             \protect\else\protect\textLR{\number\c@section}%
+             \protect\fi}
+           \def\thesubsection{\protect\if@rl\protect\I{\number\c@subsection.\number\c@section}%
+             \protect\else\protect\textLR{\number\c@section.\number\c@subsection}%
+             \protect\fi}%
+           \def\thetable{\protect\if@rl\protect\I{\number\c@table}%
+             \protect\else\protect\textLR{\number\c@table}%
+             \protect\fi}%
+           \def\thefigure{\protect\if@rl\protect\I{\number\c@figure}%
+             \protect\else\protect\textLR{\number\c@figure}%
+             \protect\fi}%
+         \fi
+       EndPostBabelPreamble
        LangCode         ar_SA
 End
 
@@ -268,7 +299,6 @@ Language australian
 End
 
 # 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.
 # Due to the variety, we use no country code.
 Language austrian
        GuiName          "German (Austria, old spelling)"
@@ -284,7 +314,6 @@ Language austrian
 End
 
 # 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
@@ -297,6 +326,22 @@ Language naustrian
        LangCode         de_AT
 End
 
+Language azerbaijani
+       GuiName          "Azerbaijani"
+       BabelName        azerbaijani
+       QuoteStyle       russian
+       Encoding         iso8859-9
+       FontEncoding     T2A,T1
+       DateFormats      "d MMMM yyyy|dd.MMM.yyyy|dd.MM.yyyy"
+       LangCode         az_AZ
+       Requires         textschwa
+        # use \cyrschwa in T1, allow hyphenation in remainder of word
+       PostBabelPreamble
+          \DeclareTextCommand{\textschwa}{T1}{\cyrschwa\bbl@allowhyphens}
+          \DeclareTextCommand{\textSchwa}{T1}{\CYRSCHWA\bbl@allowhyphens}
+       EndPostBabelPreamble
+End
+
 Language bahasa
        GuiName          "Indonesian"
        HasGuiSupport    true
@@ -335,6 +380,8 @@ Language basque
 End
 
 # not yet supported by polyglossia
+# Up to 2018-08-25 (babel-belarusian 1.4), the babel option is "belarusianb"
+# but the language name "belarusian" (without trailing "b").
 Language belarusian
        GuiName          "Belarusian"
        BabelName        belarusian
@@ -345,7 +392,18 @@ Language belarusian
        LangCode         be_BY
 End
 
+# supported by polyglossia but not babel:
+Language bengali
+       GuiName          "Bengali"
+       PolyglossiaName  bengali
+       QuoteStyle       english
+       Encoding         utf8
+       LangCode         be_IN
+End
+
+
 # not yet supported by polyglossia
+# The (rarely used) Cyrillic script is not supported (try serbian).
 Language bosnian
        GuiName          "Bosnian"
        BabelName        bosnian
@@ -394,6 +452,7 @@ End
 
 Language bulgarian
        GuiName          "Bulgarian"
+       HasGuiSupport    true
        BabelName        bulgarian
        PolyglossiaName  bulgarian
        QuoteStyle       german
@@ -451,6 +510,7 @@ Language chinese-simplified
        HasGuiSupport    true
        Encoding         euc-cn
        QuoteStyle       english
+       WordWrap         false
        LangCode         zh_CN
        DateFormats      "yyyy年M月d日|yyyy-M-d|yy-M-d"
        Requires         CJK
@@ -462,11 +522,24 @@ Language chinese-traditional
        HasGuiSupport    true
        QuoteStyle       cjk
        Encoding         utf8-cjk
+       WordWrap         false
        LangCode         zh_TW
        DateFormats      "yyyy年M月d日|yyyy年M月d日|yy年M月d日"
        Requires         CJK
 End
 
+# supported by polyglossia but not LyX:
+Language churchslavonic
+       GuiName         "Church Slavonic"
+       PolyglossiaName  churchslavonic
+       QuoteStyle       swiss
+       Encoding         utf8
+       FontEncoding     T2A
+       DateFormats      "d MMMM yyyy 'л'.|d MMM yyyy 'л'.|dd.MM.yyyy"
+       LangCode         cu
+       Provides         textcyrillic
+End
+
 # not supported by babel
 # FIXME DateFormats
 Language coptic
@@ -493,6 +566,7 @@ Language czech
        BabelName        czech
        PolyglossiaName  czech
        QuoteStyle       german
+       ActiveChars      -
        Encoding         iso8859-2
        FontEncoding     T1|OT1
        DateFormats      "d. MMMM yyyy|d. MMM. yyyy|d.M.yyyy"
@@ -603,7 +677,6 @@ Language finnish
        LangCode         fi_FI
 End
 
-# We redefine \og and \fg (guillemets) for older french language definitions
 Language french
        GuiName          "French"
        HasGuiSupport    true
@@ -614,12 +687,6 @@ Language french
        FontEncoding     T1|OT1
        DateFormats      "d MMMM yyyy|d MMM yyyy|dd/MM/yyyy"
        LangCode         fr_FR
-       PostBabelPreamble
-       \addto\extrasfrench{%
-          \providecommand{\og}{\leavevmode\flqq~}%
-          \providecommand{\fg}{\ifdim\lastskip>\z@\unskip\fi~\frqq}%
-       }
-       EndPostBabelPreamble
 End
 
 Language friulan
@@ -718,48 +785,56 @@ Language german-ch-old
 End
 
 Language greek
-       GuiName           "Greek"
-       HasGuiSupport     true
-       BabelName         greek
-       PolyglossiaName   greek
-       PolyglossiaOpts   "variant=monotonic"
-       QuoteStyle        french
-       Encoding          iso8859-7
-       InternalEncoding  true
-       FontEncoding      LGR
+       GuiName          "Greek"
+       HasGuiSupport    true
+       BabelName        greek
+       PolyglossiaName  greek
+       PolyglossiaOpts  "variant=monotonic"
+       QuoteStyle       french
+       Encoding         iso8859-7
+       InternalEncoding true
+       FontEncoding     LGR
        DateFormats      "dd MMMM yyyy|dd MMM yyyy|dd/MM/yyyy"
-       LangCode          el_GR
-       Provides          textgreek
+       LangCode         el_GR
+       Provides         textgreek
 End
 
 Language polutonikogreek
-       GuiName           "Greek (polytonic)"
-       BabelName         polutonikogreek
-       PolyglossiaName   greek
-       PolyglossiaOpts   "variant=polytonic"
-       QuoteStyle        french
-       Encoding          iso8859-7
-       InternalEncoding  true
-       FontEncoding      LGR
+       GuiName          "Greek (polytonic)"
+       BabelName        polutonikogreek
+       PolyglossiaName  greek
+       PolyglossiaOpts  "variant=polytonic"
+       QuoteStyle       french
+       Encoding         iso8859-7
+       InternalEncoding true
+       FontEncoding     LGR
        DateFormats      "dd MMMM yyyy|dd MMM yyyy|dd/MM/yyyy"
-       LangCode          el_GR
-       Provides          textgreek
+       LangCode         el_GR
+       Provides         textgreek
 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
+       GuiName          "Hebrew"
+       HasGuiSupport    true
+       BabelName        hebrew
+       PolyglossiaName  hebrew
+       Encoding         cp1255
+       QuoteStyle       english
+       InternalEncoding true
+       # babel-hebrew expects the encoding for *other* languages last:
+       FontEncoding    HE8,T1|LHE,T1
+       ## Use font encoding HE8 if the Culmus fonts are installed and
+       # work around too simple test for article-like classes in rlbabel.def.
+       PreBabelPreamble
+         \IfFileExists{he8david.fd}{%
+           \providecommand{\HeblatexEncoding}{HE8}
+           \providecommand{\HeblatexEncodingFile}{he8enc}%
+         }{}
+         \providecommand{\l@chapter}{\relax}
+       EndPreBabelPreamble
        DateFormats      "d MMMM yyyy|d MMM yyyy|dd/MM/yyyy"
-       RTL               true
-       LangCode          he_IL
+       RTL              true
+       LangCode         he_IL
 End
 
 # not supported by babel
@@ -796,7 +871,7 @@ Language icelandic
 End
 
 # Interlingua has no official country code because it is an auxiliary
-# language. We therefore the name of its hunspell dictionary.
+# language. We use the name of its hunspell dictionary.
 Language interlingua
        GuiName          "Interlingua"
        HasGuiSupport    true
@@ -832,20 +907,17 @@ Language italian
        LangCode         it_IT
 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.
+# Since 2016-12-18, babel-japanese works with non-TeX fonts (Xe/LuaTeX), too
+# (use with "Japanese (bxjs)" or standard document classes)
 Language japanese
        GuiName          "Japanese"
        HasGuiSupport    true
        BabelName        japanese
        Encoding         jis-platex
+       WordWrap         false
        LangCode         ja_JP
        Requires         japanese
-       InternalEncoding true
-       FontEncoding     None
+       FontEncoding     ASCII
        DateFormats      "yyyy年M月d日|yyyy/MM/dd|yy/MM/dd"
        QuoteStyle       cjk
 End
@@ -854,7 +926,8 @@ End
 Language japanese-cjk
        GuiName         "Japanese (CJK)"
        Encoding        euc-jp
-       DateFormats      "yyyy年M月d日|yyyy/MM/dd|yy/MM/dd"
+       DateFormats     "yyyy年M月d日|yyyy/MM/dd|yy/MM/dd"
+       WordWrap        false
        LangCode        ja_JP
        Requires        CJK
        QuoteStyle      cjk
@@ -874,13 +947,9 @@ End
 Language kazakh
        GuiName          "Kazakh"
        Encoding         ascii
-       FontEncoding     T2A
+       # FontEncoding   T2A # not set (no Babel support)
        DateFormats      "dd MMMM yyyy|dd MMMM yyyy|yyyy-dd-MM"
        LangCode         kk_KZ
-       PostBabelPreamble
-       \input{t2aenc.def}
-       \AtBeginDocument{\fontencoding{T2A}\selectfont}
-       EndPostBabelPreamble
 End
 
 # not supported by babel
@@ -894,13 +963,24 @@ End
 
 Language korean
        GuiName         "Korean"
+       PolyglossiaName korean
        Encoding        euc-kr
        QuoteStyle      cjkangle
        DateFormats     "yyyy년 M월 d일|yyyy. M. d.|yy. M. d."
+       WordWrap        false
        LangCode        ko_KR
        Requires        CJK
 End
 
+# Language korean-kotex
+#      GuiName         "Korean (koTeX)"
+#      Encoding        utf8
+#      QuoteStyle      cjkangle
+#      DateFormats     "yyyy년 M월 d일|yyyy. M. d.|yy. M. d."
+#      LangCode        ko_KR
+#      Requires        kotex
+# End
+
 # not yet supported by polyglossia
 Language kurmanji
        GuiName          "Kurmanji"
@@ -927,6 +1007,7 @@ Language latin
        GuiName          "Latin"
        BabelName        latin
        PolyglossiaName  latin
+       ActiveChars      ^=
        Encoding         iso8859-15
        FontEncoding     T1|OT1
        LangCode         la_LA
@@ -956,6 +1037,14 @@ Language lithuanian
        QuoteStyle       german
        Encoding         iso8859-13
        FontEncoding     L7x
+       # L7x defines \copyright as TextSymbol which leads to an endless loop
+        # when it is used in other font encodings.
+       PostBabelPreamble
+         % restore \coyright definition corrupted by l7xenc.def
+          \DeclareRobustCommand{\copyright}{%
+            \ifmmode{\nfss@text{\textcopyright}}\else\textcopyright\fi}
+           \addto\noextraslithuanian{\latintext}
+       EndPostBabelPreamble
        DateFormats      "yyyy 'm.' MMMM d 'd.'|yyyy 'm.' MMMM d 'd.'|yyyy-MM-dd"
        LangCode         lt_LT
 End
@@ -995,7 +1084,7 @@ Language macedonian
        Provides         textcyrillic
 End
 
-# not yet supported by babel
+# not supported by babel
 Language malayalam
        GuiName          "Malayalam"
        PolyglossiaName  malayalam
@@ -1047,10 +1136,26 @@ Language norsk
        QuoteStyle       swiss
        Encoding         iso8859-15
        FontEncoding     T1|OT1
-       DateFormats      "d. MMMM yyyy|d. MMM yyyy|dd.MM.yyyy"
+       DateFormats      "d. MMMM yyyy|d. MMM yyyy|dd./MM./yyyy"
        LangCode         nb_NO
 End
 
+# supported by polyglossia but not LyX:
+# Language nko
+#      GuiName          "N’Ko"
+#      PolyglossiaName  nko
+#      QuoteStyle       swiss
+#      Encoding         utf8
+#       FIXME: DateFormats      "d MMMM، yyyy|dd/MM/yyyy|d/M/yyyy"
+#       gloss-nko.ldf says:
+#      In n'ko, this is an example of date :
+#        ߂߀߁߃ ߞߏ߲ߞߏߜߍ ߕߟߋ߬ ߁߈ (RTL)
+#        ( 18 February 2013 )
+#       The word "ߕߟߋ߬" is mandatory between month name and day number.
+#      RTL              true
+#      LangCode         nqo
+# End
+
 Language nynorsk
        GuiName          "Norwegian (Nynorsk)"
        HasGuiSupport    true
@@ -1076,15 +1181,13 @@ End
 # Currently not supported (file format change!)
 # Russian orthography from the Petrine orthographic reforms of
 # 1708 to the 1917 orthographic reform
-# Note: If this is enabled, russian needs to get
-#       PolyglossiaOpts  "spelling=modern"
-# Language oldrussian
-#      GuiName          "Russian (Petrine orthography)"
-#      PolyglossiaName  russian
-#      PolyglossiaOpts  "spelling=old"
-#      LangCode         ru_petr1708
-#       QuoteStyle       russian
-# End
+Language oldrussian
+       GuiName          "Russian (Petrine orthography)"
+       PolyglossiaName  russian
+       PolyglossiaOpts  "spelling=old"
+       QuoteStyle       russian
+       LangCode         ru_petr1708
+End
 
 # FIXME DateFormats
 Language piedmontese
@@ -1152,6 +1255,7 @@ Language russian
        HasGuiSupport    true
        BabelName        russian
        PolyglossiaName  russian
+       PolyglossiaOpts  "spelling=modern"
        QuoteStyle       russian
        Encoding         koi8-r
        FontEncoding     T2A
@@ -1193,14 +1297,19 @@ Language scottish
        LangCode         gd_GB
 End
 
-# Note: script option is uppercase, even if the polyglossia
-#       manual states otherwise.
+# Serbian with Cyrillic script.
+# Up to Version 3.0 (2019-01-12), input encoding and
+# font encoding were set document-wide to "utf8x" and "T2A" respectively
+# by "babel-serbianc", overriding LyX settings and leading to errors
+# in mulit-lingual documents.
 Language serbian
        GuiName          "Serbian"
        HasGuiSupport    true
        BabelName        serbianc
        PolyglossiaName  serbian
        PolyglossiaOpts  "script=Cyrillic"
+       # Note: script option is uppercase, even if the polyglossia
+       #       manual states otherwise.
        QuoteStyle       polish
        Encoding         utf8
        FontEncoding     T2A
@@ -1228,6 +1337,7 @@ Language slovak
        BabelName        slovak
        PolyglossiaName  slovak
        QuoteStyle       german
+       ActiveChars      -^
        Encoding         iso8859-2
        FontEncoding     T1|OT1
        DateFormats      "d. MMMM yyyy|d. MMM yyyy|d.M.yyyy"
@@ -1315,6 +1425,8 @@ Language telugu
        LangCode         te_IN
 End
 
+# There is an alternative support with CJK package and Babel name "thaicjk".
+
 Language thai
        GuiName          "Thai"
        BabelName        thai
@@ -1324,8 +1436,24 @@ Language thai
        FontEncoding     LTH
        DateFormats      "dd MMMM yyyy|d MMM yyyy|dd/MM/yyyy"
        LangCode         th_TH
+       # The first workaround requires loading inputenc after babel
+       # (cf. BufferParams.cpp):
        PostBabelPreamble
-       \usepackage{thswitch}
+         % Restore catcodes changed by thai.ldf (active characters required for inputenc)
+         \@tempcnta=161%
+         \@whilenum\@tempcnta<252\do{%
+           \catcode\@tempcnta=13
+           \advance\@tempcnta\@ne
+         }%
+         % Restore \coyright definition corrupted by lthenc.def
+         \DeclareRobustCommand{\copyright}{%
+           \ifmmode{\nfss@text{\textcopyright}}\else\textcopyright\fi}
+         \DeclareTextSymbol{\textcopyright}{LTH}{8}
+          % set up Thai fonts as substitue for the default families
+          \usepackage{substitutefont}
+          \substitutefont{LTH}{\rmdefault}{norasi}
+          \substitutefont{LTH}{\sfdefault}{garuda}
+          \substitutefont{LTH}{\ttdefault}{ttypist}
        EndPostBabelPreamble
 End
 
@@ -1344,13 +1472,11 @@ Language turkish
        BabelName        turkish
        PolyglossiaName  turkish
        QuoteStyle       english
+       ActiveChars      =
        Encoding         iso8859-9
        FontEncoding     T1|OT1
        LangCode         tr_TR
        DateFormats      "d MMMM yyyy|dd.MMM.yyyy|dd.MM.yyyy"
-       PostBabelPreamble
-       \usepackage{xkeyval}
-       EndPostBabelPreamble
 End
 
 # turkmen must be loaded locally with babel options,