mack-localization 0.8.0.101 → 0.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -68,3 +68,11 @@ dir_globs = Dir.glob(File.join(File.dirname(__FILE__), "mack-localization", "**/
68
68
  dir_globs.each do |d|
69
69
  require d
70
70
  end
71
+
72
+
73
+ configatron.mack.localization.set_default(:base_language, 'en')
74
+ configatron.mack.localization.set_default(:supported_languages, %w{bp en fr it de es})
75
+ configatron.mack.localization.set_default(:char_encoding, 'us-ascii')
76
+ configatron.mack.localization.set_default(:dynamic_translation, false)
77
+ configatron.mack.localization.set_default(:base_directory, [Mack::Paths.app('lang')])
78
+ configatron.mack.localization.set_default(:content_expiry, 3600)
@@ -5,22 +5,49 @@
5
5
  # {config_dir}/localization/ inside the application directory.
6
6
  # If the file doesn't exist then it will just load default configuration.
7
7
  #
8
- module Mack
9
- module Localization # :nodoc:
10
- module Configuration
11
8
 
12
- configatron.mack.localization.base_language = 'en'
13
- configatron.mack.localization.supported_languages = %w{bp en fr it de es}
14
- configatron.mack.localization.char_encoding = 'us-ascii'
15
- configatron.mack.localization.dynamic_translation = false
16
- configatron.mack.localization.base_directory = Mack::Paths.app('lang')
17
- configatron.mack.localization.content_expiry = 3600
9
+ module Mack
10
+ module Localization
11
+
12
+ class Configuration
13
+ include Singleton
14
+ def initialize
15
+ @storage = Mack::Localization::Storage.new
16
+ end
17
+
18
+ def setup
19
+ yield @storage
20
+ end
21
+
22
+ def method_missing(sym, *args)
23
+ @storage.send(sym, *args)
24
+ end
25
+ end
26
+
27
+ class Storage
28
+
29
+ def base_directory= (path)
30
+ arr = configatron.mack.localization.base_directory
31
+ arr = [] if arr.is_a?(Configatron::Store) and !arr.is_a?(Array)
32
+ arr << path
33
+ arr.uniq!
34
+ configatron.mack.localization.base_directory = arr
35
+ end
18
36
 
19
- path = Mack::Paths.config("localization", "localization.rb")
20
- if File.exists?(path)
21
- require path
37
+ def base_directory
38
+ arr = configatron.mack.localization.base_directory
39
+ arr = [Mack::Paths.app('lang')] if arr.is_a?(Configatron::Store) and !arr.is_a?(Array)
40
+ return (arr.size == 1) ? arr[0] : arr
22
41
  end
23
- end
42
+
43
+ def method_missing(sym, *args)
44
+ supported_settings = [:base_language, :supported_languages, :char_encoding, :dynamic_translation, :content_expiry,
45
+ :base_language=, :supported_languages=, :char_encoding=, :dynamic_translation=, :content_expiry=]
46
+ if supported_settings.include?(sym)
47
+ configatron.mack.localization.send(sym, *args)
48
+ end
49
+ end
50
+ end
24
51
  end
25
52
  end
26
53
 
@@ -30,6 +57,6 @@ class Object
30
57
  # Give access to the mack l10n config object from anywhere inside the application
31
58
  #
32
59
  def l10n_config
33
- configatron.mack.localization
60
+ Mack::Localization::Configuration.instance
34
61
  end
35
- end
62
+ end
@@ -31,7 +31,7 @@ module Mack
31
31
  raise Mack::Localization::Errors::UnsupportedLanguage.new(base_lang) if !l10n_config.supported_languages.include?(base_lang)
32
32
 
33
33
  cache_key = "#{view_sym}_#{base_lang}_content"
34
- path = File.join(l10n_config.base_directory, "views", "#{view_name}", "content_#{base_lang}.yml")
34
+ path = File.join("views", "#{view_name}", "content_#{base_lang}.yml")
35
35
  content_hash = load_content_hash(cache_key, base_lang, path)
36
36
 
37
37
  raise Mack::Localization::Errors::UnknownStringKey.new(key) if content_hash[key] == nil
@@ -60,7 +60,7 @@ module Mack
60
60
  raise Mack::Localization::Errors::UnsupportedLanguage.new(base_lang) if !l10n_config.supported_languages.include?(base_lang)
61
61
 
62
62
  cache_key = "rules_content_#{base_lang}"
63
- path = File.join(l10n_config.base_directory, "rules", "inflection_#{base_lang}.yml")
63
+ path = File.join("rules", "inflection_#{base_lang}.yml")
64
64
  content_hash = load_content_hash(cache_key, base_lang, path)
65
65
 
66
66
  hash = content_hash[type]
@@ -81,17 +81,27 @@ module Mack
81
81
 
82
82
  private
83
83
 
84
- def load_content_hash(cache_key, base_lang, path)
84
+ def load_content_hash(cache_key, base_lang, rsc_path)
85
85
  # content_hash = l10n_config.send("#{cache_key}")
86
86
  content_hash = l10n_cache.get("#{cache_key}")
87
87
 
88
88
  if content_hash.nil?
89
89
  raise Mack::Localization::Errors::InvalidConfiguration.new if base_lang.nil?
90
- raise Mack::Localization::Errors::LanguageFileNotFound.new(path) if !File.exists?(path)
91
90
 
92
- data = File.read(path)
93
- content_hash = YAML.load(data)
94
- l10n_cache.set("#{cache_key}", content_hash, l10n_config.content_expiry)
91
+ base_dir_arr = [l10n_config.base_directory].flatten
92
+ found_path = false
93
+ base_dir_arr.each do |base_dir|
94
+ path = File.join(base_dir, rsc_path)
95
+ found_path = File.exists?(path)
96
+ if found_path
97
+ data = File.read(path)
98
+ content_hash = YAML.load(data)
99
+ l10n_cache.set("#{cache_key}", content_hash, l10n_config.content_expiry)
100
+ break
101
+ end
102
+ end
103
+
104
+ raise Mack::Localization::Errors::LanguageFileNotFound.new(rsc_path) if !found_path
95
105
  end
96
106
 
97
107
  return content_hash
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mack-localization
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.0.101
4
+ version: 0.8.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Darsono Sutedja
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-10-11 00:00:00 -04:00
12
+ date: 2008-10-26 00:00:00 -04:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -30,7 +30,7 @@ dependencies:
30
30
  requirements:
31
31
  - - "="
32
32
  - !ruby/object:Gem::Version
33
- version: 0.8.0.101
33
+ version: 0.8.1
34
34
  version:
35
35
  description: Localization support for Mack Framework
36
36
  email: Darsono.Sutedja@gmail.com