Module: Locale
- Includes:
- Util::Memoizable
- Defined in:
- lib/locale.rb,
lib/locale/tag.rb,
lib/locale/tag/rfc.rb,
lib/locale/taglist.rb,
lib/locale/version.rb,
lib/locale/tag/cldr.rb,
lib/locale/tag/posix.rb,
lib/locale/driver/cgi.rb,
lib/locale/driver/env.rb,
lib/locale/tag/common.rb,
lib/locale/tag/simple.rb,
lib/locale/info/region.rb,
lib/locale/driver/jruby.rb,
lib/locale/driver/posix.rb,
lib/locale/driver/win32.rb,
lib/locale/info/language.rb,
lib/locale/tag/irregular.rb,
lib/locale/util/memoizable.rb,
lib/locale/driver/win32_table.rb
Overview
win32_table.rb - Locale table for win32
Copyright (C) 2008 Masao Mutoh <mutomasa at gmail.com>
You may redistribute it and/or modify it under the same
license terms as Ruby.
Original: Ruby-GetText-Package-1.92.0.
$Id: win32_table.rb 27 2008-12-03 15:06:50Z mutoh $
Defined Under Namespace
Modules: Driver, Info, Tag, Util Classes: TagList
Constant Summary collapse
- ROOT =
File.dirname(__FILE__)
- DEFAULT_LANGUAGE_TAG =
:nodoc:
Locale::Tag::Simple.new("en")
- VERSION =
"2.0.5"
- @@default_tag =
nil
- @@locale_driver_module =
Driver::Win32
nil
Constants included from Util::Memoizable
Util::Memoizable::MEMOIZED_IVAR
Class Method Summary collapse
-
.app_language_tags ⇒ Object
Returns the app_language_tags.
-
.candidates(options = {}) ⇒ Object
Returns the language tags which are variations of the current locales order by priority.
-
.cgi=(cgi) ⇒ Object
Sets a CGI object.This is the convenient function of set_request().
-
.charset ⇒ Object
Gets the current charset.
-
.clear ⇒ Object
Clear current locale.
-
.clear_all ⇒ Object
Clear all locales and charsets of all threads.
-
.collect_candidates(type, tags, supported_tags) ⇒ Object
collect tag candidates and memoize it.
-
.create_language_tag(tag) ⇒ Object
:nodoc:.
-
.current ⇒ Object
Gets the current locales (Locale::Tag’s class).
-
.current=(tag) ⇒ Object
Sets a current locale.
-
.default ⇒ Object
Gets the default locale(language tag).
-
.default=(tag) ⇒ Object
Same as Locale.set_default.
-
.driver_module ⇒ Object
Gets the driver module.
-
.get ⇒ Object
Deprecated.
-
.init(opts = {}) ⇒ Object
Initialize Locale library.
-
.require_driver(name) ⇒ Object
:nodoc:.
-
.set(tag) ⇒ Object
Deprecated.
-
.set_app_language_tags(*tags) ⇒ Object
Set the language tags which is supported by the Application.
-
.set_cgi(cgi) ⇒ Object
Sets a CGI object.
-
.set_current(*tags) ⇒ Object
Sets the locales of the current thread order by the priority.
-
.set_default(tag) ⇒ Object
Sets the default locale as the language tag (Locale::Tag’s class or String(such as “ja_JP”)).
-
.set_request(query_langs, cookie_langs, accept_language, accept_charset) ⇒ Object
Sets a request values for lang/charset.
Methods included from Util::Memoizable
#_memoize, #_memoize_dup, #freeze, #freeze_without_memoizable, included, #memoize, #memoize_clear, #memoize_dup, #memoize_impl
Class Method Details
.app_language_tags ⇒ Object
Returns the app_language_tags. Default is nil. See set_app_language_tags for more details.
325 326 327 |
# File 'lib/locale.rb', line 325 def @@app_language_tags end |
.candidates(options = {}) ⇒ Object
Returns the language tags which are variations of the current locales order by priority.
For example, if the current locales are [“fr”, “ja_JP”, “en_US”, “en-Latn-GB-VARIANT”], then returns [“fr”, “ja_JP”, “en_US”, “en-Latn-GB-VARIANT”, “en_Latn_GB”, “en_GB”, “ja”, “en”]. “en” is the default locale(You can change it using set_default). The default locale is added at the end of the list even if it isn’t exist.
Usually, this method is used to find the locale data as the path(or a kind of IDs).
-
options: options as a Hash or nil.
-
:supported_language_tags - An Array of the language tags order by the priority. This option restricts the locales which are supported by the library/application. Default is nil if you don’t need to restrict the locales.
(e.g.1) ["fr_FR", "en_GB", "en_US", ...]
-
:type - The type of language tag. :common, :rfc, :cldr, :posix and :simple are available. Default value is :common
-
211 212 213 214 215 216 217 218 219 220 221 222 223 224 |
# File 'lib/locale.rb', line 211 def candidates( = {}) opts = {:supported_language_tags => nil, :current => current, :type => :common}.merge() if Thread.current[:candidates_caches] cache = Thread.current[:candidates_caches][opts.hash] return cache if cache else Thread.current[:candidates_caches] = {} end Thread.current[:candidates_caches][opts.hash] = collect_candidates(opts[:type], opts[:current], opts[:supported_language_tags]) end |
.cgi=(cgi) ⇒ Object
Sets a CGI object.This is the convenient function of set_request().
This method is appeared when Locale.init(:driver => :cgi) is called.
-
cgi: CGI object
-
Returns: cgi
132 133 134 135 |
# File 'lib/locale/driver/cgi.rb', line 132 def cgi=(cgi) set_cgi(cgi) cgi end |
.charset ⇒ Object
Gets the current charset.
This returns the current user/system charset. This value is read only, so you can’t set it by yourself.
-
Returns: the current charset.
270 271 272 |
# File 'lib/locale.rb', line 270 def charset driver_module.charset || "UTF-8" end |
.clear ⇒ Object
Clear current locale.
-
Returns: self
277 278 279 280 281 |
# File 'lib/locale.rb', line 277 def clear Thread.current[:current_languages] = nil Thread.current[:candidates_caches] = nil self end |
.clear_all ⇒ Object
Clear all locales and charsets of all threads. This doesn’t clear the default and app_language_tags. Use Locale.default = nil to unset the default locale.
-
Returns: self
287 288 289 290 291 292 293 294 |
# File 'lib/locale.rb', line 287 def clear_all Thread.list.each do |thread| thread[:current_languages] = nil thread[:candidates_caches] = nil end memoize_clear self end |
.collect_candidates(type, tags, supported_tags) ⇒ Object
collect tag candidates and memoize it. The result is shared from all threads.
228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 |
# File 'lib/locale.rb', line 228 def collect_candidates(type, , ) # :nodoc: = .collect{|v| v.send("to_#{type}").candidates} = default.send("to_#{type}").candidates if = .collect{|v| v.send("to_#{type}")}.flatten.uniq end if = .collect{|v| Locale::Tag.parse(v).send("to_#{type}")}.flatten.uniq end = [] (0...[0].size).each {|i| += .collect{|v| v[i]} } += .uniq! = nil if if = & else = end elsif = end if &= = .uniq if .size == 0 end Locale::TagList.new() end |
.create_language_tag(tag) ⇒ Object
:nodoc:
35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/locale.rb', line 35 def create_language_tag(tag) #:nodoc: if tag if tag.kind_of? Locale::Tag::Simple tag else Locale::Tag.parse(tag) end else nil end end |
.current ⇒ Object
Gets the current locales (Locale::Tag’s class). If the current locale is not set, this returns system/default locale.
This method returns the current language tags even if it isn’t included in app_language_tags.
Usually, the programs should use Locale.candidates to find the correct locale, not this method.
-
Returns: an Array of the current locales (Locale::Tag’s class).
176 177 178 179 180 181 182 |
# File 'lib/locale.rb', line 176 def current unless Thread.current[:current_languages] loc = driver_module.locales Thread.current[:current_languages] = loc ? loc : Locale::TagList.new([default]) end Thread.current[:current_languages] end |
.current=(tag) ⇒ Object
163 164 165 166 |
# File 'lib/locale.rb', line 163 def current=(tag) set_current(tag) Thread.current[:current_languages] end |
.default ⇒ Object
Gets the default locale(language tag).
If the default language tag is not set, this returns nil.
-
Returns: the default locale (Locale::Tag’s class).
125 126 127 |
# File 'lib/locale.rb', line 125 def default @@default_tag || DEFAULT_LANGUAGE_TAG end |
.default=(tag) ⇒ Object
Same as Locale.set_default.
-
locale: the default locale (Locale::Tag’s class) or a String such as “ja-JP”.
-
Returns: locale.
115 116 117 118 |
# File 'lib/locale.rb', line 115 def default=(tag) set_default(tag) @@default_tag end |
.driver_module ⇒ Object
Gets the driver module.
Usually you don’t need to call this method.
-
Returns: the driver module.
88 89 90 91 92 93 |
# File 'lib/locale.rb', line 88 def driver_module unless @@locale_driver_module Locale.init end @@locale_driver_module end |
.get ⇒ Object
Deprecated.
185 186 187 |
# File 'lib/locale.rb', line 185 def get #:nodoc: current end |
.init(opts = {}) ⇒ Object
Initialize Locale library. Usually, you don’t need to call this directly, because this is called when Locale’s methods are called.
If you use this library with CGI or the kind of CGI. You need to call Locale.init(:driver => :cgi).
For Framework designers/programers:
If your framework is for WWW, call this once like: Locale.init(:driver => :cgi).
To Application programers:
If your framework doesn’t use ruby-locale and the application is for WWW, call this once like: Locale.init(:driver => :cgi).
To Library authors:
Don’t call this, even if your application is only for WWW.
-
opts: Options as a Hash.
-
:driver - The driver. :cgi if you use Locale module with CGI, nil if you use system locale.
(ex) Locale.init(:driver => :cgi)
-
69 70 71 72 73 74 75 76 77 78 79 80 81 |
# File 'lib/locale.rb', line 69 def init(opts = {}) if opts[:driver] require_driver opts[:driver] else if /cygwin|mingw|win32/ =~ RUBY_PLATFORM require_driver 'win32' elsif /java/ =~ RUBY_PLATFORM require_driver 'jruby' else require_driver 'posix' end end end |
.require_driver(name) ⇒ Object
:nodoc:
31 32 33 |
# File 'lib/locale.rb', line 31 def require_driver(name) #:nodoc: require File.join(ROOT, "locale/driver", name.to_s) end |
.set(tag) ⇒ Object
Deprecated.
190 191 192 |
# File 'lib/locale.rb', line 190 def set(tag) #:nodoc: set_current(tag) end |
.set_app_language_tags(*tags) ⇒ Object
Set the language tags which is supported by the Application. This value is same with supported_language_tags in Locale.candidates to restrict the result but is the global setting. If you set a language tag, the application works as the single locale application.
If the current locale is not included in app_language_tags, Locale.default value is used. Use Locale.set_default() to set correct language if “en” is not included in the language tags.
Set nil if clear the value.
Note that the libraries/plugins shouldn’t set this value.
(e.g.) Locale.set_app_language_tags("fr_FR", "en-GB", "en_US", ...)
313 314 315 316 317 318 319 320 321 322 |
# File 'lib/locale.rb', line 313 def (*) if [0] @@app_language_tags = .collect{|v| Locale::Tag.parse(v)} else @@app_language_tags = nil end clear_all self end |
.set_cgi(cgi) ⇒ Object
Sets a CGI object. This is the convenient function of set_request().
This method is appeared when Locale.init(:driver => :cgi) is called.
-
cgi: CGI object
-
Returns: self
120 121 122 123 124 |
# File 'lib/locale/driver/cgi.rb', line 120 def set_cgi(cgi) set_request(cgi.params["lang"], cgi.["lang"], cgi.accept_language, cgi.accept_charset) self end |
.set_current(*tags) ⇒ Object
Sets the locales of the current thread order by the priority. Each thread has a current locales. The system locale/default locale is used if the thread doesn’t have current locales.
-
tag: Locale::Language::Tag’s class or the language tag as a String. nil if you need to clear current locales.
-
charset: the charset (override the charset even if the locale name has charset) or nil.
-
Returns: self
(e.g.)
Locale.set_current("ja_JP.eucJP")
Locale.set_current("ja-JP")
Locale.set_current("en_AU", "en_US", ...)
Locale.set_current(Locale::Tag::Simple.new("ja", "JP"), ...)
143 144 145 146 147 148 149 150 151 152 153 154 |
# File 'lib/locale.rb', line 143 def set_current(*) languages = nil if [0] languages = Locale::TagList.new .each do |tag| languages << create_language_tag(tag) end end Thread.current[:current_languages] = languages Thread.current[:candidates_caches] = nil self end |
.set_default(tag) ⇒ Object
Sets the default locale as the language tag (Locale::Tag’s class or String(such as “ja_JP”)).
-
tag: the default language_tag
-
Returns: self.
102 103 104 105 106 107 108 109 |
# File 'lib/locale.rb', line 102 def set_default(tag) Thread.list.each do |thread| thread[:current_languages] = nil thread[:candidates_caches] = nil end @@default_tag = create_language_tag(tag) self end |
.set_request(query_langs, cookie_langs, accept_language, accept_charset) ⇒ Object
Sets a request values for lang/charset.
-
query_langs: An Array of QUERY_STRING value “lang”.
-
cookie_langs: An Array of cookie value “lang”.
-
accept_language: The value of HTTP_ACCEPT_LANGUAGE
-
accept_charset: The value of HTTP_ACCEPT_CHARSET
109 110 111 112 |
# File 'lib/locale/driver/cgi.rb', line 109 def set_request(query_langs, , accept_language, accept_charset) @@locale_driver_module.set_request(query_langs, , accept_language, accept_charset) self end |