-*- mode: org -*-
#+TITLE:       sisu i18n
#+DESCRIPTION: documents - structuring, various output representations & search
#+FILETAGS:    :sisu:i18n:
#+AUTHOR:      Ralph Amissah
#+EMAIL:       [[mailto:ralph.amissah@gmail.com][ralph.amissah@gmail.com]]
#+COPYRIGHT:   Copyright (C) 2015 - 2021 Ralph Amissah
#+LANGUAGE:    en
#+STARTUP:     content hideblocks hidestars noindent entitiespretty
#+OPTIONS:     H:3 num:nil toc:t \n:nil @:t ::t |:t ^:nil _:nil -:t f:t *:t <:t
#+PROPERTY:    header-args  :exports code
#+PROPERTY:    header-args+ :noweb yes
#+PROPERTY:    header-args+ :eval no
#+PROPERTY:    header-args+ :results no
#+PROPERTY:    header-args+ :cache no
#+PROPERTY:    header-args+ :padline no
#+PROPERTY:    header-args+ :mkdirp yes

* i18n
** i18n.rb

#+HEADER: :tangle "../lib/sisu/i18n.rb"
#+BEGIN_SRC ruby
#<<sisu_document_header>>
module SiSU_i18n
  @@language_table,@@language_list=nil,nil
  class Languages
    def language
      def table
        @@language_table ||= {
          am:    { c: 'am',    n: 'Amharic',           t: 'Amharic',                     xlp: 'amharic'          },
          bg:    { c: 'bg',    n: 'Bulgarian',         t: 'Български (Bəlgarski)',       xlp: 'bulgarian'        },
          bn:    { c: 'bn',    n: 'Bengali',           t: 'Bengali',                     xlp: 'bengali'          },
          br:    { c: 'br',    n: 'Breton',            t: 'Breton',                      xlp: 'breton'           },
          ca:    { c: 'ca',    n: 'Catalan',           t: 'catalan',                     xlp: 'catalan'          },
          cs:    { c: 'cs',    n: 'Czech',             t: 'česky',                       xlp: 'czech'            },
          cy:    { c: 'cy',    n: 'Welsh',             t: 'Welsh',                       xlp: 'welsh'            },
          da:    { c: 'da',    n: 'Danish',            t: 'dansk',                       xlp: 'danish'           },
          de:    { c: 'de',    n: 'German',            t: 'Deutsch',                     xlp: 'german'           },
          el:    { c: 'el',    n: 'Greek',             t: 'Ελληνικά (Ellinika)',         xlp: 'greek'            },
          en:    { c: 'en',    n: 'English',           t: 'English',                     xlp: 'english'          },
          eo:    { c: 'eo',    n: 'Esperanto',         t: 'Esperanto',                   xlp: 'esperanto'        },
          es:    { c: 'es',    n: 'Spanish',           t: 'español',                     xlp: 'spanish'          },
          et:    { c: 'et',    n: 'Estonian',          t: 'Estonian',                    xlp: 'estonian'         },
          eu:    { c: 'eu',    n: 'Basque',            t: 'basque',                      xlp: 'basque'           },
          fi:    { c: 'fi',    n: 'Finnish',           t: 'suomi',                       xlp: 'finnish'          },
          fr:    { c: 'fr',    n: 'French',            t: 'français',                    xlp: 'french'           },
          ga:    { c: 'ga',    n: 'Irish',             t: 'Irish',                       xlp: 'irish'            },
          gl:    { c: 'gl',    n: 'Galician',          t: 'Galician',                    xlp: 'galician'         },
          he:    { c: 'he',    n: 'Hebrew',            t: 'Hebrew',                      xlp: 'hebrew'           },
          hi:    { c: 'hi',    n: 'Hindi',             t: 'Hindi',                       xlp: 'hindi'            },
          hr:    { c: 'hr',    n: 'Croatian',          t: 'Croatian',                    xlp: 'croatian'         },
          hy:    { c: 'hy',    n: 'Armenian',          t: 'Armenian',                    xlp: 'armenian'         },
          ia:    { c: 'ia',    n: 'Interlingua',       t: 'Interlingua',                 xlp: 'interlingua'      },
          is:    { c: 'is',    n: 'Icelandic',         t: 'Icelandic',                   xlp: 'icelandic'        },
          it:    { c: 'it',    n: 'Italian',           t: 'Italiano',                    xlp: 'italian'          },
          ja:    { c: 'ja',    n: 'Japanese',          t: '日本語 (Nihongo)',            xlp: 'japanese'         },
          ko:    { c: 'ko',    n: 'Korean',            t: 'Korean',                      xlp: 'korean'           },
          la:    { c: 'la',    n: 'Latin',             t: 'Latin',                       xlp: 'latin'            },
          lo:    { c: 'lo',    n: 'Lao',               t: 'Lao',                         xlp: 'lao'              },
          lt:    { c: 'lt',    n: 'Lithuanian',        t: 'Lithuanian',                  xlp: 'lithuanian'       },
          lv:    { c: 'lv',    n: 'Latvian',           t: 'Latvian',                     xlp: 'latvian'          },
          ml:    { c: 'ml',    n: 'Malayalam',         t: 'Malayalam',                   xlp: 'malayalam'        },
          mr:    { c: 'mr',    n: 'Marathi',           t: 'Marathi',                     xlp: 'marathi'          },
          nl:    { c: 'nl',    n: 'Dutch',             t: 'Nederlands',                  xlp: 'dutch'            },
          no:    { c: 'no',    n: 'Norwegian',         t: 'norsk',                       xlp: 'norsk'            },
          nn:    { c: 'nn',    n: 'Norwegian Nynorsk', t: 'nynorsk',                     xlp: 'nynorsk'          },
          oc:    { c: 'oc',    n: 'Occitan',           t: 'Occitan',                     xlp: 'occitan'          },
          pl:    { c: 'pl',    n: 'Polish',            t: 'polski',                      xlp: 'polish'           },
          pt:    { c: 'pt',    n: 'Portuguese',        t: 'Português',                   xlp: 'portuges'         },
          pt_BR: { c: 'pt_BR', n: 'Portuguese Brazil', t: 'Brazilian Português',         xlp: 'brazilian'        },
          ro:    { c: 'ro',    n: 'Romanian',          t: 'română',                      xlp: 'romanian'         },
          ru:    { c: 'ru',    n: 'Russian',           t: 'Русский (Russkij)',           xlp: 'russian'          },
          sa:    { c: 'sa',    n: 'Sanskrit',          t: 'Sanskrit',                    xlp: 'sanskrit'         },
          se:    { c: 'se',    n: 'Sami',              t: 'Samin',                       xlp: 'samin'            },
          sk:    { c: 'sk',    n: 'Slovak',            t: 'slovensky',                   xlp: 'slovak'           },
          sl:    { c: 'sl',    n: 'Slovenian',         t: 'Slovenian',                   xlp: 'slovenian'        },
          sq:    { c: 'sq',    n: 'Albanian',          t: 'Albanian',                    xlp: 'albanian'         },
          sr:    { c: 'sr',    n: 'Serbian',           t: 'Serbian',                     xlp: 'serbian'          },
          sv:    { c: 'sv',    n: 'Swedish',           t: 'svenska',                     xlp: 'swedish'          },
          ta:    { c: 'ta',    n: 'Tamil',             t: 'Tamil',                       xlp: 'tamil'            },
          te:    { c: 'te',    n: 'Telugu',            t: 'Telugu',                      xlp: 'telugu'           },
          th:    { c: 'th',    n: 'Thai',              t: 'Thai',                        xlp: 'thai'             },
          tk:    { c: 'tk',    n: 'Turkmen',           t: 'Turkmen',                     xlp: 'turkmen'          },
          tr:    { c: 'tr',    n: 'Turkish',           t: 'Türkçe',                      xlp: 'turkish'          },
          uk:    { c: 'uk',    n: 'Ukranian',          t: 'українська (ukrajins\'ka)',   xlp: 'ukrainian'        },
          ur:    { c: 'ur',    n: 'Urdu',              t: 'Urdu',                        xlp: 'urdu'             },
          us:    { c: 'en',    n: 'English (American)',t: 'English',                     xlp: 'english'          },
          vi:    { c: 'vi',    n: 'Vietnamese',        t: 'Vietnamese',                  xlp: 'vietnamese'       },
          zh:    { c: 'zh',    n: 'Chinese',           t: '中文',                        xlp: 'chinese'          },
          en:    { c: 'en',    n: 'English',           t: 'English',                     xlp: 'english'          },
          xx:    { c: 'xx',    n: 'Default',           t: 'English',                     xlp: 'english'          },
        }
      end
      def list
        @@language_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],
          'ja'    => table[:ja],
          'ko'    => table[:ko],
          '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],
          'zh'    => table[:zh],
          'en'    => table[:en],
          'xx'    => table[:en]
        }
      end
      self
    end
  end
  class Alphabet
    def initialize(lng_code)
      @lng_code=lng_code
    end
    def hash_arrays
      @alph=case @lng_code
      when /en/                                                              #english
        {
          u: %w[A B C D E F G H I J K L M N O P Q R S T U V W X Y Z],
          l: %w[a b c d e f g h i j k l m n o p q r s t u v w x y z]
        }
      when /da|no|nn/                                                        #danish, norwegian
        {
          u: %w[A B C D E F G H I J K L M N O P Q R S T U V W X Y Z Å Æ Ø],
          l: %w[a b c d e f g h i j k l m n o p q r s t u v w x y z å æ ø]
          #u: %W[A B C D E F G H I J K L M N O P Q R S T U V W X Y Z Æ Ø Å],
          #l: %w[a b c d e f g h i j k l m n o p q r s t u v w x y z æ ø å]
        }
      when /sv/                                                              #swedish
        {
          u: %w[A B C D E F G H I J K L M N O P Q R S T U V W X Y Z Å Ä Ö],
          l: %w[a b c d e f g h i j k l m n o p q r s t u v w x y z å ä ö]
        }
      else                                                                   #english default
        {
          u: %w[A B C D E F G H I J K L M N O P Q R S T U V W X Y Z],
          l: %w[a b c d e f g h i j k l m n o p q r s t u v w x y z]
        }
      end
    end
    def hash_strings
      { u: hash_arrays[:u].join, l: hash_arrays[:l].join }
    end
  end
