From 8ece506490b3f52aa3cf241a3b3009abc8027eae Mon Sep 17 00:00:00 2001
From: Ralph Amissah <ralph@amissah.com>
Date: Wed, 4 May 2011 23:02:26 -0400
Subject: v3: i18n, sysenv, options, language setting changes

* must be able to set language at options stage from filename or directory
* affects many files
* old i18n more appropriately renamed prog_text_translation
---
 data/doc/sisu/CHANGELOG_v3             |   44 +-
 lib/sisu/v3/dal.rb                     |    2 +-
 lib/sisu/v3/dal_doc_str.rb             |    2 +-
 lib/sisu/v3/dal_metadata.rb            |    2 +-
 lib/sisu/v3/digests.rb                 |    4 +-
 lib/sisu/v3/i18n.rb                    | 1792 +++-----------------------------
 lib/sisu/v3/manifest.rb                |   10 +-
 lib/sisu/v3/param.rb                   |    6 +-
 lib/sisu/v3/prog_text_translation.rb   | 1697 ++++++++++++++++++++++++++++++
 lib/sisu/v3/shared_metadata.rb         |    4 +-
 lib/sisu/v3/sst_do_inline_footnotes.rb |    2 +-
 lib/sisu/v3/sysenv.rb                  |  156 +--
 lib/sisu/v3/texpdf_format.rb           |   12 +-
 13 files changed, 1988 insertions(+), 1745 deletions(-)
 create mode 100644 lib/sisu/v3/prog_text_translation.rb

diff --git a/data/doc/sisu/CHANGELOG_v3 b/data/doc/sisu/CHANGELOG_v3
index 91f8b5c6..37363447 100644
--- a/data/doc/sisu/CHANGELOG_v3
+++ b/data/doc/sisu/CHANGELOG_v3
@@ -23,28 +23,14 @@ http://www.jus.uio.no/sisu/pkg/src/sisu_3.0.8.orig.tar.gz
   * bin/sisu3 bin/sisu /bin/sisu_webrick bin/sisu_termsheet
     * improved ruby version check
 
-  * vim
-    * sisu syntax change of a couple of color groups (Delimiter instead of
-      Include)
-    * 8 color cterm colorschemes
-      * sparse series uses dark grey on black, usually looks better, but only
-        works with a fixed color cursor, preferred in terms where you can get
-        away with using it
-      * frugal series avoids dark grey
-      * slate for cterm now incorporates frugal-cterm-sisu
-      * *-cterm-ruby & *-cterm-sisu colors adjusted where other color groupings are
-        preferred for programming / sisu markup
-
   * options, language setting, based on directory structure or filename
     * sysenv, language setting from options
     * affects multiple libraries
 
-  * sysenv, lowriter (instead of libreoffice)
-
-  * manpage, reinstate escape of hyphens (clearly preferred, else lintian
-    reports hyphen-used-as-minus-sign)
+  * i18n, sysenv, options, language setting changes affecting many files
+    * must be able to set language at options stage from filename or directory
 
-  * manpges escaped hyphens reinstated (remove lintian info)
+  * prog_text_translation, renamed from what was i18n, i18n name reused
 
   * NOTE: cgi sample search form caught by Ruby/DBI libdbi-ruby1.9.1 reported
     reported as libdbd-pg-ruby1.9.1 bug #596103, where "select_all fails". The
@@ -68,11 +54,31 @@ http://www.jus.uio.no/sisu/pkg/src/sisu_3.0.8.orig.tar.gz
       <http://rdbi.hollensbe.org/>
       <http://rdbi.hollensbe.org/files/README_rdoc.html>
       and develop for that
-    or some meaningful combination of any of the above.
+    * use some other programming language for sample search form
+      or some meaningful combination of any of the above.
+
+  * manpage, reinstate escape of hyphens (clearly preferred, else lintian
+    reports hyphen-used-as-minus-sign)
+
+  * manpages, escaped hyphens reinstated (remove lintian info)
+
+  * sysenv, lowriter (instead of libreoffice)
+
+  * db_select, ansi screen reporting, correction for sqlite db update
 
   * concordance, output path, screen info correction
 
-  * vim colors colorscheme sparse-* frugal-* Slate minor changes
+  * vim
+    * sisu syntax change of a couple of color groups (Delimiter instead of
+      Include)
+    * 8 color cterm colorschemes
+      * sparse series uses dark grey on black, usually looks better, but only
+        works with a fixed color cursor, preferred in terms where you can get
+        away with using it
+      * frugal series avoids dark grey
+      * slate for cterm now incorporates frugal-cterm-sisu
+      * *-cterm-ruby & *-cterm-sisu colors adjusted where other color groupings are
+        preferred for programming / sisu markup
 
 %% 3.0.7.orig.tar.gz (2011-04-20:16/3)
 http://git.sisudoc.org/?p=code/sisu.git;a=log;h=refs/tags/debian/3.0.7-1
diff --git a/lib/sisu/v3/dal.rb b/lib/sisu/v3/dal.rb
index a25f0f99..28e7193d 100644
--- a/lib/sisu/v3/dal.rb
+++ b/lib/sisu/v3/dal.rb
@@ -77,7 +77,7 @@ module SiSU_DAL
   require_relative 'dal_character_check'                # dal_character_check.rb
   require_relative 'dal_substitutions_and_insertions'   # dal_substitutions_and_insertions.rb
   require_relative 'dal_expand_insertions'              # dal_expand_insertions.rb
-  require_relative 'i18n'                               # i18n.rb
+  require_relative 'prog_text_translation'              # prog_text_translation.rb
   require_relative 'shared_sem'                         # shared_sem.rb
   class Instantiate < SiSU_Param::Parameters::Instructions
     def initialize
diff --git a/lib/sisu/v3/dal_doc_str.rb b/lib/sisu/v3/dal_doc_str.rb
index 063ddd82..ed289015 100644
--- a/lib/sisu/v3/dal_doc_str.rb
+++ b/lib/sisu/v3/dal_doc_str.rb
@@ -483,7 +483,7 @@ module SiSU_document_structure_extract
       dir=SiSU_Env::Info_env.new(@md.fns)
       base_html="#{dir.url.root}/#{@md.fnb}"
       l=SiSU_Env::Standardise_language.new(@md.opt.lng).language
-      language=l[:l]
+      language=l[:n]
       tr=SiSU_Translate::Source.new(@md,language)
       meta << @pb
       h={ ln: 2, obj: 'Metadata', ocn_: false }
diff --git a/lib/sisu/v3/dal_metadata.rb b/lib/sisu/v3/dal_metadata.rb
index 56ef662c..2e68c944 100644
--- a/lib/sisu/v3/dal_metadata.rb
+++ b/lib/sisu/v3/dal_metadata.rb
@@ -61,7 +61,7 @@ module SiSU_metadata
     def initialize(md,metad)
       @md,@metadata=md,metad
       l=SiSU_Env::Standardise_language.new(@md.opt.lng).language
-      language=l[:l]
+      language=l[:n]
       @tr=SiSU_Translate::Source.new(md,language)
     end
     def make_para(obj,ocn)
diff --git a/lib/sisu/v3/digests.rb b/lib/sisu/v3/digests.rb
index 0e6852b2..e7b303ba 100644
--- a/lib/sisu/v3/digests.rb
+++ b/lib/sisu/v3/digests.rb
@@ -58,7 +58,7 @@
 =end
 module SiSU_Digest_view
   require_relative 'particulars'                        # particulars.rb
-  require_relative 'i18n'                               # i18n.rb
+  require_relative 'prog_text_translation'              # prog_text_translation.rb
   require_relative 'shared_markup_alt.rb'               # shared_markup_alt.rb
   pwd=Dir.pwd
   class Source
@@ -102,7 +102,7 @@ module SiSU_Digest_view
         @@dl ||=@env.digest.length
         @dg,@dl=@@dg,@@dl
         l=SiSU_Env::Standardise_language.new(@md.opt.lng).language
-        @language=l[:l]
+        @language=l[:n]
         @tr=SiSU_Translate::Source.new(@md,@language)
         @sp=' '
       end
diff --git a/lib/sisu/v3/i18n.rb b/lib/sisu/v3/i18n.rb
index 9fbe8c3e..683e6098 100644
--- a/lib/sisu/v3/i18n.rb
+++ b/lib/sisu/v3/i18n.rb
@@ -57,6 +57,159 @@
 
 =end
 module SiSU_i18n
+  class Languages
+    def language
+      def table
+        list= {
+          am:    { c: 'am',    n: 'Amharic',           xlp: 'amharic'},
+          bg:    { c: 'bg',    n: 'Bulgarian',         xlp: 'bulgarian'},
+          bn:    { c: 'bn',    n: 'Bengali',           xlp: 'bengali'},
+          br:    { c: 'br',    n: 'Breton',            xlp: 'breton'},
+          ca:    { c: 'ca',    n: 'Catalan',           xlp: 'catalan'},
+          cs:    { c: 'cs',    n: 'Czech',             xlp: 'czech'},
+          cy:    { c: 'cy',    n: 'Welsh',             xlp: 'welsh'},
+          da:    { c: 'da',    n: 'Danish',            xlp: 'danish'},
+          de:    { c: 'de',    n: 'German',            xlp: 'german'},
+          el:    { c: 'el',    n: 'Greek',             xlp: 'greek'},
+          en:    { c: 'en',    n: 'English',           xlp: 'english'},
+          eo:    { c: 'eo',    n: 'Esperanto',         xlp: 'esperanto'},
+          es:    { c: 'es',    n: 'Spanish',           xlp: 'spanish'},
+          et:    { c: 'et',    n: 'Estonian',          xlp: 'estonian'},
+          eu:    { c: 'eu',    n: 'Basque',            xlp: 'basque'},
+          fi:    { c: 'fi',    n: 'Finnish',           xlp: 'finnish'},
+          fr:    { c: 'fr',    n: 'French',            xlp: 'french'},
+          ga:    { c: 'ga',    n: 'Irish',             xlp: 'irish'},
+          gl:    { c: 'gl',    n: 'Galician',          xlp: 'galician'},
+          he:    { c: 'he',    n: 'Hebrew',            xlp: 'hebrew'},
+          hi:    { c: 'hi',    n: 'Hindi',             xlp: 'hindi'},
+          hr:    { c: 'hr',    n: 'Croatian',          xlp: 'croatian'},
+          hy:    { c: 'hy',    n: 'Armenian',          xlp: 'armenian'},
+          ia:    { c: 'ia',    n: 'Interlingua',       xlp: 'interlingua'},
+          is:    { c: 'is',    n: 'Icelandic',         xlp: 'icelandic'},
+          it:    { c: 'it',    n: 'Italian',           xlp: 'italian'},
+          la:    { c: 'la',    n: 'Latin',             xlp: 'latin'},
+          lo:    { c: 'lo',    n: 'Lao',               xlp: 'lao'},
+          lt:    { c: 'lt',    n: 'Lithuanian',        xlp: 'lithuanian'},
+          lv:    { c: 'lv',    n: 'Latvian',           xlp: 'latvian'},
+          ml:    { c: 'ml',    n: 'Malayalam',         xlp: 'malayalam'},
+          mr:    { c: 'mr',    n: 'Marathi',           xlp: 'marathi'},
+          nl:    { c: 'nl',    n: 'Dutch',             xlp: 'dutch'},
+          no:    { c: 'no',    n: 'Norwegian',         xlp: 'norsk'},
+          nn:    { c: 'nn',    n: 'Norwegian Nynorsk', xlp: 'nynorsk'},
+          oc:    { c: 'oc',    n: 'Occitan',           xlp: 'occitan'},
+          pl:    { c: 'pl',    n: 'Polish',            xlp: 'polish'},
+          pt:    { c: 'pt',    n: 'Portuguese',        xlp: 'portuges'},
+          pt_BR: { c: 'pt_BR', n: 'Portuguese Brazil', xlp: 'brazilian'},
+          ro:    { c: 'ro',    n: 'Romanian',          xlp: 'romanian'},
+          ru:    { c: 'ru',    n: 'Russian',           xlp: 'russian'},
+          sa:    { c: 'sa',    n: 'Sanskrit',          xlp: 'sanskrit'},
+          se:    { c: 'se',    n: 'Sami',              xlp: 'samin'},
+          sk:    { c: 'sk',    n: 'Slovak',            xlp: 'slovak'},
+          sl:    { c: 'sl',    n: 'Slovenian',         xlp: 'slovenian'},
+          sq:    { c: 'sq',    n: 'Albanian',          xlp: 'albanian'},
+          sr:    { c: 'sr',    n: 'Serbian',           xlp: 'serbian'},
+          sv:    { c: 'sv',    n: 'Swedish',           xlp: 'swedish'},
+          ta:    { c: 'ta',    n: 'Tamil',             xlp: 'tamil'},
+          te:    { c: 'te',    n: 'Telugu',            xlp: 'telugu'},
+          th:    { c: 'th',    n: 'Thai',              xlp: 'thai'},
+          tk:    { c: 'tk',    n: 'Turkmen',           xlp: 'turkmen'},
+          tr:    { c: 'tr',    n: 'Turkish',           xlp: 'turkish'},
+          uk:    { c: 'uk',    n: 'Ukranian',          xlp: 'ukrainian'},
+          ur:    { c: 'ur',    n: 'Urdu',              xlp: 'urdu'},
+          us:    { c: 'en',    n: 'English (American)',xlp: 'english'},
+          vi:    { c: 'vi',    n: 'Vietnamese',        xlp: 'vietnamese'},
+          en:    { c: 'en',    n: 'English',           xlp: 'english'},
+          xx:    { c: 'xx',    n: 'Default',           xlp: 'english'},
+        }
+      end
+      def list
+        list= {
+          'am'    => table[:am],
+          'bg'    => table[:bg],
+          'bn'    => table[:bn],
+          'br'    => table[:br],
+          'ca'    => table[:ca],
+          'cs'    => table[:cs],
+          'cy'    => table[:cy],
+          'da'    => table[:da],
+          'de'    => table[:de],
+          'el'    => table[:el],
+          'en'    => table[:en],
+          'eo'    => table[:eo],
+          'es'    => table[:es],
+          'et'    => table[:et],
+          'eu'    => table[:eu],
+          'fi'    => table[:fi],
+          'fr'    => table[:fr],
+          'ga'    => table[:ga],
+          'gl'    => table[:gl],
+          'he'    => table[:he],
+          'hi'    => table[:hi],
+          'hr'    => table[:hr],
+          'hy'    => table[:hy],
+          'ia'    => table[:ia],
+          'is'    => table[:is],
+          'it'    => table[:it],
+          'la'    => table[:la],
+          'lo'    => table[:lo],
+          'lt'    => table[:lt],
+          'lv'    => table[:lv],
+          'ml'    => table[:ml],
+          'mr'    => table[:mr],
+          'nl'    => table[:nl],
+          'no'    => table[:no],
+          'nn'    => table[:nn],
+          'oc'    => table[:oc],
+          'pl'    => table[:pl],
+          'pt'    => table[:pt],
+          'pt_BR' => table[:pt_BR],
+          'ro'    => table[:ro],
+          'ru'    => table[:ru],
+          'sa'    => table[:sa],
+          'se'    => table[:se],
+          'sk'    => table[:sk],
+          'sl'    => table[:sl],
+          'sq'    => table[:sq],
+          'sr'    => table[:sr],
+          'sv'    => table[:sv],
+          'ta'    => table[:ta],
+          'te'    => table[:te],
+          'th'    => table[:th],
+          'tk'    => table[:tk],
+          'tr'    => table[:tr],
+          'uk'    => table[:uk],
+          'ur'    => table[:ur],
+          'us'    => table[:en],
+          'vi'    => table[:vi],
+          'en'    => table[:en],
+          'xx'    => table[:en]
+        }
+      end
+      self
+    end
+  end
+end
+__END__
+Language Lists
+* po4a c:
+  <http://www.debian.org/international/l10n/po/>
+  Px[:lng_lst]=%w[am bg bn br ca cs cy da de el en eo es et eu fi fr ga gl he hi hr hy ia is it la lo lt lv ml mr nl nn no oc pl pt pt_BR ro ru sa se sk sl sq sr sv ta te th tk tr uk ur us vi]
+* polyglossia xlp:
+  <http://mirrors.ctan.org/macros/xetex/latex/polyglossia/polyglossia.pdf>
+  missing from (:c) list:
+    arabic asturian bahasai bahasam coptic divehi farsi lsorbian magyar scottish syriac usorbian
+note ISO_639-1
+  <http://en.wikipedia.org/wiki/ISO_639-1>
+  <http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes>
+also note ISO_639-2
+  <http://en.wikipedia.org/wiki/ISO_639-2>
+  <http://en.wikipedia.org/wiki/List_of_ISO_639-2_codes>
+
+Px[:lng_lst] # constants.rb
+
+
+
+module SiSU_text_translation
   class Language
     def initialize(md)
       @md=md
