diff options
Diffstat (limited to 'lib')
31 files changed, 2184 insertions, 1835 deletions
| diff --git a/lib/sisu/v2/manpage.rb b/lib/sisu/v2/manpage.rb index a040f1a0..f9c75227 100644 --- a/lib/sisu/v2/manpage.rb +++ b/lib/sisu/v2/manpage.rb @@ -293,6 +293,7 @@ WOK            dob.obj.gsub!(/┆/,'|')            dob.obj.gsub!(/\s\.(\S+)/,' \\.\1')            dob.obj.gsub!(/(\n\.)(\S\S\S+)/m,'\1\\.\2') +          dob.obj.gsub!(/-/,'\-') #manpages use this            dob.obj.gsub!(/~/,'~') if dob.obj #manpages use this            if dob.is =~/group|verse|alt|code/              if dob.is =='code' diff --git a/lib/sisu/v2/param.rb b/lib/sisu/v2/param.rb index c500c282..656490d9 100644 --- a/lib/sisu/v2/param.rb +++ b/lib/sisu/v2/param.rb @@ -733,12 +733,14 @@ module SiSU_Param            end            if manpage['name']              manpage['name']=manpage['name'].join("\n.br\n") +            manpage['name'].gsub!(/(-)/m,"\\\\\\1")              manpage['name'].gsub!(/\A/,"\n.br\n.SH NAME\n.br\n")            else              manpage['name']='man page "name/whatis" information not provided, set in header @man: name=[whatis information]'            end            if manpage['synopsis']              manpage['synopsis']=manpage['synopsis'].join("\n\n.br\n") +            manpage['synopsis'].gsub!(/(-)/m,"\\\\\\1")              manpage['synopsis'].gsub!(/\A/,"\n.br\n.SH SYNOPSIS\n.br\n")            else              manpage['synopsis']='' diff --git a/lib/sisu/v2/sysenv.rb b/lib/sisu/v2/sysenv.rb index 72b1ffc7..d3152947 100644 --- a/lib/sisu/v2/sysenv.rb +++ b/lib/sisu/v2/sysenv.rb @@ -1983,7 +1983,7 @@ WOK          ((defined? @rc['program_select']['odf_viewer']) \          && @rc['program_select']['odf_viewer'] =~/\S\S+/) \          ? @rc['program_select']['odf_viewer'] \ -        : 'oowriter'                                                          #'odf-viewer','oowriter' +        : 'lowriter'                                                                  #'odf-viewer','oowriter'        end        def manpage_viewer          'man' diff --git a/lib/sisu/v3/cgi_pgsql.rb b/lib/sisu/v3/cgi_pgsql.rb index 48211068..fc802f03 100644 --- a/lib/sisu/v3/cgi_pgsql.rb +++ b/lib/sisu/v3/cgi_pgsql.rb @@ -115,12 +115,12 @@ module  SiSU_CGI_pgsql          a="postgresql db used for present directory: #{@db.psql.db}"          b="\n\t(to create and populate postgresql database see 'man sisu' and in particular the -D flag)\n\t[the database to be used for this directory (#{@db.psql.db}) will have to be created manually if it does not exist,\n\tsee 'sisu --help sql'\n\tif you have permission to create databases:\n\t'sisu -d --createdb'\n\tor using postgresql tools directly:\n\t'createdb #{@db.psql.db}'\n\tfor a list of existing databases try 'psql --list']"          SiSU_Screen::Ansi.new(@opt.cmd,a,b).txt_cyan -      else puts 'failed in attempt to write sisu_pgsql.cgi to present directory,  is directory writable?' +      else puts 'failed in attempt to write #{@cgi_file_name} to present directory,  is directory writable?'        end      end      def header0        <<-WOK_SQL -#!/usr/bin/env ruby +#!/usr/bin/ruby1.8  =begin  #{about}   * Description: generates naive cgi search form for search of sisu database (pgsql) @@ -145,7 +145,7 @@ module  SiSU_CGI_pgsql            @l,@t,@q,@c=l,t,q,cse          end          def string -          search={ search: [], flag: false } +          search={ :search => [], :flag => false }            if @t =~/\S+/ or @q =~/\S+/              if @t =~/\S+/;     unescaped_search=CGI.unescape(@t)              elsif @q =~/\S+/;  unescaped_search=CGI.unescape(@q) diff --git a/lib/sisu/v3/cgi_sql_common.rb b/lib/sisu/v3/cgi_sql_common.rb index 924b1533..1174be6e 100644 --- a/lib/sisu/v3/cgi_sql_common.rb +++ b/lib/sisu/v3/cgi_sql_common.rb @@ -299,9 +299,9 @@ module SiSU_CGI_sql          end          def text_to_match(identifier='')            m={ -            string: /#{identifier}\s*(.+?)/, -            string: /#{identifier}\s*(.+?)(?:;|\n|\r|$)/, -            word: /#{identifier}[\s(]*(\S+)/ +            :string => /#{identifier}\s*(.+?)/, +            :string => /#{identifier}\s*(.+?)(?:;|\n|\r|$)/, +            :word => /#{identifier}[\s(]*(\S+)/            }            search_string=if @search_field =~m[:word]              search_string=if @search_field =~m[:braces]; m[:braces].match(@search_field)[1] @@ -328,10 +328,10 @@ module SiSU_CGI_sql          def initialize(conn,search_for,q,c)            @conn=conn            @text_search_flag=false -          @sql_statement={ body: '', endnotes: '',range: '' } +          @sql_statement={ :body => '', :endnotes => '', :range => '' }            #@offset||=@@offset            #@offset+=@@limit -          search={ text: [], endnotes: [] } +          search={ :text => [], :endnotes => [] }            cse=(c =~/\S/) ? true : false            st=Dbi_search_string.new('doc_objects.clean',search_for.text1,q['s1'],cse).string            se=Dbi_search_string.new('endnotes.clean',search_for.text1,q['s1'],cse).string @@ -645,7 +645,7 @@ module SiSU_CGI_sql        @counters_txt,@counters_endn,@sql_select_body,@sql_select_endnotes='','','',''        FCGI.each_cgi do |cgi|          begin # all code goes in begin section -          @search={ text: [], endnotes: [] } +          @search={ :text => [], :endnotes => [] }            q=CGI.new            @db=if cgi['db'] =~/\S+/;              @stub=/#{@db_name_prefix}(\S+)/.match(cgi['db'])[1] @@ -656,13 +656,13 @@ module SiSU_CGI_sql            end            checked_url,checked_stats,checked_searched,checked_tip,checked_case,checked_echo,checked_sql,checked_all,checked_none,checked_selected,checked_default,selected_db='','','','','','','','',''            result_type=(cgi['view']=~/text/) \ -          ? result_type={ index: '', text: 'checked'} \ -          : result_type={ index: 'checked', text: ''} +          ? result_type={ :index => '', :text => 'checked'} \ +          : result_type={ :index => 'checked', :text => ''}            @@limit=if cgi['sql_match_limit'].to_s=~/2500/ -            checked_sql_limit={ l1000: '', l2500: 'checked'} +            checked_sql_limit={ :l1000 => '', :l2500 => 'checked'}              '2500'            else -            checked_sql_limit={ l1000: 'checked', l2500: ''} +            checked_sql_limit={ :l1000 => 'checked', :l2500 => ''}              '1000'            end            checked_echo='checked' if cgi['echo'] =~/\S/ @@ -792,7 +792,7 @@ module SiSU_CGI_sql        </font>        WOK          #eg = %{canned search e.g.:<br /> <a href="#{url}">#{url}</a><br />find: #{analyze}<br />database: #{database}} -        #dbi_canning +        #% dbi_canning          @header=Form.new(@base,search_field,selected_db,result_type,checked_sql_limit,checked_tip,checked_stats,checked_searched,checked_url,checked_case,checked_echo,checked_sql,checked_all,checked_none,checked_selected,checked_default,search_note,the_can).submission_form #% form          unless q['s1'] =~/\S/ or q['au'] =~/\S/ or @search[:text][1] =~/\S/            print "Content-type: text/html\n\n" @@ -808,13 +808,13 @@ module SiSU_CGI_sql              @search[:text]<<%{doc_objects.clean~*'#{CGI.unescape(s1)}'}              @search[:endnotes]<<%{endnotes.clean~*'#{CGI.unescape(s1)}'}            end -          #dbi_request +          #% dbi_request            dbi_statement=Dbi_search_statement.new(@conn,@search_for,q,checked_case)            @text_search_flag=false            @text_search_flag=dbi_statement.text_search_flag            s_contents=dbi_statement.contents            s_endnotes=dbi_statement.endnotes -          @body_main,@endnotes=[],[] +          @body_main,@endnotes='',''            @search_regx=nil            oldtid=0            if @text_search_flag @@ -827,7 +827,48 @@ module SiSU_CGI_sql              @endnotes  << '<p><hr><br /><b>Endnotes:</b><br />'  << sql_select_endnotes            else            end -          #text_objects_body +          @hostpath="#{@hosturl_files}/#{@stub}" +          @ln='en' +          def output_dir_structure +            def by_language_code? +              true +            end +            def by_filetype? +              false +            end +            def by_filename? +              false +            end +            self +          end +          def path_manifest(fn,ln=nil) +            if output_dir_structure.by_language_code? +              manifest_at="#{@hostpath}/#{ln}/manifest/#{fn}.manifest.html" +            elsif output_dir_structure.by_filetype? +              manifest_at="#{@hostpath}/manifest/#{fn}.manifest.html" +            elsif output_dir_structure.by_filename? +              manifest_at="#{@hostpath}/#{fn}/manifest.html" +            end +          end +          def path_html_seg(fn,ln=nil) +            if output_dir_structure.by_language_code? +              html_at="#{@hostpath}/#{ln}/html/#{fn}" +            elsif output_dir_structure.by_filetype? +              html_at="#{@hostpath}/html/#{fn}" +            elsif output_dir_structure.by_filename? +              html_at="#{@hostpath}/#{fn}" +            end +          end +          def path_html_doc(fn,ln=nil) +            if output_dir_structure.by_language_code? +              html_at="#{@hostpath}/#{ln}/html/#{fn}.html" +            elsif output_dir_structure.by_filetype? +              html_at="#{@hostpath}/html/#{fn}.html" +            elsif output_dir_structure.by_filename? +              html_at="#{@hostpath}/#{fn}/doc.html" +            end +          end +                    #% text_objects_body            s_contents.each do |c|                                               #% text body              location=c['src_filename'][/(.+?)\.(?:ssm\.sst|sst)$/,1]              file_suffix=c['src_filename'][/.+?\.(_?sst|ssm)$/,1] @@ -837,13 +878,13 @@ module SiSU_CGI_sql                l=".#{l}"              else ''              end -          #metadata_found_body +          #% metadata_found_body              if c['tid'].to_i != oldtid.to_i                ti=c['title']                can_txt_srch=(cgi['view']=~/index/) \                ? %{<a href="#{@canned_base_url}&fns=#{c['src_filename']}&view=text"><img border="0" width="24" height="16" src="#{@image_src}/b_search.png" alt="search"></a> } \                : %{<a href="#{@canned_base_url}&fns=#{c['src_filename']}&view=index"><img border="0" width="24" height="16" src="#{@image_src}/b_search.png" alt="search"></a> } -              title=%{<span style="background-color: #{@color_heading}"><a href="#{@hosturl_files}/#{@stub}/#{location}/toc#{lang}.html"><img border="0" width="15" height="18" src="#{@image_src}/b_toc.png" alt="toc html"> #{ti}</a></span> by #{c['creator_author']} #{can_txt_srch}<a href="#{@hosturl_files}/#{@stub}/#{location}/toc#{lang}.html"><img border="0" width="15" height="18" src="#{@image_src}/b_toc.png" alt="toc html"></a> <a href="#{@hosturl_files}/#{@stub}/epub/#{location}#{lang}.epub"><img border="0" width="15" height="15" src="#{@image_src}/b_epub.png" alt="epub"></a> <a href="#{@hosturl_files}/#{@stub}/#{location}/portrait#{lang}.pdf"><img border="0" width="15" height="18" src="#{@image_src}/b_pdf.png" alt="pdf portrait"></a> <a href="#{@hosturl_files}/#{@stub}/#{location}/landscape#{lang}.pdf"><img border="0" width="18" height="15" src="#{@image_src}/b_pdf.png" alt="pdf landscape"></a></a> <a href="#{@hosturl_files}/#{@stub}/#{location}/opendocument#{lang}.odt"><img border="0" width="15" height="15" src="#{@image_src}/b_odf.png" alt="odf"></a> <a href="#{@hosturl_files}/#{@stub}/#{location}/sisu_manifest#{lang}.html"><img border="0" width="15" height="15" src="#{@image_src}/b_info.png" alt="manifest"></a><br />}  if file_suffix=~/s/ #hmm watch file_suffix +              title=%{<span style="background-color: #{@color_heading}"><a href="#{path_html_seg(location,@ln)}/toc.html"><img border="0" width="15" height="18" src="#{@image_src}/b_toc.png" alt="toc html"> #{ti}</a></span> by #{c['creator_author']} #{can_txt_srch}<a href="#{path_html_seg(location,@ln)}/toc.html"><img border="0" width="15" height="18" src="#{@image_src}/b_toc.png" alt="toc html"></a> <a href="#{path_manifest(location,@ln)}"><img border="0" width="15" height="15" src="#{@image_src}/b_info.png" alt="manifest"></a><br />}  if file_suffix=~/s/ #hmm watch file_suffix                title=@text_search_flag \                ? '<br /><hr>'+title \                : '<br />'+title @@ -880,7 +921,7 @@ module SiSU_CGI_sql                    matched_para=(@search_regx.to_s.class==String && @search_regx.to_s=~/\S\S+/) \                    ? (c['body'].gsub(/(<a\s+href="https?:\/\/[^><\s]+#{@search_regx}[^>]+?>|#{@search_regx})/mi,%{<span style="background-color: #{@color_match}">\\1</span>})) \                    : c['body'] -                  %{<hr><p><font size="2">ocn <b><a href="#{@hosturl_files}/#{@stub}/#{location}/#{c['seg']}#{lang}.html##{c['ocn']}">#{c['ocn']}</a></b>:</font></p>#{matched_para}} +                  %{<hr><p><font size="2">ocn <b><a href="#{path_html_seg(location,@ln)}/#{c['seg']}#{lang}.html##{c['ocn']}">#{c['ocn']}</a></b>:</font></p>#{matched_para}}                  elsif c['suffix'] =~/1/ #doc                    %{#{title}<hr><p><font size="2">ocn #{c['ocn']}:#{c['body']}}                  end @@ -888,9 +929,9 @@ module SiSU_CGI_sql                  output=title+text                else #elsif cgi['view']=~/index/                                #% idx body                  if c['suffix'] !~/1/ #seg -                  index=%{<a href="#{@hosturl_files}/#{@stub}/#{location}/#{c['seg']}#{lang}.html##{c['ocn']}">#{c['ocn']}</a>, } if @text_search_flag -                elsif c['suffix'] =~/1/ #doc -                  index=%{<a href="#{@hosturl_files}/#{@stub}/#{location}/doc#{lang}.html##{c['ocn']}">#{c['ocn']}</a>, } +                  index=%{<a href="#{path_html_seg(location,@ln)}/#{c['seg']}#{lang}.html##{c['ocn']}">#{c['ocn']}</a>, } if @text_search_flag +                elsif c['suffix'] =~/1/ #doc #FIX +                  index=%{<a href="#{path_html_doc(location,@ln)}##{c['ocn']}">#{c['ocn']}</a>, }                  end                  if c['seg'] =~/\S+/                    if @text_search_flag @@ -936,7 +977,7 @@ module SiSU_CGI_sql                  can_txt_srch=(cgi['view']=~/index/) \                  ? %{<a href="#{@canned_base_url}&fns=#{e['src_filename']}&view=text"><img border="0" width="24" height="16" src="#{@image_src}/b_search.png" alt="search"></a> } \                  : %{<a href="#{@canned_base_url}&fns=#{e['src_filename']}&view=index"><img border="0" width="24" height="16" src="#{@image_src}/b_search.png" alt="search"></a> } -                title=%{<br /><hr><span style="background-color: #{@color_heading}"><a href="#{@hosturl_files}/#{@stub}/#{location}/toc#{lang}.html"><img border="0" width="15" height="18" src="#{@image_src}/b_toc.png" alt="toc html"> #{ti}</a></span> by #{e['creator_author']} #{can_txt_srch}<a href="#{@hosturl_files}/#{@stub}/#{location}/toc#{lang}.html"><img border="0" width="15" height="18" src="#{@image_src}/b_toc.png" alt="toc html"></a> <a href="#{@hosturl_files}/#{@stub}/epub/#{location}#{lang}.epub"><img border="0" width="15" height="15" src="#{@image_src}/b_epub.png" alt="epub"></a> <a href="#{@hosturl_files}/#{@stub}/#{location}/portrait.pdf"><img border="0" width="15" height="18" src="#{@image_src}/b_pdf.png" alt="pdf portrait"></a> <a href="#{@hosturl_files}/#{@stub}/#{location}/landscape.pdf"><img border="0" width="18" height="15" src="#{@image_src}/b_pdf.png" alt="pdf landscape"></a> <a href="#{@hosturl_files}/#{@stub}/#{location}/opendocument#{lang}.odt"><img border="0" width="15" height="15" src="#{@image_src}/b_odf.png" alt="odf"></a> <a href="#{@hosturl_files}/#{@stub}/#{location}/sisu_manifest#{lang}.html"><img border="0" width="15" height="15" src="#{@image_src}/b_info.png" alt="manifest"></a><br />}  if file_suffix=~/s/ +                title=%{<br /><hr><span style="background-color: #{@color_heading}"><a href="#{path_html_seg(location,@ln)}/toc.html"><img border="0" width="15" height="18" src="#{@image_src}/b_toc.png" alt="toc html"> #{ti}</a></span> by #{e['creator_author']} #{can_txt_srch}<a href="#{path_html_seg(location,@ln)}/toc.html"><img border="0" width="15" height="18" src="#{@image_src}/b_toc.png" alt="toc html"></a> <a href="#{path_manifest(location,@ln)}"><img border="0" width="15" height="15" src="#{@image_src}/b_info.png" alt="manifest"></a><br />}  if file_suffix=~/s/                  @counter_endn_doc+=1                  oldtid=e['metadata_tid'].to_i                else title = '' @@ -947,10 +988,10 @@ module SiSU_CGI_sql                  matched_endnote=(@search_regx.to_s.class==String && @search_regx.to_s=~/\S\S+/) \                  ? matched=e['body'].gsub(/(<a\s+href="https?:\/\/[^><\s]+#{@search_regx}[^>]+?>|#{@search_regx})/mi,%{<span style="background-color: #{@color_match}">\\1</span>}) \                  : e['body'] -                output=%{#{title}<hr><font size="2">note <b><a href="#{@hosturl_files}/#{@stub}/#{location}/endnotes.html#_#{e['nr']}">#{e['nr']}</a></b> referred to from ocn <a href="#{@hosturl_files}/#{@stub}/#{location}/doc.html##{e['ocn']}">#{e['ocn']}</a>:</font> #{matched_endnote}} -              else #elsif cgi['view']=~/index/                                #% idx endnotes +                output=%{#{title}<hr><font size="2">note <b><a href="#{path_html_seg(location,@ln)}/endnotes.html#_#{e['nr']}">#{e['nr']}</a></b> referred to from ocn <a href="#{path_html_doc(location,@ln)}##{e['ocn']}">#{e['ocn']}</a>:</font> #{matched_endnote}} +              else #elsif cgi['view']=~/index/      #doc #FIX                           #% idx endnotes                  @counter_endn_ocn+=1 -                output=%{#{title}<a href="#{@hosturl_files}/#{@stub}/#{location}/endnotes.html#_#{e['nr']}">#{e['nr']}</a> [§ <a href="#{@hosturl_files}/#{@stub}/#{location}/doc.html##{e['ocn']}">#{e['ocn']}</a>], } +                output=%{#{title}<a href="#{path_html_seg(location,@ln)}/endnotes.html#_#{e['nr']}">#{e['nr']}</a> [§ <a href="#{path_html_doc(location,@ln)}##{e['ocn']}">#{e['ocn']}</a>], }                end                @counters_endn=if @counter_endn_doc > 0                  if checked_stats =~/\S/ @@ -964,7 +1005,7 @@ module SiSU_CGI_sql                  end                end                @endnotes << output #+ details -            else @endnotes=[] #does not take out yet +            else @endnotes='' #does not take out yet              end            end            offset=dbi_statement.sql_offset.to_s @@ -974,7 +1015,7 @@ module SiSU_CGI_sql            ? dbi_statement.pre_next(true,@image_src).to_s \            : dbi_statement.pre_next(false,@image_src).to_s            limit=dbi_statement.sql_match_limit.to_s -          cgi.out{@header + @counters_txt + @counters_endn + canned + @body_main.join + @endnotes.join + canned + @tail} #% print cgi_output_header+counters+body+endnotes +          cgi.out{@header + @counters_txt + @counters_endn + canned + @body_main + @endnotes + canned + @tail} #% print cgi_output_header+counters+body+endnotes          end          rescue Exception => e            s='<pre>' + CGI::escapeHTML(e.backtrace.reverse.join("\n")) diff --git a/lib/sisu/v3/cgi_sqlite.rb b/lib/sisu/v3/cgi_sqlite.rb index 5a415b0d..4a5838ab 100644 --- a/lib/sisu/v3/cgi_sqlite.rb +++ b/lib/sisu/v3/cgi_sqlite.rb @@ -66,6 +66,7 @@ module  SiSU_CGI_sqlite        @env=SiSU_Env::Info_env.new('',opt)        @image_src="#{@env.url.webserv_cgi}/_sisu/image_sys"        @common=SiSU_CGI_sql::SiSU_CGI_common.new(@webserv,@opt.cmd,@image_src,@env) +      @cgi_file_name="#{Db[:name_prefix_db]}sqlite.cgi"      end      def sqlite        serve=[] @@ -95,7 +96,7 @@ module  SiSU_CGI_sqlite        end        f3 << %{           else  '#{@env.path.webserv}/#{serve[0]}/sisu_sqlite.db'\n          end\n}        if FileTest.writable?('.') -        output=File.open('sisu_sqlite.cgi','w') +        output=File.open(@cgi_file_name,'w')          output << header0 << header1 << header_desc << header2 << f1 << buttons1 << buttons2 << search_request << search_statement << search_statement_common << search_query1 << @common.pages << search_query2 << @common.tail << @common.main1 << f2 << f3 << dbi_connect << @common.main2          a=%{        generated sisu_sqlite.cgi,              BASED ON ALREADY CREATED sisu_sqlite.db OUTPUT, (-d) @@ -104,21 +105,22 @@ module  SiSU_CGI_sqlite          c=case @webserv          when /pwd/; ''          else "if necessary make the directory /usr/lib/cgi-bin : -                  sudo cp -vi #{Dir.pwd}/sisu_sqlite.cgi /usr/lib/cgi-bin/. -                  sudo chmod -v 755 /usr/lib/cgi-bin/sisu_sqlite.cgi -                  (copy sisu_sqlite.cgi to your cgi directory) and set file permissions to 755" +                  sudo cp -vi #{Dir.pwd}/#{@cgi_file_name} /usr/lib/cgi-bin/. +                  sudo chmod -v 755 /usr/lib/cgi-bin/#{@cgi_file_name} +                  sudo ln -s /usr/lib/cgi-bin/#{@cgi_file_name} /usr/lib/cgi-bin/sisu_sqlite.cgi +                  (copy #{@cgi_file_name} to your cgi directory) set file permissions to 755, and make symbolic link to sisu_sqlite.cgi"          end          a=%{#{c}                    #{@env.webserv_base_cgi}/cgi-bin/sisu_sqlite.cgi          }          b='(to create and populate sisu sqlite database see "man sisu" and in particular the -d flag)'          SiSU_Screen::Ansi.new(@opt.cmd,a,b).warn -      else puts 'failed in attempt to write sisu_sqlite.cgi to present directory, is directory writable?' +      else puts "failed in attempt to write #{@cgi_file_name} to present directory, is directory writable?"        end      end      def header0        <<-WOK_SQL -#!/usr/bin/env ruby +#!/usr/bin/ruby1.8  =begin  #{about}   * Description: generates naive cgi search form for search of sisu database (sqlite) @@ -141,7 +143,7 @@ module  SiSU_CGI_sqlite            @l,@t,@q=l,t,q          end          def string -          search={ search: [], flag: false } +          search={ :search => [], :flag => false }            if @t =~/\S+/ or @q =~/\S+/              if @t =~/\S+/;     unescaped_search=CGI.unescape(@t)              elsif @q =~/\S+/;  unescaped_search=CGI.unescape(@q) diff --git a/lib/sisu/v3/concordance.rb b/lib/sisu/v3/concordance.rb index 8b70fdc5..d97c7786 100644 --- a/lib/sisu/v3/concordance.rb +++ b/lib/sisu/v3/concordance.rb @@ -77,7 +77,7 @@ module SiSU_Concordance          @env,@md=@particulars.env,@particulars.md          loc=@env.url.output_tell          unless @md.opt.cmd =~/q/ -          tool=(@md.opt.cmd =~/[MVv]/) ? "#{@env.program.web_browser} #{loc}/#{@md.fnb}/#{@md.fn[:concordance]}" : @md.fns +          tool=(@md.opt.cmd =~/[MVv]/) ? "#{@env.program.web_browser} #{@md.file.output_path.html_concordance}/#{@md.file.base_filename.html_concordance}" : @md.fns            @md.opt.cmd=~/[MVvz]/ \            ? SiSU_Screen::Ansi.new(@md.opt.cmd,"Concordance",tool).grey_title_hi \            : SiSU_Screen::Ansi.new(@md.opt.cmd,'Concordance',tool).green_title_hi @@ -337,7 +337,7 @@ WOK          end          credits=@vz.credits_sisu          @file_concordance << %{</div></body>\n</html>} # footer -        SiSU_Screen::Ansi.new(@md.opt.cmd,@md.fns,"#{@env.path.output_tell}/#{@md.fn[:concordance]}").flow if @md.opt.cmd =~/[MV]/ +        SiSU_Screen::Ansi.new(@opt.cmd,@md.fns,"#{@md.file.output_path.html_concordance}/#{@md.file.base_filename.html_concordance}").flow if @md.opt.cmd =~/[MV]/        end      end    end diff --git a/lib/sisu/v3/constants.rb b/lib/sisu/v3/constants.rb index d94da654..57491a7c 100644 --- a/lib/sisu/v3/constants.rb +++ b/lib/sisu/v3/constants.rb @@ -147,20 +147,18 @@ 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 h  Px[:lv1]=     '*'  Px[:lv2]=     '='  Px[:lv3]=     '=' -#Px[:lv2_3]=   '='  Px[:lv4]=     '-'  Px[:lv5]=     '.'  Px[:lv6]=     '.' -#Px[:lv5_6]=   '.' -Db[:name_prefix]="SiSU#{SiSU_version_dir}c_" -Db[:name_prefix_db]="sisu_#{SiSU_version_dir}c_" +Db[:name_prefix]="SiSU#{SiSU_version_dir}d_" +Db[:name_prefix_db]="sisu_#{SiSU_version_dir}d_"  Db[:col_title]=800  Db[:col_title_part]=400  Db[:col_title_edition]=10  Db[:col_name]=600  Db[:col_creator_misc_short]=100  Db[:col_language]=100 -Db[:col_language_char]=3 +Db[:col_language_char]=6  Db[:col_date_text]=10  Db[:col_classify_txt_long]=600  Db[:col_classify_txt_short]=600 @@ -312,7 +310,7 @@ see polyglossia for subset  * 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_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) 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 61348d28..ed289015 100644 --- a/lib/sisu/v3/dal_doc_str.rb +++ b/lib/sisu/v3/dal_doc_str.rb @@ -482,8 +482,8 @@ module SiSU_document_structure_extract        meta=[]        dir=SiSU_Env::Info_env.new(@md.fns)        base_html="#{dir.url.root}/#{@md.fnb}" -      l=SiSU_Env::Standardise_language.new.file_to_language(@md.fns) -      language=l[:l] +      l=SiSU_Env::Standardise_language.new(@md.opt.lng).language +      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 31a7e4b2..2e68c944 100644 --- a/lib/sisu/v3/dal_metadata.rb +++ b/lib/sisu/v3/dal_metadata.rb @@ -60,8 +60,8 @@ module SiSU_metadata    class Metadata      def initialize(md,metad)        @md,@metadata=md,metad -      l=SiSU_Env::Standardise_language.new.file_to_language(md.fns) -      language=l[:l] +      l=SiSU_Env::Standardise_language.new(@md.opt.lng).language +      language=l[:n]        @tr=SiSU_Translate::Source.new(md,language)      end      def make_para(obj,ocn) diff --git a/lib/sisu/v3/db_columns.rb b/lib/sisu/v3/db_columns.rb index 8b669b12..d8a6f3cf 100644 --- a/lib/sisu/v3/db_columns.rb +++ b/lib/sisu/v3/db_columns.rb @@ -64,6 +64,7 @@ module SiSU_DB_columns      def initialize(md=nil)        @md=md        @db=SiSU_Env::Info_db.new #watch +      @lang ||=SiSU_i18n::Languages.new        if defined? md.opt.mod \        and md.opt.mod.inspect=~/import|update/ \        and FileTest.exist?(md.fns) @@ -98,7 +99,7 @@ module SiSU_DB_columns            'title'          end          def create_column -          "#{name}                VARCHAR(#{Db[:col_title]}) NULL," +          "#{name}                VARCHAR(#{Db[:col_title]}) NOT NULL,"          end          def column_comment            %{COMMENT ON COLUMN metadata_and_text.#{name} @@ -120,7 +121,7 @@ module SiSU_DB_columns            'title_main'          end          def create_column -          "#{name}                VARCHAR(#{Db[:col_title_part]}) NULL," +          "#{name}                VARCHAR(#{Db[:col_title_part]}) NOT NULL,"          end          def column_comment            %{COMMENT ON COLUMN metadata_and_text.#{name} @@ -237,9 +238,8 @@ module SiSU_DB_columns              IS 'metadata document language [DC12]';}          end          def tuple -          t=if defined? @md.title.language \ -          and @md.title.language=~/\S+/ -            txt=@md.title.language +          t=if @lang.list[@md.opt.lng][:n] +            txt=@lang.list[@md.opt.lng][:n]              special_character_escape(txt)              ["#{name}, ","'#{txt}', "]            else ['',''] @@ -259,9 +259,9 @@ module SiSU_DB_columns              IS 'metadata document language iso code';}          end          def tuple -          t=if defined? @md.title.language_char \ -          and @md.title.language_char=~/\S+/ -            txt=@md.title.language_char +          t=if defined? @md.opt.lng \ +          and @md.opt.lng=~/\S+/ +            txt=@md.opt.lng              special_character_escape(txt)              ["#{name}, ","'#{txt}', "]            else ['',''] @@ -599,9 +599,8 @@ module SiSU_DB_columns             IS 'metadata document language';}          end          def tuple -          t=if defined? @md.language.document \ -          and @md.language.document=~/\S+/ -            txt=@md.language.document +          t=if @lang.list[@md.opt.lng][:n] +            txt=@lang.list[@md.opt.lng][:n]              special_character_escape(txt)              ["#{name}, ","'#{txt}', "]            else ['',''] @@ -614,16 +613,17 @@ module SiSU_DB_columns            'language_document_char'          end          def create_column -          "#{name}                VARCHAR(#{Db[:col_language_char]}) NULL," +          "#{name}                VARCHAR(#{Db[:col_language_char]}) NOT NULL,"          end          def column_comment            %{COMMENT ON COLUMN metadata_and_text.#{name}             IS 'metadata document language';}          end          def tuple -          t=if defined? @md.language.document_char \ -          and @md.language.document_char=~/\S+/ -            txt=@md.language.document_char +          #modify check, is now required, SiSUv3d_ +          t=if defined? @md.opt.lng \ +          and @md.opt.lng=~/\S+/ +            txt=@md.opt.lng              special_character_escape(txt)              ["#{name}, ","'#{txt}', "]            else ['',''] @@ -1832,7 +1832,7 @@ module SiSU_DB_columns            'src_filename'          end          def create_column -          "#{name}                VARCHAR(#{Db[:col_filename]}) NULL," +          "#{name}                VARCHAR(#{Db[:col_filename]}) NOT NULL,"          end          def column_comment            %{COMMENT ON COLUMN metadata_and_text.#{name} diff --git a/lib/sisu/v3/db_import.rb b/lib/sisu/v3/db_import.rb index f1e7f064..541399a9 100644 --- a/lib/sisu/v3/db_import.rb +++ b/lib/sisu/v3/db_import.rb @@ -96,17 +96,17 @@ module SiSU_DB_import          @col[:lid] ||=0          @col[:lid]=@driver_sqlite3 \          ? @conn.execute( sql ).join.to_i \ -        : @conn.execute( sql ) { |x| x.fetch_all.to_s.to_i } +        : @conn.execute( sql ) { |x| x.fetch_all.flatten[0] }        rescue          puts "#{__FILE__}:#{__LINE__}" if @opt.cmd =~/M/        end        @col[:lid]=0 if @col[:lid].nil? or @col[:lid].to_s.empty?        sql='SELECT MAX(nid) FROM endnotes'        begin -        @id_n ||=0          @id_n=@driver_sqlite3 \          ? @conn.execute( sql ).join.to_i \ -        : @id_n=@conn.execute( sql ) { |x| x.fetch_all.to_s.to_i } +        : @id_n=@conn.execute( sql ) { |x| x.fetch_all.flatten[0] } +        @id_n ||=0        rescue          puts "#{__FILE__}:#{__LINE__}" if @opt.cmd =~/M/        end @@ -120,7 +120,13 @@ module SiSU_DB_import        @dal_array=SiSU_DAL::Source.new(@opt).get            # dal file drawn here        SiSU_Screen::Ansi.new(@opt.cmd,"#{@db.psql.db}::#{@opt.fns}").puts_blue if @opt.cmd =~/vVM/        SiSU_Screen::Ansi.new(@opt.cmd,'Marshal Load',@fnc).puts_grey if @opt.cmd =~/v/ -      select_first_match=%{ SELECT metadata_and_text.tid FROM metadata_and_text WHERE metadata_and_text.src_filename = '#{@opt.fns}'; } +#% +      select_first_match=%{ +        SELECT metadata_and_text.tid +        FROM metadata_and_text +        WHERE metadata_and_text.src_filename = '#{@opt.fns}' +        AND metadata_and_text.language_document_char = '#{@opt.lng}' +      ;}        file_exist=@sql_type=~/sqlite/ \        ? @conn.get_first_value(select_first_match) \        : @conn.select_one(select_first_match) @@ -187,7 +193,7 @@ module SiSU_DB_import        else          if file_exist            @db=SiSU_Env::Info_db.new -          puts "\n#{@cX.grey}file #{@cX.off} #{@cX.blue}#{@opt.fns}#{@cX.off} #{@cX.grey}already exists in database#{@cX.off} #{@cX.blue}#{@db.psql.db}#{@cX.off} #{@cX.brown}update instead?#{@cX.off}" +          puts "\n#{@cX.grey}file #{@cX.off} #{@cX.blue}#{@opt.fns}#{@cX.off} in language code #{cX.blue}#{@opt.lng}#{cX.off} #{@cX.grey}already exists in database#{@cX.off} #{@cX.blue}#{@db.psql.db}#{@cX.off} #{@cX.brown}update instead?#{@cX.off}"          end        end      end @@ -215,18 +221,18 @@ module SiSU_DB_import          #@tp[:title]=@md.title.full          #special_character_escape(@tp[:title])          #@tp[:title_f],@tp[:title_i]='title, ',"'#{@tp[:title]}', " -        sql='SELECT MAX(tid) FROM metadata_and_text' +        sql='SELECT MAX(tid) FROM metadata_and_text;'          begin            @@id_t ||=0            id_t=if @driver_sqlite3              @conn.execute( sql ).join.to_i # { |x| id_t=x.join.to_i } -          else @conn.execute( sql ) { |x| x.fetch_all.to_s.to_i } +          else +            @conn.execute( sql ) { |x| x.fetch_all.flatten[0] }            end            @@id_t=id_t if id_t          rescue            puts "#{__FILE__} #{__LINE__}" if @opt.cmd =~/M/          end -        @@id_t =0 if @col[:lid].nil? or @col[:lid].to_s.empty?          @@id_t+=1 #bug related, needs to be performed once at start of file, but consider moving, as, placed here it means program will fail if document header lacks @title:          puts %{\n#{@cX.grey}Processing file number#{@cX.off}: #{@cX.green}#{@@id_t}#{@@cX.off}} if @opt.cmd =~/vVM/        end @@ -421,7 +427,8 @@ module SiSU_DB_import                      txt=%{\n\nLARGE TEXT BLOCK OMITTED\n\n}                    end                    if txt -                    en={ type: 'endnotes', +                    en={ +                      type: 'endnotes',                        id:      @id_n,                        lid:     @col[:lid],                        nr:      nr, @@ -459,7 +466,8 @@ module SiSU_DB_import                      txt=%{\n\nLARGE TEXT BLOCK OMITTED\n\n}                    end                    if txt -                    en={ type: 'endnotes_asterisk', +                    en={ +                      type: 'endnotes_asterisk',                        id:      @id_n,                        lid:     @col[:lid],                        nr:      nr, @@ -497,7 +505,8 @@ module SiSU_DB_import                      txt=%{\n\nLARGE TEXT BLOCK OMITTED\n\n}                    end                    if txt -                    en={ type: 'endnotes_plus', +                    en={ +                      type: 'endnotes_plus',                        id:      @id_n,                        lid:     @col[:lid],                        nr:      nr, diff --git a/lib/sisu/v3/db_indexes.rb b/lib/sisu/v3/db_indexes.rb index de20e4c4..64a51474 100644 --- a/lib/sisu/v3/db_indexes.rb +++ b/lib/sisu/v3/db_indexes.rb @@ -93,6 +93,7 @@ module SiSU_DB_index            %{CREATE INDEX idx_title ON metadata_and_text(title);},            %{CREATE INDEX idx_author ON metadata_and_text(creator_author);},            %{CREATE INDEX idx_filename ON metadata_and_text(src_filename);}, +          %{CREATE INDEX idx_language ON metadata_and_text(language_document_char);},            %{CREATE INDEX idx_topics ON metadata_and_text(classify_topic_register)},          ]          conn_execute_array(sql_arr) diff --git a/lib/sisu/v3/db_remove.rb b/lib/sisu/v3/db_remove.rb index 025514b1..cfa19c9f 100644 --- a/lib/sisu/v3/db_remove.rb +++ b/lib/sisu/v3/db_remove.rb @@ -72,9 +72,19 @@ module SiSU_DB_remove          : false        end        del_id=if driver_sqlite3 -        @conn.get_first_value(%{ SELECT tid FROM metadata_and_text WHERE src_filename = '#{@opt.fns}'; }).to_i +        @conn.get_first_value(%{ +          SELECT tid +          FROM metadata_and_text +          WHERE src_filename = '#{@opt.fns}' +          AND metadata_and_text.language_document_char = '#{@opt.lng}' +        ;}).to_i        else -        x=@conn.select_one(%{ SELECT metadata_and_text.tid FROM metadata_and_text WHERE metadata_and_text.src_filename = '#{@opt.fns}'; }) +        x=@conn.select_one(%{ +          SELECT metadata_and_text.tid +          FROM metadata_and_text +          WHERE metadata_and_text.src_filename = '#{@opt.fns}' +          AND metadata_and_text.language_document_char = '#{@opt.lng}' +        ;})          x ? (x.join.to_i) : nil        end        if del_id diff --git a/lib/sisu/v3/db_select.rb b/lib/sisu/v3/db_select.rb index 9bf8acbc..0cd34bcd 100644 --- a/lib/sisu/v3/db_select.rb +++ b/lib/sisu/v3/db_select.rb @@ -164,7 +164,7 @@ module SiSU_DB_select            db_exist?            @sdb_import.marshal_load            tell=case @sql_type -          when /sqlite/; SiSU_Screen::Ansi.new(@opt.cmd,"sqlite #{@db.sqlite.db} database?") +          when /sqlite/; SiSU_Screen::Ansi.new(@opt.cmd,"sqlite3 #{@db.sqlite.db} database?")            when /pg/;     SiSU_Screen::Ansi.new(@opt.cmd,"pgaccess or psql #{@db.psql.db} database?")            else '???'            end @@ -173,7 +173,13 @@ module SiSU_DB_select            db_exist?            @sdb_remove_doc.remove            @sdb_import.marshal_load -          SiSU_Screen::Ansi.new(@opt.cmd,"pgaccess or psql #{@db.psql.db} database?").puts_grey if @opt.cmd =~/v/ +          tell=case @sql_type +          when /sqlite/; SiSU_Screen::Ansi.new(@opt.cmd,"sqlite3 #{@db.sqlite.db} database?") +          when /pg/;     SiSU_Screen::Ansi.new(@opt.cmd,"pgaccess or psql #{@db.psql.db} database?") +          else '???' +          end +          tell.puts_grey if @opt.cmd =~/v/ +        when /^--update$/          when /^--remove$/            db_exist?            @sdb_remove_doc.remove diff --git a/lib/sisu/v3/digests.rb b/lib/sisu/v3/digests.rb index e11ac945..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 @@ -101,8 +101,8 @@ module SiSU_Digest_view          @@dg ||=@env.digest.type          @@dl ||=@env.digest.length          @dg,@dl=@@dg,@@dl -        l=SiSU_Env::Standardise_language.new.file_to_language(@md.fns) -        @language=l[:l] +        l=SiSU_Env::Standardise_language.new(@md.opt.lng).language +        @language=l[:n]          @tr=SiSU_Translate::Source.new(@md,@language)          @sp=' '        end diff --git a/lib/sisu/v3/git.rb b/lib/sisu/v3/git.rb index 9d1d9332..bef93bc3 100644 --- a/lib/sisu/v3/git.rb +++ b/lib/sisu/v3/git.rb @@ -67,7 +67,7 @@ module SiSU_Git        @env=SiSU_Env::Info_env.new        @md=SiSU_Param::Parameters.new(@opt).get        @file=SiSU_Env::SiSU_file.new(@md) -      l=SiSU_Env::Standardise_language.new.file_to_language(@opt.fns) +      l=SiSU_Env::Standardise_language.new(@md.opt.lng).language        unless @md.i18n[0]==l[:c]          p "using: #{@md.i18n[0]} (@make: :language:); filename #{@md.fns} filename language: #{l[:c]}, mismatch"        end diff --git a/lib/sisu/v3/hub.rb b/lib/sisu/v3/hub.rb index e20b4293..ed3aad1d 100644 --- a/lib/sisu/v3/hub.rb +++ b/lib/sisu/v3/hub.rb @@ -105,6 +105,7 @@ module SiSU              @opt.fns=fns              @opt.pth=@opt.paths[i]              @opt.f_pth=@opt.f_pths[i] +            @opt.lng=@opt.lngs[i]              @@pwd=@opt.pth              Dir.chdir(@opt.pth) #watch              env=SiSU_Env::Info_env.new(fns) diff --git a/lib/sisu/v3/i18n.rb b/lib/sisu/v3/i18n.rb index 9fbe8c3e..1001b6fb 100644 --- a/lib/sisu/v3/i18n.rb +++ b/lib/sisu/v3/i18n.rb @@ -57,6 +57,160 @@  =end  module SiSU_i18n +  @@language_table,@@language_list=nil,nil +  class Languages +    def language +      def table +        @@language_table ||= { +          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 +        @@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], +          '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 +294,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 38dc994c..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 @@ -72,8 +72,8 @@ module SiSU_Manifest      def initialize(opt)        @opt=opt        @particulars=SiSU_Particulars::Combined_singleton.instance.get_all(opt) -      l=SiSU_Env::Standardise_language.new.file_to_language(@opt.fns) -      @doc_language=l[:l] +      l=SiSU_Env::Standardise_language.new(@opt.lng).language +      @doc_language=l[:n]      end      def read        begin @@ -108,8 +108,8 @@ module SiSU_Manifest          @base_path=@md.file.output_path.manifest          @@dg ||=SiSU_Env::Info_env.new.digest.type          @dg=@@dg -        l=SiSU_Env::Standardise_language.new.file_to_language(@md.fns) -        @language=l[:l] +        l=SiSU_Env::Standardise_language.new(@md.opt.lng).language +        @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>   </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"> </p></td></tr>\n}          end diff --git a/lib/sisu/v3/manpage.rb b/lib/sisu/v3/manpage.rb index 362d9cda..17fef80b 100644 --- a/lib/sisu/v3/manpage.rb +++ b/lib/sisu/v3/manpage.rb @@ -293,6 +293,7 @@ WOK            dob.obj.gsub!(/┆/,'|')            dob.obj.gsub!(/\s\.(\S+)/,' \\.\1')            dob.obj.gsub!(/(\n\.)(\S\S\S+)/m,'\1\\.\2') +          dob.obj.gsub!(/-/,'\-') #manpages use this            dob.obj.gsub!(/~/,'~') if dob.obj #manpages use this            if dob.is =~/block|group|verse|alt|code/              if dob.is =='code' diff --git a/lib/sisu/v3/options.rb b/lib/sisu/v3/options.rb index a1a448e6..110ebd85 100644 --- a/lib/sisu/v3/options.rb +++ b/lib/sisu/v3/options.rb @@ -61,10 +61,10 @@ module SiSU_commandline    require "pathname"    require_relative 'sysenv'                             # sysenv.rb    class Options -    attr_accessor :cmd,:mod,:act,:f_pths,:files,:paths,:f_pth,:pth,:fns,:fnb,:fnc,:fncb,:lng,:what +    attr_accessor :cmd,:mod,:act,:f_pths,:files,:paths,:lngs,:f_pth,:pth,:fns,:fnb,:fnc,:fncb,:lng,:what      def initialize(a)        @a=a -      @cmd,@f_pth,@pth,@fns,@fnb,@fnc,@fncb,@what='','','','','','','','','' +      @cmd,@f_pth,@pth,@fns,@fnb,@fnc,@fncb,@what,@lng='','','','','','','','','',''        @f_pths,@files,@paths,@mod,@act=Array.new(5){[]}        @env=SiSU_Env::Info_env.new        r=Px[:lng_lst].join('|') @@ -109,6 +109,7 @@ module SiSU_commandline        @paths = q[:paths]        @files = q[:files]        @f_pths = q[:f_pths] +      @lngs = q[:lngs]        if @files.length > 0 \        and @cmd.empty? \        and @mod.length==0 #% if no other action called on filename given, default is sisu -0 [filename(s)] configured as flag default @@ -122,7 +123,7 @@ module SiSU_commandline      end      def set_files_and_paths_and_general_extract(s)        c,w='','' -      m,f,pth,z,lng=[],[],[],[],[] +      m,f,pth,z,lng,lngs=[],[],[],[],[],[]        a=s.split(/\s+/)        a.each do |x|          if x =~/^-[a-z0-5]+/i \ @@ -138,12 +139,20 @@ module SiSU_commandline              pt=Pathname.new(x)              pth << pt.split[0].realpath.to_s     #remove?              f << pt.split[1].to_s                #remove? -            u=/.+?\/([^\/]+)(?:(?:\/(?:en|fr|es)$)|$)/ -            t=/.+\/(en|fr|es)/ -            lng << (pt.split[0].realpath.to_s[t,1]) \ +            r=Px[:lng_lst].join('|') +            u=/.+?\/([^\/]+)(?:\/(?:#{r})$|$)/ +            t=/.+\/(#{r})$/ +            l_p = (pt.split[0].realpath.to_s[t,1]) \                ? pt.split[0].realpath.to_s[t,1] \                : nil                #: '' +            lng << l_p +            lngs << if l_p +              l_p +            elsif x =~/~(#{r})\.ss[tm]/ +              $1 +            else 'en' +            end              f_pths << {                pth: pt.split[0].realpath.to_s,                f: pt.split[1].to_s, @@ -163,7 +172,7 @@ module SiSU_commandline            puts "#{x} in #{a.join(' ')}?"          end        end -      { cmd: c, mod: m, what: w, paths: pth, files: f, f_pths: f_pths, lng: lng } +      { cmd: c, mod: m, what: w, paths: pth, files: f, f_pths: f_pths, lng: lng, lngs: lngs }      end      def expand_numeric_shortcuts(a)        shortcut=SiSU_Env::Info_processing_flag.new diff --git a/lib/sisu/v3/param.rb b/lib/sisu/v3/param.rb index c2968564..87a556ec 100644 --- a/lib/sisu/v3/param.rb +++ b/lib/sisu/v3/param.rb @@ -272,7 +272,7 @@ module SiSU_Param            l,n=Db[:col_language],'title.language'            validate_length(s,l,n)          end -        def language_char +        def language_char # look into, this must be set, from 1 directory stub (.fi), 2 filename (~fi), [3 (not used) document header (@title:\n  :language_char: fi)]            s=@h['language_char']            l,n=Db[:col_language_char],'title.language_char'            validate_length(s,l,n) @@ -744,12 +744,14 @@ module SiSU_Param            end            if manpage['name']              manpage['name']=manpage['name'].join("\n.br\n") +            manpage['name'].gsub!(/(-)/m,"\\\\\\1")              manpage['name'].gsub!(/\A/,"\n.br\n.SH NAME\n.br\n")            else              manpage['name']='man page "name/whatis" information not provided, set in header @man: name=[whatis information]'            end            if manpage['synopsis']              manpage['synopsis']=manpage['synopsis'].join("\n\n.br\n") +            manpage['synopsis'].gsub!(/(-)/m,"\\\\\\1")              manpage['synopsis'].gsub!(/\A/,"\n.br\n.SH SYNOPSIS\n.br\n")            else              manpage['synopsis']='' @@ -1230,7 +1232,7 @@ module SiSU_Param            end          end          @publisher ||= "#@@publisher (this copy)" -        fn_set_lang=SiSU_Env::Standardise_language.new.file_to_language(@fns) +        fn_set_lang=SiSU_Env::Standardise_language.new(@opt.lng).language          unless @language[:code] \          and @language[:name]            lang=@env.i18n.language #default language settings for directory by name, or in sysrc.yml @@ -1239,18 +1241,19 @@ 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] -        end -        @fnl=@env.i18n.lang_filename(fn_set_lang[:c]) -        @flv.each do |l| -          lang=SiSU_Env::Standardise_language.new.file_to_language(l) -          c={ a: '', b: '', c: '' } -          if @fnl[:pre] =~/\S/;     c[:a]="#{lang[:c]}." -          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]}"] -        end if @flv +          @language[:name]=fn_set_lang[:n] +        end +        @fnl=@env.i18n.lang_filename(fn_set_lang[:n]) +#fix +#       @flv.each do |l| +#         lang=SiSU_Env::Standardise_language.new.file_to_language(l) +#         c={ a: '', b: '', c: '' } +#         if @fnl[:pre] =~/\S/;     c[:a]="#{lang[:c]}." +#         elsif @fnl[:mid] =~/\S/;  c[:b]=".#{lang[:c]}" +#         elsif @fnl[:post] =~/\S/; c[:c]=".#{lang[:c]}" +#         end +#         @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])          @identifier="#{@env.url.root}/#{@fnb}/#{@fn[:toc]}" #DC note constructed dc identifier 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 167af5c4..c40bf68d 100644 --- a/lib/sisu/v3/shared_metadata.rb +++ b/lib/sisu/v3/shared_metadata.rb @@ -67,8 +67,8 @@ module Metadata        meta,tag=[],[]        dir=SiSU_Env::Info_env.new(@md.fns)        base_html="#{dir.url.root}/#{@md.fnb}" -      l=SiSU_Env::Standardise_language.new.file_to_language(@md.fns) -      language=l[:l] +      l=SiSU_Env::Standardise_language.new(@md.opt.lng).language +      language=l[:n]        tr=SiSU_Translate::Source.new(@md,language)        @attrib='md'        if @display_heading @@ -997,8 +997,8 @@ WOK        meta=[]        dir=SiSU_Env::Info_env.new(@md.fns)        base_html="#{dir.url.root}/#{@md.fnb}" -      l=SiSU_Env::Standardise_language.new.file_to_language(@md.fns) -      language=l[:l] +      l=SiSU_Env::Standardise_language.new(@md.opt.lng).language +      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/sitemaps.rb b/lib/sisu/v3/sitemaps.rb index 2241b5e6..c306ee99 100644 --- a/lib/sisu/v3/sitemaps.rb +++ b/lib/sisu/v3/sitemaps.rb @@ -75,7 +75,7 @@ module SiSU_Sitemaps      def songsheet        begin          @sys=SiSU_Env::System_call.new -        fn_set_lang=SiSU_Env::Standardise_language.new.file_to_language(@opt.fns) +        fn_set_lang=SiSU_Env::Standardise_language.new(@opt.lng).language          @fn=SiSU_Env::Env_call.new(@opt.fns).lang(fn_set_lang[:c])          if @opt.cmd =~/Y/            @md=SiSU_Param::Parameters.new(@opt).get diff --git a/lib/sisu/v3/sst_do_inline_footnotes.rb b/lib/sisu/v3/sst_do_inline_footnotes.rb index 27ccf6db..60247060 100644 --- a/lib/sisu/v3/sst_do_inline_footnotes.rb +++ b/lib/sisu/v3/sst_do_inline_footnotes.rb @@ -170,8 +170,8 @@ module SiSU_Convert_footnotes        @@word_mode=[]        @env=SiSU_Env::Info_env.new(@md.fns)        @skin=SiSU_Env::Info_skin.new(@md) -      l=SiSU_Env::Standardise_language.new.file_to_language(@md.fns) -      @language=l[:l] +      l=SiSU_Env::Standardise_language.new(@md.opt.lng).language +      @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 6f69296a..a1c6228b 100644 --- a/lib/sisu/v3/sysenv.rb +++ b/lib/sisu/v3/sysenv.rb @@ -58,6 +58,7 @@  =end  @@cX=nil  @@current_document=Dir.pwd #nil #'' +@@lang_info=nil  module SiSU_Env    require_relative 'constants'                             # constants.rb    require 'fileutils' @@ -444,7 +445,7 @@ module SiSU_Env        end        self      end -    def document_language_versions_found +    def document_language_versions_found #REVISIT        @fn={}        unless (@fns.nil? \        or @fns.empty?) @@ -499,12 +500,12 @@ module SiSU_Env          fns_c="#{@fn[:m]}~#{lng.code}.#{@fn[:t]}"          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) -          lng=fn_set_lang[:l] +          fn_set_lang=SiSU_Env::Standardise_language.new.file_to_language(fns_c) #reconsider file_to_language +          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) -          fn_set_lang=SiSU_Env::Standardise_language.new.file_to_language(fns_l) +          fn_set_lang=SiSU_Env::Standardise_language.new.file_to_language(fns_l) #reconsider file_to_language            @fnl=dir.i18n.lang_filename(fn_set_lang[:c])            fn=SiSU_Env::Env_call.new(fns_l).lang(fn_set_lang[:c])            @m << { m: fn[:manifest], l: lng } @@ -790,68 +791,111 @@ 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 language #use ISO_639-2 -      lang={} +    def lang_lst                              # from i18n +      @@lang_info ||=@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 +      lng={}        case @language -      when /American|^us$/i;                  d,c,l=false,'en','American English' #depreciated, see iso 639-2 -      when /English|^en$/i;                   d,c,l=false,'en','English' -      when /French|Francais|^fr$/i;           d,c,l=false,'fr','French' -      when /German|^de$/i;                    d,c,l=false,'de','German' -      when /Italian|^it$/i;                   d,c,l=false,'it','Italian' -      when /Spanish|Espanol|^es$/i;           d,c,l=false,'es','Spanish' -      when /Brazilian(?: Portuguese)?|^br$/i; d,c,l=false,'pt','Brazilian Portuguese' #depreciated, see iso 639-2 -      when /Portuguese|^pt$/i;                d,c,l=false,'pt','Portuguese' -      when /Swedish|Svensk|^sv$/i;            d,c,l=false,'sv','Swedish' -      when /Danish|Dansk|^da$/i;              d,c,l=false,'da','Danish' -      when /Finnish|Finsk|Suomi|^fi$/i;       d,c,l=false,'fi','Finnish' -      when /Norwegian|Norsk|^no$/i;           d,c,l=false,'no','Norwegian' -      when /Icelandic|^is$/i;                 d,c,l=false,'is','Icelandic' -      when /Dutch|^nl$/i;                     d,c,l=false,'nl','Dutch' -      when /Estonian|^et$/i;                  d,c,l=false,'et','Estonian' -      when /Hungarian|^hu$/i;                 d,c,l=false,'hu','Hungarian' -      when /Polish|^pl$/i;                    d,c,l=false,'pl','Polish' -      when /Romanian|^ro$/i;                  d,c,l=false,'ro','Romanian' -      when /Russian|^ru$/i;                   d,c,l=false,'ru','Russian' -      when /Greek|^el$/i;                     d,c,l=false,'el','Greek' -      when /Ukranian|^uk$/i;                  d,c,l=false,'uk','Ukranian' -      when /Turkish|^tr$/i;                   d,c,l=false,'tr','Turkish' -      #when /Serbian/i;                       d,c,l=false,'', 'Serbian' -      #when /Welsh/i;                         d,c,l=false,'', 'Welsh' -      #when /Basque/i;                        d,c,l=false,'', 'Basque' -      #when /Breton/i;                        d,c,l=false,'', 'Breton' -      #when /Catalan/i;                       d,c,l=false,'', 'Catalan' -      #when /Galician/i;                      d,c,l=false,'', 'Galician' -      #when /Saa?mi/i;                        d,c,l=false,'', 'Saami' -      #when /Hebrew/i;                        d,c,l=false,'', 'Hebrew' -      #when /Latin/i;                         d,c,l=false,'', 'Latin' -      #when /Esperanto/i;                     d,c,l=false,'', 'Esperanto' -      when /Slovenian|^sl$/i;                 d,c,l=false,'sl','Slovenian' -      when /Croatian|^hr$/i;                  d,c,l=false,'hr','Croatian' -      when /Slovak(?:ian)?|^sk$/i;            d,c,l=false,'sk','Slovakian' -      when /Czech|^cs$/i;                     d,c,l=false,'cs','Czech' -      when /Bulgarian|^bg$/i;                 d,c,l=false,'bg','Bulgarian' -      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 file_to_language(file) +    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]        else '' @@ -859,7 +903,15 @@ module SiSU_Env        language      end      def codes -      codes=['us','en','fr','de','it','es','br','pt','sv','da','fi','no','is','nl','et','hu','pl','ro','ru','el','uk','tr','sk','hr','sl','cs','bg'] # remove us and br see iso-639-2 +      # Language List po4a +      #   <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] +      # see polyglossia for subset +      #   <http://mirrors.ctan.org/macros/xetex/latex/polyglossia/polyglossia.pdf> +      # 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      end    end    class Info_env < Env_call @@ -2091,7 +2143,7 @@ WOK          elsif defined? @rc['program_select']['console_web_browser'] \          and @rc['program_select']['console_web_browser'] =~/\S\S+/            @rc['program_select']['console_web_browser'] -        else 'console-www-browser'                                                #'lynx' 'links2' 'elinks' 'epiphany' +        else 'console-www-browser'                                             #'lynx' 'links' 'links2' 'elinks' 'w3m'          end        end        def console_www_browser @@ -2104,7 +2156,7 @@ WOK          elsif defined? @rc['program_select']['epub_viewer'] \          and @rc['program_select']['epub_viewer'] =~/\S\S+/            @rc['program_select']['epub_viewer'] -        else 'ebook-viewer'                                                            #'calibre' 'fbreader' +        else 'ebook-viewer'                                                    #'calibre' 'fbreader'          end        end        def xml_viewer @@ -2120,7 +2172,7 @@ WOK          ((defined? @rc['program_select']['odf_viewer']) \          && @rc['program_select']['odf_viewer'] =~/\S\S+/) \          ? @rc['program_select']['odf_viewer'] \ -        : 'libreoffice'                                                        #'odf-viewer','oowriter' +        : 'lowriter'                                                           #'odf-viewer','oowriter'        end        def manpage_viewer          'man' @@ -3382,14 +3434,9 @@ WOK        end        self      end -    def lang_part -      (@md.opt.f_pth[:lng]) \ -      ? @md.opt.f_pth[:lng] \ -      : @md.i18n[0] -    end      def set_path_abc(ft)        if @env.output_dir_structure.by_language_code? -        "#{output_path.base}/#{lang_part}/#{ft}" +        "#{output_path.base}/#{@md.opt.lng}/#{ft}"        elsif @env.output_dir_structure.by_filetype?          "#{output_path.base}/#{ft}"        else @@ -3398,14 +3445,14 @@ WOK      end      def set_path_ab(ft)        if @env.output_dir_structure.by_language_code? -        "#{output_path.base}/#{lang_part}/#{ft}" +        "#{output_path.base}/#{@md.opt.lng}/#{ft}"        else          "#{output_path.base}/#{ft}"        end      end      def set_path_ab_src(ft)        if @env.output_dir_structure.by_language_code? -        "#{output_path.base}/#{ft}/#{lang_part}" +        "#{output_path.base}/#{ft}/#{@md.opt.lng}"        else          "#{output_path.base}/#{ft}"        end @@ -3429,14 +3476,14 @@ WOK          path=set_path_ab_src(ft)        end        def po -        "#{output_path.base}/po4a/#{@md.fnb}/po/#{lang_part}" +        "#{output_path.base}/po4a/#{@md.fnb}/po/#{@md.opt.lng}"        end        def pot          "#{output_path.base}/po4a/#{@md.fnb}/pot"        end        def po_git          ft=Gt[:po] -        pth=@env.processing_path.git + '/' + @md.fnb + '/' + ft + '/' + lang_part +        pth=@env.processing_path.git + '/' + @md.fnb + '/' + ft + '/' + @md.opt.lng          mkdir_p(pth) unless FileTest.directory?(pth)          pth        end @@ -3512,6 +3559,9 @@ WOK          ft='sitemaps'          path=set_path_ab(ft)        end +      def sqlite +        path=output_path.base +      end        self      end    end @@ -3638,8 +3688,12 @@ 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] +      #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})$|$)/ +      @pwd_stub=pt.realpath.to_s[u,1]        @rc=@@rc ||=Get_init.instance.sisu_yaml.rc        @defaults=Info_env.new.defaults      end 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 diff --git a/lib/sisu/v3/urls.rb b/lib/sisu/v3/urls.rb index 77952d0b..c963c97e 100644 --- a/lib/sisu/v3/urls.rb +++ b/lib/sisu/v3/urls.rb @@ -79,12 +79,11 @@ module SiSU_urls      def initialize(opt)        @opt=opt        @particulars=SiSU_Particulars::Combined_singleton.instance.get_env_md(opt) -      fn_set_lang=SiSU_Env::Standardise_language.new.file_to_language(@opt.fns)        @cmd=@opt.cmd        @md=@particulars.md        @env=@particulars.env        @fnb=@env.fnb -      fn_set_lang=SiSU_Env::Standardise_language.new.file_to_language(@opt.fns) +      fn_set_lang=SiSU_Env::Standardise_language.new(@opt.lng).language        @fnl=@env.i18n.lang_filename(fn_set_lang[:c])        @fn=SiSU_Env::Env_call.new(@opt.fns).lang(fn_set_lang[:c])        @m_regular=/(.+?)\.(?:(?:-|ssm\.)?sst|ssm)$/ @@ -216,7 +215,7 @@ module SiSU_urls            SiSU_Screen::Ansi.new(@opt.cmd,"-#{x} DBI psql","#{@pwd_stub}::#{@opt.fns}",y).result          end          def sqlite(x,y) -          SiSU_Screen::Ansi.new(@opt.cmd,"-#{x} DBI sqlite","sqlite3 #{@env.path.output}/sisu_sqlite.db", "#{y}").result +          SiSU_Screen::Ansi.new(@opt.cmd,"-#{x} DBI sqlite","sqlite3 #{@env.path.webserv}/#{@md.opt.f_pth[:pth_stub]}/sisu_sqlite.db", "#{y}").result          end          self        end | 