end
__END__
Language Lists
,* po4a c:
  <http://www.debian.org/international/l10n/po/>
  Px[:lng_lst] see constants.rb
,* 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_TextTranslation
  class Language
    def initialize(md)
      @md=md
    end
    def tex_name(char)
      @lang=if char
        case char
        when 'sq'    then 'albanian'
        when 'am'    then 'amharic'
       #when 'ar'    then 'arabic'         # see polyglossia
        when 'hy'    then 'armenian'
       #when ''      then 'asturian'       # polyglossia
       #when ''      then 'bahasai'        # polyglossia
       #when ''      then 'bahasam'        # polyglossia
        when 'eu'    then 'basque'
        when 'bn'    then 'bengali'
        when 'pt_BR' then 'brazilian'
        when 'br'    then 'breton'
        when 'bg'    then 'bulgarian'
        when 'ca'    then 'catalan'        # see polyglossia
       #when ''      then 'coptic'         # polyglossia
        when 'hr'    then 'croatian'
        when 'cs'    then 'czech'
        when 'da'    then 'danish'
       #when ''      then 'divehi'         # polyglossia
        when 'nl'    then 'dutch'          # see polyglossia
        when 'en'    then 'english'        # see polyglossia
        when 'eo'    then 'esperanto'      # see polyglossia
        when 'et'    then 'estonian'
        when 'gl'    then 'galician'
        when 'de'    then 'german'
        when 'el'    then 'greek'          #gl ?
        when 'he'    then 'hebrew'
        when 'hi'    then 'hindi'
        when 'is'    then 'icelandic'
        when 'ia'    then 'interlingua'
        when 'ga'    then 'irish'
        when 'it'    then 'italian'
       #when ''      then 'farsi'          # polyglossia
        when 'fi'    then 'finnish'
        when 'fr'    then 'french'
        when 'lo'    then 'lao'
        when 'la'    then 'latin'
        when 'lv'    then 'latvian'
        when 'lt'    then 'lithuanian'
       #when ''      then 'lsorbian'       # polyglossia
       #when ''      then 'magyar'         # polyglossia
        when 'ml'    then 'malayalam'
        when 'mr'    then 'marathi'
       #when 'hu'    then 'magyar'
        when 'no'    then 'norske'
        when 'nn'    then 'nynorsk'
        when 'oc'    then 'occitan'
        when 'pl'    then 'polish'
        when 'pt'    then 'portuges'
        when 'ro'    then 'romanian'
        when 'ru'    then 'russian'
        when 'se'    then 'samin'          #(check sami?)
        when 'sa'    then 'sanskrit'
        when 'sr'    then 'serbian'
       #when ''      then 'scottish'       # polyglossia  (gd (Gaelic (Scots)))
        when 'sk'    then 'slovak'
        when 'sl'    then 'slovenian'
        when 'es'    then 'spanish'
        when 'sv'    then 'swedish'
        when 'ta'    then 'tamil'
        when 'te'    then 'telugu'
        when 'th'    then 'thai'
        when 'tr'    then 'turkish'
        when 'tk'    then 'turkmen'
        when 'uk'    then 'ukrainian'
        when 'ur'    then 'urdu'
       #when ''      then 'usorbian'       # polyglossia
        when 'vi'    then 'vietnamese'
        when 'cy'    then 'welsh'
        when 'us'    then 'USenglish'      # depreciated, see iso-639-2
        else         then 'english'
        end
      else            'english'
      end
    end
  end