@@ -140,1642 +293,3 @@ module SiSU_i18n
     end
   end
 end
-module SiSU_Translate
-  require_relative 'sysenv'                             # sysenv.rb
-    include SiSU_Env; include SiSU_Param
-  class Source
-    def initialize(md,doc_lang,trans_str='')
-      @md,@doc_lang,@trans_str=md,doc_lang,trans_str
-      @lang_class=case @doc_lang
-      when /American/i;                  English.new(md,doc_lang,trans_str)    # tag depreciated, see iso 639-2
-      when /English/i;                   English.new(md,doc_lang,trans_str)
-      when /French/i;                    French.new(md,doc_lang,trans_str)
-      when /German/i;                    German.new(md,doc_lang,trans_str)
-      when /Italian/i;                   Italian.new(md,doc_lang,trans_str)
-      when /Spanish/i;                   Spanish.new(md,doc_lang,trans_str)
-      when /Brazilian(?: Portuguese)?/i; Portuguese.new(md,doc_lang,trans_str) # tag depreciated, see iso 639-2
-      when /Portuguese/i;                Portuguese.new(md,doc_lang,trans_str)
-      when /Swedish/i;                   Swedish.new(md,doc_lang,trans_str)
-      when /Danish/i;                    Danish.new(md,doc_lang,trans_str)
-      when /Finnish/i;                   Finnish.new(md,doc_lang,trans_str)
-      when /Norwegian/i;                 Norwegian.new(md,doc_lang,trans_str)
-      when /Icelandic/i;                 Icelandic.new(md,doc_lang,trans_str)
-      when /Dutch/i;                     Dutch.new(md,doc_lang,trans_str)
-      when /Estonian/i;                  Estonian.new(md,doc_lang,trans_str)
-      when /Hungarian/i;                 Hungarian.new(md,doc_lang,trans_str)
-      when /Polish/i;                    Polish.new(md,doc_lang,trans_str)
-      when /Romanian/i;                  Romanian.new(md,doc_lang,trans_str)
-      when /Russian/i;                   Russian.new(md,doc_lang,trans_str)
-      when /Greek/i;                     Greek.new(md,doc_lang,trans_str)
-      when /Ukranian/i;                  Ukranian.new(md,doc_lang,trans_str)
-      when /Turkish/i;                   Turkish.new(md,doc_lang,trans_str)
-      when /Slovenian/i;                 Slovenian.new(md,doc_lang,trans_str)
-      when /Croatian/i;                  Croatian.new(md,doc_lang,trans_str)
-      when /Slovak(?:ian)?/i;            Slovak.new(md,doc_lang,trans_str)
-      when /Czech/i;                     Czech.new(md,doc_lang,trans_str)
-      when /Bulgarian/i;                 Bulgarian.new(md,doc_lang,trans_str)
-      else                               English.new(md,doc_lang,trans_str)
-      end
-    end
-
-    def filename
-      @lang_class.filename
-    end
-    def description
-      @lang_class.description
-    end
-    def metadata
-      @lang_class.metadata
-    end
-    def filetype_description
-      @lang_class.filetype_description
-    end
-    def file_size
-      @lang_class.file_size
-    end
-    def sourcefile
-      @lang_class.sourcefile
-    end
-    def sourcefile_digest
-      @lang_class.sourcefile_digest
-    end
-    def full_title #dc
-      @lang_class.full_title
-    end
-    def title
-      @lang_class.title
-    end
-    def subtitle
-      @lang_class.subtitle
-    end
-    def author
-      @lang_class.author
-    end
-    def contributor
-      @lang_class.contributor
-    end
-    def translator
-      @lang_class.translator
-    end
-    def illustrator
-      @lang_class.illustrator
-    end
-    def publisher
-      @lang_class.publisher
-    end
-    def prepared_by
-      @lang_class.prepared_by
-    end
-    def digitized_by
-      @lang_class.digitized_by
-    end
-    def subject
-      @lang_class.subject
-    end
-    def description #dc (watch)
-      @lang_class.description
-    end
-    def abstract
-      @lang_class.abstract
-    end
-    def type
-      @lang_class.type
-    end
-    def rights
-      @lang_class.rights
-    end
-    def digitized_by
-      @lang_class.digitized_by
-    end
-    def date
-      @lang_class.date
-    end
-    def date_created
-      @lang_class.date_created
-    end
-    def date_available
-      @lang_class.date_available
-    end
-    def date_valid
-      @lang_class.date_valid
-    end
-    def date_modified
-      @lang_class.date_modified
-    end
-    def date_issued
-      @lang_class.date_issued
-    end
-    def language
-      @lang_class.language
-    end
-    def language_original
-      @lang_class.language_original
-    end
-    def format
-      @lang_class.format
-    end
-    def identifier
-      @lang_class.identifier
-    end
-    def source
-      @lang_class.source
-    end
-    def relation
-      @lang_class.relation
-    end
-    def coverage
-      @lang_class.coverage
-    end
-    def keywords
-      @lang_class.keywords
-    end
-    def comments
-      @lang_class.comments
-    end
-    def cls_loc
-      @lang_class.cls_loc
-    end
-    def cls_dewey
-      @lang_class.cls_dewey
-    end
-    def cls_oclc
-      @lang_class.cls_oclc
-    end
-    def cls_gutenberg
-      @lang_class.cls_gutenberg
-    end
-    def cls_isbn
-      @lang_class.cls_isbn
-    end
-    def prefix_a
-      @lang_class.prefix_a
-    end
-    def prefix_b
-      @lang_class.prefix_b
-    end
-    def topic_register
-      @lang_class.topic_register
-    end
-    def fns
-      @lang_class.fns
-    end
-    def word_count
-      @lang_class.word_count
-    end
-    def dgst
-      @lang_class.dgst
-    end
-    def sc_number
-      @lang_class.sc_number
-    end
-    def sc_date
-      @lang_class.sc_date
-    end
-    def last_generated
-      @lang_class.last_generated
-    end
-    def sisu_version
-      @lang_class.sisu_version
-    end
-    def ruby_version
-      @lang_class.ruby_version
-    end
-    def suggested_links
-      @lang_class.suggested_links
-    end
-    def language_version_list
-      @lang_class.language_version_list
-    end
-    def language
-      @lang_class.language
-    end
-    def manifest_description
-      @lang_class.manifest_description
-    end
-    def manifest_description_output
-      @lang_class.manifest_description_output
-    end
-    def manifest_description_metadata
-      @lang_class.manifest_description_metadata
-    end
-    def language_list_translated
-      @lang_class.language_list
-    end
-    def language_list
-      lang=case @trans_str
-      when /American/i;                  'American English'                    # tag depreciated, see iso 639-2
-      when /English/i;                   'English'
-      when /French/i;                    'français'
-      when /German/i;                    'Deutsch'
-      when /Italian/i;                   'Italiano'
-      when /Spanish/i;                   'español'
-      when /Brazilian(?: Portuguese)?/i; 'Brazilian Português'                 # tag depreciated, see iso 639-2
-      when /Portuguese/i;                'Português'
-      when /Swedish/i;                   'svenska'
-      when /Danish/i;                    'dansk'
-      when /Finnish/i;                   'suomi'
-      when /Norwegian/i;                 'norsk'
-      when /Icelandic/i;                 'Icelandic'
-      when /Dutch/i;                     'Nederlands'
-      when /Estonian/i;                  'Estonian'
-      when /Hungarian/i;                 'Hungarian'
-      when /Polish/i;                    'polski'
-      when /Romanian/i;                  'română'
-      when /Russian/i;                   'Русский (Russkij)'
-      when /Greek/i;                     'Ελληνικά (Ellinika)'
-      when /Ukranian/i;                  'українська (ukrajins\'ka)'
-      when /Turkish/i;                   'Türkçe'
-      when /Slovenian/i;                 'Slovenian'
-      when /Croatian/i;                  'Croatian'
-      when /Slovak(?:ian)?/i;            'slovensky'            #slovensky ?
-      when /Czech/i;                     'česky'
-      when /Bulgarian/i;                 'Български (Bəlgarski)'
-      when /Japanese/i;                  '日本語 (Nihongo)'
-      when /Korean/i;                    '한국어 (Hangul)'
-      #when /Catalan/i;                   'català'
-      else                               'English'
-      end
-      #check on 中文  and عربي
-    end
-  end
-  class English
-    def initialize(md,doc_lang,trans_str)
-      @md,@doc_lang,@trans_str=md,doc_lang,trans_str
-    end
-    def filename
-      'filename'
-    end
-    def description
-      'description'
-    end
-    def filetype_description
-      'filetype description'
-    end
-    def metadata
-      'metadata'
-    end
-    def file_size
-      'file size'
-    end
-    def full_title #dc
-      'Title'
-    end
-    def title
-      'Title'
-    end
-    def subtitle
-      'Subtitle'
-    end
-    def author
-      'Author'
-    end
-    def author #dc
-      'Creator'
-    end
-    def contributor #dc
-      'Contributor'
-    end
-    def translator
-      'Translator'
-    end
-    def illustrator
-      'Illustrator'
-    end
-    def publisher #dc
-      'Publisher'
-    end
-    def prepared_by
-      'Prepared by'
-    end
-    def digitized_by
-      'Digitized by'
-    end
-    def subject #dc
-      'Subject'
-    end
-    def description #dc (watch)
-      'Description'
-    end
-    def abstract #dc
-      'Abstract'
-    end
-    def type #dc
-      'Type'
-    end
-    def rights #dc
-      'Rights'
-    end
-    def date #dc
-      'Date'
-    end
-    def date_created #dc
-      'Date created'
-    end
-    def date_issued #dc
-      'Date issued'
-    end
-    def date_available #dc
-      'Date available'
-    end
-    def date_modified #dc
-      'Date modified'
-    end
-    def date_valid #dc
-      'Date valid'
-    end
-    def language #dc
-      'Language'
-    end
-    def language_original
-      'Original Language'
-    end
-    def format #dc
-      'Format'
-    end
-    def identifier #dc
-      'Identifier'
-    end
-    def source #dc
-      'Source'
-    end
-    def relation #dc
-      'Relation'
-    end
-    def coverage #dc
-      'Coverage'
-    end
-    def keywords
-      'Keywords'
-    end
-    def comments
-      'Comments'
-    end
-    def cls_loc
-      'Classify Library of Congress'
-    end
-    def cls_dewey
-      'Classify Dewey'
-    end
-    def cls_oclc
-      'Classify OCLC number'
-    end
-    def cls_gutenberg
-      'Classify Project Gutenberg'
-    end
-    def cls_isbn
-      'Classify ISBN'
-    end
-    def prefix_a
-      'Prefix (a)'
-    end
-    def prefix_b
-      'Prefix (b)'
-    end
-    def topic_register
-      'Topics Registered'
-    end
-    def sourcefile
-      'Sourcefile'
-    end
-    def word_count
-      'Word Count approximate'
-    end
-    def sourcefile_digest
-      'Sourcefile Digest'
-    end
-    def digest_md5
-      'Sourcefile Digest (md5)'
-    end
-    def digest_sha256
-      'Sourcefile Digest (sha256)'
-    end
-    def sc_number
-      'Document (RCS/CVS) number'
-    end
-    def sc_date
-      'Document (RCS/CVS) number'
-    end
-    def last_generated
-      'Document (dal) last generated'
-    end
-    def sisu_version
-      'Generated by'
-    end
-    def ruby_version
-      'Ruby version'
-    end
-    def suggested_links
-      'metadata suggested links'
-    end
-    def language_version_list
-      'Document Language Versions, manifests'
-    end
-    def manifest_description
-      'SiSU manifest of document filetypes and metadata'
-    end
-    def manifest_description_output
-      'Available document filetypes'
-    end
-    def manifest_description_metadata
-      'Document Metadata'
-    end
-    def language_list_translated
-      lang=case @trans_str
-      when /American/i;                  'American English'                    # tag depreciated, see iso 639-2
-      when /English/i;                   'English'
-      when /French/i;                    'French'
-      when /German/i;                    'German'
-      when /Italian/i;                   'Italian'
-      when /Spanish/i;                   'Spanish'
-      when /Brazilian(?: Portuguese)?/i; 'Brazilian Portuguese'                # tag depreciated, see iso 639-2
-      when /Portuguese/i;                'Portuguese'
-      when /Swedish/i;                   'Swedish'
-      when /Danish/i;                    'Danish'
-      when /Finnish/i;                   'Finnish'
-      when /Norwegian/i;                 'Norwegian'
-      when /Icelandic/i;                 'Icelandic'
-      when /Dutch/i;                     'Dutch'
-      when /Estonian/i;                  'Estonian'
-      when /Hungarian/i;                 'Hungarian'
-      when /Polish/i;                    'Polish'
-      when /Romanian/i;                  'Romanian'
-      when /Russian/i;                   'Russian'
-      when /Greek/i;                     'Greek'
-      when /Ukranian/i;                  'Ukranian'
-      when /Turkish/i;                   'Turkish'
-      when /Slovenian/i;                 'Slovenian'
-      when /Croatian/i;                  'Croatian'
-      when /Slovak(?:ian)?/i;            'Slovakian'
-      when /Czech/i;                     'Czech'
-      when /Bulgarian/i;                 'Bulgarian'
-      else @trans_str
-      end
-    end
-  end
-  class French
-    def initialize(md,doc_lang,trans_str)
-      @md,@doc_lang,@trans_str=md,doc_lang,trans_str
-    end
-    def filename
-      'nom de fichier'
-    end
-    def description
-      'description'
-    end
-    def filetype_description
-      description
-    end
-    def metadata
-      'metadonnées'
-    end
-    def file_size
-      'taille'
-    end
-    def full_title #dc
-      'Titre'
-    end
-    def title
-      'Titre'
-    end
-    def subtitle
-      'Sous titre'
-    end
-    def author
-      'Auteur'
-    end
-    def author #dc
-      'Auteur'
-    end
-    def contributor #dc
-      'Contributeur'
-    end
-    def translator
-      'Traducteur'
-    end
-    def illustrator
-      'Illustrateur'
-    end
-    def publisher #dc
-      'Éditeur'
-    end
-    def prepared_by
-      'Préparé par'
-    end
-    def digitized_by
-      'Numérisé par'
-    end
-    def subject #dc
-      'Sujet'
-    end
-    def description #dc (watch)
-      'Description'
-    end
-    def abstract #dc
-      'Résumé'
-    end
-    def type #dc
-      'Type'
-    end
-    def rights #dc
-      'Droits relatifs à la ressource'
-    end
-    def date #dc
-      'Date'
-    end
-    def date_created #dc
-      'Date de création'
-    end
-    def date_issued #dc
-      'Date de publication'
-    end
-    def date_available #dc
-      'Date de mise à disposition'
-    end
-    def date_modified #dc
-      'Date de modification'
-    end
-    def date_valid #dc
-      'Date de validité'
-    end
-    def language #dc
-      'Langue'
-    end
-    def language_original
-      'Langue originale'
-    end
-    def format #dc
-      'Format'
-    end
-    def identifier #dc
-      'Identifiant'
-    end
-    def source #dc
-      'Source'
-    end
-    def relation #dc
-      'Lien'
-    end
-    def coverage #dc
-      'Portée du document'
-    end
-    def keywords
-      'Mots clef'
-    end
-    def comments
-      'Commentaires'
-    end
-    def cls_loc
-      'Classification de la bibliothèque du congres'
-    end
-    def cls_dewey
-      'Classification Dewey'
-    end
-    def cls_oclc # fix
-      'Classify OCLC number'
-    end
-    def cls_gutenberg
-      'Classification du project Gutenberg'
-    end
-    def cls_isbn
-      'Classification ISBN'
-    end
-    def prefix_a
-      'Préfixe (a)'
-    end
-    def prefix_b
-      'Préfixe (b)'
-    end
-    def topic_register
-      'Topics Registered'
-    end
-    def sourcefile
-      'Fichier source'
-    end
-    def word_count
-      'Nombre approximatif de mots'
-    end
-    def sourcefile_digest
-      'Condensé du fichier source'
-    end
-    def digest_md5
-      'Condensé du fichier source (md5)'
-    end
-    def digest_sha256
-      'Condensé du fichier source (sha256)'
-    end
-    def sc_number
-      'Numéro (RCS/CVS) du document'
-    end
-    def sc_date
-      'Numéro (RCS/CVS) du document'
-    end
-    def last_generated
-      'Dernière production du document (metaverse)'
-    end
-    def sisu_version
-      'Généré par'
-    end
-    def ruby_version
-      'Version de Ruby'
-    end
-    def suggested_links
-      'Liens suggérés'
-    end
-    def language_version_list
-      'Versions des langues du document, manifestes'
-    end
-    def manifest_description
-      'SiSU manifest of document filetypes and metadata'
-    end
-    def manifest_description_output
-      'Manifeste SiSU du document généré'
-    end
-    def manifest_description_metadata
-      'Manifeste SiSU des métadonnées du document'
-    end
-    def language_list_translated
-      lang=case @trans_str
-      when /American/i;                  'Anglais americain'                   # tag depreciated, see iso 639-2
-      when /English/i;                   'Anglais'
-      when /French/i;                    'Français'
-      when /German/i;                    'Allemand'
-      when /Italian/i;                   'Italien'
-      when /Spanish/i;                   'Espagnol'
-      when /Brazilian(?: Portuguese)?/i; 'Portugais brésilien'                 # tag depreciated, see iso 639-2
-      when /Portuguese/i;                'Portugais'
-      when /Swedish/i;                   'Suédois'
-      when /Danish/i;                    'Danois'
-      when /Finnish/i;                   'Finnois'
-      when /Norwegian/i;                 'Norvégien'
-      when /Icelandic/i;                 'Islandais'
-      when /Dutch/i;                     'Néerlandais'
-      when /Estonian/i;                  'Estonien'
-      when /Hungarian/i;                 'Hongrois'
-      when /Polish/i;                    'Polonais'
-      when /Romanian/i;                  'Roumain'
-      when /Russian/i;                   'Russe'
-      when /Greek/i;                     'Grec'
-      when /Ukranian/i;                  'Ukrainien'
-      when /Turkish/i;                   'Turc'
-      when /Slovenian/i;                 'Slovène'
-      when /Croatian/i;                  'Croate'
-      when /Slovak(?:ian)?/i;            'Slovaque'
-      when /Czech/i;                     'Tcheque'
-      when /Bulgarian/i;                 'Bulgare'
-      else @trans_str
-      end
-    end
-  end
-  class German
-    def initialize(md,doc_lang,trans_str)
-      @md,@doc_lang,@trans_str=md,doc_lang,trans_str
-    end
-    def filename
-      'Dateiname'
-    end
-    def description
-      'Beschreibung'
-    end
-    def filetype_description
-      description
-    end
-    def metadata
-      'Metadata'
-    end
-    def file_size
-      'Dateigrösse'
-    end
-    def full_title #dc
-      'Titel'
-    end
-    def title
-      'Titel'
-    end
-    def subtitle
-      'Untertitel'
-    end
-    def author
-      'Autor'
-    end
-    def contributor #dc
-      'Mitautor'
-    end
-    def translator
-      'Übersetzung'
-    end
-    def illustrator
-      'Illustrator'
-    end
-    def publisher
-      'Herausgeber'
-    end
-    def prepared_by
-      'gesetzt von'
-    end
-    def digitized_by
-      'digitalisiert von'
-    end
-    def subject
-      'Titel'
-    end
-    def description #dc (watch)
-      'Beschreibung'
-    end
-    def abstract #dc
-      'Abstract'
-    end
-    def type
-      'Typ'
-    end
-    def rights
-      'Rechte'
-    end
-    def date
-      'Datum'
-    end
-    def date_created
-      'Erstellung'
-    end
-    def date_issued
-      'Herausgabe'
-    end
-    def date_available
-      'Veröffentlichung'
-    end
-    def date_modified
-      'Modifikation'
-    end
-    def date_valid
-      'Gültigkeit'
-    end
-    def language
-      'Sprache'
-    end
-    def language_original
-      'Ursprungssprache'
-    end
-    def format #dc
-      'Format'
-    end
-    def identifier #dc
-      'Bezeichnung'
-    end
-    def source #dc
-      'Quelle'
-    end
-    def relation #dc
-      'Beziehung'
-    end
-    def coverage #dc
-      'Eingrenzung'
-    end
-    def keywords
-      'Schlüsselwörter'
-    end
-    def comments
-      'Kommentare'
-    end
-    def cls_loc
-      'Klassifikation nach Library of Congress'
-    end
-    def cls_dewey
-      'Klassifikation nach Dewey'
-    end
-    def cls_oclc # fix
-      'Classify OCLC number'
-    end
-    def cls_gutenberg
-      'Klassifikation nach Projekt Gutenberg'
-    end
-    def cls_isbn
-      'Klassifikation nach ISBN'
-    end
-    def prefix_a
-      'Präfix (a)'
-    end
-    def prefix_b
-      'Präfix (b)'
-    end
-    def topic_register
-      'Topics Registered'
-    end
-    def sourcefile
-      'Quelldatei'
-    end
-    def word_count
-      'Anzahl Wörter'
-    end
-    def sourcefile_digest
-      'Quelldatei Digest'
-    end
-    def digest_md5
-      'Prüfsumme der Quelldatei (MD5)'
-    end
-    def digest_sha256
-      'Prüfsumme der Quelldatei (SHA256)'
-    end
-    def sc_number
-      'Dokumentversion (RCS/CVS)'
-    end
-    def sc_date
-      'Dokumentdatum (RCS/CVS)'
-    end
-    def last_generated
-      'Letzte Erstellung (metaverse)'
-    end
-    def sisu_version
-      'erstellt bei'
-    end
-    def ruby_version
-      'Ruby Version'
-    end
-    def suggested_links
-      'empfohlene Links'
-    end
-    def language_version_list
-      'verfügbare Sprachen'
-    end
-    def manifest_description
-      'SiSU manifest of document filetypes and metadata'
-    end
-    def manifest_description_output
-      'SiSU Zusammenfassung des Dokumentes'
-    end
-    def manifest_description_metadata
-      'SiSU Zusammenfassung der Metadaten'
-    end
-    def language_list_translated
-      lang=case @trans_str
-      when /American/i;                  'Amerikanisch-Englisch'               # tag depreciated, see iso 639-2
-      when /English/i;                   'Englisch'
-      when /French/i;                    'Französisch'
-      when /German/i;                    'Deutsch'
-      when /Italian/i;                   'Italienisch'
-      when /Spanish/i;                   'Spanisch'
-      when /Brazilian(?: Portuguese)?/i; 'Brasilianisch-Portugiesisch'         # tag depreciated, see iso 639-2
-      when /Portuguese/i;                'Portugiesisch'
-      when /Swedish/i;                   'Schwedisch'
-      when /Danish/i;                    'Dänisch'
-      when /Finnish/i;                   'Finnisch'
-      when /Norwegian/i;                 'Norwegisch'
-      when /Icelandic/i;                 'Isländisch'
-      when /Dutch/i;                     'Niederländisch'
-      when /Estonian/i;                  'Estnisch'
-      when /Hungarian/i;                 'Ungarisch'
-      when /Polish/i;                    'Polnisch'
-      when /Romanian/i;                  'Rumänisch'
-      when /Russian/i;                   'Russisch'
-      when /Greek/i;                     'Griechisch'
-      when /Ukranian/i;                  'Ukrainisch'
-      when /Turkish/i;                   'Türkisch'
-      when /Slovenian/i;                 'Slovenisch'
-      when /Croatian/i;                  'Kroatisch'
-      when /Slovak(?:ian)?/i;            'Slovakisch'
-      when /Czech/i;                     'Tschechisch'
-      when /Bulgarian/i;                 'Bulgarisch'
-      else @trans_str
-      end
-    end
-  end
-  class Spanish
-    def initialize(md,doc_lang,trans_str)
-      @md,@doc_lang,@trans_str=md,doc_lang,trans_str
-    end
-    def filename
-     'nombre del fichero'
-    end
-    def description
-      'descripción'
-    end
-    def filetype_description
-      description
-    end
-   def metadata
-     'metadatos'
-   end
-   def file_size
-     'tamaño del fichero'
-   end
-   def full_title #dc
-     'Título'
-   end
-   def title
-     'Título'
-   end
-   def subtitle
-     'Subtítulo'
-   end
-   def author #dc
-     'Creador'
-   end
-   def contributor #dc
-     'Contribuidor'
-   end
-   def translator
-     'Traductor'
-   end
-   def illustrator
-     'Ilustrador'
-   end
-   def publisher #dc
-     'Editor'
-   end
-   def prepared_by
-     'Preparado por'
-   end
-   def digitized_by
-     'Digitalizado por'
-   end
-   def subject #dc
-     'Asunto'
-   end
-   def description #dc (watch)
-     'Descripción'
-   end
-   def abstract #dc
-     'Resumen'
-   end
-   def type #dc
-     'Tipo'
-   end
-   def rights #dc
-     'Derechos'
-   end
-   def date #dc
-     'Fecha'
-   end
-   def date_created #dc
-     'Fecha de creación'
-   end
-   def date_issued #dc
-     'Fecha de publicación'
-   end
-   def date_available #dc
-     'Fecha de disponibilidad'
-   end
-   def date_modified #dc
-     'Fecha de modificación'
-   end
-   def date_valid #dc
-     'Fecha de valided'
-   end
-   def language #dc
-     'Idioma'
-   end
-   def language_original
-     'Lenguaje original'
-   end
-   def format #dc
-     'Formato'
-   end
-   def identifier #dc
-     'Identificador'
-   end
-   def source #dc
-     'Fuente'
-   end
-   def relation #dc
-     'Relación'
-   end
-   def coverage #dc
-     'Cobertura'
-   end
-   def keywords
-     'Palabras claves'
-   end
-   def comments
-     'Comentarios'
-   end
-   def cls_loc
-     'Clasificación Biblioteca del Congreso'
-   end
-   def cls_dewey
-     'Clasificación Dewey'
-   end
-    def cls_oclc # fix
-      'Classify OCLC number'
-    end
-   def cls_gutenberg
-     'Clasificación Proyecto Gutenberg'
-   end
-   def cls_isbn
-     'Clasificación ISBN'
-   end
-   def prefix_a
-     'Prefijo (a)'
-   end
-   def prefix_b
-     'Prefijo (b)'
-   end
-    def topic_register
-      'Topics Registered'
-    end
-   def sourcefile
-     'Fichero fuente'
-   end
-   def word_count
-     'Número de palabras apróximado'
-   end
-   def sourcefile_digest
-     'Resumen del fichero fuente'
-   end
-   def digest_md5
-     'Resumen del fichero fuente (md5)'
-   end
-   def digest_sha256
-     'Resumen del fichero fuente (sha256)'
-   end
-   def sc_number
-     'Versión (RCS/CVS) del documento'
-   end
-   def sc_date
-     'Versión (RCS/CVS) del documento'
-   end
-   def last_generated
-     'Última generación (metaverse) del documento'
-   end
-   def sisu_version
-     'Generado por'
-   end
-   def ruby_version
-     'Versión de Ruby'
-   end
-   def suggested_links
-     'enlaces sugeridos de metadatos'
-   end
-   def language_version_list
-     'Document Language Versions, manifests'
-   end
-    def manifest_description
-      'SiSU manifest of document filetypes and metadata'
-    end
-   def manifest_description_output
-     'Manifiesto SiSU de salida generada'
-   end
-   def manifest_description_metadata
-     'Manifiesto SiSU de metadatos de documento'
-   end
-   def language_list_translated
-     lang=case @trans_str
-     when /American/i;                  'Inglés Americano'                     # tag depreciated, see iso 639-2
-     when /English/i;                   'Inglés'
-     when /French/i;                    'Francés'
-     when /German/i;                    'Alemán'
-     when /Italian/i;                   'Italiano'
-     when /Spanish/i;                   'Español'
-     when /Brazilian(?: Portuguese)?/i; 'Portugués de Brasil'                  # tag depreciated, see iso 639-2
-     when /Portuguese/i;                'Portugués'
-     when /Swedish/i;                   'Sueco'
-     when /Danish/i;                    'Danés'
-     when /Finnish/i;                   'Finés'
-     when /Norwegian/i;                 'Noruego'
-     when /Icelandic/i;                 'Islandés'
-     when /Dutch/i;                     'Holandés'
-     when /Estonian/i;                  'Estonio'
-     when /Hungarian/i;                 'Húngaro'
-     when /Polish/i;                    'Polaco'
-     when /Romanian/i;                  'Rumano'
-     when /Russian/i;                   'Ruso'
-     when /Greek/i;                     'Griego'
-     when /Ukranian/i;                  'Ucraniano'
-     when /Turkish/i;                   'Turco'
-     when /Slovenian/i;                 'Eslovaco'
-     when /Croatian/i;                  'Croata'
-     when /Slovak(?:ian)?/i;            'Eslovaco'
-     when /Czech/i;                     'Checo'
-     when /Bulgarian/i;                 'Búlgaro'
-     else @trans_str
-     end
-   end
-  end
-  class Italian
-    def initialize(md,doc_lang,trans_str)
-      @md,@doc_lang,@trans_str=md,doc_lang,trans_str
-    end
-    def filename
-      'nome del file'
-    end
-    def description
-      'descrizione'
-    end
-    def filetype_description
-      description
-    end
-    def metadata
-      'metadati'
-    end
-    def file_size
-      'dimensione'
-    end
-    def full_title #dc
-      'Titolo'
-    end
-    def title
-      'Titolo'
-    end
-    def subtitle
-      'Sottotitolo'
-    end
-    def author #dc
-      'Autore'
-    end
-    def contributor #dc
-      'Contributore'
-    end
-    def translator
-      'Traduttore'
-    end
-    def illustrator
-      'Illustratore'
-    end
-    def publisher #dc
-      'Casa editrice'
-    end
-    def prepared_by
-      'Preparato da'
-    end
-    def digitized_by
-      'Convertito in digitale da'
-    end
-    def subject #dc
-      'Oggetto'
-    end
-    def description #dc (watch)
-      'Descrizione'
-    end
-    def abstract #dc
-      'Abstract'
-    end
-    def type #dc
-      'Tipo'
-    end
-    def rights #dc
-      'Diritti del lettore'
-    end
-    def date #dc
-      'Data'
-    end
-    def date_created #dc
-      'Data di creazione'
-    end
-    def date_issued #dc
-      'Data di pubblicazione'
-    end
-    def date_available #dc
-      'Data di effettiva disponibilità'
-    end
-    def date_modified #dc
-      'Data di ultima modifica'
-    end
-    def date_valid #dc
-      'Data di inizo validità'
-    end
-    def language #dc
-      'Lingua'
-    end
-    def language_original
-      'Lingua originale'
-    end
-    def format #dc
-      'Formato'
-    end
-    def identifier #dc
-      'Indentificatore'
-    end
-    def source #dc
-      'Fonte'
-    end
-    def relation #dc
-      'Collegamento'
-    end
-    def coverage #dc
-      'Ambito'
-    end
-    def keywords
-      'Parole chiave'
-    end
-    def comments
-      'Commenti'
-    end
-    def cls_loc
-      'Classificazione della Library of Congress'
-    end
-    def cls_dewey
-      'Classificazione Dewey'
-    end
-    def cls_oclc # fix
-      'Classify OCLC number'
-    end
-    def cls_gutenberg
-      'Classificazione del Progetto Gutenberg'
-    end
-    def cls_isbn
-      'Numero ISBN'
-    end
-    def prefix_a
-      'Premessa (a)'
-    end
-    def prefix_b
-      'Premessa (b)'
-    end
-    def topic_register
-      'Topics Registered'
-    end
-    def sourcefile
-      'Sorgente'
-    end
-    def word_count
-      'Numero approssimativo di parole'
-    end
-    def sourcefile_digest
-      'Checksum file sorgente'
-    end
-    def digest_md5
-      'Checksum file sorgente (md5)'
-    end
-    def digest_sha256
-      'Checksum file sorgente (sha256)'
-    end
-    def sc_number
-      'Numero di revisione (RCS/CVS)'
-    end
-    def sc_date
-      'Numero di revisione (RCS/CVS)'
-    end
-    def last_generated
-      'Data di ultima generazione (dal metaverse)'
-    end
-    def sisu_version
-      'Generato da'
-    end
-    def ruby_version
-      'Ruby versione'
-    end
-    def suggested_links
-      'Link suggeriti'
-    end
-    def language_version_list
-      'Traduzioni disponibili'
-    end
-    def manifest_description
-      'SiSU manifest of document filetypes and metadata'
-    end
-    def manifest_description_output
-      'Inventario SiSU dell\'output generato'
-    end
-    def manifest_description_metadata
-      'Inventario SiSU dei metadati'
-    end
-    def language_list_translated
-      lang=case @trans_str
-      when /American/i;                  'Inglese USA'                         # tag depreciated, see iso 639-2
-      when /English/i;                   'Inglese'
-      when /French/i;                    'Francese'
-      when /German/i;                    'Tedesco'
-      when /Italian/i;                   'Italiano'
-      when /Spanish/i;                   'Spagnolo'
-      when /Brazilian(?: Portuguese)?/i; 'Portoguese (Brasile)'                # tag depreciated, see iso 639-2
-      when /Portuguese/i;                'Portoguese'
-      when /Swedish/i;                   'Svedese'
-      when /Danish/i;                    'Danese'
-      when /Finnish/i;                   'Finlandese'
-      when /Norwegian/i;                 'Norvegese'
-      when /Icelandic/i;                 'Islandese'
-      when /Dutch/i;                     'Olandese'
-      when /Estonian/i;                  'Estone'
-      when /Hungarian/i;                 'Ungherese'
-      when /Polish/i;                    'Polacco'
-      when /Romanian/i;                  'Romeno'
-      when /Russian/i;                   'Russo'
-      when /Greek/i;                     'Greco'
-      when /Ukranian/i;                  'Ucraino'
-      when /Turkish/i;                   'Turco'
-      when /Slovenian/i;                 'Sloveno'
-      when /Croatian/i;                  'Croato'
-      when /Slovak(?:ian)?/i;            'Slovacco'
-      when /Czech/i;                     'Ceco'
-      when /Bulgarian/i;                 'Bulgaro'
-      else @trans_str
-      end
-    end
-  end
-  class Finnish
-    def initialize(md,doc_lang,trans_str)
-      @md,@doc_lang,@trans_str=md,doc_lang,trans_str
-    end
-    def filename
-     'tiedostonimi'
-    end
-    def description
-      'kuvaus'
-    end
-    def filetype_description
-      description
-    end
-    def metadata
-      'metadata'
-    end
-    def file_size
-      'tiedoston koko'
-    end
-    def full_title #dc
-      'otsikko'
-    end
-    def title
-      'Otsikko'
-    end
-    def subtitle
-      'Alaotsikko'
-    end
-    def author #dc
-      'tekijä'
-    end
-    def contributor #dc
-      'osallistuja'
-    end
-    def translator
-      'Kääntäjä'
-    end
-    def illustrator
-      'Kuvittaja'
-    end
-    def publisher #dc
-      'julkaisija'
-    end
-    def prepared_by
-      'Valmistaja'
-    end
-    def digitized_by
-      'Digitalisoinut'
-    end
-    def subject #dc
-      'aihe'
-    end
-    def description #dc (watch)
-      'kuvaus'
-    end
-    def abstract #dc
-      'tiivistelmä'
-    end
-    def type #dc
-      'tyyppi'
-    end
-    def rights #dc
-      'oikeudet'
-    end
-    def date #dc
-      'päiväys'
-    end
-    def date_created #dc
-      'luontipäivä'
-    end
-    def date_issued #dc
-      'julkaisupäivä'
-    end
-    def date_available #dc
-      'saantipäivä'
-    end
-    def date_modified #dc
-      'muokkauspäivä'
-    end
-    def date_valid #dc
-      'kelpoisuuspäivä'
-    end
-    def language #dc
-      'kieli'
-    end
-    def language_original
-      'Alkuperäiskieli'
-    end
-    def format #dc
-      'muoto'
-    end
-    def identifier #dc
-      'tunnus'
-    end
-    def source #dc
-      'lähde'
-    end
-    def relation #dc
-      'suhde'
-    end
-    def coverage #dc
-      'kattavuus'
-    end
-    def keywords
-      'Avainsanat'
-    end
-    def comments
-      'Kommentit'
-    end
-    def cls_loc
-      'Classify Library of Congress'
-    end
-    def cls_dewey
-      'Classify Dewey'
-    end
-    def cls_oclc # fix
-      'Classify OCLC number'
-    end
-    def cls_gutenberg
-      'Classify Project Gutenberg'
-    end
-    def cls_isbn
-      'Classify ISBN'
-    end
-    def prefix_a
-      'Prefix (a)'
-    end
-    def prefix_b
-      'Prefix (b)'
-    end
-    def topic_register
-      'Topics Registered'
-    end
-    def sourcefile
-      'Lähdetiedosto'
-    end
-    def word_count
-      'Arvioitu sanamäärä'
-    end
-    def sourcefile_digest
-      'Lähdetiedoston tiiviste'
-    end
-    def digest_md5
-      'Lähdetiedoston tiiviste (md5)'
-    end
-    def digest_sha256
-      'Lähdetiedoston tiiviste (sha256)'
-    end
-    def sc_number
-      'Dokumentin RCS/CVS-numero'
-    end
-    def sc_date
-      'Dokumentin RCS/CVS-päiväys'
-    end
-    def last_generated
-      'Viimeksi tuotettu dokumentti (metaverse)'
-    end
-    def sisu_version
-      'Generoinut'
-    end
-    def ruby_version
-      'Ruby-versio'
-    end
-    def suggested_links
-      'metadatan ehdottamat linkit'
-    end
-    def language_version_list
-      'Dokumentin kieliversiot, manifestit'
-    end
-    def manifest_description
-      'SiSU manifest of document filetypes and metadata'
-    end
-    def manifest_description_output
-      'Tuotetun tuloksen SISU-manifesti'
-    end
-    def manifest_description_metadata
-      'Dokumenttimetadatan SISU-manifesti'
-    end
-    def language_list_translated
-      lang=case @trans_str
-      when /American/i;                  'Amerikanenglanti'                    # tag depreciated, see iso 639-2
-      when /English/i;                   'Englanti'
-      when /French/i;                    'Ranska'
-      when /German/i;                    'Saksa'
-      when /Italian/i;                   'Italia'
-      when /Spanish/i;                   'Espanja'
-      when /Brazilian(?: Portuguese)?/i; 'Brasilian portugali'                 # tag depreciated, see iso 639-2
-      when /Portuguese/i;                'Portugali'
-      when /Swedish/i;                   'Ruotsi'
-      when /Danish/i;                    'Tanska'
-      when /Finnish/i;                   'Suomi'
-      when /Norwegian/i;                 'Norja'
-      when /Icelandic/i;                 'Islanti'
-      when /Dutch/i;                     'Hollanti'
-      when /Estonian/i;                  'Viro'
-      when /Hungarian/i;                 'Unkari'
-      when /Polish/i;                    'Puola'
-      when /Romanian/i;                  'Romania'
-      when /Russian/i;                   'Venäjä'
-      when /Greek/i;                     'Kreikka'
-      when /Ukranian/i;                  'Ukraina'
-      when /Turkish/i;                   'Turkki'
-      when /Slovenian/i;                 'Slovenia'
-      when /Croatian/i;                  'Kroatia'
-      when /Slovak(?:ian)?/i;            'Slovakki'
-      when /Czech/i;                     'Tsekki'
-      when /Bulgarian/i;                 'Bulgaria'
-      else @trans_str
-      end
-    end
-  end
-  class Porguguese            < English
-  end
-  class Swedish               < English
-  end
-  class Danish                < English
-  end
-  class Norwegian             < English
-  end
-  class Icelandic             < English
-  end
-  class Dutch                 < English
-  end
-  class Estonian              < English
-  end
-  class Hungarian             < English
-  end
-  class Polish                < English
-  end
-  class Romanian              < English
-  end
-  class Russian               < English
-  end
-  class Greek                 < English
-  end
-  class Ukranian              < English
-  end
-  class Turkish               < English
-  end
-  class Croatian              < English
-  end
-  class Slovakian             < English
-  end
-  class Czech                 < English
-  end
-  class Bulgarian             < English
-  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/v3/manifest.rb b/lib/sisu/v3/manifest.rb
index 98ccddb4..4373ad26 100644
--- a/lib/sisu/v3/manifest.rb
+++ b/lib/sisu/v3/manifest.rb
@@ -59,7 +59,7 @@
 module SiSU_Manifest
   require_relative 'sysenv'                             # sysenv.rb
     include SiSU_Env
