Module: I18n
- Defined in:
- lib/lyrics/i18n/i18n.rb
Constant Summary collapse
- @@DEFAULT_LANG =
"en"
- @@DEFAULT_ENCODING =
"UTF-8"
- @@loaded =
false
- @@texts =
{}
- @@files_prefix =
File.( File.dirname( __FILE__ ) )
Class Method Summary collapse
- .get(key, *args) ⇒ Object
- .get_local_encoding ⇒ Object
- .get_local_language ⇒ Object
- .get_messages_locale ⇒ Object
- .load_translation(language) ⇒ Object
- .reload ⇒ Object
Class Method Details
.get(key, *args) ⇒ Object
31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/lyrics/i18n/i18n.rb', line 31 def I18n.get( key, *args ) I18n.reload() if ! @@loaded ret = @@texts[key] return key if ret == nil if args arg_idx = 1 args.each() do |arg| ret = ret.gsub( "%#{arg_idx}", arg.to_s() ) arg_idx += 1 end end return ret end |
.get_local_encoding ⇒ Object
85 86 87 88 89 90 |
# File 'lib/lyrics/i18n/i18n.rb', line 85 def I18n.get_local_encoding() encoding = ENV["LANG"].to_s().strip() return @@DEFAULT_ENCODING if encoding.empty? return @@DEFAULT_ENCODING if ! encoding.sub!( /^.+\./, "" ) return encoding end |
.get_local_language ⇒ Object
75 76 77 78 79 80 81 82 83 |
# File 'lib/lyrics/i18n/i18n.rb', line 75 def I18n.get_local_language() language = I18n.() language = ENV["LANGUAGE"].to_s().strip() if Strings.empty?( language ) language = ENV["LANG"].to_s().strip() if Strings.empty?( language ) return @@DEFAULT_LANG if language.empty? language.sub!( /_[^.]+/, "" ) return @@DEFAULT_LANG if ! language.sub!( /\..+$/, "" ) return language end |
.get_messages_locale ⇒ Object
54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
# File 'lib/lyrics/i18n/i18n.rb', line 54 def I18n.() locale = `locale` # LC_ALL overrides the values of all the other internationalization variables if set to a non-empty string value if (md = /LC_ALL="?([^\n"]*)"?/.match( locale )) return md[1] if ! Strings.empty?( md[1] ) end # if set, use LC_MESSAGES if (md = /LC_MESSAGES="?([^\n"]*)"?/.match( locale )) return md[1] if ! Strings.empty?( md[1] ) end # LANG provides a default value for the internationalization variables that are unset or null if (md = /LANG="?([^\n"]*)"?/.match( locale )) return md[1] if ! Strings.empty?( md[1] ) end return nil end |
.load_translation(language) ⇒ Object
98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 |
# File 'lib/lyrics/i18n/i18n.rb', line 98 def I18n.load_translation( language ) begin file = File.new( "#{@@files_prefix}/#{language}.rb", "r" ) while ( line = file.gets ) line = @@locale2utf8.iconv( line ) if @@locale2utf8 if (md = /^ *([a-z\.]+) *= *(.*)$/.match( line )) key, value = md[1], md[2].strip() next if value.empty? @@texts[key] = value @@texts[key].gsub!( /\\./ ) do |m| char = m.slice( 1, 1 ) if char == "\\" "\\" elsif char == "n" "\n" else char end end end end file.close() rescue Errno::ENOENT puts "translations file not found: #{language}.rb" end end |
.reload ⇒ Object
45 46 47 48 49 50 51 |
# File 'lib/lyrics/i18n/i18n.rb', line 45 def I18n.reload() @@texts = {} I18n.load_translation( "en" ) # the default and reference meaning of keys language = I18n.get_local_language() I18n.load_translation( language ) if language != "en" @@loaded = true end |