end
__END__
#+END_SRC

* prog_text_translation.rb

#+HEADER: :tangle "../lib/sisu/prog_text_translation.rb"
#+BEGIN_SRC ruby
#<<sisu_document_header>>
module SiSU_Translate
  require_relative 'se'                                 # se.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       then English.new(md,doc_lang,trans_str)    # tag depreciated, see iso 639-2
      when /English/i        then English.new(md,doc_lang,trans_str)
      when /French/i         then French.new(md,doc_lang,trans_str)
      when /German/i         then German.new(md,doc_lang,trans_str)
      when /Italian/i        then Italian.new(md,doc_lang,trans_str)
      when /Spanish/i        then Spanish.new(md,doc_lang,trans_str)
      when /Portuguese Brazil|Brazilian(?: Portuguese)?/i
                                  Portuguese.new(md,doc_lang,trans_str) # tag depreciated, see iso 639-2
      when /Portuguese/i     then Portuguese.new(md,doc_lang,trans_str)
      when /Swedish/i        then Swedish.new(md,doc_lang,trans_str)
      when /Danish/i         then Danish.new(md,doc_lang,trans_str)
      when /Finnish/i        then Finnish.new(md,doc_lang,trans_str)
      when /Norwegian/i      then Norwegian.new(md,doc_lang,trans_str)
      when /Icelandic/i      then Icelandic.new(md,doc_lang,trans_str)
      when /Dutch/i          then Dutch.new(md,doc_lang,trans_str)
      when /Estonian/i       then Estonian.new(md,doc_lang,trans_str)
      when /Hungarian/i      then Hungarian.new(md,doc_lang,trans_str)
      when /Polish/i         then Polish.new(md,doc_lang,trans_str)
      when /Romanian/i       then Romanian.new(md,doc_lang,trans_str)
      when /Russian/i        then Russian.new(md,doc_lang,trans_str)
      when /Greek/i          then Greek.new(md,doc_lang,trans_str)
      when /Ukranian/i       then Ukranian.new(md,doc_lang,trans_str)
      when /Turkish/i        then Turkish.new(md,doc_lang,trans_str)
      when /Slovenian/i      then Slovenian.new(md,doc_lang,trans_str)
      when /Croatian/i       then Croatian.new(md,doc_lang,trans_str)
      when /Slovak(?:ian)?/i then Slovak.new(md,doc_lang,trans_str)
      when /Czech/i          then Czech.new(md,doc_lang,trans_str)
      when /Bulgarian/i      then Bulgarian.new(md,doc_lang,trans_str)
      else                        English.new(md,doc_lang,trans_str)
      end
    end
    def filename
      @lang_class.filename
    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 contents
      @lang_class.contents
    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 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
      case @trans_str
      when /American/i       then 'American English'                    # tag depreciated, see iso 639-2
      when /English/i        then 'English'
      when /French/i         then 'français'
      when /German/i         then 'Deutsch'
      when /Italian/i        then 'Italiano'
      when /Spanish/i        then 'español'
      when /Portuguese Brazil|Brazilian(?: Portuguese)?/i
                                  'Brazilian Português'                 # tag depreciated, see iso 639-2
      when /Portuguese/i     then 'Português'
      when /Swedish/i        then 'svenska'
      when /Danish/i         then 'dansk'
      when /Finnish/i        then 'suomi'
      when /Norwegian/i      then 'norsk'
      when /Icelandic/i      then 'Icelandic'
      when /Dutch/i          then 'Nederlands'
      when /Estonian/i       then 'Estonian'
      when /Hungarian/i      then 'Hungarian'
      when /Polish/i         then 'polski'
      when /Romanian/i       then 'română'
      when /Russian/i        then 'Русский (Russkij)'
      when /Greek/i          then 'Ελληνικά (Ellinika)'
      when /Ukranian/i       then 'українська (ukrajins\'ka)'
      when /Turkish/i        then 'Türkçe'
      when /Slovenian/i      then 'Slovenian'
      when /Croatian/i       then 'Croatian'
      when /Slovak(?:ian)?/i then 'slovensky'            #slovensky ?
      when /Czech/i          then 'česky'
      when /Bulgarian/i      then 'Български (Bəlgarski)'
      when /Japanese/i       then '日本語 (Nihongo)'
      when /Korean/i         then '한국어 (Hangul)'
     #when /Catalan/i        then 'català'
      else                         'English'
      end
      #check on 中文  and عربي
    end
  end
  <<language_english>>
  <<language_french>>
  <<language_german>>
  <<language_spanish>>
  <<language_italian>>
  <<language_finnish>>
  <<language_protuguese>>
  <<language_swedish>>
  <<language_remaining>>