-  require_relative 'i18n'                               # i18n.rb
+  require_relative 'prog_text_translation'              # prog_text_translation.rb
   require_relative 'particulars'                        # particulars.rb
     include SiSU_Particulars
   require_relative 'html_minitoc'                       # html_minitoc.rb
@@ -73,7 +73,7 @@ module SiSU_Manifest
       @opt=opt
       @particulars=SiSU_Particulars::Combined_singleton.instance.get_all(opt)
       l=SiSU_Env::Standardise_language.new(@opt.lng).language
-      @doc_language=l[:l]
+      @doc_language=l[:n]
     end
     def read
       begin
@@ -109,7 +109,7 @@ module SiSU_Manifest
         @@dg ||=SiSU_Env::Info_env.new.digest.type
         @dg=@@dg
         l=SiSU_Env::Standardise_language.new(@md.opt.lng).language
-        @language=l[:l]
+        @language=l[:n]
         @translate=SiSU_Translate::Source.new(@md,@language)
         @brace_url=SiSU_Viz::Skin.new.url_decoration
       end
@@ -149,7 +149,7 @@ module SiSU_Manifest
         flv=@env.published_manifests?(@base_path)
         @manifest[:html] << %{<tr><th class="left"><div id="horizontal_links"><ul id="horizontal">\n}
         flv.each do |l|
