aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorRalph Amissah <ralph@amissah.com>2010-10-25 20:41:38 -0400
committerRalph Amissah <ralph@amissah.com>2010-10-25 20:57:31 -0400
commit0da0a26268cc9dc6251773dcb0abeb247b6e20d4 (patch)
tree13691a40fdd614d3baa93854c500266e1de9da2c
parenti18n, 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_v28
-rw-r--r--data/doc/sisu/v2/CHANGELOG8
-rw-r--r--lib/sisu/v2/i18n.rb156
-rw-r--r--lib/sisu/v2/texpdf_format.rb56
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