end
__END__
#+END_SRC

* translations
** English

#+NAME: language_english
#+BEGIN_SRC  ruby
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 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 creator #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 contents
    'Contents'
  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 (ao) 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
    case @trans_str
    when /American/i       then 'American English'                    # tag depreciated, see iso 639-2
    when /English/i        then 'English'
    when /French/i         then 'French'
    when /German/i         then 'German'
    when /Italian/i        then 'Italian'
    when /Spanish/i        then 'Spanish'
    when /Portuguese Brazil|Brazilian(?: Portuguese)?/i
                                'Brazilian Portuguese'                # tag depreciated, see iso 639-2
    when /Portuguese/i     then 'Portuguese'
    when /Swedish/i        then 'Swedish'
    when /Danish/i         then 'Danish'
    when /Finnish/i        then 'Finnish'
    when /Norwegian/i      then 'Norwegian'
    when /Icelandic/i      then 'Icelandic'
    when /Dutch/i          then 'Dutch'
    when /Estonian/i       then 'Estonian'
    when /Hungarian/i      then 'Hungarian'
    when /Polish/i         then 'Polish'
    when /Romanian/i       then 'Romanian'
    when /Russian/i        then 'Russian'
    when /Greek/i          then 'Greek'
    when /Ukranian/i       then 'Ukranian'
    when /Turkish/i        then 'Turkish'
    when /Slovenian/i      then 'Slovenian'
    when /Croatian/i       then 'Croatian'
    when /Slovak(?:ian)?/i then 'Slovakian'
    when /Czech/i          then 'Czech'
    when /Bulgarian/i      then 'Bulgarian'
    else @trans_str
    end
  end
end
#+END_SRC

** French

#+NAME: language_french
#+BEGIN_SRC text
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 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 contents
    'Contents' #translate
  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
    case @trans_str
    when /American/i       then 'Anglais americain'                   # tag depreciated, see iso 639-2
    when /English/i        then 'Anglais'
    when /French/i         then 'Français'
    when /German/i         then 'Allemand'
    when /Italian/i        then 'Italien'
    when /Spanish/i        then 'Espagnol'
    when /Portuguese Brazil|Brazilian(?: Portuguese)?/i
                                'Portugais brésilien'                 # tag depreciated, see iso 639-2
    when /Portuguese/i     then 'Portugais'
    when /Swedish/i        then 'Suédois'
    when /Danish/i         then 'Danois'
    when /Finnish/i        then 'Finnois'
    when /Norwegian/i      then 'Norvégien'
    when /Icelandic/i      then 'Islandais'
    when /Dutch/i          then 'Néerlandais'
    when /Estonian/i       then 'Estonien'
    when /Hungarian/i      then 'Hongrois'
    when /Polish/i         then 'Polonais'
    when /Romanian/i       then 'Roumain'
    when /Russian/i        then 'Russe'
    when /Greek/i          then 'Grec'
    when /Ukranian/i       then 'Ukrainien'
    when /Turkish/i        then 'Turc'
    when /Slovenian/i      then 'Slovène'
    when /Croatian/i       then 'Croate'
    when /Slovak(?:ian)?/i then 'Slovaque'
    when /Czech/i          then 'Tcheque'
    when /Bulgarian/i      then 'Bulgare'
    else @trans_str
    end
  end
end
#+END_SRC

** German

#+NAME: language_german
#+BEGIN_SRC text
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 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 contents
    'Contents' #translate
  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
    case @trans_str
    when /American/i       then 'Amerikanisch-Englisch'               # tag depreciated, see iso 639-2
    when /English/i        then 'Englisch'
    when /French/i         then 'Französisch'
    when /German/i         then 'Deutsch'
    when /Italian/i        then 'Italienisch'
    when /Spanish/i        then 'Spanisch'
    when /Portuguese Brazil|Brazilian(?: Portuguese)?/i
                                'Brasilianisch-Portugiesisch'         # tag depreciated, see iso 639-2
    when /Portuguese/i     then 'Portugiesisch'
    when /Swedish/i        then 'Schwedisch'
    when /Danish/i         then 'Dänisch'
    when /Finnish/i        then 'Finnisch'
    when /Norwegian/i      then 'Norwegisch'
    when /Icelandic/i      then 'Isländisch'
    when /Dutch/i          then 'Niederländisch'
    when /Estonian/i       then 'Estnisch'
    when /Hungarian/i      then 'Ungarisch'
    when /Polish/i         then 'Polnisch'
    when /Romanian/i       then 'Rumänisch'
    when /Russian/i        then 'Russisch'
    when /Greek/i          then 'Griechisch'
    when /Ukranian/i       then 'Ukrainisch'
    when /Turkish/i        then 'Türkisch'
    when /Slovenian/i      then 'Slovenisch'
    when /Croatian/i       then 'Kroatisch'
    when /Slovak(?:ian)?/i then 'Slovakisch'
    when /Czech/i          then 'Tschechisch'
    when /Bulgarian/i      then 'Bulgarisch'
    else @trans_str
    end
  end
end
#+END_SRC

** Spanish

#+NAME: language_spanish
#+BEGIN_SRC text
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 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 contents
    'Contents' #translate
  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
    case @trans_str
    when /American/i       then 'Inglés Americano'                     # tag depreciated, see iso 639-2
    when /English/i        then 'Inglés'
    when /French/i         then 'Francés'
    when /German/i         then 'Alemán'
    when /Italian/i        then 'Italiano'
    when /Spanish/i        then 'Español'
    when /Portuguese Brazil|Brazilian(?: Portuguese)?/i
                                'Portugués de Brasil'                  # tag depreciated, see iso 639-2
    when /Portuguese/i     then 'Portugués'
    when /Swedish/i        then 'Sueco'
    when /Danish/i         then 'Danés'
    when /Finnish/i        then 'Finés'
    when /Norwegian/i      then 'Noruego'
    when /Icelandic/i      then 'Islandés'
    when /Dutch/i          then 'Holandés'
    when /Estonian/i       then 'Estonio'
    when /Hungarian/i      then 'Húngaro'
    when /Polish/i         then 'Polaco'
    when /Romanian/i       then 'Rumano'
    when /Russian/i        then 'Ruso'
    when /Greek/i          then 'Griego'
    when /Ukranian/i       then 'Ucraniano'
    when /Turkish/i        then 'Turco'
    when /Slovenian/i      then 'Eslovaco'
    when /Croatian/i       then 'Croata'
    when /Slovak(?:ian)?/i then 'Eslovaco'
    when /Czech/i          then 'Checo'
    when /Bulgarian/i      then 'Búlgaro'
    else @trans_str
    end
  end
end
#+END_SRC

** Italian

