gettext_i18n_rails 0.1.5 → 0.2.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/.gitignore +2 -0
- data/{README.markdown → Readme.md} +26 -7
- data/VERSION +1 -1
- data/gettext_i18n_rails.gemspec +4 -5
- data/lib/gettext_i18n_rails/i18n_hacks.rb +14 -4
- data/lib/gettext_i18n_rails/tasks.rb +111 -0
- data/lib/tasks/gettext_rails_i18n.rake +1 -77
- metadata +8 -6
data/.gitignore
ADDED
@@ -4,7 +4,7 @@ Do all translations you want with FastGettext, use any other I18n backend as ext
|
|
4
4
|
|
5
5
|
Rails does: `I18n.t('weir.rails.syntax.i.hate')`
|
6
6
|
We do: `_('Just translate my damn text!')`
|
7
|
-
To use I18n calls define a `weir.rails.syntax.i.hate` translation.
|
7
|
+
To use I18n calls define a `weir.rails.syntax.i.hate` translation.
|
8
8
|
|
9
9
|
[See it working in the example application.](https://github.com/grosser/gettext_i18n_rails_example)
|
10
10
|
|
@@ -26,26 +26,45 @@ GetText 2.0 will render 1.93 unusable, so only install if you do not have apps t
|
|
26
26
|
Copy default locales with dates/sentence-connectors/AR-errors you want from e.g.
|
27
27
|
[rails i18n](http://github.com/svenfuchs/rails-i18n/tree/master/rails/locale/) into 'config/locales'
|
28
28
|
|
29
|
-
|
29
|
+
If you are not using bundler:
|
30
|
+
|
31
|
+
#config/environment.rb
|
30
32
|
Rails::Initializer.run do |config|
|
31
33
|
...
|
32
34
|
config.gem "fast_gettext", :version => '>=0.4.8'
|
33
35
|
#only used for mo/po file generation in development, !do not load(:lib=>false), will needlessly eat ram!
|
34
36
|
config.gem "gettext", :lib => false, :version => '>=1.9.3'
|
35
|
-
# with bundler this would be
|
36
|
-
# gem "fast_gettext", '>=0.4.8'
|
37
|
-
# gem '>=1.9.3', "gettext", :require => false
|
38
37
|
end
|
39
38
|
|
39
|
+
If you are using bundler:
|
40
|
+
|
41
|
+
#Gemfile
|
42
|
+
gem "fast_gettext", '>=0.4.8'
|
43
|
+
gem '>=1.9.3', "gettext", :require => false
|
44
|
+
|
45
|
+
If you installed it as a gem add to your Rakefile
|
46
|
+
|
47
|
+
#Rakefile
|
48
|
+
begin
|
49
|
+
require "gettext_i18n_rails/tasks"
|
50
|
+
rescue LoadError
|
51
|
+
puts "gettext_i18n_rails is not installed, you probably should run 'rake gems:install' or 'bundle install'."
|
52
|
+
end
|
53
|
+
|
54
|
+
To initialize:
|
55
|
+
|
40
56
|
#config/initialisers/fast_gettext.rb
|
41
57
|
FastGettext.add_text_domain 'app', :path => 'locale'
|
42
58
|
FastGettext.default_available_locales = ['en','de'] #all you want to allow
|
43
59
|
FastGettext.default_text_domain = 'app'
|
44
60
|
|
45
|
-
|
61
|
+
And in your application:
|
62
|
+
|
63
|
+
#app/controllers/application_controller.rb
|
46
64
|
class ApplicationController < ...
|
47
65
|
before_filter :set_gettext_locale
|
48
66
|
|
67
|
+
|
49
68
|
Translating
|
50
69
|
===========
|
51
70
|
###Getting started
|
@@ -141,4 +160,4 @@ Contributors
|
|
141
160
|
|
142
161
|
[Michael Grosser](http://pragmatig.wordpress.com)
|
143
162
|
grosser.michael@gmail.com
|
144
|
-
Hereby placed under public domain, do what you want, just do not hold me accountable...
|
163
|
+
Hereby placed under public domain, do what you want, just do not hold me accountable...
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.2.0
|
data/gettext_i18n_rails.gemspec
CHANGED
@@ -5,18 +5,16 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{gettext_i18n_rails}
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.2.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Michael Grosser"]
|
12
12
|
s.date = %q{2010-06-19}
|
13
13
|
s.email = %q{grosser.michael@gmail.com}
|
14
|
-
s.extra_rdoc_files = [
|
15
|
-
"README.markdown"
|
16
|
-
]
|
17
14
|
s.files = [
|
18
|
-
"
|
15
|
+
".gitignore",
|
19
16
|
"Rakefile",
|
17
|
+
"Readme.md",
|
20
18
|
"VERSION",
|
21
19
|
"gettext_i18n_rails.gemspec",
|
22
20
|
"init.rb",
|
@@ -28,6 +26,7 @@ Gem::Specification.new do |s|
|
|
28
26
|
"lib/gettext_i18n_rails/i18n_hacks.rb",
|
29
27
|
"lib/gettext_i18n_rails/model_attributes_finder.rb",
|
30
28
|
"lib/gettext_i18n_rails/ruby_gettext_extractor.rb",
|
29
|
+
"lib/gettext_i18n_rails/tasks.rb",
|
31
30
|
"lib/tasks/gettext_rails_i18n.rake",
|
32
31
|
"spec/gettext_i18n_rails/action_controller_spec.rb",
|
33
32
|
"spec/gettext_i18n_rails/active_record_spec.rb",
|
@@ -3,12 +3,22 @@ module I18n
|
|
3
3
|
|
4
4
|
def locale=(new_locale)
|
5
5
|
FastGettext.locale = new_locale
|
6
|
-
if I18n.respond_to?(:config)
|
7
|
-
I18n.config.locale = locale
|
8
|
-
end
|
9
6
|
end
|
10
7
|
|
11
8
|
def locale
|
12
9
|
FastGettext.locale.to_sym
|
13
10
|
end
|
14
|
-
|
11
|
+
|
12
|
+
# since Rails 2.3.8 a config object is used instead of just .locale
|
13
|
+
if defined? Config
|
14
|
+
class Config
|
15
|
+
def locale
|
16
|
+
FastGettext.locale.to_sym
|
17
|
+
end
|
18
|
+
|
19
|
+
def locale=(new_locale)
|
20
|
+
FastGettext.locale=(new_locale)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,111 @@
|
|
1
|
+
namespace :gettext do
|
2
|
+
def load_gettext
|
3
|
+
require 'gettext'
|
4
|
+
require 'gettext/utils'
|
5
|
+
end
|
6
|
+
|
7
|
+
desc "Create mo-files for L10n"
|
8
|
+
task :pack do
|
9
|
+
load_gettext
|
10
|
+
GetText.create_mofiles(true, "locale", "locale")
|
11
|
+
end
|
12
|
+
|
13
|
+
desc "Update pot/po files."
|
14
|
+
task :find do
|
15
|
+
load_gettext
|
16
|
+
$LOAD_PATH << File.join(File.dirname(__FILE__),'..','..','lib')
|
17
|
+
require 'gettext_i18n_rails/haml_parser'
|
18
|
+
|
19
|
+
|
20
|
+
if GetText.respond_to? :update_pofiles_org
|
21
|
+
GetText.update_pofiles_org(
|
22
|
+
text_domain(),
|
23
|
+
Dir.glob("{app,lib,config,locale}/**/*.{rb,erb,haml}"),
|
24
|
+
"version 0.0.1",
|
25
|
+
:po_root => 'locale',
|
26
|
+
:msgmerge=>['--sort-output']
|
27
|
+
)
|
28
|
+
else #we are on a version < 2.0
|
29
|
+
puts "install new GetText with gettext:install to gain more features..."
|
30
|
+
#kill ar parser...
|
31
|
+
require 'gettext/parser/active_record'
|
32
|
+
module GetText
|
33
|
+
module ActiveRecordParser
|
34
|
+
module_function
|
35
|
+
def init(x);end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
#parse files.. (models are simply parsed as ruby files)
|
40
|
+
GetText.update_pofiles(
|
41
|
+
textdomain,
|
42
|
+
Dir.glob("{app,lib,config,locale}/**/*.{rb,erb,haml}"),
|
43
|
+
"version 0.0.1",
|
44
|
+
'locale'
|
45
|
+
)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
# This is more of an example, ignoring
|
50
|
+
# the columns/tables that mostly do not need translation.
|
51
|
+
# This can also be done with GetText::ActiveRecord
|
52
|
+
# but this crashed too often for me, and
|
53
|
+
# IMO which column should/should-not be translated does not
|
54
|
+
# belong into the model
|
55
|
+
#
|
56
|
+
# You can get your translations from GetText::ActiveRecord
|
57
|
+
# by adding this to you gettext:find task
|
58
|
+
#
|
59
|
+
# require 'active_record'
|
60
|
+
# gem "gettext_activerecord", '>=0.1.0' #download and install from github
|
61
|
+
# require 'gettext_activerecord/parser'
|
62
|
+
desc "write the locale/model_attributes.rb"
|
63
|
+
task :store_model_attributes => :environment do
|
64
|
+
FastGettext.silence_errors
|
65
|
+
require 'gettext_i18n_rails/model_attributes_finder'
|
66
|
+
storage_file = 'locale/model_attributes.rb'
|
67
|
+
puts "writing model translations to: #{storage_file}"
|
68
|
+
ignore_tables = [/^sitemap_/, /_versions$/, 'schema_migrations', 'sessions']
|
69
|
+
GettextI18nRails.store_model_attributes(
|
70
|
+
:to => storage_file,
|
71
|
+
:ignore_columns => [/_id$/, 'id', 'type', 'created_at', 'updated_at'],
|
72
|
+
:ignore_tables => ignore_tables
|
73
|
+
)
|
74
|
+
end
|
75
|
+
|
76
|
+
desc "add a new language"
|
77
|
+
task :add_language, [:language] => :environment do |_, args|
|
78
|
+
language = args.language || ENV["LANGUAGE"]
|
79
|
+
|
80
|
+
# Let's do some pre-verification of the environment.
|
81
|
+
if language.nil?
|
82
|
+
puts "You need to specify the language to add. Either 'LANGUAGE=eo rake gettext:add_languange' or 'rake gettext:add_languange[eo]'"
|
83
|
+
next
|
84
|
+
end
|
85
|
+
pot = File.join(locale_path, "#{text_domain}.pot")
|
86
|
+
if !File.exists? pot
|
87
|
+
puts "You don't have a pot file yet, you probably should run 'rake gettext:find' at least once. Tried '#{pot}'."
|
88
|
+
next
|
89
|
+
end
|
90
|
+
|
91
|
+
# Create the directory for the new language.
|
92
|
+
dir = File.join(locale_path, language)
|
93
|
+
puts "Creating directory #{dir}"
|
94
|
+
Dir.mkdir dir
|
95
|
+
|
96
|
+
# Create the po file for the new language.
|
97
|
+
new_po = File.join(locale_path, language, "#{text_domain}.po")
|
98
|
+
puts "Initializing #{new_po} from #{pot}."
|
99
|
+
system "msginit --locale=#{language} --input=#{pot} --output=#{new_po}"
|
100
|
+
end
|
101
|
+
|
102
|
+
def locale_path
|
103
|
+
FastGettext.translation_repositories[text_domain].instance_variable_get(:@options)[:path]
|
104
|
+
rescue
|
105
|
+
File.join(RAILS_ROOT, "locale")
|
106
|
+
end
|
107
|
+
|
108
|
+
def text_domain
|
109
|
+
ENV['TEXTDOMAIN'] || FastGettext.text_domain || "app"
|
110
|
+
end
|
111
|
+
end
|
@@ -1,77 +1 @@
|
|
1
|
-
|
2
|
-
def load_gettext
|
3
|
-
require 'gettext'
|
4
|
-
require 'gettext/utils'
|
5
|
-
end
|
6
|
-
|
7
|
-
desc "Create mo-files for L10n"
|
8
|
-
task :pack do
|
9
|
-
load_gettext
|
10
|
-
GetText.create_mofiles(true, "locale", "locale")
|
11
|
-
end
|
12
|
-
|
13
|
-
desc "Update pot/po files."
|
14
|
-
task :find do
|
15
|
-
load_gettext
|
16
|
-
$LOAD_PATH << File.join(File.dirname(__FILE__),'..','..','lib')
|
17
|
-
require 'gettext_i18n_rails/haml_parser'
|
18
|
-
|
19
|
-
textdomain = (ENV['TEXTDOMAIN'] || "app")
|
20
|
-
|
21
|
-
|
22
|
-
if GetText.respond_to? :update_pofiles_org
|
23
|
-
GetText.update_pofiles_org(
|
24
|
-
textdomain,
|
25
|
-
Dir.glob("{app,lib,config,locale}/**/*.{rb,erb,haml}"),
|
26
|
-
"version 0.0.1",
|
27
|
-
:po_root => 'locale',
|
28
|
-
:msgmerge=>['--sort-output']
|
29
|
-
)
|
30
|
-
else #we are on a version < 2.0
|
31
|
-
puts "install new GetText with gettext:install to gain more features..."
|
32
|
-
#kill ar parser...
|
33
|
-
require 'gettext/parser/active_record'
|
34
|
-
module GetText
|
35
|
-
module ActiveRecordParser
|
36
|
-
module_function
|
37
|
-
def init(x);end
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
#parse files.. (models are simply parsed as ruby files)
|
42
|
-
GetText.update_pofiles(
|
43
|
-
textdomain,
|
44
|
-
Dir.glob("{app,lib,config,locale}/**/*.{rb,erb,haml}"),
|
45
|
-
"version 0.0.1",
|
46
|
-
'locale'
|
47
|
-
)
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
|
-
# This is more of an example, ignoring
|
52
|
-
# the columns/tables that mostly do not need translation.
|
53
|
-
# This can also be done with GetText::ActiveRecord
|
54
|
-
# but this crashed too often for me, and
|
55
|
-
# IMO which column should/should-not be translated does not
|
56
|
-
# belong into the model
|
57
|
-
#
|
58
|
-
# You can get your translations from GetText::ActiveRecord
|
59
|
-
# by adding this to you gettext:find task
|
60
|
-
#
|
61
|
-
# require 'active_record'
|
62
|
-
# gem "gettext_activerecord", '>=0.1.0' #download and install from github
|
63
|
-
# require 'gettext_activerecord/parser'
|
64
|
-
desc "write the locale/model_attributes.rb"
|
65
|
-
task :store_model_attributes => :environment do
|
66
|
-
FastGettext.silence_errors
|
67
|
-
require 'gettext_i18n_rails/model_attributes_finder'
|
68
|
-
storage_file = 'locale/model_attributes.rb'
|
69
|
-
puts "writing model translations to: #{storage_file}"
|
70
|
-
ignore_tables = [/^sitemap_/, /_versions$/, 'schema_migrations', 'sessions']
|
71
|
-
GettextI18nRails.store_model_attributes(
|
72
|
-
:to => storage_file,
|
73
|
-
:ignore_columns => [/_id$/, 'id', 'type', 'created_at', 'updated_at'],
|
74
|
-
:ignore_tables => ignore_tables
|
75
|
-
)
|
76
|
-
end
|
77
|
-
end
|
1
|
+
require File.join(File.dirname(__FILE__), "/../gettext_i18n_rails/tasks")
|
metadata
CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
|
|
4
4
|
prerelease: false
|
5
5
|
segments:
|
6
6
|
- 0
|
7
|
-
-
|
8
|
-
-
|
9
|
-
version: 0.
|
7
|
+
- 2
|
8
|
+
- 0
|
9
|
+
version: 0.2.0
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Michael Grosser
|
@@ -35,11 +35,12 @@ executables: []
|
|
35
35
|
|
36
36
|
extensions: []
|
37
37
|
|
38
|
-
extra_rdoc_files:
|
39
|
-
|
38
|
+
extra_rdoc_files: []
|
39
|
+
|
40
40
|
files:
|
41
|
-
-
|
41
|
+
- .gitignore
|
42
42
|
- Rakefile
|
43
|
+
- Readme.md
|
43
44
|
- VERSION
|
44
45
|
- gettext_i18n_rails.gemspec
|
45
46
|
- init.rb
|
@@ -51,6 +52,7 @@ files:
|
|
51
52
|
- lib/gettext_i18n_rails/i18n_hacks.rb
|
52
53
|
- lib/gettext_i18n_rails/model_attributes_finder.rb
|
53
54
|
- lib/gettext_i18n_rails/ruby_gettext_extractor.rb
|
55
|
+
- lib/gettext_i18n_rails/tasks.rb
|
54
56
|
- lib/tasks/gettext_rails_i18n.rake
|
55
57
|
- spec/gettext_i18n_rails/action_controller_spec.rb
|
56
58
|
- spec/gettext_i18n_rails/active_record_spec.rb
|