diff options
| author | Ralph Amissah <ralph@amissah.com> | 2010-10-25 20:41:38 -0400 | 
|---|---|---|
| committer | Ralph Amissah <ralph@amissah.com> | 2010-10-25 20:57:31 -0400 | 
| commit | 0da0a26268cc9dc6251773dcb0abeb247b6e20d4 (patch) | |
| tree | 13691a40fdd614d3baa93854c500266e1de9da2c | |
| parent | i18n, introduce header @make: :language: (diff) | |
texpdf_format, i18n, set tex document header language (polyglossia)sisu_2.7.8
* i18n, introduce header @make: :language: internationalization using codes
  from http://www.debian.org/international/l10n/po/ at this time for texpdf,
  (able to satify needs of polyglossia for the likes of Brazilian Portugues)
  and in future for po files, where iso:639 for this purpose appears to have
  use limitations http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes
  * i18n, add code list and associated language (as listed by polyglossia)
  * texpdf_format, use param (@make: :language: (default english)), to set
    tex document language header (previously used file naming convention)
| -rw-r--r-- | CHANGELOG_v2 | 8 | ||||
| -rw-r--r-- | data/doc/sisu/v2/CHANGELOG | 8 | ||||
| -rw-r--r-- | lib/sisu/v2/i18n.rb | 156 | ||||
| -rw-r--r-- | lib/sisu/v2/texpdf_format.rb | 56 | 
4 files changed, 183 insertions, 45 deletions
| diff --git a/CHANGELOG_v2 b/CHANGELOG_v2 index ba788ee5..e55187cd 100644 --- a/CHANGELOG_v2 +++ b/CHANGELOG_v2 @@ -21,9 +21,15 @@ http://www.jus.uio.no/sisu/pkg/src/sisu_2.7.8.orig.tar.gz    [debian freeze, fix]    * i18n, introduce header @make: :language: internationalization using codes -    from http://www.debian.org/international/l10n/po/ +    from http://www.debian.org/international/l10n/po/ at this time for texpdf, +    (able to satify needs of polyglossia for the likes of Brazilian Portugues) +    and in future for po files, where iso:639 for this purpose appears to have +    use limitations http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes      * param, extract @make: :language: information if provided, default        "english" +    * i18n, add code list and associated language (as listed by polyglossia) +    * texpdf_format, use param (@make: :language: (default english)), to set +      tex document language header (previously used file naming convention)      * sisu.vim recognize @make: :language:        (also elsewhere shortened :lang_code: from :language_code:) diff --git a/data/doc/sisu/v2/CHANGELOG b/data/doc/sisu/v2/CHANGELOG index 2152d4ac..743786b4 100644 --- a/data/doc/sisu/v2/CHANGELOG +++ b/data/doc/sisu/v2/CHANGELOG @@ -21,9 +21,15 @@ http://www.jus.uio.no/sisu/pkg/src/sisu_2.7.8.orig.tar.gz    [debian freeze, fix]    * i18n, introduce header @make: :language: internationalization using codes -    from http://www.debian.org/international/l10n/po/ +    from http://www.debian.org/international/l10n/po/ at this time for texpdf, +    (able to satify needs of polyglossia for the likes of Brazilian Portugues) +    and in future for po files, where iso:639 for this purpose appears to have +    use limitations http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes      * param, extract @make: :language: information if provided, default        "english" +    * i18n, add code list and associated language (as listed by polyglossia) +    * texpdf_format, use param (@make: :language: (default english)), to set +      tex document language header (previously used file naming convention)      * sisu.vim recognize @make: :language:        (also elsewhere shortened :lang_code: from :language_code:) diff --git a/lib/sisu/v2/i18n.rb b/lib/sisu/v2/i18n.rb index 2aa730be..c43daabe 100644 --- a/lib/sisu/v2/i18n.rb +++ b/lib/sisu/v2/i18n.rb @@ -56,6 +56,90 @@   ** Description: internationalisation  =end +module SiSU_i18n +  class Language +    def initialize(md) +      @md=md +    end +    def tex_name(char) +      @lang=if char +        case char +        when 'sq';    'albanian' +        when 'am';    'amharic' +       #when 'ar';    'arabic'         # see polyglossia +        when 'hy';    'armenian' +       #when '';      'asturian'       # polyglossia +       #when '';      'bahasai'        # polyglossia +       #when '';      'bahasam'        # polyglossia +        when 'eu';    'basque' +        when 'bn';    'bengali' +        when 'pt_BR'; 'brazilian' +        when 'br';    'breton' +        when 'bg';    'bulgarian' +        when 'ca';    'catalan'        # see polyglossia +       #when '';      'coptic'         # polyglossia +        when 'hr';    'croatian' +        when 'cs';    'czech' +        when 'da';    'danish' +       #when '';      'divehi'         # polyglossia +        when 'nl';    'dutch'          # see polyglossia +        when 'en';    'english'        # see polyglossia +        when 'eo';    'esperanto'      # see polyglossia +        when 'et';    'estonian' +        when 'gl';    'galician' +        when 'de';    'german' +        when 'el';    'greek'          #gl ? +        when 'he';    'hebrew' +        when 'hi';    'hindi' +        when 'is';    'icelandic' +        when 'ia';    'interlingua' +        when 'ga';    'irish' +        when 'it';    'italian' +       #when '';      'farsi'          # polyglossia +        when 'fi';    'finnish' +        when 'fr';    'french' +        when 'lo';    'lao' +        when 'la';    'latin' +        when 'lv';    'latvian' +        when 'lt';    'lithuanian' +       #when '';      'lsorbian'       # polyglossia +       #when '';      'magyar'         # polyglossia +        when 'ml';    'malayalam' +        when 'mr';    'marathi' +       #when 'hu';    'magyar' +        when 'no';    'norske' +        when 'nn';    'nynorsk' +        when 'oc';    'occitan' +        when 'pl';    'polish' +        when 'pt';    'portuges' +        when 'ro';    'romanian' +        when 'ru';    'russian' +        when 'se';    'samin'          #(check sami?) +        when 'sa';    'sanskrit' +        when 'sr';    'serbian' +       #when '';      'scottish'       # polyglossia  (gd (Gaelic (Scots))) +        when 'sk';    'slovak' +        when 'sl';    'slovenian' +        when 'es';    'spanish' +        when 'sv';    'swedish' +        when 'ta';    'tamil' +        when 'te';    'telugu' +        when 'th';    'thai' +        when 'tr';    'turkish' +        when 'tk';    'turkmen' +        when 'uk';    'ukrainian' +        when 'ur';    'urdu' +       #when '';      'usorbian'       # polyglossia +        when 'vi';    'vietnamese' +        when 'cy';    'welsh' +        when 'us';    'USenglish'      # depreciated, see iso-639-2 +        else          'english' +        end +      else            'english' +      end +    end +  end +end  module SiSU_Translate    require "#{SiSU_lib}/sysenv"                             # sysenv.rb      include SiSU_Env; include SiSU_Param @@ -93,6 +177,7 @@ module SiSU_Translate        else                               English.new(md,doc_lang,trans_str)        end      end +      def filename        @lang_class.filename      end @@ -1623,3 +1708,74 @@ module SiSU_Translate    end  end  __END__ +http://www.debian.org/international/l10n/po/ +http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes +http://www.loc.gov/standards/iso639-2/php/code_list.php +albanian           sq +amharic            am +arabic             ar +armenian           hy +asturian +bahasai +bahasam +basque             eu +bengali            bn +brazil[ian]        pt_BR +breton             br +bulgarian          bg +catalan            ca +coptic +croatian           hr +czech              cs +danish             da +divehi +dutch              nl +english            en +esperanto          eo +estonian           et +galician           gl +german             de +greek              el +hebrew             he +hindi              hi +icelandic          is +interlingua        ia +irish              ga +italian            it +farsi +finnish            fi +french             fr +lao                lo +latin              la +latvian            lv +lithuanian         lt +lsorbian +magyar +malayalam          ml +marathi            mr +norsk              no +nynorsk            nn +occitan            oc +polish             pl +portuges           pt +romanian           ro +russian            ru +samin              se (check sami?) +sanskrit           sa +scottish            #  (gd (Gaelic (Scots))) +serbian            sr +slovak             sk +slovenian          sl +spanish            es +swedish            sv +syriac             #  (ar_SY (Arabic, as spoken in Syrian Arab Republic)) +tamil              ta +telugu             te +thai               th +turkish            tr +turkmen            tk +ukrainian          uk +urdu               ur +usorbian +vietnamese         vi +welsh              cy diff --git a/lib/sisu/v2/texpdf_format.rb b/lib/sisu/v2/texpdf_format.rb index 9ebef9dc..465d4d90 100644 --- a/lib/sisu/v2/texpdf_format.rb +++ b/lib/sisu/v2/texpdf_format.rb @@ -604,6 +604,7 @@ module SiSU_TeX_Pdf      end    end    class Format_head +    require "#{SiSU_lib}/i18n"                         # defaults.rb      def initialize(md,t_o)        @md,@t_o=md,t_o        @env=SiSU_Env::Info_env.new(@md.fns) @@ -621,47 +622,16 @@ module SiSU_TeX_Pdf        @brace_url=SiSU_Viz::Skin.new.url_decoration        @tex2pdf=@@tex3pdf ||=SiSU_Env::System_call.new.tex2pdf_engine        @ps=@txt if @txt=~/(?:a4|letter|legal|book|a5|b5)/i -    end -    def language -      @lang=if @md.language[:code] -        case @md.language[:code] -        when 'en'; 'english' -        when 'us'; 'USenglish' # depreciated, see iso-639-2 -        when 'fr'; 'french' -        when 'de'; 'ngerman' -        when 'it'; 'italian' -        when 'es'; 'spanish' -        when 'pt'; 'portuges' -        #when 'br'; 'brazilian' # depreciated, see iso-639-2 -        when 'sv'; 'swedish' -        when 'da'; 'danish' -        when 'fi'; 'finnish' -        when 'no'; 'norske,nynorsk' -        when 'is'; 'icelandic' -        when 'nl'; 'dutch' -        when 'et'; 'estonian' -        when 'hu'; 'magyar' -        when 'pl'; 'polish' -        when 'ro'; 'romanian' -        when 'ru'; 'russian' -        when 'gl'; 'greek' -        when 'uk'; 'ukrainian' -        when 'tr'; 'turkish' -        when 'sk'; 'slovak' -        when 'sl'; 'slovenian' -        when 'hr'; 'croatian' -        when 'cs'; 'czech' -        when 'bg'; 'bulgarian' -        else       'english' -        end -      else         'english' -      end +      @lang ||=SiSU_i18n::Language.new(@md)      end      def tex_head_lang #babel 18n -      language -      lang=if @lang =~/^(?:en)$/; @lang -      else "#{@lang},english" -      end +      lang_char_arr=@md.i18n +      mainlang_char=lang_char_arr.slice(0) +      mainlang=@lang.tex_name(mainlang_char) +      otherlang=[] +      lang_char_arr.slice(1..9).each { |ch| otherlang << @lang.tex_name(ch) } +      otherlang=otherlang.join(',') +      { :mainlang=>mainlang, :otherlang=>otherlang }      end      def tex_head_encode        texpdf_font=if defined? @md.make.texpdf_font \ @@ -674,8 +644,8 @@ module SiSU_TeX_Pdf        when /xe/          <<WOK  \\usepackage{polyglossia, ucs, fontspec, xltxtra, xunicode} -\\setmainlanguage{#{tex_head_lang}} -\\setotherlanguage{english} +\\setmainlanguage{#{tex_head_lang[:mainlang]}} +\\setotherlanguage{#{tex_head_lang[:otherlang]}}  \\setmainfont{#{texpdf_font}}  WOK        when /pdf/ @@ -913,7 +883,7 @@ WOK      end      def document_head_with_orientation        endnotes=("\\usepackage{endnotes}" if @txt =~/endnotes?/)||'' #not implemented see also def endnotes -      language +      @lang.tex_name(@md.i18n[0])        <<WOK  #{tex_head_paper}  #{tex_head_encode} @@ -976,7 +946,7 @@ WOK    {-\\baselineskip}{0.5\\baselineskip}%    {\\normalfont\\normalsize\\itshape\\raggedright}}  % \\makeatother -\\selectlanguage{#{language}} +\\selectlanguage{#{@lang.tex_name(@md.i18n[0])}}  WOK      end      def a4generic | 