#+NAME: language_italian
#+BEGIN_SRC text
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 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 contents
    'Contents' #translate
  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 (ao 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
    case @trans_str
    when /American/i       then 'Inglese USA'                         # tag depreciated, see iso 639-2
    when /English/i        then 'Inglese'
    when /French/i         then 'Francese'
    when /German/i         then 'Tedesco'
    when /Italian/i        then 'Italiano'
    when /Spanish/i        then 'Spagnolo'
    when /Portuguese Brazil|Brazilian(?: Portuguese)?/i
                                'Portoguese (Brasile)'                # tag depreciated, see iso 639-2
    when /Portuguese/i     then 'Portoguese'
    when /Swedish/i        then 'Svedese'
    when /Danish/i         then 'Danese'
    when /Finnish/i        then 'Finlandese'
    when /Norwegian/i      then 'Norvegese'
    when /Icelandic/i      then 'Islandese'
    when /Dutch/i          then 'Olandese'
    when /Estonian/i       then 'Estone'
    when /Hungarian/i      then 'Ungherese'
    when /Polish/i         then 'Polacco'
    when /Romanian/i       then 'Romeno'
    when /Russian/i        then 'Russo'
    when /Greek/i          then 'Greco'
    when /Ukranian/i       then 'Ucraino'
    when /Turkish/i        then 'Turco'
    when /Slovenian/i      then 'Sloveno'
    when /Croatian/i       then 'Croato'
    when /Slovak(?:ian)?/i then 'Slovacco'
    when /Czech/i          then 'Ceco'
    when /Bulgarian/i      then 'Bulgaro'
    else @trans_str
    end
  end
end
#+END_SRC

** Finnish

#+NAME: language_finnish
#+BEGIN_SRC text
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 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 contents
    'Contents' #translate
  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
    case @trans_str
    when /American/i       then 'Amerikanenglanti'                    # tag depreciated, see iso 639-2
    when /English/i        then 'Englanti'
    when /French/i         then 'Ranska'
    when /German/i         then 'Saksa'
    when /Italian/i        then 'Italia'
    when /Spanish/i        then 'Espanja'
    when /Portuguese Brazil|Brazilian(?: Portuguese)?/i
                                'Brasilian portugali'                 # tag depreciated, see iso 639-2
    when /Portuguese/i     then 'Portugali'
    when /Swedish/i        then 'Ruotsi'
    when /Danish/i         then 'Tanska'
    when /Finnish/i        then 'Suomi'
    when /Norwegian/i      then 'Norja'
    when /Icelandic/i      then 'Islanti'
    when /Dutch/i          then 'Hollanti'
    when /Estonian/i       then 'Viro'
    when /Hungarian/i      then 'Unkari'
    when /Polish/i         then 'Puola'
    when /Romanian/i       then 'Romania'
    when /Russian/i        then 'Venäjä'
    when /Greek/i          then 'Kreikka'
    when /Ukranian/i       then 'Ukraina'
    when /Turkish/i        then 'Turkki'
    when /Slovenian/i      then 'Slovenia'
    when /Croatian/i       then 'Kroatia'
    when /Slovak(?:ian)?/i then 'Slovakki'
    when /Czech/i          then 'Tsekki'
    when /Bulgarian/i      then 'Bulgaria'
    else @trans_str
    end
  end
end
#+END_SRC

** Portuguese

#+NAME: language_protuguese
#+BEGIN_SRC text
class Portuguese            < English
end
#+END_SRC

** Swedish

#+NAME: language_swedish
#+BEGIN_SRC text
class Swedish               < English
  def contents
    'Innehåll'
  end
end
#+END_SRC

** remaining

#+NAME: language_remaining
#+BEGIN_SRC text
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_SRC

* document header

#+NAME: sisu_document_header
#+BEGIN_SRC text
encoding: utf-8
- Name: SiSU

  - Description: documents, structuring, processing, publishing, search
    i18n

  - Author: Ralph Amissah
    <ralph.amissah@gmail.com>

  - Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
    2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2019,
    2020, 2021, 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.sisudoc.org/sisu/en/manifest/gpl.fsf.html>

  - SiSU uses:
    - Standard SiSU markup syntax,
    - Standard SiSU meta-markup syntax, and the
    - Standard SiSU object citation numbering and system

  - Homepages:
    <http://www.sisudoc.org>

  - Git
    <https://git.sisudoc.org/projects/>
    <https://git.sisudoc.org/projects/?p=software/sisu.git;a=summary>
    <https://git.sisudoc.org/projects/?p=markup/sisu-markup-samples.git;a=summary>
#+END_SRC

* NOTES
** language list po4a

#+BEGIN_SRC text
#% Language List po4a
http://www.debian.org/international/l10n/po/
see polyglossia for subset
- CSB (Unknown language)
- KAB (Unknown language)
- TLH (Unknown language)
- aa (Afar)
- ab (Abkhazian)
- af (Afrikaans)
- af_ZA (Afrikaans, as spoken in South Africa)
- am (Amharic)
- an (Unknown language)
- ang (Unknown language)
- ar (Arabic)
- ar_AR (Arabic, as spoken in Argentina)
- ar_EG (Arabic, as spoken in Egypt)
- ar_OM (Arabic, as spoken in Oman)
- ar_PS (Arabic, as spoken in Palestinian Territory, Occupied)
- ar_SA (Arabic, as spoken in Saudi Arabia)
- ar_SY (Arabic, as spoken in Syrian Arab Republic)
- as (Assamese)
- ast (Unknown language)
- ay (Aymara)
- az (Azerbaijani)
- az_IR (Azerbaijani, as spoken in Iran)
- be (Belarusian)
- be@latin (Unknown language)
- be@tarask (Unknown language)
- bem (Unknown language)
- bg (Bulgarian)
- bg_BG (Bulgarian, as spoken in Bulgaria)
- bi (Bislama)
- bn (Bengali)
- bn_BD (Bengali, as spoken in Bangladesh)
- bn_IN (Bengali, as spoken in India)
- bo (Tibetan)
- br (Breton)
- bs (Bosnian)
- bs_BA (Bosnian, as spoken in Bosnia and Herzegovina)
- bs_BS (Bosnian, as spoken in Bahamas)
- byn (Unknown language)
- ca (Catalan)
- ca@valencia (Unknown language)
- ca_AD (Catalan, as spoken in Andorra)
- ca_ES (Catalan, as spoken in Spain)
- ca_ES@valencia (Unknown language)
- ca_FR (Catalan, as spoken in France)
- ca_IT (Catalan, as spoken in Italy)
- co (Corsican)
- crh (Unknown language)
- cs (Czech)
- cs_CZ (Czech, as spoken in Czech Republic)
- csb (Unknown language)
- cy (Welsh)
- cy_GB (Welsh, as spoken in Great Britain)
- cz (Unknown language)
- da (Danish)
- da_DK (Danish, as spoken in Denmark)
- de (German)
- de_AT (German, as spoken in Austria)
- de_CH (German, as spoken in Switzerland)
- de_DE (German, as spoken in Germany)
- dk (Unknown language)
- dz (Dzongkha)
- el (Greek)
- el_GR (Greek, as spoken in Greece)
- en (English)
- en@boldquot (Unknown language)
- en@quot (Unknown language)
- en@shaw (Unknown language)
- en_AU (English, as spoken in Australia)
- en_CA (English, as spoken in Canada)
- en_GB (English, as spoken in Great Britain)
- en_NZ (English, as spoken in New Zealand)
- en_US (English, as spoken in United States)
- en_US@piglatin (Unknown language)
- en_ZA (English, as spoken in South Africa)
- eo (Esperanto)
- es (Spanish)
- es_AR (Spanish, as spoken in Argentina)
- es_CL (Spanish, as spoken in Chile)
- es_CO (Spanish, as spoken in Colombia)
- es_CR (Spanish, as spoken in Costa Rica)
- es_DO (Spanish, as spoken in Dominican Republic)
- es_EC (Spanish, as spoken in Ecuador)
- es_ES (Spanish, as spoken in Spain)
- es_GA (Spanish, as spoken in Gabon)
- es_GT (Spanish, as spoken in Guatemala)
- es_HN (Spanish, as spoken in Honduras)
- es_LA (Spanish, as spoken in Lao People''s Democratic Republic)
- es_MX (Spanish, as spoken in Mexico)
- es_NI (Spanish, as spoken in Nicaragua)
- es_PA (Spanish, as spoken in Panama)
- es_PE (Spanish, as spoken in Peru)
- es_PR (Spanish, as spoken in Puerto Rico)
- es_SV (Spanish, as spoken in El Salvador)
- es_UY (Spanish, as spoken in Uruguay)
- es_VE (Spanish, as spoken in Venezuela)
- et (Estonian)
- et_EE (Estonian, as spoken in Estonia)
- eu (Basque)
- eu_ES (Basque, as spoken in Spain)
- fa (Persian)
- fa_AF (Persian, as spoken in Afghanistan)
- fa_IR (Persian, as spoken in Iran)
- fi (Finnish)
- fi_FI (Finnish, as spoken in Finland)
- fil (Unknown language)
- fo (Faeroese)
- fo_FO (Faeroese, as spoken in Faroe Islands)
- fr (French)
- fr_BE (French, as spoken in Belgium)
- fr_CA (French, as spoken in Canada)
- fr_CH (French, as spoken in Switzerland)
- fr_FR (French, as spoken in France)
- fr_FX (French, as spoken in France, Metropolitan)
- fr_LU (French, as spoken in Luxembourg)
- frp (Unknown language)
- fur (Unknown language)
- fy (Frisian)
- fy_NL (Frisian, as spoken in Netherlands)
- ga (Irish)
- gd (Gaelic (Scots))
- gez (Unknown language)
- gl (Galician)
- gl_ES (Galician, as spoken in Spain)
- gn (Guarani)
- gu (Gujarati)
- gv (Manx)
- ha (Hausa)
- he (Hebrew)
- he_IL (Hebrew, as spoken in Israel)
- hi (Hindi)
- hne (Unknown language)
- hr (Croatian)
- hr_HR (Croatian, as spoken in Croatia)
- ht (Unknown language)
- hu (Hungarian)
- hu_HU (Hungarian, as spoken in Hungary)
- hy (Armenian)
- ia (Interlingua)
- id (Indonesian)
- id_ID (Indonesian, as spoken in Indonesia)
- ig (Unknown language)
- io (Unknown language)
- is (Icelandic)
- is_IS (Icelandic, as spoken in Iceland)
- it (Italian)
- it_CH (Italian, as spoken in Switzerland)
- it_IT (Italian, as spoken in Italy)
- iu (Inuktitut)
- ja (Japanese)
- ja_JP (Japanese, as spoken in Japan)
- jv (Unknown language)
- jv_ID (Unknown language)
- ka (Georgian)
- kab (Unknown language)
- kk (Kazakh)
- kl (Kalaallisut)
- km (Khmer)
- km_KH (Khmer, as spoken in Cambodia)
- kn (Kannada)
- ko (Korean)
- ko_KR (Korean, as spoken in Korea)
- ks (Kashmiri)
- ku (Kurdish)
- kw (Cornish)
- ky (Kirghiz)
- la (Latin)
- lb (Letzeburgesch)
- lg (Unknown language)
- li (Unknown language)
- ln (Lingala)
- lo (Lao)
- lt (Lithuanian)
- lt_LT (Lithuanian, as spoken in Lithuania)
- lv (Latvian)
- lv_LV (Latvian, as spoken in Latvia)
- mai (Unknown language)
- mal (Unknown language)
- mg (Malagasy)
- mi (Maori)
- mk (Macedonian)
- mk_MK (Macedonian, as spoken in Macedonia, the Former Yugoslav Republic of)
- ml (Malayalam)
- ml_IN (Malayalam, as spoken in India)
- ml_ML (Malayalam, as spoken in Mali)
- mn (Mongolian)
- mr (Marathi)
- ms (Malay)
- ms_MY (Malay, as spoken in Malaysia)
- mt (Maltese)
- my (Burmese)
- my_MM (Burmese, as spoken in Myanmar)
- na (Nauru)
- nb (Norwegian Bokmål)
- nb_NO (Norwegian Bokmål, as spoken in Norway)
- nds (Unknown language)
- ne (Nepali)
- new (Unknown language)
- nl (Dutch)
- nl_BE (Dutch, as spoken in Belgium)
- nl_NL (Dutch, as spoken in Netherlands)
- nn (Norwegian Nynorsk)
- nn_NO (Norwegian Nynorsk, as spoken in Norway)
- no (Norwegian)
- no_NO (Norwegian, as spoken in Norway)
- nr (Ndebele, South)
- nso (Unknown language)
- oc (Occitan (post 1500))
- oc_FR (Occitan (post 1500), as spoken in France)
- om (Oromo)
- or (Oriya)
- pa (Panjabi)
- pl (Polish)
- pl_PL (Polish, as spoken in Poland)
- pms (Unknown language)
- ps (Pushto)
- pt (Portuguese)
- pt_BR (Portuguese, as spoken in Brazil)
- pt_PT (Portuguese, as spoken in Portugal)
- qu (Quechua)
- rm (Rhaeto-Romance)
- ro (Romanian)
- ro_RO (Romanian, as spoken in Romania)
- ru (Russian)
- ru_RU (Russian, as spoken in Russia)
- rw (Kinyarwanda)
- sa (Sanskrit)
- sc (Sardinian)
- sd (Sindhi)
- se (Sami)
- se_NO (Sami, as spoken in Norway)
- si (Sinhalese)
- si_LK (Sinhalese, as spoken in Sri Lanka)
- si_SI (Sinhalese, as spoken in Slovenia)
- sk (Slovak)
- sk_SK (Slovak, as spoken in Slovakia)
- sl (Slovenian)
- sl_SI (Slovenian, as spoken in Slovenia)
- sl_SL (Slovenian, as spoken in Sierra Leone)
- so (Somali)
- sp (Unknown language)
- sq (Albanian)
- sq_AL (Albanian, as spoken in Albania)
- sr (Serbian)
- sr@Latn (Unknown language)
- sr@ije (Unknown language)
- sr@ijekavian (Unknown language)
- sr@ijekavianlatin (Unknown language)
- sr@latin (Unknown language)
- sr_SR (Serbian, as spoken in Suriname)
- sr_YU (Serbian, as spoken in Yugoslavia)
- st (Sotho)
- su (Sundanese)
- su_ID (Sundanese, as spoken in Indonesia)
- sv (Swedish)
- sv_SE (Swedish, as spoken in Sweden)
- sw (Swahili)
- ta (Tamil)
- ta_LK (Tamil, as spoken in Sri Lanka)
- te (Telugu)
- tg (Tajik)
- th (Thai)
- th_TH (Thai, as spoken in Thailand)
- ti (Tigrinya)
- tig (Unknown language)
- tk (Turkmen)
- tl (Tagalog)
- tlh (Unknown language)
- to (Tonga)
- tr (Turkish)
- tr_TR (Turkish, as spoken in Turkey)
- tt (Tatar)
- ug (Uighur)
- ug_CN (Uighur, as spoken in China)
- uk (Ukrainian)
- uk_UA (Ukrainian, as spoken in Ukraine)
- ur (Urdu)
- ur_PK (Urdu, as spoken in Pakistan)
- uz (Uzbek)
- uz@cyrillic (Unknown language)
- ve (Unknown language)
- vi (Vietnamese)
- vi_AR (Vietnamese, as spoken in Argentina)
- vi_DE (Vietnamese, as spoken in Germany)
- vi_PL (Vietnamese, as spoken in Poland)
- vi_TR (Vietnamese, as spoken in Turkey)
- vi_VN (Vietnamese, as spoken in Vietnam)
- wa (Unknown language)
- wal (Unknown language)
- wo (Wolof)
- xh (Xhosa)
- yi (Yiddish)
- yo (Yoruba)
- zh (Chinese)
- zh_CN (Chinese, as spoken in China)
- zh_HK (Chinese, as spoken in Hong Kong)
- zh_TW (Chinese, as spoken in Taiwan)
- zu (Zulu)

 'sq';    'albanian'
 'am';    'amharic'
#'ar';    'arabic'         # see polyglossia
 'hy';    'armenian'
#'';      'asturian'       # polyglossia
#'';      'bahasai'        # polyglossia
#'';      'bahasam'        # polyglossia
 'eu';    'basque'
 'bn';    'bengali'
 'pt_BR'; 'brazilian'
 'br';    'breton'
 'bg';    'bulgarian'
 'ca';    'catalan'        # see polyglossia
#'';      'coptic'         # polyglossia
 'hr';    'croatian'
 'cs';    'czech'
 'da';    'danish'
#'';      'divehi'         # polyglossia
 'nl';    'dutch'          # see polyglossia
 'en';    'english'        # see polyglossia
 'eo';    'esperanto'      # see polyglossia
 'et';    'estonian'
 'gl';    'galician'
 'de';    'german'
 'el';    'greek'          #gl ?
 'he';    'hebrew'
 'hi';    'hindi'
 'is';    'icelandic'
 'ia';    'interlingua'
 'ga';    'irish'
 'it';    'italian'
#'';      'farsi'          # polyglossia
 'fi';    'finnish'
 'fr';    'french'
 'lo';    'lao'
 'la';    'latin'
 'lv';    'latvian'
 'lt';    'lithuanian'
#'';      'lsorbian'       # polyglossia
#'';      'magyar'         # polyglossia
 'ml';    'malayalam'
 'mr';    'marathi'
#'hu';    'magyar'
 'no';    'norske'
 'nn';    'nynorsk'
 'oc';    'occitan'
 'pl';    'polish'
 'pt';    'portuges'
 'ro';    'romanian'
 'ru';    'russian'
 'se';    'samin'          #(check sami?)
 'sa';    'sanskrit'
 'sr';    'serbian'
#'';      'scottish'       # polyglossia  (gd (Gaelic (Scots)))
 'sk';    'slovak'
 'sl';    'slovenian'
 'es';    'spanish'
 'sv';    'swedish'
 'ta';    'tamil'
 'te';    'telugu'
 'th';    'thai'
 'tr';    'turkish'
 'tk';    'turkmen'
 'uk';    'ukrainian'
 'ur';    'urdu'
#'';      'usorbian'       # polyglossia
 'vi';    'vietnamese'
 'cy';    'welsh'
 'us';    'USenglish'      # depreciated, see iso-639-2
#+END_SRC
** language list po4a

#+BEGIN_SRC text
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
#+END_SRC
