localization_generator 1.0.0

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.
data/USAGE ADDED
@@ -0,0 +1,24 @@
1
+ NAME
2
+ localization - rails localization generator
3
+
4
+ SYNOPSIS
5
+ ruby script/generate localization
6
+
7
+ DESCRIPTION
8
+ This generator installs a module, as originally implemented in RForum,
9
+ for localization of strings.
10
+
11
+ EXAMPLE
12
+
13
+ In order to display a localized string, you must do a few simple things.
14
+ First, instead of assigning your string as "var = str" do "var =
15
+ l(:str_label)." In your top level project directory, you will find
16
+ a subdirectory called lang. Popoulate this directory with a .yaml file
17
+ for each language you need intend to translate strings into.
18
+ The filename should be of the form [lang].yaml. Then, include
19
+ "config/environments/localization_environment" from your "config/
20
+ environment.rb" file. Finally, set the default language in this file
21
+ via the variable 'default_lang.' The value should be the prefix of the
22
+ .yaml file in the lang directory.
23
+
24
+ That's it! Thanks to Andreas Schwarz for the code.
@@ -0,0 +1,17 @@
1
+ class LocalizationGenerator < Rails::Generator::NamedBase
2
+ def manifest
3
+ record do |m|
4
+ # Check for collisions
5
+ #bm.class_collisions class_path, "#{class_name}"
6
+
7
+ # Languages directory
8
+ m.directory "lang"
9
+
10
+ # Library file
11
+ m.template "localization.rb", "lib/#{file_name}.rb"
12
+
13
+ # Configuration
14
+ m.template "localization_environment.rb", "config/environments/#{file_name}_environment.rb"
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,70 @@
1
+ require 'iconv'
2
+
3
+ module <%= class_name %>
4
+
5
+ LOCALIZED_STRINGS = {}
6
+
7
+ def l(symbol, *arguments)
8
+ language = CONFIG[:default_language]
9
+
10
+ symbol = symbol.to_sym if symbol.is_a? String
11
+
12
+ # translation of an LString is simply a call to to_s
13
+ return symbol.to_s if symbol.is_a? LString
14
+
15
+ # translation of an array
16
+ if symbol.is_a? Array
17
+ raise ArgumentError.new("Cannot translate an empty array") if symbol.empty?
18
+ raise ArgumentError.new("Symbol is an array, arguments must be empty") unless arguments.empty?
19
+ arguments = symbol
20
+ symbol = arguments.shift
21
+ end
22
+
23
+ translation = (LOCALIZED_STRINGS[language][symbol] or
24
+ LOCALIZED_STRINGS['en'][symbol] or
25
+ symbol.to_s)
26
+ begin
27
+ return translation % arguments
28
+ rescue => e
29
+ raise ArgumentError.new("Translation value #{translation.inspect} " +
30
+ "with arguments #{arguments.inspect} caused error '#{e.message}'")
31
+ end
32
+ end
33
+
34
+ def valid_language?(language)
35
+ LOCALIZED_STRINGS.has_key? language
36
+ end
37
+
38
+ def self.load_localized_strings
39
+ # Load language files
40
+ Dir[RAILS_ROOT + '/lang/*.yaml'].each do |filename|
41
+ filename =~ /([a-z]+)\.yaml$/
42
+ hash = YAML::load(File.read(filename))
43
+ file_charset = hash['file_charset'] || 'ascii'
44
+
45
+ # convert string keys to symbols
46
+ symbol_hash = Hash.new
47
+ Iconv.open(CONFIG[:web_charset], file_charset) do |i|
48
+ hash.each do |key, value|
49
+ symbol_hash[key.to_sym] = i.iconv(value)
50
+ end
51
+ end
52
+
53
+ LOCALIZED_STRINGS[$1] = symbol_hash
54
+ end
55
+ end
56
+
57
+ class LString
58
+
59
+ include <%= class_name %>
60
+
61
+ def initialize(symbol, arguments)
62
+ @symbol, @arguments = symbol, arguments
63
+ end
64
+
65
+ def to_s
66
+ l(@symbol, @arguments)
67
+ end
68
+ end
69
+
70
+ end
@@ -0,0 +1,12 @@
1
+ module <%= class_name %>
2
+ CONFIG = {
3
+ # Default language
4
+ :default_language => 'en',
5
+
6
+ :web_charset => 'utf-8'
7
+ }
8
+
9
+ if CONFIG[:web_charset] == 'utf-8'
10
+ $KCODE = 'u'
11
+ end
12
+ end
metadata ADDED
@@ -0,0 +1,51 @@
1
+ --- !ruby/object:Gem::Specification
2
+ rubygems_version: 0.8.8
3
+ specification_version: 1
4
+ name: localization_generator
5
+ version: !ruby/object:Gem::Version
6
+ version: 1.0.0
7
+ date: 2005-04-19
8
+ summary: "[Rails] Localization generator."
9
+ require_paths:
10
+ - lib
11
+ email: jhosteny@mac.com
12
+ homepage:
13
+ rubyforge_project:
14
+ description: Localization utility for Rails apps
15
+ autorequire:
16
+ default_executable:
17
+ bindir: bin
18
+ has_rdoc: false
19
+ required_ruby_version: !ruby/object:Gem::Version::Requirement
20
+ requirements:
21
+ -
22
+ - ">"
23
+ - !ruby/object:Gem::Version
24
+ version: 0.0.0
25
+ version:
26
+ platform: ruby
27
+ authors:
28
+ - Andreas Schwarz
29
+ - Joe Hosteny
30
+ files:
31
+ - USAGE
32
+ - localization_generator.rb
33
+ - templates/localization.rb
34
+ - templates/localization_environment.rb
35
+ test_files: []
36
+ rdoc_options: []
37
+ extra_rdoc_files: []
38
+ executables: []
39
+ extensions: []
40
+ requirements: []
41
+ dependencies:
42
+ - !ruby/object:Gem::Dependency
43
+ name: rails
44
+ version_requirement:
45
+ version_requirements: !ruby/object:Gem::Version::Requirement
46
+ requirements:
47
+ -
48
+ - ">="
49
+ - !ruby/object:Gem::Version
50
+ version: 0.10.0
51
+ version: