%%
%% This is file `projlib-language.sty',
%% generated with the docstrip utility.
%%
%% Copyright (C) 2021-2024 by Jinwen XU
%% 
%% This is part of the ProjLib Toolkit.
%% 
%% This work may be distributed and/or modified under the conditions of the
%% LaTeX Project Public License, either version 1.3c of this license or (at
%% your option) any later version. The latest version of this license is in
%% 
%%     http://www.latex-project.org/lppl.txt
%% 
%% and version 1.3c or later is part of all distributions of LaTeX version
%% 2005/12/01 or later.
%% 
\NeedsTeXFormat{LaTeX2e}[2022-06-01]
\ProvidesExplPackage
  {projlib-language}
  {2024/03/01} {}
  {Multi-language configuration}

\clist_const:Nn \c__projlib_language_supported_clist
  {
    english     ,
    french      ,
    ngerman     ,
    italian     ,
    portuguese  ,
    brazilian   ,
    spanish     ,
    schinese    ,
    tchinese    ,
    japanese    ,
    russian     ,
  }

\clist_new:N \g__projlib_language_babel_option_clist

\str_new:N \g__projlib_language_main_str

\bool_new:N        \g__projlib_language_enabled_all_bool
\bool_gset_true:N  \g__projlib_language_enabled_all_bool

\clist_map_inline:Nn \c__projlib_language_supported_clist
  {
    \bool_new:c        { g__projlib_language_enabled_ #1 _bool }
    \bool_gset_false:c { g__projlib_language_enabled_ #1 _bool }
  }

\cs_new:Nn \projlib_language_set_option_no_babel:n
  {
    \bool_gset_false:N \g__projlib_language_enabled_all_bool
    \bool_gset_true:c { g__projlib_language_enabled_ #1 _bool }
    \str_if_empty:NT \g__projlib_language_main_str
      {
        \str_gset:Nn \g__projlib_language_main_str { #1 }
      }
  }
\cs_new:Nn \projlib_language_set_option:n
  {
    \projlib_language_set_option_no_babel:n { #1 }
    \clist_gput_left:Nn \g__projlib_language_babel_option_clist { #1 }
  }

\keys_define:nn { projlib-language }
  {
    , EN                  .meta:n       = { english }
    , english             .code:n       = { \projlib_language_set_option:n { english } }
    , English             .meta:n       = { english }
    , FR                  .meta:n       = { french }
    , french              .code:n       = { \projlib_language_set_option:n { french } }
    , French              .meta:n       = { french }
    , DE                  .meta:n       = { ngerman }
    , german              .meta:n       = { ngerman }
    , ngerman             .code:n       = { \projlib_language_set_option:n { ngerman } }
    , German              .meta:n       = { ngerman }
    , IT                  .meta:n       = { italian }
    , italian             .code:n       = { \projlib_language_set_option:n { italian } }
    , Italian             .meta:n       = { italian }
    , PT                  .meta:n       = { portuguese }
    , portuguese          .code:n       = { \projlib_language_set_option:n { portuguese } }
    , Portuguese          .meta:n       = { portuguese }
    , BR                  .meta:n       = { brazilian }
    , brazilian           .code:n       = { \projlib_language_set_option:n { brazilian } }
    , Brazilian           .meta:n       = { brazilian }
    , ES                  .meta:n       = { spanish }
    , spanish             .code:n       = { \clist_gput_left:Nn \g__projlib_language_babel_option_clist { es-notilde, es-noquoting }
                                            \projlib_language_set_option:n { spanish } }
    , Spanish             .meta:n       = { spanish }
    , CN                  .meta:n       = { schinese }
    , SC                  .meta:n       = { schinese }
    , chinese             .meta:n       = { schinese }
    , schinese            .code:n       = { \projlib_language_set_option_no_babel:n { schinese } }
    , simplified-chinese  .meta:n       = { schinese }
    , simplified~chinese  .meta:n       = { schinese }
    , simplified chinese  .meta:n       = { schinese }
    , Chinese             .meta:n       = { schinese }
    , SChinese            .meta:n       = { schinese }
    , Simplified-Chinese  .meta:n       = { schinese }
    , Simplified~Chinese  .meta:n       = { schinese }
    , Simplified Chinese  .meta:n       = { schinese }
    , TC                  .meta:n       = { tchinese }
    , tchinese            .code:n       = { \projlib_language_set_option_no_babel:n { tchinese } }
    , traditional-chinese .meta:n       = { tchinese }
    , traditional~chinese .meta:n       = { tchinese }
    , traditional chinese .meta:n       = { tchinese }
    , TChinese            .meta:n       = { tchinese }
    , Traditional-Chinese .meta:n       = { tchinese }
    , Traditional~Chinese .meta:n       = { tchinese }
    , Traditional Chinese .meta:n       = { tchinese }
    , JP                  .meta:n       = { japanese }
    , japanese            .code:n       = { \projlib_language_set_option:n { japanese } }
    , Japanese            .meta:n       = { japanese }
    , RU                  .meta:n       = { russian }
    , russian             .code:n       = { \projlib_language_set_option:n { russian } }
    , Russian             .meta:n       = { russian }
    , unknown             .code:n       = {}
  }
\ProcessKeyOptions [ projlib-language ]

\cs_new_protected:Nn \projlib_language_clear_global_option:n
  {
    \clist_remove_all:cn { @classoptionslist } { #1 }
  }

\projlib_language_clear_global_option:n { chinese }
\projlib_language_clear_global_option:n { Chinese }

\clist_gput_right:Nn \g__projlib_language_babel_option_clist { shorthands = off }

\str_if_empty:NT \g__projlib_language_main_str
  {
    \str_gset:Nn \g__projlib_language_main_str { english }
  }

\bool_if:NT \g__projlib_language_enabled_all_bool
  {
    \clist_map_inline:Nn \c__projlib_language_supported_clist
      {
        \bool_gset_true:c { g__projlib_language_enabled_ #1 _bool }
      }
  }

\cs_new:Nn \projlib_language_str_to_languagename:n
  {
    \str_case_e:nnF { \exp_args:Ne \str_foldcase:n { \tl_trim_spaces:n { #1 } } }
      {
        { all                }    { common     }
        { common             }    { common     }
        { cn                 }    { schinese   }
        { sc                 }    { schinese   }
        { chinese            }    { schinese   }
        { schinese           }    { schinese   }
        { simplified chinese }    { schinese   }
        { simplified-chinese }    { schinese   }
        { simplified~chinese }    { schinese   }
        { tc                 }    { tchinese   }
        { tchinese           }    { tchinese   }
        { traditional chinese}    { tchinese   }
        { traditional-chinese}    { tchinese   }
        { traditional~chinese}    { tchinese   }
        { jp                 }    { japanese   }
        { japanese           }    { japanese   }
        { en                 }    { english    }
        { english            }    { english    }
        { fr                 }    { french     }
        { french             }    { french     }
        { de                 }    { ngerman    }
        { german             }    { ngerman    }
        { ngerman            }    { ngerman    }
        { it                 }    { italian    }
        { italian            }    { italian    }
        { pt                 }    { portuguese }
        { portuguese         }    { portuguese }
        { br                 }    { brazilian  }
        { brazilian          }    { brazilian  }
        { es                 }    { spanish    }
        { spanish            }    { spanish    }
        { ru                 }    { russian    }
        { russian            }    { russian    }
      }
      { #1 }
  }

\cs_new:Nn \projlib_language_str_to_languagetype:n
  {
    \str_case_e:nnF { \exp_args:Ne \str_foldcase:n { \tl_trim_spaces:n { #1 } } }
      {
        { cn                 }    {  cjk  }
        { sc                 }    {  cjk  }
        { chinese            }    {  cjk  }
        { schinese           }    {  cjk  }
        { simplified chinese }    {  cjk  }
        { simplified-chinese }    {  cjk  }
        { simplified~chinese }    {  cjk  }
        { tc                 }    {  cjk  }
        { tchinese           }    {  cjk  }
        { traditional chinese}    {  cjk  }
        { traditional-chinese}    {  cjk  }
        { traditional~chinese}    {  cjk  }
        { jp                 }    {  cjk  }
        { japanese           }    {  cjk  }
        { en                 }    { latin }
        { english            }    { latin }
        { fr                 }    { latin }
        { french             }    { latin }
        { de                 }    { latin }
        { german             }    { latin }
        { ngerman            }    { latin }
        { it                 }    { latin }
        { italian            }    { latin }
        { pt                 }    { latin }
        { portuguese         }    { latin }
        { br                 }    { latin }
        { brazilian          }    { latin }
        { es                 }    { latin }
        { spanish            }    { latin }
        { ru                 }    { latin }
        { russian            }    { latin }
      }
      { latin }
  }

\sys_if_engine_pdftex:T
  {
    \RequirePackage [T1] { fontenc }
  }

\bool_if:NTF \g__projlib_language_enabled_all_bool
  {
    \sys_if_engine_pdftex:F
      {
        \PassOptionsToPackage { japanese, russian } { babel }
      }
    \PassOptionsToPackage { italian, portuguese, brazilian, spanish, es-notilde, es-noquoting, ngerman, french, english, shorthands = off } { babel }
  }
  {
    \PassOptionsToPackage { \g__projlib_language_babel_option_clist } { babel }
  }

\PassOptionsToPackage { italian, brazilian, spanish, ngerman, french, english } { cleveref }
\RequirePackage { babel }

\RequirePackage { silence }
\WarningFilter { biblatex } { Language }

\bool_if:NT \g__projlib_language_enabled_french_bool
  {
    \frenchsetup { PartNameFull = false }
  }

\bool_if:NT \g__projlib_language_enabled_portuguese_bool
  {
    \NewCommandCopy \__projlib_language_babel_ord: \ord
    \cs_undefine:N \ord
    \hook_gput_code:nnn { begindocument } { projlib-language }
      {
        \cs_if_exist:NT \ord
          {
            \NewCommandCopy \__projlib_language_user_ord: \ord
            \cs_set_protected:Npn \ord
              {
                \mode_if_math:TF
                  { \__projlib_language_user_ord:  }
                  { \__projlib_language_babel_ord: }
              }
          }
      }
  }

\babelprovide { schinese }
\babelprovide { tchinese }

\NewCommandCopy \projlib_language_backup_today:n \today

\tl_new:N \g_projlib_language_settings_common_tl
\clist_map_inline:Nn \c__projlib_language_supported_clist
  {
    \tl_new:c { g_projlib_language_settings_ #1 _tl }
  }

\tl_gput_right:Nn \g_projlib_language_settings_common_tl
  {
    \cs_if_exist:NT \ProjLibToday
      {
        \RenewCommandCopy \today \ProjLibToday
      }
  }

\tl_gput_right:Nn \g_projlib_language_settings_schinese_tl
  {
    \tl_set:Nn  \languagename         { schinese }
    \tl_set:cn { abstractname   }     { 摘要     }
    \tl_set:cn { proofname      }     { 证明     }
    \tl_set:cn { contentsname   }     { 目录     }
    \tl_set:cn { listfigurename }     { 插图     }
    \tl_set:cn { listtablename  }     { 表格     }
    \tl_set:cn { figurename     }     { 图       }
    \tl_set:cn { tablename      }     { 表       }
    \tl_set:cn { indexname      }     { 索引     }
    \tl_set:cn { appendixname   }     { 附录     }
    \tl_set:cn { refname        }     { 参考文献 }
    \tl_set:cn { bibname        }     { 参考文献 }
  }
\cs_new_protected:Nn \projlib_language_apply_settings_globally_schinese:
  {
    \g_projlib_language_settings_common_tl
    \g_projlib_language_settings_schinese_tl
  }
\cs_new_protected:Nn \projlib_language_apply_settings_locally_schinese:n
  {
    \group_begin:
    \g_projlib_language_settings_common_tl
    \g_projlib_language_settings_schinese_tl
    #1
    \group_end:
  }

\tl_gput_right:Nn \g_projlib_language_settings_tchinese_tl
  {
    \tl_set:Nn  \languagename         { tchinese }
    \tl_set:cn { abstractname   }     { 摘要     }
    \tl_set:cn { proofname      }     { 證明     }
    \tl_set:cn { contentsname   }     { 目錄     }
    \tl_set:cn { listfigurename }     { 插圖     }
    \tl_set:cn { listtablename  }     { 表格     }
    \tl_set:cn { figurename     }     { 圖       }
    \tl_set:cn { tablename      }     { 表       }
    \tl_set:cn { indexname      }     { 索引     }
    \tl_set:cn { appendixname   }     { 附錄     }
    \tl_set:cn { refname        }     { 參考文獻 }
    \tl_set:cn { bibname        }     { 參考文獻 }
  }
\cs_new_protected:Nn \projlib_language_apply_settings_globally_tchinese:
  {
    \g_projlib_language_settings_common_tl
    \g_projlib_language_settings_tchinese_tl
  }
\cs_new_protected:Nn \projlib_language_apply_settings_locally_tchinese:n
  {
    \group_begin:
    \g_projlib_language_settings_common_tl
    \g_projlib_language_settings_tchinese_tl
    #1
    \group_end:
  }

\cs_new_protected:Nn \projlib_language_apply_settings_globally_japanese:
  {
    \selectlanguage { japanese }
    \g_projlib_language_settings_common_tl
    \g_projlib_language_settings_japanese_tl
  }
\cs_new_protected:Nn \projlib_language_apply_settings_locally_japanese:n
  {
    \group_begin:
    \g_projlib_language_settings_common_tl
    \g_projlib_language_settings_japanese_tl
    \foreignlanguage { japanese } { #1 }
    \group_end:
  }

\cs_new_protected:Nn \projlib_language_apply_settings_globally_english:
  {
    \selectlanguage { english }
    \g_projlib_language_settings_common_tl
    \g_projlib_language_settings_english_tl
  }
\cs_new_protected:Nn \projlib_language_apply_settings_locally_english:n
  {
    \group_begin:
    \g_projlib_language_settings_common_tl
    \g_projlib_language_settings_english_tl
    \foreignlanguage { english } { #1 }
    \group_end:
  }

\tl_gput_right:Nn \g_projlib_language_settings_french_tl
  {
    \tl_gset:cn { frenchpartname } { Partie }
  }
\cs_new_protected:Nn \projlib_language_apply_settings_globally_french:
  {
    \selectlanguage { french }
    \g_projlib_language_settings_common_tl
    \g_projlib_language_settings_french_tl
  }
\cs_new_protected:Nn \projlib_language_apply_settings_locally_french:n
  {
    \group_begin:
    \g_projlib_language_settings_common_tl
    \g_projlib_language_settings_french_tl
    \foreignlanguage { french } { #1 }
    \group_end:
  }

\cs_new_protected:Nn \projlib_language_apply_settings_globally_ngerman:
  {
    \selectlanguage { ngerman }
    \g_projlib_language_settings_common_tl
    \g_projlib_language_settings_ngerman_tl
  }
\cs_new_protected:Nn \projlib_language_apply_settings_locally_ngerman:n
  {
    \group_begin:
    \g_projlib_language_settings_common_tl
    \g_projlib_language_settings_ngerman_tl
    \foreignlanguage { ngerman } { #1 }
    \group_end:
  }

\cs_new_protected:Nn \projlib_language_apply_settings_globally_italian:
  {
    \selectlanguage { italian }
    \g_projlib_language_settings_common_tl
    \g_projlib_language_settings_italian_tl
  }
\cs_new_protected:Nn \projlib_language_apply_settings_locally_italian:n
  {
    \group_begin:
    \g_projlib_language_settings_common_tl
    \g_projlib_language_settings_italian_tl
    \foreignlanguage { italian } { #1 }
    \group_end:
  }

\cs_new_protected:Nn \projlib_language_apply_settings_globally_portuguese:
  {
    \selectlanguage { portuguese }
    \g_projlib_language_settings_common_tl
    \g_projlib_language_settings_portuguese_tl
  }
\cs_new_protected:Nn \projlib_language_apply_settings_locally_portuguese:n
  {
    \group_begin:
    \g_projlib_language_settings_common_tl
    \g_projlib_language_settings_portuguese_tl
    \foreignlanguage { portuguese } { #1 }
    \group_end:
  }

\cs_new_protected:Nn \projlib_language_apply_settings_globally_brazilian:
  {
    \selectlanguage { brazilian }
    \g_projlib_language_settings_common_tl
    \g_projlib_language_settings_brazilian_tl
  }
\cs_new_protected:Nn \projlib_language_apply_settings_locally_brazilian:n
  {
    \group_begin:
    \g_projlib_language_settings_common_tl
    \g_projlib_language_settings_brazilian_tl
    \foreignlanguage { brazilian } { #1 }
    \group_end:
  }

\cs_new_protected:Nn \projlib_language_apply_settings_globally_spanish:
  {
    \selectlanguage { spanish }
    \g_projlib_language_settings_common_tl
    \g_projlib_language_settings_spanish_tl
  }
\cs_new_protected:Nn \projlib_language_apply_settings_locally_spanish:n
  {
    \group_begin:
    \g_projlib_language_settings_common_tl
    \g_projlib_language_settings_spanish_tl
    \foreignlanguage { spanish } { #1 }
    \group_end:
  }

\cs_new_protected:Nn \projlib_language_apply_settings_globally_russian:
  {
    \selectlanguage { russian }
    \g_projlib_language_settings_common_tl
    \g_projlib_language_settings_russian_tl
  }
\cs_new_protected:Nn \projlib_language_apply_settings_locally_russian:n
  {
    \group_begin:
    \g_projlib_language_settings_common_tl
    \g_projlib_language_settings_russian_tl
    \foreignlanguage { russian } { #1 }
    \group_end:
  }

\NewDocumentCommand \AddLanguageSetting { O{} m }
  {
    \tl_if_empty:nTF { #1 }
      {
        \tl_gput_right:Nn \g_projlib_language_settings_common_tl { #2 }
      }
      {
        \tl_gput_right:cn { g_projlib_language_settings_ \projlib_language_str_to_languagename:n { #1 } _tl } { #2 }
      }
  }

\RequirePackage { setspaceenhanced }

\tl_new:N  \g_projlib_language_linespacing_latin_tl
\tl_new:N  \g_projlib_language_linespacing_cjk_tl

\tl_gset:Nn \g_projlib_language_linespacing_latin_tl
  {
    \setstretch { 1.00 }
  }
\tl_gset:Nn \g_projlib_language_linespacing_cjk_tl
  {
    \onehalfspacing
  }

\cs_new:Nn \projlib_language_set_linespacing_latin:n
  {
    \tl_gset:Nn \g_projlib_language_linespacing_latin_tl { #1 }
  }
\cs_new:Nn \projlib_language_set_linespacing_cjk:n
  {
    \tl_gset:Nn \g_projlib_language_linespacing_cjk_tl { #1 }
  }

\tl_new:N  \g_projlib_language_parindent_latin_tl
\tl_new:N  \g_projlib_language_parindent_cjk_tl

\@ifclassloaded { beamer }
  {
    \tl_gset:Nn \g_projlib_language_parindent_latin_tl
      {
        \dim_set:Nn \parindent { 0em }
      }
    \tl_gset:Nn \g_projlib_language_parindent_cjk_tl
      {
        \dim_set:Nn \parindent { 0em }
      }
  }
  {
    \tl_gset:Nn \g_projlib_language_parindent_latin_tl
      {
        \dim_set:Nn \parindent { 1.5em }
      }
    \tl_gset:Nn \g_projlib_language_parindent_cjk_tl
      {
        \dim_set:Nn \parindent { 2em }
      }
  }

\hook_gput_code:nnn { begindocument } { projlib-language }
  {
    \IfPackageLoadedTF { parskip }
      {
        \tl_gset:Nn \g_projlib_language_parindent_latin_tl
          {
            \dim_set:Nn \parindent { 0em }
          }
        \tl_gset:Nn \g_projlib_language_parindent_cjk_tl
          {
            \dim_set:Nn \parindent { 0em }
          }
      } {}
  }

\cs_new:Nn \projlib_language_set_parindent_latin:n
  {
    \tl_gset:Nn \g_projlib_language_parindent_latin_tl { #1 }
  }
\cs_new:Nn \projlib_language_set_parindent_cjk:n
  {
    \tl_gset:Nn \g_projlib_language_parindent_cjk_tl { #1 }
  }

\NewDocumentCommand \ProjLibLanguageSet { m m m }
  % #1 = the thing to set
  % #2 = language or type
  % #3 = the setting
  {
    \use:c { projlib_language_set_ #1 _ #2 :n } { #3 }
  }

\msg_new:nnn { projlib-language }
  { language-not-supported }
  { The~language~"#1"~is~not~supported. }
\msg_new:nnn { projlib-language }
  { language-not-enabled }
  { The~language~"#1"~is~not~enabled. }

\tl_new:N \l_projlib_language_current_languagetype_tl

\cs_new:Nn \projlib_language_use_language_locally:nn
  {
    \cs_if_exist:cTF { projlib_language_apply_settings_locally_ \projlib_language_str_to_languagename:n { #1 } :n }
      {
        \bool_if:cTF { g__projlib_language_enabled_ \projlib_language_str_to_languagename:n { #1 } _bool }
          {
            \use:c { projlib_language_apply_settings_locally_ \projlib_language_str_to_languagename:n { #1 } :n } { #2 }
            \tl_set:Ne \l_projlib_language_current_languagetype_tl { \projlib_language_str_to_languagetype:n { #1 } }
          }
          {
            \msg_warning:nnn { projlib-language } { language-not-enabled } { #1 }
            #2
          }
      }
      {
        \msg_warning:nnn { projlib-language } { language-not-supported } { #1 }
        #2
      }
  }
\cs_generate_variant:Nn \projlib_language_use_language_locally:nn { e }

\cs_new:Nn \projlib_language_use_language:n
  {
    \cs_if_exist:cTF { projlib_language_apply_settings_globally_ \projlib_language_str_to_languagename:n { #1 } : }
      {
        \bool_if:cTF { g__projlib_language_enabled_ \projlib_language_str_to_languagename:n { #1 } _bool }
          {
            \use:c { projlib_language_apply_settings_globally_ \projlib_language_str_to_languagename:n { #1 } : }
            \cs_if_exist_use:c { g_projlib_language_linespacing_ \projlib_language_str_to_languagetype:n { #1 } _tl }
            \cs_if_exist_use:c { g_projlib_language_parindent_ \projlib_language_str_to_languagetype:n { #1 } _tl }
            \tl_set:Ne \l_projlib_language_current_languagetype_tl { \projlib_language_str_to_languagetype:n { #1 } }
          }
          {
            \msg_warning:nnn { projlib-language } { language-not-enabled } { #1 }
          }
      }
      {
        \msg_warning:nnn { projlib-language } { language-not-supported } { #1 }
      }
  }
\cs_generate_variant:Nn \projlib_language_use_language:n { e }

\NewDocumentCommand \UseLanguage { m }
  {
    % Set the configuration twice at different stages of begindocument
    \hook_gput_code:nnn { begindocument } { projlib-language }
      {
        \projlib_language_use_language:e { #1 }
      }
    \hook_gput_code:nnn { begindocument/end } { projlib-language }
      {
        \projlib_language_use_language:e { #1 }
      }
  }
\NewDocumentCommand \UseOtherLanguage { m m }
  {
    \group_begin:
      \projlib_language_use_language_locally:en { #1 } { #2 }
    \group_end:
  }
\NewDocumentEnvironment { OtherLanguage } { m +b }
  {
    \projlib_language_use_language_locally:en { #1 } { #2 }
  }
  { }

\UseLanguage { \g__projlib_language_main_str }

\cs_new:Nn \projlib_langauge_define_multilingual_text:Nn
  { % #1 = command name (with backslash)
    % #2 = key-value name configuration
    \keyval_parse:nnn
      { \use_none:n }
      { \__projlib_langauge_define_multilingual_text_do:nnn { \cs_to_str:N #1 } }
      { #2 }
    \tl_gset:Nn #1
      {
        \tl_use:c { \cs_to_str:N #1 _projlib_language_text_ \languagename }
      }
  }
\cs_generate_variant:Nn \projlib_langauge_define_multilingual_text:Nn { cn }

\cs_new:Nn \__projlib_langauge_define_multilingual_text_do:nnn
  { % #1 = command name
    % #2 = language name
    % #3 = the text
    \exp_args:Ne \tl_gset:cn { #1 _projlib_language_text_ \projlib_language_str_to_languagename:n { #2 } } { #3 }
  }

\NewDocumentCommand \DefineMultilingualText { m m }
  % #1 = command name
  % #2 = key-value name configuration
  {
    \projlib_langauge_define_multilingual_text:Nn #1 { #2 }
  }

\PassOptionsToPackage { autostyle } { csquotes }
\RequirePackage { csquotes }

\DeclareQuoteStyle { schinese } {“} {”} {‘} {’}
\DeclareQuoteStyle { tchinese } {“} {”} {‘} {’}
\DeclareQuoteStyle { japanese } {「} {」} {『} {』}

\endinput
%%
%% End of file `projlib-language.sty'.