-          lang=SiSU_Translate::Source.new(@md,@language,l[:l]).language_list
+          lang=SiSU_Translate::Source.new(@md,@language,l[:n]).language_list
           @manifest[:txt] << "#{l[:m]} #{lang}\n"
           @manifest[:html] << %{<li class="norm"><a href="#{l[:m]}">#{lang}</a>&nbsp;&nbsp;&nbsp;</li>}
         end
@@ -158,7 +158,7 @@ module SiSU_Manifest
       def published_languages(id,file)
         flv=@env.published_manifests?(@base_path)
         flv.each do |l|
-          lang=SiSU_Translate::Source.new(@md,@language,l[:l]).language_list
+          lang=SiSU_Translate::Source.new(@md,@language,l[:n]).language_list
           @manifest[:txt] << "#{l[:m]} #{lang}\n"
           @manifest[:html] << %{<tr><th class="left"><p class="bold"><a href="#{l[:m]}">#{lang}</a></p></th><td><p class="norm">#{lang}</p><p class="tiny">#{@brace_url.xml_open}<a href="#{@base_url}/#{l[:m]}">#{@base_url}/#{l[:m]}</a>#{@brace_url.xml_close}</p></td><td class="right"><p class="right">&nbsp;</p></td></tr>\n}
         end
diff --git a/lib/sisu/v3/param.rb b/lib/sisu/v3/param.rb
index 357bc725..87a556ec 100644
--- a/lib/sisu/v3/param.rb
+++ b/lib/sisu/v3/param.rb
@@ -1241,9 +1241,9 @@ module SiSU_Param
         end
         unless fn_set_lang[:d]==true #decide, naming convention overrides other settings, within document, etc.
           @language[:code]=fn_set_lang[:c]
-          @language[:name]=fn_set_lang[:l]
+          @language[:name]=fn_set_lang[:n]
         end
-        @fnl=@env.i18n.lang_filename(fn_set_lang[:c])
+        @fnl=@env.i18n.lang_filename(fn_set_lang[:n])
 #fix
 #       @flv.each do |l|
 #         lang=SiSU_Env::Standardise_language.new.file_to_language(l)
@@ -1252,7 +1252,7 @@ module SiSU_Param
 #         elsif @fnl[:mid] =~/\S/;  c[:b]=".#{lang[:c]}"
 #         elsif @fnl[:post] =~/\S/; c[:c]=".#{lang[:c]}"
 #         end
-#         @lang << [lang[:l],"#{c[:a]}sisu_manifest#{c[:b]}.html#{c[:c]}"]
+#         @lang << [lang[:n],"#{c[:a]}sisu_manifest#{c[:b]}.html#{c[:c]}"]
 #       end if @flv
         @lang.uniq!
         @fn=SiSU_Env::Env_call.new(@fns).lang(fn_set_lang[:c])
diff --git a/lib/sisu/v3/prog_text_translation.rb b/lib/sisu/v3/prog_text_translation.rb
new file mode 100644
index 00000000..e5a78e92
--- /dev/null
+++ b/lib/sisu/v3/prog_text_translation.rb
@@ -0,0 +1,1697 @@
+# encoding: utf-8
+=begin
+
+ * Name: SiSU
+
+ * Description: a framework for document structuring, publishing and search
+
+ * Author: Ralph Amissah
+
+ * Copyright: (C) 1997 - 2011, Ralph Amissah, All Rights Reserved.
+
+ * License: GPL 3 or later:
+
+   SiSU, a framework for document structuring, publishing and search
+
+   Copyright (C) Ralph Amissah
+
+   This program is free software: you can redistribute it and/or modify it
+   under the terms of the GNU General Public License as published by the Free
+   Software Foundation, either version 3 of the License, or (at your option)
+   any later version.
+
+   This program is distributed in the hope that it will be useful, but WITHOUT
+   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+   FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+   more details.
+
+   You should have received a copy of the GNU General Public License along with
+   this program. If not, see <http://www.gnu.org/licenses/>.
+
+   If you have Internet connection, the latest version of the GPL should be
+   available at these locations:
+   <http://www.fsf.org/licensing/licenses/gpl.html>
+   <http://www.gnu.org/licenses/gpl.html>
+
+   <http://www.jus.uio.no/sisu/gpl.fsf/toc.html>
+   <http://www.jus.uio.no/sisu/gpl.fsf/doc.html>
+   <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt>
+
+ * SiSU uses:
+   * Standard SiSU markup syntax,
+   * Standard SiSU meta-markup syntax, and the
+   * Standard SiSU object citation numbering and system
+
+ * Hompages:
+   <http://www.jus.uio.no/sisu>
+   <http://www.sisudoc.org>
+
+ * Download:
+   <http://www.jus.uio.no/sisu/SiSU/download.html>
+
+ * Ralph Amissah
+   <ralph@amissah.com>
+   <ralph.amissah@gmail.com>
+
+ ** Description: internationalisation
+
+=end
+module SiSU_Translate
+  require_relative 'sysenv'                             # sysenv.rb
+    include SiSU_Env; include SiSU_Param
+  class Source
+    def initialize(md,doc_lang,trans_str='')
+      @md,@doc_lang,@trans_str=md,doc_lang,trans_str
+      @lang_class=case @doc_lang
+      when /American/i;                  English.new(md,doc_lang,trans_str)    # tag depreciated, see iso 639-2
+      when /English/i;                   English.new(md,doc_lang,trans_str)
+      when /French/i;                    French.new(md,doc_lang,trans_str)
+      when /German/i;                    German.new(md,doc_lang,trans_str)
+      when /Italian/i;                   Italian.new(md,doc_lang,trans_str)
+      when /Spanish/i;                   Spanish.new(md,doc_lang,trans_str)
+      when /Brazilian(?: Portuguese)?/i; Portuguese.new(md,doc_lang,trans_str) # tag depreciated, see iso 639-2
+      when /Portuguese/i;                Portuguese.new(md,doc_lang,trans_str)
+      when /Swedish/i;                   Swedish.new(md,doc_lang,trans_str)
+      when /Danish/i;                    Danish.new(md,doc_lang,trans_str)
+      when /Finnish/i;                   Finnish.new(md,doc_lang,trans_str)
+      when /Norwegian/i;                 Norwegian.new(md,doc_lang,trans_str)
+      when /Icelandic/i;                 Icelandic.new(md,doc_lang,trans_str)
+      when /Dutch/i;                     Dutch.new(md,doc_lang,trans_str)
+      when /Estonian/i;                  Estonian.new(md,doc_lang,trans_str)
+      when /Hungarian/i;                 Hungarian.new(md,doc_lang,trans_str)
+      when /Polish/i;                    Polish.new(md,doc_lang,trans_str)
+      when /Romanian/i;                  Romanian.new(md,doc_lang,trans_str)
+      when /Russian/i;                   Russian.new(md,doc_lang,trans_str)
+      when /Greek/i;                     Greek.new(md,doc_lang,trans_str)
+      when /Ukranian/i;                  Ukranian.new(md,doc_lang,trans_str)
+      when /Turkish/i;                   Turkish.new(md,doc_lang,trans_str)
+      when /Slovenian/i;                 Slovenian.new(md,doc_lang,trans_str)
+      when /Croatian/i;                  Croatian.new(md,doc_lang,trans_str)
+      when /Slovak(?:ian)?/i;            Slovak.new(md,doc_lang,trans_str)
+      when /Czech/i;                     Czech.new(md,doc_lang,trans_str)
+      when /Bulgarian/i;                 Bulgarian.new(md,doc_lang,trans_str)
+      else                               English.new(md,doc_lang,trans_str)
+      end
+    end
+
+    def filename
+      @lang_class.filename
+    end
+    def description
+      @lang_class.description
+    end
+    def metadata
+      @lang_class.metadata
+    end
+    def filetype_description
+      @lang_class.filetype_description
+    end
+    def file_size
+      @lang_class.file_size
+    end
+    def sourcefile
+      @lang_class.sourcefile
+    end
+    def sourcefile_digest
+      @lang_class.sourcefile_digest
+    end
+    def full_title #dc
+      @lang_class.full_title
+    end
+    def title
+      @lang_class.title
+    end
+    def subtitle
+      @lang_class.subtitle
+    end
+    def author
+      @lang_class.author
+    end
+    def contributor
+      @lang_class.contributor
+    end
+    def translator
+      @lang_class.translator
+    end
+    def illustrator
+      @lang_class.illustrator
+    end
+    def publisher
+      @lang_class.publisher
+    end
+    def prepared_by
+      @lang_class.prepared_by
+    end
+    def digitized_by
+      @lang_class.digitized_by
+    end
+    def subject
+      @lang_class.subject
+    end
+    def description #dc (watch)
+      @lang_class.description
+    end
+    def abstract
+      @lang_class.abstract
+    end
+    def type
+      @lang_class.type
+    end
+    def rights
+      @lang_class.rights
+    end
+    def digitized_by
+      @lang_class.digitized_by
+    end
+    def date
+      @lang_class.date
+    end
+    def date_created
+      @lang_class.date_created
+    end
+    def date_available
+      @lang_class.date_available
+    end
+    def date_valid
+      @lang_class.date_valid
+    end
+    def date_modified
+      @lang_class.date_modified
+    end
+    def date_issued
+      @lang_class.date_issued
+    end
+    def language
+      @lang_class.language
+    end
+    def language_original
+      @lang_class.language_original
+    end
+    def format
+      @lang_class.format
+    end
+    def identifier
+      @lang_class.identifier
+    end
+    def source
+      @lang_class.source
+    end
+    def relation
+      @lang_class.relation
+    end
+    def coverage
+      @lang_class.coverage
+    end
+    def keywords
+      @lang_class.keywords
+    end
+    def comments
+      @lang_class.comments
+    end
+    def cls_loc
+      @lang_class.cls_loc
+    end
+    def cls_dewey
+      @lang_class.cls_dewey
+    end
+    def cls_oclc
+      @lang_class.cls_oclc
+    end
+    def cls_gutenberg
+      @lang_class.cls_gutenberg
+    end
+    def cls_isbn
+      @lang_class.cls_isbn
+    end
+    def prefix_a
+      @lang_class.prefix_a
+    end
+    def prefix_b
+      @lang_class.prefix_b
+    end
+    def topic_register
+      @lang_class.topic_register
+    end
+    def fns
+      @lang_class.fns
+    end
+    def word_count
+      @lang_class.word_count
+    end
+    def dgst
+      @lang_class.dgst
+    end
+    def sc_number
+      @lang_class.sc_number
+    end
+    def sc_date
+      @lang_class.sc_date
+    end
+    def last_generated
+      @lang_class.last_generated
+    end
+    def sisu_version
+      @lang_class.sisu_version
+    end
+    def ruby_version
+      @lang_class.ruby_version
+    end
+    def suggested_links
+      @lang_class.suggested_links
+    end
+    def language_version_list
+      @lang_class.language_version_list
+    end
+    def language
+      @lang_class.language
+    end
+    def manifest_description
+      @lang_class.manifest_description
+    end
+    def manifest_description_output
+      @lang_class.manifest_description_output
+    end
+    def manifest_description_metadata
+      @lang_class.manifest_description_metadata
+    end
+    def language_list_translated
+      @lang_class.language_list
+    end
+    def language_list
+      lang=case @trans_str
+      when /American/i;                  'American English'                    # tag depreciated, see iso 639-2
+      when /English/i;                   'English'
+      when /French/i;                    'français'
+      when /German/i;                    'Deutsch'
+      when /Italian/i;                   'Italiano'
+      when /Spanish/i;                   'español'
+      when /Brazilian(?: Portuguese)?/i; 'Brazilian Português'                 # tag depreciated, see iso 639-2
+      when /Portuguese/i;                'Português'
+      when /Swedish/i;                   'svenska'
+      when /Danish/i;                    'dansk'
+      when /Finnish/i;                   'suomi'
+      when /Norwegian/i;                 'norsk'
+      when /Icelandic/i;                 'Icelandic'
+      when /Dutch/i;                     'Nederlands'
+      when /Estonian/i;                  'Estonian'
+      when /Hungarian/i;                 'Hungarian'
+      when /Polish/i;                    'polski'
+      when /Romanian/i;                  'română'
+      when /Russian/i;                   'Русский (Russkij)'
+      when /Greek/i;                     'Ελληνικά (Ellinika)'
+      when /Ukranian/i;                  'українська (ukrajins\'ka)'
+      when /Turkish/i;                   'Türkçe'
+      when /Slovenian/i;                 'Slovenian'
+      when /Croatian/i;                  'Croatian'
+      when /Slovak(?:ian)?/i;            'slovensky'            #slovensky ?
+      when /Czech/i;                     'česky'
+      when /Bulgarian/i;                 'Български (Bəlgarski)'
+      when /Japanese/i;                  '日本語 (Nihongo)'
+      when /Korean/i;                    '한국어 (Hangul)'
+      #when /Catalan/i;                   'català'
+      else                               'English'
+      end
+      #check on 中文  and عربي
+    end
+  end
+  class English
+    def initialize(md,doc_lang,trans_str)
+      @md,@doc_lang,@trans_str=md,doc_lang,trans_str
+    end
+    def filename
+      'filename'
+    end
+    def description
+      'description'
+    end
+    def filetype_description
+      'filetype description'
+    end
+    def metadata
+      'metadata'
+    end
+    def file_size
+      'file size'
+    end
+    def full_title #dc
+      'Title'
+    end
+    def title
+      'Title'
+    end
+    def subtitle
+      'Subtitle'
+    end
+    def author
+      'Author'
+    end
+    def author #dc
+      'Creator'
+    end
+    def contributor #dc
+      'Contributor'
+    end
+    def translator
+      'Translator'
+    end
+    def illustrator
+      'Illustrator'
+    end
+    def publisher #dc
+      'Publisher'
+    end
+    def prepared_by
+      'Prepared by'
+    end
+    def digitized_by
+      'Digitized by'
+    end
+    def subject #dc
+      'Subject'
+    end
+    def description #dc (watch)
+      'Description'
+    end
+    def abstract #dc
+      'Abstract'
+    end
+    def type #dc
+      'Type'
+    end
+    def rights #dc
+      'Rights'
+    end
+    def date #dc
+      'Date'
+    end
+    def date_created #dc
+      'Date created'
+    end
+    def date_issued #dc
+      'Date issued'
+    end
+    def date_available #dc
+      'Date available'
+    end
+    def date_modified #dc
+      'Date modified'
+    end
+    def date_valid #dc
+      'Date valid'
+    end
+    def language #dc
+      'Language'
+    end
+    def language_original
+      'Original Language'
+    end
+    def format #dc
+      'Format'
+    end
+    def identifier #dc
+      'Identifier'
+    end
+    def source #dc
+      'Source'
+    end
+    def relation #dc
+      'Relation'
+    end
+    def coverage #dc
+      'Coverage'
+    end
+    def keywords
+      'Keywords'
+    end
+    def comments
+      'Comments'
+    end
+    def cls_loc
+      'Classify Library of Congress'
+    end
+    def cls_dewey
+      'Classify Dewey'
+    end
+    def cls_oclc
+      'Classify OCLC number'
+    end
+    def cls_gutenberg
+      'Classify Project Gutenberg'
+    end
+    def cls_isbn
+      'Classify ISBN'
+    end
+    def prefix_a
+      'Prefix (a)'
+    end
+    def prefix_b
+      'Prefix (b)'
+    end
+    def topic_register
+      'Topics Registered'
+    end
+    def sourcefile
+      'Sourcefile'
+    end
+    def word_count
+      'Word Count approximate'
+    end
+    def sourcefile_digest
+      'Sourcefile Digest'
+    end
+    def digest_md5
+      'Sourcefile Digest (md5)'
+    end
+    def digest_sha256
+      'Sourcefile Digest (sha256)'
+    end
+    def sc_number
+      'Document (RCS/CVS) number'
+    end
+    def sc_date
+      'Document (RCS/CVS) number'
+    end
+    def last_generated
+      'Document (dal) last generated'
+    end
+    def sisu_version
+      'Generated by'
+    end
+    def ruby_version
+      'Ruby version'
+    end
+    def suggested_links
+      'metadata suggested links'
+    end
+    def language_version_list
+      'Document Language Versions, manifests'
+    end
+    def manifest_description
+      'SiSU manifest of document filetypes and metadata'
+    end
+    def manifest_description_output
+      'Available document filetypes'
+    end
+    def manifest_description_metadata
+      'Document Metadata'
+    end
+    def language_list_translated
+      lang=case @trans_str
+      when /American/i;                  'American English'                    # tag depreciated, see iso 639-2
+      when /English/i;                   'English'
+      when /French/i;                    'French'
+      when /German/i;                    'German'
+      when /Italian/i;                   'Italian'
+      when /Spanish/i;                   'Spanish'
+      when /Brazilian(?: Portuguese)?/i; 'Brazilian Portuguese'                # tag depreciated, see iso 639-2
+      when /Portuguese/i;                'Portuguese'
+      when /Swedish/i;                   'Swedish'
+      when /Danish/i;                    'Danish'
+      when /Finnish/i;                   'Finnish'
+      when /Norwegian/i;                 'Norwegian'
+      when /Icelandic/i;                 'Icelandic'
+      when /Dutch/i;                     'Dutch'
+      when /Estonian/i;                  'Estonian'
+      when /Hungarian/i;                 'Hungarian'
+      when /Polish/i;                    'Polish'
+      when /Romanian/i;                  'Romanian'
+      when /Russian/i;                   'Russian'
+      when /Greek/i;                     'Greek'
+      when /Ukranian/i;                  'Ukranian'
+      when /Turkish/i;                   'Turkish'
+      when /Slovenian/i;                 'Slovenian'
+      when /Croatian/i;                  'Croatian'
+      when /Slovak(?:ian)?/i;            'Slovakian'
+      when /Czech/i;                     'Czech'
+      when /Bulgarian/i;                 'Bulgarian'
+      else @trans_str
+      end
+    end
+  end
+  class French
+    def initialize(md,doc_lang,trans_str)
+      @md,@doc_lang,@trans_str=md,doc_lang,trans_str
+    end
+    def filename
+      'nom de fichier'
+    end
+    def description
+      'description'
+    end
+    def filetype_description
+      description
+    end
+    def metadata
+      'metadonnées'
+    end
+    def file_size
+      'taille'
+    end
+    def full_title #dc
+      'Titre'
+    end
+    def title
+      'Titre'
+    end
+    def subtitle
+      'Sous titre'
+    end
+    def author
+      'Auteur'
+    end
+    def author #dc
+      'Auteur'
+    end
+    def contributor #dc
+      'Contributeur'
+    end
+    def translator
+      'Traducteur'
+    end
+    def illustrator
+      'Illustrateur'
+    end
+    def publisher #dc
+      'Éditeur'
+    end
+    def prepared_by
+      'Préparé par'
+    end
+    def digitized_by
+      'Numérisé par'
+    end
+    def subject #dc
+      'Sujet'
+    end
+    def description #dc (watch)
+      'Description'
+    end
+    def abstract #dc
+      'Résumé'
+    end
+    def type #dc
+      'Type'
+    end
+    def rights #dc
+      'Droits relatifs à la ressource'
+    end
+    def date #dc
+      'Date'
+    end
+    def date_created #dc
+      'Date de création'
+    end
+    def date_issued #dc
+      'Date de publication'
+    end
+    def date_available #dc
+      'Date de mise à disposition'
+    end
+    def date_modified #dc
+      'Date de modification'
+    end
+    def date_valid #dc
+      'Date de validité'
+    end
+    def language #dc
+      'Langue'
+    end
+    def language_original
+      'Langue originale'
+    end
+    def format #dc
+      'Format'
+    end
+    def identifier #dc
+      'Identifiant'
+    end
+    def source #dc
+      'Source'
+    end
+    def relation #dc
+      'Lien'
+    end
+    def coverage #dc
+      'Portée du document'
+    end
+    def keywords
+      'Mots clef'
+    end
+    def comments
+      'Commentaires'
+    end
+    def cls_loc
+      'Classification de la bibliothèque du congres'
+    end
+    def cls_dewey
+      'Classification Dewey'
+    end
+    def cls_oclc # fix
+      'Classify OCLC number'
+    end
+    def cls_gutenberg
+      'Classification du project Gutenberg'
+    end
+    def cls_isbn
+      'Classification ISBN'
+    end
+    def prefix_a
+      'Préfixe (a)'
+    end
+    def prefix_b
+      'Préfixe (b)'
+    end
+    def topic_register
+      'Topics Registered'
+    end
+    def sourcefile
+      'Fichier source'
+    end
+    def word_count
+      'Nombre approximatif de mots'
+    end
+    def sourcefile_digest
+      'Condensé du fichier source'
+    end
+    def digest_md5
+      'Condensé du fichier source (md5)'
+    end
+    def digest_sha256
+      'Condensé du fichier source (sha256)'
+    end
+    def sc_number
+      'Numéro (RCS/CVS) du document'
+    end
+    def sc_date
+      'Numéro (RCS/CVS) du document'
+    end
+    def last_generated
+      'Dernière production du document (metaverse)'
+    end
+    def sisu_version
+      'Généré par'
+    end
+    def ruby_version
+      'Version de Ruby'
+    end
+    def suggested_links
+      'Liens suggérés'
+    end
+    def language_version_list
+      'Versions des langues du document, manifestes'
+    end
+    def manifest_description
+      'SiSU manifest of document filetypes and metadata'
+    end
+    def manifest_description_output
+      'Manifeste SiSU du document généré'
+    end
+    def manifest_description_metadata
+      'Manifeste SiSU des métadonnées du document'
+    end
+    def language_list_translated
+      lang=case @trans_str
+      when /American/i;                  'Anglais americain'                   # tag depreciated, see iso 639-2
+      when /English/i;                   'Anglais'
+      when /French/i;                    'Français'
+      when /German/i;                    'Allemand'
+      when /Italian/i;                   'Italien'
+      when /Spanish/i;                   'Espagnol'
+      when /Brazilian(?: Portuguese)?/i; 'Portugais brésilien'                 # tag depreciated, see iso 639-2
+      when /Portuguese/i;                'Portugais'
+      when /Swedish/i;                   'Suédois'
+      when /Danish/i;                    'Danois'
+      when /Finnish/i;                   'Finnois'
+      when /Norwegian/i;                 'Norvégien'
+      when /Icelandic/i;                 'Islandais'
+      when /Dutch/i;                     'Néerlandais'
+      when /Estonian/i;                  'Estonien'
+      when /Hungarian/i;                 'Hongrois'
+      when /Polish/i;                    'Polonais'
+      when /Romanian/i;                  'Roumain'
+      when /Russian/i;                   'Russe'
+      when /Greek/i;                     'Grec'
+      when /Ukranian/i;                  'Ukrainien'
+      when /Turkish/i;                   'Turc'
+      when /Slovenian/i;                 'Slovène'
+      when /Croatian/i;                  'Croate'
+      when /Slovak(?:ian)?/i;            'Slovaque'
+      when /Czech/i;                     'Tcheque'
+      when /Bulgarian/i;                 'Bulgare'
+      else @trans_str
+      end
+    end
+  end
+  class German
+    def initialize(md,doc_lang,trans_str)
+      @md,@doc_lang,@trans_str=md,doc_lang,trans_str
+    end
+    def filename
+      'Dateiname'
+    end
+    def description
+      'Beschreibung'
+    end
+    def filetype_description
+      description
+    end
+    def metadata
+      'Metadata'
+    end
+    def file_size
+      'Dateigrösse'
+    end
+    def full_title #dc
+      'Titel'
+    end
+    def title
+      'Titel'
+    end
+    def subtitle
+      'Untertitel'
+    end
+    def author
+      'Autor'
+    end
+    def contributor #dc
+      'Mitautor'
+    end
+    def translator
+      'Übersetzung'
+    end
+    def illustrator
+      'Illustrator'
+    end
+    def publisher
+      'Herausgeber'
+    end
+    def prepared_by
+      'gesetzt von'
+    end
+    def digitized_by
+      'digitalisiert von'
+    end
+    def subject
+      'Titel'
+    end
+    def description #dc (watch)
+      'Beschreibung'
+    end
+    def abstract #dc
+      'Abstract'
+    end
+    def type
+      'Typ'
+    end
+    def rights
+      'Rechte'
+    end
+    def date
+      'Datum'
+    end
+    def date_created
+      'Erstellung'
+    end
+    def date_issued
+      'Herausgabe'
+    end
+    def date_available
+      'Veröffentlichung'
+    end
+    def date_modified
+      'Modifikation'
+    end
+    def date_valid
+      'Gültigkeit'
+    end
+    def language
+      'Sprache'
+    end
+    def language_original
+      'Ursprungssprache'
+    end
+    def format #dc
+      'Format'
+    end
+    def identifier #dc
+      'Bezeichnung'
+    end
+    def source #dc
+      'Quelle'
+    end
+    def relation #dc
+      'Beziehung'
+    end
+    def coverage #dc
+      'Eingrenzung'
+    end
+    def keywords
+      'Schlüsselwörter'
+    end
+    def comments
+      'Kommentare'
+    end
+    def cls_loc
+      'Klassifikation nach Library of Congress'
+    end
+    def cls_dewey
+      'Klassifikation nach Dewey'
+    end
+    def cls_oclc # fix
+      'Classify OCLC number'
+    end
+    def cls_gutenberg
+      'Klassifikation nach Projekt Gutenberg'
+    end
+    def cls_isbn
+      'Klassifikation nach ISBN'
+    end
+    def prefix_a
+      'Präfix (a)'
+    end
+    def prefix_b
+      'Präfix (b)'
+    end
+    def topic_register
+      'Topics Registered'
+    end
+    def sourcefile
+      'Quelldatei'
+    end
+    def word_count
+      'Anzahl Wörter'
+    end
+    def sourcefile_digest
+      'Quelldatei Digest'
+    end
+    def digest_md5
+      'Prüfsumme der Quelldatei (MD5)'
+    end
+    def digest_sha256
+      'Prüfsumme der Quelldatei (SHA256)'
+    end
+    def sc_number
+      'Dokumentversion (RCS/CVS)'
+    end
+    def sc_date
+      'Dokumentdatum (RCS/CVS)'
+    end
+    def last_generated
+      'Letzte Erstellung (metaverse)'
+    end
+    def sisu_version
+      'erstellt bei'
+    end
+    def ruby_version
+      'Ruby Version'
+    end
+    def suggested_links
+      'empfohlene Links'
+    end
+    def language_version_list
+      'verfügbare Sprachen'
+    end
+    def manifest_description
+      'SiSU manifest of document filetypes and metadata'
+    end
+    def manifest_description_output
+      'SiSU Zusammenfassung des Dokumentes'
+    end
+    def manifest_description_metadata
+      'SiSU Zusammenfassung der Metadaten'
+    end
+    def language_list_translated
+      lang=case @trans_str
+      when /American/i;                  'Amerikanisch-Englisch'               # tag depreciated, see iso 639-2
+      when /English/i;                   'Englisch'
+      when /French/i;                    'Französisch'
+      when /German/i;                    'Deutsch'
+      when /Italian/i;                   'Italienisch'
+      when /Spanish/i;                   'Spanisch'
+      when /Brazilian(?: Portuguese)?/i; 'Brasilianisch-Portugiesisch'         # tag depreciated, see iso 639-2
+      when /Portuguese/i;                'Portugiesisch'
+      when /Swedish/i;                   'Schwedisch'
+      when /Danish/i;                    'Dänisch'
+      when /Finnish/i;                   'Finnisch'
+      when /Norwegian/i;                 'Norwegisch'
+      when /Icelandic/i;                 'Isländisch'
+      when /Dutch/i;                     'Niederländisch'
+      when /Estonian/i;                  'Estnisch'
+      when /Hungarian/i;                 'Ungarisch'
+      when /Polish/i;                    'Polnisch'
+      when /Romanian/i;                  'Rumänisch'
+      when /Russian/i;                   'Russisch'
+      when /Greek/i;                     'Griechisch'
+      when /Ukranian/i;                  'Ukrainisch'
+      when /Turkish/i;                   'Türkisch'
+      when /Slovenian/i;                 'Slovenisch'
+      when /Croatian/i;                  'Kroatisch'
+      when /Slovak(?:ian)?/i;            'Slovakisch'
+      when /Czech/i;                     'Tschechisch'
+      when /Bulgarian/i;                 'Bulgarisch'
+      else @trans_str
+      end
+    end
+  end
+  class Spanish
+    def initialize(md,doc_lang,trans_str)
+      @md,@doc_lang,@trans_str=md,doc_lang,trans_str
+    end
+    def filename
+     'nombre del fichero'
+    end
+    def description
+      'descripción'
+    end
+    def filetype_description
+      description
+    end
+   def metadata
+     'metadatos'
+   end
+   def file_size
+     'tamaño del fichero'
+   end
+   def full_title #dc
+     'Título'
+   end
+   def title
+     'Título'
+   end
+   def subtitle
+     'Subtítulo'
+   end
+   def author #dc
+     'Creador'
+   end
+   def contributor #dc
+     'Contribuidor'
+   end
+   def translator
+     'Traductor'
+   end
+   def illustrator
+     'Ilustrador'
+   end
+   def publisher #dc
+     'Editor'
+   end
+   def prepared_by
+     'Preparado por'
+   end
+   def digitized_by
+     'Digitalizado por'
+   end
+   def subject #dc
+     'Asunto'
+   end
+   def description #dc (watch)
+     'Descripción'
+   end
+   def abstract #dc
+     'Resumen'
+   end
+   def type #dc
+     'Tipo'
+   end
+   def rights #dc
+     'Derechos'
+   end
+   def date #dc
+     'Fecha'
+   end
+   def date_created #dc
+     'Fecha de creación'
+   end
+   def date_issued #dc
+     'Fecha de publicación'
+   end
+   def date_available #dc
+     'Fecha de disponibilidad'
+   end
+   def date_modified #dc
+     'Fecha de modificación'
+   end
+   def date_valid #dc
+     'Fecha de valided'
+   end
+   def language #dc
+     'Idioma'
+   end
+   def language_original
+     'Lenguaje original'
+   end
+   def format #dc
+     'Formato'
+   end
+   def identifier #dc
+     'Identificador'
+   end
+   def source #dc
+     'Fuente'
+   end
+   def relation #dc
+     'Relación'
+   end
+   def coverage #dc
+     'Cobertura'
+   end
+   def keywords
+     'Palabras claves'
+   end
+   def comments
+     'Comentarios'
+   end
+   def cls_loc
+     'Clasificación Biblioteca del Congreso'
+   end
+   def cls_dewey
+     'Clasificación Dewey'
+   end
+    def cls_oclc # fix
+      'Classify OCLC number'
+    end
+   def cls_gutenberg
+     'Clasificación Proyecto Gutenberg'
+   end
+   def cls_isbn
+     'Clasificación ISBN'
+   end
+   def prefix_a
+     'Prefijo (a)'
+   end
+   def prefix_b
+     'Prefijo (b)'
+   end
+    def topic_register
+      'Topics Registered'
+    end
+   def sourcefile
+     'Fichero fuente'
+   end
+   def word_count
+     'Número de palabras apróximado'
+   end
+   def sourcefile_digest
+     'Resumen del fichero fuente'
+   end
+   def digest_md5
+     'Resumen del fichero fuente (md5)'
+   end
+   def digest_sha256
+     'Resumen del fichero fuente (sha256)'
+   end
+   def sc_number
+     'Versión (RCS/CVS) del documento'
+   end
+   def sc_date
+     'Versión (RCS/CVS) del documento'
+   end
+   def last_generated
+     'Última generación (metaverse) del documento'
+   end
+   def sisu_version
+     'Generado por'
+   end
+   def ruby_version
+     'Versión de Ruby'
+   end
+   def suggested_links
+     'enlaces sugeridos de metadatos'
+   end
+   def language_version_list
+     'Document Language Versions, manifests'
+   end
+    def manifest_description
+      'SiSU manifest of document filetypes and metadata'
+    end
+   def manifest_description_output
+     'Manifiesto SiSU de salida generada'
+   end
+   def manifest_description_metadata
+     'Manifiesto SiSU de metadatos de documento'
+   end
+   def language_list_translated
+     lang=case @trans_str
+     when /American/i;                  'Inglés Americano'                     # tag depreciated, see iso 639-2
+     when /English/i;                   'Inglés'
+     when /French/i;                    'Francés'
+     when /German/i;                    'Alemán'
+     when /Italian/i;                   'Italiano'
+     when /Spanish/i;                   'Español'
+     when /Brazilian(?: Portuguese)?/i; 'Portugués de Brasil'                  # tag depreciated, see iso 639-2
+     when /Portuguese/i;                'Portugués'
+     when /Swedish/i;                   'Sueco'
+     when /Danish/i;                    'Danés'
+     when /Finnish/i;                   'Finés'
+     when /Norwegian/i;                 'Noruego'
+     when /Icelandic/i;                 'Islandés'
+     when /Dutch/i;                     'Holandés'
+     when /Estonian/i;                  'Estonio'
+     when /Hungarian/i;                 'Húngaro'
+     when /Polish/i;                    'Polaco'
+     when /Romanian/i;                  'Rumano'
+     when /Russian/i;                   'Ruso'
+     when /Greek/i;                     'Griego'
+     when /Ukranian/i;                  'Ucraniano'
+     when /Turkish/i;                   'Turco'
+     when /Slovenian/i;                 'Eslovaco'
+     when /Croatian/i;                  'Croata'
+     when /Slovak(?:ian)?/i;            'Eslovaco'
+     when /Czech/i;                     'Checo'
+     when /Bulgarian/i;                 'Búlgaro'
+     else @trans_str
+     end
+   end
+  end
+  class Italian
+    def initialize(md,doc_lang,trans_str)
+      @md,@doc_lang,@trans_str=md,doc_lang,trans_str
+    end
+    def filename
+      'nome del file'
+    end
+    def description
+      'descrizione'
+    end
+    def filetype_description
+      description
+    end
+    def metadata
+      'metadati'
+    end
+    def file_size
+      'dimensione'
+    end
+    def full_title #dc
+      'Titolo'
+    end
+    def title
+      'Titolo'
+    end
+    def subtitle
+      'Sottotitolo'
+    end
+    def author #dc
+      'Autore'
+    end
+    def contributor #dc
+      'Contributore'
+    end
+    def translator
+      'Traduttore'
+    end
+    def illustrator
+      'Illustratore'
+    end
+    def publisher #dc
+      'Casa editrice'
+    end
+    def prepared_by
+      'Preparato da'
+    end
+    def digitized_by
+      'Convertito in digitale da'
+    end
+    def subject #dc
+      'Oggetto'
+    end
+    def description #dc (watch)
+      'Descrizione'
+    end
+    def abstract #dc
+      'Abstract'
+    end
+    def type #dc
+      'Tipo'
+    end
+    def rights #dc
+      'Diritti del lettore'
+    end
+    def date #dc
+      'Data'
+    end
+    def date_created #dc
+      'Data di creazione'
+    end
+    def date_issued #dc
+      'Data di pubblicazione'
+    end
+    def date_available #dc
+      'Data di effettiva disponibilità'
+    end
+    def date_modified #dc
+      'Data di ultima modifica'
+    end
+    def date_valid #dc
+      'Data di inizo validità'
+    end
+    def language #dc
+      'Lingua'
+    end
+    def language_original
+      'Lingua originale'
+    end
+    def format #dc
+      'Formato'
+    end
+    def identifier #dc
+      'Indentificatore'
+    end
+    def source #dc
+      'Fonte'
+    end
+    def relation #dc
+      'Collegamento'
+    end
+    def coverage #dc
+      'Ambito'
+    end
+    def keywords
+      'Parole chiave'
+    end
+    def comments
+      'Commenti'
+    end
+    def cls_loc
+      'Classificazione della Library of Congress'
+    end
+    def cls_dewey
+      'Classificazione Dewey'
+    end
+    def cls_oclc # fix
+      'Classify OCLC number'
+    end
+    def cls_gutenberg
+      'Classificazione del Progetto Gutenberg'
+    end
+    def cls_isbn
+      'Numero ISBN'
+    end
+    def prefix_a
+      'Premessa (a)'
+    end
+    def prefix_b
+      'Premessa (b)'
+    end
+    def topic_register
+      'Topics Registered'
+    end
+    def sourcefile
+      'Sorgente'
+    end
+    def word_count
+      'Numero approssimativo di parole'
+    end
+    def sourcefile_digest
+      'Checksum file sorgente'
+    end
+    def digest_md5
+      'Checksum file sorgente (md5)'
+    end
+    def digest_sha256
+      'Checksum file sorgente (sha256)'
+    end
+    def sc_number
+      'Numero di revisione (RCS/CVS)'
+    end
+    def sc_date
+      'Numero di revisione (RCS/CVS)'
+    end
+    def last_generated
+      'Data di ultima generazione (dal metaverse)'
+    end
+    def sisu_version
+      'Generato da'
+    end
+    def ruby_version
+      'Ruby versione'
+    end
+    def suggested_links
+      'Link suggeriti'
+    end
+    def language_version_list
+      'Traduzioni disponibili'
+    end
+    def manifest_description
+      'SiSU manifest of document filetypes and metadata'
+    end
+    def manifest_description_output
+      'Inventario SiSU dell\'output generato'
+    end
+    def manifest_description_metadata
+      'Inventario SiSU dei metadati'
+    end
+    def language_list_translated
+      lang=case @trans_str
+      when /American/i;                  'Inglese USA'                         # tag depreciated, see iso 639-2
+      when /English/i;                   'Inglese'
+      when /French/i;                    'Francese'
+      when /German/i;                    'Tedesco'
+      when /Italian/i;                   'Italiano'
+      when /Spanish/i;                   'Spagnolo'
+      when /Brazilian(?: Portuguese)?/i; 'Portoguese (Brasile)'                # tag depreciated, see iso 639-2
+      when /Portuguese/i;                'Portoguese'
+      when /Swedish/i;                   'Svedese'
+      when /Danish/i;                    'Danese'
+      when /Finnish/i;                   'Finlandese'
+      when /Norwegian/i;                 'Norvegese'
+      when /Icelandic/i;                 'Islandese'
+      when /Dutch/i;                     'Olandese'
+      when /Estonian/i;                  'Estone'
+      when /Hungarian/i;                 'Ungherese'
+      when /Polish/i;                    'Polacco'
+      when /Romanian/i;                  'Romeno'
+      when /Russian/i;                   'Russo'
+      when /Greek/i;                     'Greco'
+      when /Ukranian/i;                  'Ucraino'
+      when /Turkish/i;                   'Turco'
+      when /Slovenian/i;                 'Sloveno'
+      when /Croatian/i;                  'Croato'
+      when /Slovak(?:ian)?/i;            'Slovacco'
+      when /Czech/i;                     'Ceco'
+      when /Bulgarian/i;                 'Bulgaro'
+      else @trans_str
+      end
+    end
+  end
+  class Finnish
+    def initialize(md,doc_lang,trans_str)
+      @md,@doc_lang,@trans_str=md,doc_lang,trans_str
+    end
+    def filename
+     'tiedostonimi'
+    end
+    def description
+      'kuvaus'
+    end
+    def filetype_description
+      description
+    end
+    def metadata
+      'metadata'
+    end
+    def file_size
+      'tiedoston koko'
+    end
+    def full_title #dc
+      'otsikko'
+    end
+    def title
+      'Otsikko'
+    end
+    def subtitle
+      'Alaotsikko'
+    end
+    def author #dc
+      'tekijä'
+    end
+    def contributor #dc
+      'osallistuja'
+    end
+    def translator
+      'Kääntäjä'
+    end
+    def illustrator
+      'Kuvittaja'
+    end
+    def publisher #dc
+      'julkaisija'
+    end
+    def prepared_by
+      'Valmistaja'
+    end
+    def digitized_by
+      'Digitalisoinut'
+    end
+    def subject #dc
+      'aihe'
+    end
+    def description #dc (watch)
+      'kuvaus'
+    end
+    def abstract #dc
+      'tiivistelmä'
+    end
+    def type #dc
+      'tyyppi'
+    end
+    def rights #dc
+      'oikeudet'
+    end
+    def date #dc
+      'päiväys'
+    end
+    def date_created #dc
+      'luontipäivä'
+    end
+    def date_issued #dc
+      'julkaisupäivä'
+    end
+    def date_available #dc
+      'saantipäivä'
+    end
+    def date_modified #dc
+      'muokkauspäivä'
+    end
+    def date_valid #dc
+      'kelpoisuuspäivä'
+    end
+    def language #dc
+      'kieli'
+    end
+    def language_original
+      'Alkuperäiskieli'
+    end
+    def format #dc
+      'muoto'
+    end
+    def identifier #dc
+      'tunnus'
+    end
+    def source #dc
+      'lähde'
+    end
+    def relation #dc
+      'suhde'
+    end
+    def coverage #dc
+      'kattavuus'
+    end
+    def keywords
+      'Avainsanat'
+    end
+    def comments
+      'Kommentit'
+    end
+    def cls_loc
+      'Classify Library of Congress'
+    end
+    def cls_dewey
+      'Classify Dewey'
+    end
+    def cls_oclc # fix
+      'Classify OCLC number'
+    end
+    def cls_gutenberg
+      'Classify Project Gutenberg'
+    end
+    def cls_isbn
+      'Classify ISBN'
+    end
+    def prefix_a
+      'Prefix (a)'
+    end
+    def prefix_b
+      'Prefix (b)'
+    end
+    def topic_register
+      'Topics Registered'
+    end
+    def sourcefile
+      'Lähdetiedosto'
+    end
+    def word_count
+      'Arvioitu sanamäärä'
+    end
+    def sourcefile_digest
+      'Lähdetiedoston tiiviste'
+    end
+    def digest_md5
+      'Lähdetiedoston tiiviste (md5)'
+    end
+    def digest_sha256
+      'Lähdetiedoston tiiviste (sha256)'
+    end
+    def sc_number
+      'Dokumentin RCS/CVS-numero'
+    end
+    def sc_date
+      'Dokumentin RCS/CVS-päiväys'
+    end
+    def last_generated
+      'Viimeksi tuotettu dokumentti (metaverse)'
+    end
+    def sisu_version
+      'Generoinut'
+    end
+    def ruby_version
+      'Ruby-versio'
+    end
+    def suggested_links
+      'metadatan ehdottamat linkit'
+    end
+    def language_version_list
+      'Dokumentin kieliversiot, manifestit'
+    end
+    def manifest_description
+      'SiSU manifest of document filetypes and metadata'
+    end
+    def manifest_description_output
+      'Tuotetun tuloksen SISU-manifesti'
+    end
+    def manifest_description_metadata
+      'Dokumenttimetadatan SISU-manifesti'
+    end
+    def language_list_translated
+      lang=case @trans_str
+      when /American/i;                  'Amerikanenglanti'                    # tag depreciated, see iso 639-2
+      when /English/i;                   'Englanti'
+      when /French/i;                    'Ranska'
+      when /German/i;                    'Saksa'
+      when /Italian/i;                   'Italia'
+      when /Spanish/i;                   'Espanja'
+      when /Brazilian(?: Portuguese)?/i; 'Brasilian portugali'                 # tag depreciated, see iso 639-2
+      when /Portuguese/i;                'Portugali'
+      when /Swedish/i;                   'Ruotsi'
+      when /Danish/i;                    'Tanska'
+      when /Finnish/i;                   'Suomi'
+      when /Norwegian/i;                 'Norja'
+      when /Icelandic/i;                 'Islanti'
+      when /Dutch/i;                     'Hollanti'
+      when /Estonian/i;                  'Viro'
+      when /Hungarian/i;                 'Unkari'
+      when /Polish/i;                    'Puola'
+      when /Romanian/i;                  'Romania'
+      when /Russian/i;                   'Venäjä'
+      when /Greek/i;                     'Kreikka'
+      when /Ukranian/i;                  'Ukraina'
+      when /Turkish/i;                   'Turkki'
+      when /Slovenian/i;                 'Slovenia'
+      when /Croatian/i;                  'Kroatia'
+      when /Slovak(?:ian)?/i;            'Slovakki'
+      when /Czech/i;                     'Tsekki'
+      when /Bulgarian/i;                 'Bulgaria'
+      else @trans_str
+      end
+    end
+  end
+  class Porguguese            < English
+  end
+  class Swedish               < English
+  end
+  class Danish                < English
+  end
+  class Norwegian             < English
+  end
+  class Icelandic             < English
+  end
+  class Dutch                 < English
+  end
+  class Estonian              < English
+  end
+  class Hungarian             < English
+  end
+  class Polish                < English
+  end
+  class Romanian              < English
+  end
+  class Russian               < English
+  end
+  class Greek                 < English
+  end
+  class Ukranian              < English
+  end
+  class Turkish               < English
+  end
+  class Croatian              < English
+  end
+  class Slovakian             < English
+  end
+  class Czech                 < English
+  end
+  class Bulgarian             < English
+  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/v3/shared_metadata.rb b/lib/sisu/v3/shared_metadata.rb
index 25ca19f1..c40bf68d 100644
--- a/lib/sisu/v3/shared_metadata.rb
+++ b/lib/sisu/v3/shared_metadata.rb
@@ -68,7 +68,7 @@ module Metadata
       dir=SiSU_Env::Info_env.new(@md.fns)
       base_html="#{dir.url.root}/#{@md.fnb}"
       l=SiSU_Env::Standardise_language.new(@md.opt.lng).language
-      language=l[:l]
+      language=l[:n]
       tr=SiSU_Translate::Source.new(@md,language)
       @attrib='md'
       if @display_heading
@@ -998,7 +998,7 @@ WOK
       dir=SiSU_Env::Info_env.new(@md.fns)
       base_html="#{dir.url.root}/#{@md.fnb}"
       l=SiSU_Env::Standardise_language.new(@md.opt.lng).language
-      language=l[:l]
+      language=l[:n]
       tr=SiSU_Translate::Source.new(@md,language)
       tag="Document Manifest @"
       inf="#{@br}#{base_html}/#{@md.fn[:manifest]}"
diff --git a/lib/sisu/v3/sst_do_inline_footnotes.rb b/lib/sisu/v3/sst_do_inline_footnotes.rb
index 3936d612..60247060 100644
--- a/lib/sisu/v3/sst_do_inline_footnotes.rb
+++ b/lib/sisu/v3/sst_do_inline_footnotes.rb
@@ -171,7 +171,7 @@ module SiSU_Convert_footnotes
       @env=SiSU_Env::Info_env.new(@md.fns)
       @skin=SiSU_Env::Info_skin.new(@md)
       l=SiSU_Env::Standardise_language.new(@md.opt.lng).language
-      @language=l[:l]
+      @language=l[:n]
       @translate=SiSU_Translate::Source.new(@md,@language)
     end
     def reset
diff --git a/lib/sisu/v3/sysenv.rb b/lib/sisu/v3/sysenv.rb
index ac584e80..f757233f 100644
--- a/lib/sisu/v3/sysenv.rb
+++ b/lib/sisu/v3/sysenv.rb
@@ -500,7 +500,7 @@ module SiSU_Env
         fns_l="#{@fn[:m]}~#{lng.name}.#{@fn[:t]}"
         if FileTest.file?(fns_c)
           fn_set_lang=SiSU_Env::Standardise_language.new.file_to_language(fns_c) #reconsider file_to_language
-          lng=fn_set_lang[:l]
+          lng=fn_set_lang[:n]
           fn=SiSU_Env::Env_call.new(fns_c).lang(fn_set_lang[:c])
           @m << { m: fn[:manifest], l: lng }
         elsif FileTest.file?(fns_l)
@@ -790,86 +790,110 @@ module SiSU_Env
     end
   end
   class Standardise_language
+    require_relative 'i18n'                  # i18n.rb
     def initialize(l='')
       @language=l
       if @language.empty?
         @language=Info_env.new.defaults[:language]
       end
+      @r=%{(?:#{Px[:lng_lst].join('|')})}
+      @lang_info=SiSU_i18n::Languages.new
+    end
+    def lang_lst                              # from i18n
+      @lang_info.language.list
+    end
+    def lang(l='')                              # from i18n
+      x=if l =~/^#{@r}$/
+        @lang_info.language.list[l]
+      elsif @language =~/^#{@r}$/
+        @lang_info.language.list[@language]
+      else nil
+      end
     end
     def language
-      lang={}
+      lng={}
       case @language
-      when /^am$|Amharic/i;                    d,c,l=false,'am','Amharic'
-      when /^bg$|Bulgarian/i;                  d,c,l=false,'bg','Bulgarian'
-      when /^br$|Breton/i;                     d,c,l=false,'br','Breton'
-      when /^ca$|Catalan/i;                    d,c,l=false,'ca','Catalan'
-      when /^cs$|Czech/i;                      d,c,l=false,'cs','Czech'
-      when /^cy$|Welsh/i;                      d,c,l=false,'cy','Welsh'
-      when /^da$|Danish|Dansk/i;               d,c,l=false,'da','Danish'
-      when /^de$|German/i;                     d,c,l=false,'de','German'
-      when /^el$|Greek/i;                      d,c,l=false,'el','Greek'
-      when /^en$|English/i;                    d,c,l=false,'en','English'
-      when /^eo$|Esperanto/i;                  d,c,l=false,'eo','Esperanto'
-      when /^es$|Spanish|Espanol/i;            d,c,l=false,'es','Spanish'
-      when /^et$|Estonian/i;                   d,c,l=false,'et','Estonian'
-      when /^eu$|Basque/i;                     d,c,l=false,'eu','Basque'
-      when /^fi$|Finnish|Finsk|Suomi/i;        d,c,l=false,'fi','Finnish'
-      when /^fr$|French|Francais/i;            d,c,l=false,'fr','French'
-      when /^ga$|Irish/i;                      d,c,l=false,'ga','Irish'
-      when /^gl$|Galician/i;                   d,c,l=false,'gl','Galician'
-      when /^he$|Hebrew/i;                     d,c,l=false,'he','Hebrew'
-      when /^hi$|Hindi/i;                      d,c,l=false,'hi','Hindi'
-      when /^hr$|Croatian/i;                   d,c,l=false,'hr','Croatian'
-      when /^hy$|Armenian/i;                   d,c,l=false,'hy','Armenian'
-      when /^ia$|Interlingua/i;                d,c,l=false,'ia','Interlingua'
-      when /^is$|Icelandic/i;                  d,c,l=false,'is','Icelandic'
-      when /^it$|Italian/i;                    d,c,l=false,'it','Italian'
-      when /^la$|Latin/i;                      d,c,l=false,'la','Latin'
-      when /^lo$|Lao/i;                        d,c,l=false,'lo','Lao'
-      when /^lt$|Lithuanian/i;                 d,c,l=false,'lt','Lithuanian'
-      when /^lv$|Latvian/i;                    d,c,l=false,'lv','Latvian'
-      when /^ml$|Malayalam/i;                  d,c,l=false,'ml','Malayalam'
-      when /^mr$|Marathi/i;                    d,c,l=false,'mr','Marathi'
-      when /^nl$|Dutch/i;                      d,c,l=false,'nl','Dutch'
-      when /^no$|Norwegian|Norsk/i;            d,c,l=false,'no','Norwegian'
-      when /^nn$|Norwegian Nynorsk/i;          d,c,l=false,'nn','Norwegian Nynorsk'
-      when /^oc$|Occitan/i;                    d,c,l=false,'oc','Occitan'
-      when /^pl$|Polish/i;                     d,c,l=false,'pl','Polish'
-      when /^pt$|Portuguese/i;                 d,c,l=false,'pt','Portuguese'
-      when /^pt_BR$|Portuguese Brazil/i;       d,c,l=false,'pt_BR','Portuguese Brazil'
-      when /^ro$|Romanian/i;                   d,c,l=false,'ro','Romanian'
-      when /^ru$|Russian/i;                    d,c,l=false,'ru','Russian'
-      when /^sa$|Sanskrit/i;                   d,c,l=false,'sa','Sanskrit'
-      when /^se$|Sami/i;                       d,c,l=false,'se','Sami'
-      when /^sk$|Slovak/i;                     d,c,l=false,'sk','Slovak'
-      when /^sl$|Slovenian/i;                  d,c,l=false,'sl','Slovenian'
-      when /^sq$|Albanian/i;                   d,c,l=false,'sq','Albanian'
-      when /^sr$|Serbian/i;                    d,c,l=false,'sr','Serbian'
-      when /^sv$|Swedish|Svensk/i;             d,c,l=false,'sv','Swedish'
-      when /^ta$|Tamil/i;                      d,c,l=false,'ta','Tamil'
-      when /^te$|Telugu/i;                     d,c,l=false,'te','Telugu'
-      when /^th$|Thai/i;                       d,c,l=false,'th','Thai'
-      when /^tk$|Turkmen/i;                    d,c,l=false,'tk','Turkmen'
-      when /^tr$|Turkish/i;                    d,c,l=false,'tr','Turkish'
-      when /^uk$|Ukranian/i;                   d,c,l=false,'uk','Ukranian'
-      when /^ur$|Urdu/i;                       d,c,l=false,'ur','Urdu'
-     #when /^us$|/i;                           d,c,l=false,'us',''
-      when /^vi$|Vietnamese/i;                 d,c,l=false,'vi','Vietnamese'
-      else                                     d,c,l=true,'en','English (default)'
-      #else                                    d,c,l=true,'xx','Default'
-      end
-      lang[:d],lang[:c],lang[:l]=d,c,l
-      lang
+      when /^am$|Amharic/i;                    d,c,l=false,lang_lst['am'][:c],    lang_lst['am'][:n]
+      when /^bg$|Bulgarian/i;                  d,c,l=false,lang_lst['bg'][:c],    lang_lst['bg'][:n]
+      when /^bn$|Bengali/i;                    d,c,l=false,lang_lst['bn'][:c],    lang_lst['bn'][:n]
+      when /^br$|Breton/i;                     d,c,l=false,lang_lst['br'][:c],    lang_lst['br'][:n]
+      when /^ca$|Catalan/i;                    d,c,l=false,lang_lst['ca'][:c],    lang_lst['ca'][:n]
+      when /^cs$|Czech/i;                      d,c,l=false,lang_lst['cs'][:c],    lang_lst['cs'][:n]
+      when /^cy$|Welsh/i;                      d,c,l=false,lang_lst['cy'][:c],    lang_lst['cy'][:n]
+      when /^da$|Danish|Dansk/i;               d,c,l=false,lang_lst['da'][:c],    lang_lst['da'][:n]
+      when /^de$|German/i;                     d,c,l=false,lang_lst['de'][:c],    lang_lst['de'][:n]
+      when /^el$|Greek/i;                      d,c,l=false,lang_lst['el'][:c],    lang_lst['el'][:n]
+      when /^en$|English/i;                    d,c,l=false,lang_lst['en'][:c],    lang_lst['en'][:n]
+      when /^eo$|Esperanto/i;                  d,c,l=false,lang_lst['eo'][:c],    lang_lst['eo'][:n]
+      when /^es$|Spanish|Espanol/i;            d,c,l=false,lang_lst['es'][:c],    lang_lst['es'][:n]
+      when /^et$|Estonian/i;                   d,c,l=false,lang_lst['et'][:c],    lang_lst['et'][:n]
+      when /^eu$|Basque/i;                     d,c,l=false,lang_lst['eu'][:c],    lang_lst['eu'][:n]
+      when /^fi$|Finnish|Finsk|Suomi/i;        d,c,l=false,lang_lst['fi'][:c],    lang_lst['fi'][:n]
+      when /^fr$|French|Francais/i;            d,c,l=false,lang_lst['fr'][:c],    lang_lst['fr'][:n]
+      when /^ga$|Irish/i;                      d,c,l=false,lang_lst['ga'][:c],    lang_lst['ga'][:n]
+      when /^gl$|Galician/i;                   d,c,l=false,lang_lst['gl'][:c],    lang_lst['gl'][:n]
+      when /^he$|Hebrew/i;                     d,c,l=false,lang_lst['he'][:c],    lang_lst['he'][:n]
+      when /^hi$|Hindi/i;                      d,c,l=false,lang_lst['hi'][:c],    lang_lst['hi'][:n]
+      when /^hr$|Croatian/i;                   d,c,l=false,lang_lst['hr'][:c],    lang_lst['hr'][:n]
+      when /^hy$|Armenian/i;                   d,c,l=false,lang_lst['hy'][:c],    lang_lst['hy'][:n]
+      when /^ia$|Interlingua/i;                d,c,l=false,lang_lst['ia'][:c],    lang_lst['ia'][:n]
+      when /^is$|Icelandic/i;                  d,c,l=false,lang_lst['is'][:c],    lang_lst['is'][:n]
+      when /^it$|Italian/i;                    d,c,l=false,lang_lst['it'][:c],    lang_lst['it'][:n]
+      when /^la$|Latin/i;                      d,c,l=false,lang_lst['la'][:c],    lang_lst['la'][:n]
+      when /^lo$|Lao/i;                        d,c,l=false,lang_lst['lo'][:c],    lang_lst['lo'][:n]
+      when /^lt$|Lithuanian/i;                 d,c,l=false,lang_lst['lt'][:c],    lang_lst['lt'][:n]
+      when /^lv$|Latvian/i;                    d,c,l=false,lang_lst['lv'][:c],    lang_lst['lv'][:n]
+      when /^ml$|Malayalam/i;                  d,c,l=false,lang_lst['ml'][:c],    lang_lst['ml'][:n]
+      when /^mr$|Marathi/i;                    d,c,l=false,lang_lst['mr'][:c],    lang_lst['mr'][:n]
+      when /^nl$|Dutch/i;                      d,c,l=false,lang_lst['nl'][:c],    lang_lst['nl'][:n]
+      when /^no$|Norwegian|Norsk/i;            d,c,l=false,lang_lst['no'][:c],    lang_lst['no'][:n]
+      when /^nn$|Norwegian Nynorsk/i;          d,c,l=false,lang_lst['nn'][:c],    lang_lst['nn'][:n]
+      when /^oc$|Occitan/i;                    d,c,l=false,lang_lst['oc'][:c],    lang_lst['oc'][:n]
+      when /^pl$|Polish/i;                     d,c,l=false,lang_lst['pl'][:c],    lang_lst['pl'][:n]
+      when /^pt$|Portuguese/i;                 d,c,l=false,lang_lst['pt'][:c],    lang_lst['pt'][:n]
+      when /^pt_BR$|Portuguese Brazil/i;       d,c,l=false,lang_lst['pt_BR'][:c], lang_lst['pt_BR'][:n]
+      when /^ro$|Romanian/i;                   d,c,l=false,lang_lst['ro'][:c],    lang_lst['ro'][:n]
+      when /^ru$|Russian/i;                    d,c,l=false,lang_lst['ru'][:c],    lang_lst['ru'][:n]
+      when /^sa$|Sanskrit/i;                   d,c,l=false,lang_lst['sa'][:c],    lang_lst['sa'][:n]
+      when /^se$|Sami/i;                       d,c,l=false,lang_lst['se'][:c],    lang_lst['se'][:n]
+      when /^sk$|Slovak/i;                     d,c,l=false,lang_lst['sk'][:c],    lang_lst['sk'][:n]
+      when /^sl$|Slovenian/i;                  d,c,l=false,lang_lst['sl'][:c],    lang_lst['sl'][:n]
+      when /^sq$|Albanian/i;                   d,c,l=false,lang_lst['sq'][:c],    lang_lst['sq'][:n]
+      when /^sr$|Serbian/i;                    d,c,l=false,lang_lst['sr'][:c],    lang_lst['sr'][:n]
+      when /^sv$|Swedish|Svensk/i;             d,c,l=false,lang_lst['sv'][:c],    lang_lst['sv'][:n]
+      when /^ta$|Tamil/i;                      d,c,l=false,lang_lst['ta'][:c],    lang_lst['ta'][:n]
+      when /^te$|Telugu/i;                     d,c,l=false,lang_lst['te'][:c],    lang_lst['te'][:n]
+      when /^th$|Thai/i;                       d,c,l=false,lang_lst['th'][:c],    lang_lst['th'][:n]
+      when /^tk$|Turkmen/i;                    d,c,l=false,lang_lst['tk'][:c],    lang_lst['tk'][:n]
+      when /^tr$|Turkish/i;                    d,c,l=false,lang_lst['tr'][:c],    lang_lst['tr'][:n]
+      when /^uk$|Ukranian/i;                   d,c,l=false,lang_lst['uk'][:c],    lang_lst['uk'][:n]
+      when /^ur$|Urdu/i;                       d,c,l=false,lang_lst['ur'][:c],    lang_lst['ur'][:n]
+      when /^us|American$|/i;                  d,c,l=false,lang_lst['en'][:c],    lang_lst['en'][:n]
+      when /^vi$|Vietnamese/i;                 d,c,l=false,lang_lst['vi'][:c],    lang_lst['vi'][:n]
+      else                                     d,c,l=true, lang_lst['en'][:c],    lang_lst['en'][:n] #default
+      end
+      lng[:d],lng[:c],lng[:n]=d,c,l
+      lng
     end
     def name
-      language[:l].downcase
+      #lang(@language)[:n].downcase
+      #lang[@language][:n].downcase
+      #language[:n].downcase
+      language[:n].downcase
     end
     def title
-      language[:l]
+      #lang(@language)[:n]
+      #lang[@language][:n]
+      language[:n]
     end
     def code
+      #lang[@language][:c]
+      #lang(@language)[:c]
       language[:c]
     end
+    def tex_name
+      language[:xlp]
+    end
     def file_to_language(file) # used, fix and remove
       m=/.+?\~(\w{2,3})\.(?:-|ssm\.)?sst$/
       @language=if file =~m ; file[m,1]
@@ -3663,6 +3687,8 @@ WOK
       @@pwd ||=Dir.pwd
       @pwd=Dir.pwd
       @env=SiSU_Env::Info_env.new
+      #m=/.+\/(?:src\/)?(\S+)/m # m=/.+?\/(?:src\/)?([^\/]+)$/im # m=/.+\/(\S+)/m
+      #@pwd_stub=@pwd[m,1]
       pt=Pathname.new(@pwd)
       r=Px[:lng_lst].join('|')
       u=/.+?\/([^\/]+)(?:\/(?:#{r})$|$)/
diff --git a/lib/sisu/v3/texpdf_format.rb b/lib/sisu/v3/texpdf_format.rb
index 90dd7452..8c53b458 100644
--- a/lib/sisu/v3/texpdf_format.rb
+++ b/lib/sisu/v3/texpdf_format.rb
@@ -614,7 +614,7 @@ module SiSU_TeX_Pdf
     end
   end
   class Format_head
-    require_relative 'i18n'                         # defaults.rb
+    require_relative 'prog_text_translation'        # prog_text_translation.rb
     def initialize(md,t_o)
       @md,@t_o=md,t_o
       @env=SiSU_Env::Info_env.new(@md.fns)
@@ -632,14 +632,14 @@ 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
-      @lang ||=SiSU_i18n::Language.new(@md)
+      @lang ||=SiSU_i18n::Languages.new #.list[@md.opt.lng][:xlp]
     end
     def tex_head_lang #babel 18n
       lang_char_arr=@md.i18n
       mainlang_char=lang_char_arr.slice(0)
-      mainlang=@lang.tex_name(mainlang_char)
+      mainlang=@lang.list[mainlang_char][:xlp]
       otherlang=[]
-      lang_char_arr.slice(1..9).each { |ch| otherlang << @lang.tex_name(ch) }
+      lang_char_arr.slice(1..9).each { |ch| otherlang << @lang.list[ch][:xlp] }
       otherlang=otherlang.join(',')
       { mainlang: mainlang, otherlang: otherlang }
     end
@@ -893,7 +893,7 @@ WOK
     end
     def document_head_with_orientation
       endnotes=("\\usepackage{endnotes}" if @txt =~/endnotes?/)||'' #not implemented see also def endnotes
-      @lang.tex_name(@md.i18n[0])
+      @lang.list[@md.i18n[0]][:xlp]
       <<WOK
 #{tex_head_paper}
 #{tex_head_encode}
@@ -956,7 +956,7 @@ WOK
   {-\\baselineskip}{0.5\\baselineskip}%
   {\\normalfont\\normalsize\\itshape\\raggedright}}
 % \\makeatother
-\\selectlanguage{#{@lang.tex_name(@md.i18n[0])}}
+\\selectlanguage{#{@lang.list[@md.i18n[0]][:xlp]}}
 WOK
     end
     def a4generic
-- 
cgit v1.2.3