gettext 1.6.0 → 1.7.0
Sign up to get free protection for your applications and to get access to all the features.
- data/ChangeLog +65 -0
- data/NEWS +20 -0
- data/README +9 -9
- data/Rakefile +30 -2
- data/data/locale/cs/LC_MESSAGES/rails.mo +0 -0
- data/data/locale/cs/LC_MESSAGES/rgettext.mo +0 -0
- data/data/locale/de/LC_MESSAGES/rails.mo +0 -0
- data/data/locale/de/LC_MESSAGES/rgettext.mo +0 -0
- data/data/locale/el/LC_MESSAGES/rails.mo +0 -0
- data/data/locale/el/LC_MESSAGES/rgettext.mo +0 -0
- data/data/locale/es/LC_MESSAGES/rails.mo +0 -0
- data/data/locale/es/LC_MESSAGES/rgettext.mo +0 -0
- data/data/locale/fr/LC_MESSAGES/rails.mo +0 -0
- data/data/locale/fr/LC_MESSAGES/rgettext.mo +0 -0
- data/data/locale/it/LC_MESSAGES/rails.mo +0 -0
- data/data/locale/it/LC_MESSAGES/rgettext.mo +0 -0
- data/data/locale/ja/LC_MESSAGES/rails.mo +0 -0
- data/data/locale/ja/LC_MESSAGES/rgettext.mo +0 -0
- data/data/locale/ko/LC_MESSAGES/rails.mo +0 -0
- data/data/locale/ko/LC_MESSAGES/rgettext.mo +0 -0
- data/data/locale/nl/LC_MESSAGES/rails.mo +0 -0
- data/data/locale/nl/LC_MESSAGES/rgettext.mo +0 -0
- data/data/locale/pt_BR/LC_MESSAGES/rails.mo +0 -0
- data/data/locale/pt_BR/LC_MESSAGES/rgettext.mo +0 -0
- data/data/locale/ru/LC_MESSAGES/rails.mo +0 -0
- data/data/locale/ru/LC_MESSAGES/rgettext.mo +0 -0
- data/data/locale/sv/LC_MESSAGES/rgettext.mo +0 -0
- data/data/locale/zh/LC_MESSAGES/rails.mo +0 -0
- data/data/locale/zh/LC_MESSAGES/rgettext.mo +0 -0
- data/doc/classes/ActionController/Base.html +169 -0
- data/doc/classes/ActionController/Base.src/M000014.html +37 -0
- data/doc/classes/ActionController/Base.src/M000015.html +30 -0
- data/doc/classes/ActiveRecord/Base.html +210 -0
- data/doc/classes/ActiveRecord/Base.src/M000114.html +30 -0
- data/doc/classes/ActiveRecord/Base.src/M000115.html +30 -0
- data/doc/classes/ActiveRecord/Base.src/M000116.html +30 -0
- data/doc/classes/ActiveRecord/Base.src/M000117.html +30 -0
- data/doc/classes/ActiveRecord/Base.src/M000118.html +37 -0
- data/doc/classes/ActiveRecord/Base.src/M000119.html +30 -0
- data/doc/classes/ActiveRecord/Base.src/M000120.html +30 -0
- data/doc/classes/ActiveRecord/ConnectionAdapters/Column.html +117 -0
- data/doc/classes/ActiveRecord/ConnectionAdapters/Column.src/M000113.html +30 -0
- data/doc/classes/ActiveRecord/Migration.html +96 -0
- data/doc/classes/GetText.html +863 -0
- data/doc/classes/GetText.src/M000017.html +30 -0
- data/doc/classes/GetText.src/M000018.html +31 -0
- data/doc/classes/GetText.src/M000019.html +46 -0
- data/doc/classes/GetText.src/M000020.html +42 -0
- data/doc/classes/GetText.src/M000021.html +32 -0
- data/doc/classes/GetText.src/M000022.html +30 -0
- data/doc/classes/GetText.src/M000023.html +30 -0
- data/doc/classes/GetText.src/M000024.html +31 -0
- data/doc/classes/GetText.src/M000025.html +30 -0
- data/doc/classes/GetText.src/M000026.html +49 -0
- data/doc/classes/GetText.src/M000027.html +38 -0
- data/doc/classes/GetText.src/M000028.html +35 -0
- data/doc/classes/GetText.src/M000029.html +44 -0
- data/doc/classes/GetText.src/M000030.html +30 -0
- data/doc/classes/GetText.src/M000031.html +30 -0
- data/doc/classes/GetText.src/M000032.html +36 -0
- data/doc/classes/GetText.src/M000033.html +53 -0
- data/doc/classes/GetText.src/M000034.html +46 -0
- data/doc/classes/GetText.src/M000035.html +31 -0
- data/doc/classes/GetText.src/M000036.html +31 -0
- data/doc/classes/GetText.src/M000037.html +30 -0
- data/doc/classes/GetText.src/M000038.html +30 -0
- data/doc/classes/GetText.src/M000039.html +30 -0
- data/doc/classes/GetText.src/M000040.html +30 -0
- data/doc/classes/GetText.src/M000041.html +48 -0
- data/doc/classes/GetText.src/M000042.html +18 -0
- data/doc/classes/GetText.src/M000043.html +34 -0
- data/doc/classes/GetText.src/M000044.html +30 -0
- data/doc/classes/GetText.src/M000045.html +20 -0
- data/doc/classes/GetText/ActiveRecordParser.html +148 -0
- data/doc/classes/GetText/ActiveRecordParser.src/M000048.html +35 -0
- data/doc/classes/GetText/ActiveRecordParser.src/M000049.html +30 -0
- data/doc/classes/GetText/ErbContainer.html +161 -0
- data/doc/classes/GetText/ErbContainer.src/M000046.html +31 -0
- data/doc/classes/GetText/ErbContainer.src/M000047.html +30 -0
- data/doc/classes/GetText/ErbParser.html +113 -0
- data/doc/classes/GetText/ErbParser.src/M000051.html +32 -0
- data/doc/classes/GetText/GetText.html +89 -0
- data/doc/classes/GetText/GetText/Container.html +95 -0
- data/doc/classes/GetText/GladeParser.html +109 -0
- data/doc/classes/GetText/NoboundTextDomainError.html +98 -0
- data/doc/classes/GetText/PoParser.html +121 -0
- data/doc/classes/GetText/PoParser.src/M000068.html +30 -0
- data/doc/classes/GetText/Rails.html +172 -0
- data/doc/classes/GetText/Rails.src/M000050.html +43 -0
- data/doc/classes/GetText/RubyParser.html +99 -0
- data/doc/classes/GetText/TextDomain.html +345 -0
- data/doc/classes/GetText/TextDomain.src/M000052.html +30 -0
- data/doc/classes/GetText/TextDomain.src/M000053.html +30 -0
- data/doc/classes/GetText/TextDomain.src/M000054.html +30 -0
- data/doc/classes/GetText/TextDomain.src/M000055.html +58 -0
- data/doc/classes/GetText/TextDomain.src/M000056.html +32 -0
- data/doc/classes/GetText/TextDomain.src/M000057.html +35 -0
- data/doc/classes/GetText/TextDomain.src/M000058.html +49 -0
- data/doc/classes/GetText/TextDomain.src/M000059.html +30 -0
- data/doc/classes/GetText/TextDomain.src/M000060.html +18 -0
- data/doc/classes/GetText/TextDomain.src/M000061.html +18 -0
- data/doc/classes/GetText/TextDomain.src/M000062.html +18 -0
- data/doc/classes/GetText/TextDomain.src/M000063.html +46 -0
- data/doc/classes/GetText/TextDomain.src/M000064.html +20 -0
- data/doc/classes/GetText/TextDomain.src/M000065.html +23 -0
- data/doc/classes/GetText/TextDomain.src/M000066.html +37 -0
- data/doc/classes/GetText/TextDomain.src/M000067.html +18 -0
- data/doc/classes/GetText/TextDomainManager.html +253 -0
- data/doc/classes/GetText/TextDomainManager.src/M000052.html +18 -0
- data/doc/classes/GetText/TextDomainManager.src/M000053.html +18 -0
- data/doc/classes/GetText/TextDomainManager.src/M000054.html +20 -0
- data/doc/classes/GetText/TextDomainManager.src/M000055.html +18 -0
- data/doc/classes/GetText/TextDomainManager.src/M000056.html +20 -0
- data/doc/classes/GetText/TextDomainManager.src/M000057.html +31 -0
- data/doc/classes/GetText/TextDomainManager.src/M000058.html +21 -0
- data/doc/classes/GetText/TextDomainManager.src/M000059.html +24 -0
- data/doc/classes/GetText/TextDomainManager.src/M000060.html +30 -0
- data/doc/classes/GetText/TextDomainManager.src/M000061.html +30 -0
- data/doc/classes/GetText/TextDomainManager.src/M000062.html +32 -0
- data/doc/classes/GetText/TextDomainManager.src/M000063.html +30 -0
- data/doc/classes/GetText/TextDomainManager.src/M000064.html +32 -0
- data/doc/classes/GetText/TextDomainManager.src/M000065.html +43 -0
- data/doc/classes/GetText/TextDomainManager.src/M000066.html +33 -0
- data/doc/classes/GetText/TextDomainManager.src/M000067.html +36 -0
- data/doc/classes/Iconv.html +140 -0
- data/doc/classes/Iconv.src/M000016.html +41 -0
- data/doc/classes/Iconv/Failure.html +86 -0
- data/doc/classes/Iconv/IllegalSequence.html +96 -0
- data/doc/classes/Iconv/InvalidCharacter.html +96 -0
- data/doc/classes/Iconv/InvalidEncoding.html +96 -0
- data/doc/classes/Locale.html +648 -0
- data/doc/classes/Locale.src/M000069.html +32 -0
- data/doc/classes/Locale.src/M000070.html +31 -0
- data/doc/classes/Locale.src/M000071.html +30 -0
- data/doc/classes/Locale.src/M000072.html +34 -0
- data/doc/classes/Locale.src/M000073.html +31 -0
- data/doc/classes/Locale.src/M000074.html +30 -0
- data/doc/classes/Locale.src/M000075.html +30 -0
- data/doc/classes/Locale.src/M000076.html +31 -0
- data/doc/classes/Locale.src/M000077.html +40 -0
- data/doc/classes/Locale.src/M000078.html +31 -0
- data/doc/classes/Locale.src/M000079.html +46 -0
- data/doc/classes/Locale.src/M000080.html +32 -0
- data/doc/classes/Locale.src/M000081.html +31 -0
- data/doc/classes/Locale.src/M000082.html +30 -0
- data/doc/classes/Locale.src/M000083.html +30 -0
- data/doc/classes/Locale.src/M000084.html +30 -0
- data/doc/classes/Locale.src/M000085.html +32 -0
- data/doc/classes/Locale.src/M000086.html +31 -0
- data/doc/classes/Locale.src/M000087.html +31 -0
- data/doc/classes/Locale.src/M000088.html +30 -0
- data/doc/classes/Locale/Object.html +420 -0
- data/doc/classes/Locale/Object.src/M000104.html +53 -0
- data/doc/classes/Locale/Object.src/M000105.html +34 -0
- data/doc/classes/Locale/Object.src/M000106.html +32 -0
- data/doc/classes/Locale/Object.src/M000107.html +32 -0
- data/doc/classes/Locale/Object.src/M000108.html +33 -0
- data/doc/classes/Locale/Object.src/M000109.html +33 -0
- data/doc/classes/Locale/Object.src/M000110.html +30 -0
- data/doc/classes/Locale/SystemCGI.html +247 -0
- data/doc/classes/Locale/SystemCGI.src/M000094.html +48 -0
- data/doc/classes/Locale/SystemCGI.src/M000095.html +30 -0
- data/doc/classes/Locale/SystemCGI.src/M000096.html +31 -0
- data/doc/classes/Locale/SystemCGI.src/M000097.html +31 -0
- data/doc/classes/Locale/SystemCGI.src/M000098.html +31 -0
- data/doc/classes/Locale/SystemCGI.src/M000099.html +32 -0
- data/doc/classes/Locale/SystemCGI.src/M000100.html +31 -0
- data/doc/classes/Locale/SystemCGI.src/M000101.html +30 -0
- data/doc/classes/Locale/SystemPosix.html +133 -0
- data/doc/classes/Locale/SystemPosix.src/M000102.html +39 -0
- data/doc/classes/Locale/SystemPosix.src/M000103.html +34 -0
- data/doc/classes/Locale/SystemWin32.html +206 -0
- data/doc/classes/Locale/SystemWin32.src/M000089.html +31 -0
- data/doc/classes/Locale/SystemWin32.src/M000090.html +48 -0
- data/doc/classes/Locale/SystemWin32.src/M000091.html +32 -0
- data/doc/classes/Locale/SystemWin32.src/M000092.html +31 -0
- data/doc/classes/Locale/SystemWin32.src/M000093.html +30 -0
- data/doc/classes/MOFile.html +279 -0
- data/doc/classes/MOFile.src/M000001.html +31 -0
- data/doc/classes/MOFile.src/M000002.html +34 -0
- data/doc/classes/MOFile.src/M000003.html +37 -0
- data/doc/classes/MOFile.src/M000004.html +42 -0
- data/doc/classes/MOFile.src/M000005.html +93 -0
- data/doc/classes/MOFile.src/M000006.html +38 -0
- data/doc/classes/MOFile.src/M000007.html +34 -0
- data/doc/classes/MOFile.src/M000008.html +42 -0
- data/doc/classes/MOFile.src/M000009.html +93 -0
- data/doc/classes/MOFile.src/M000010.html +31 -0
- data/doc/classes/MOFile.src/M000011.html +30 -0
- data/doc/classes/MOFile.src/M000012.html +30 -0
- data/doc/classes/MOFile/InvalidFormat.html +92 -0
- data/doc/classes/String.html +150 -0
- data/doc/classes/String.src/M000013.html +44 -0
- data/doc/created.rid +1 -0
- data/doc/files/lib/gettext/cgi_rb.html +98 -0
- data/doc/files/lib/gettext/container_rb.html +96 -0
- data/doc/files/lib/gettext/erb_rb.html +97 -0
- data/doc/files/lib/gettext/iconv_rb.html +97 -0
- data/doc/files/lib/gettext/locale_cgi_rb.html +92 -0
- data/doc/files/lib/gettext/locale_object_rb.html +92 -0
- data/doc/files/lib/gettext/locale_posix_rb.html +92 -0
- data/doc/files/lib/gettext/locale_rb.html +99 -0
- data/doc/files/lib/gettext/locale_table_win32_rb.html +92 -0
- data/doc/files/lib/gettext/locale_win32_rb.html +96 -0
- data/doc/files/lib/gettext/mo_rb.html +96 -0
- data/doc/files/lib/gettext/parser/activerecord_rb.html +103 -0
- data/doc/files/lib/gettext/parser/erb_rb.html +97 -0
- data/doc/files/lib/gettext/parser/glade_rb.html +97 -0
- data/doc/files/lib/gettext/parser/ruby_rb.html +98 -0
- data/doc/files/lib/gettext/poparser_rb.html +96 -0
- data/doc/files/lib/gettext/rails_rb.html +99 -0
- data/doc/files/lib/gettext/rgettext_rb.html +98 -0
- data/doc/files/lib/gettext/rmsgfmt_rb.html +100 -0
- data/doc/files/lib/gettext/rmsgmerge_rb.html +100 -0
- data/doc/files/lib/gettext/string_rb.html +92 -0
- data/doc/files/lib/gettext/textdomain_rb.html +97 -0
- data/doc/files/lib/gettext/textdomainmanager_rb.html +97 -0
- data/doc/files/lib/gettext/utils_rb.html +98 -0
- data/doc/files/lib/gettext/version_rb.html +92 -0
- data/doc/files/lib/gettext_rb.html +101 -0
- data/doc/fr_class_index.html +45 -0
- data/doc/fr_file_index.html +41 -0
- data/doc/fr_method_index.html +135 -0
- data/doc/frame-style.css +33 -0
- data/doc/index.html +26 -0
- data/doc/rdoc-style.css +180 -0
- data/jamis.rb +590 -0
- data/lib/gettext.rb +38 -12
- data/lib/gettext/container.rb +6 -2
- data/lib/gettext/iconv.rb +2 -2
- data/lib/gettext/locale_cgi.rb +3 -2
- data/lib/gettext/locale_object.rb +8 -8
- data/lib/gettext/locale_posix.rb +2 -2
- data/lib/gettext/locale_table_win32.rb +3 -3
- data/lib/gettext/locale_win32.rb +2 -2
- data/lib/gettext/mo.rb +5 -2
- data/lib/gettext/parser/activerecord.rb +27 -17
- data/lib/gettext/parser/glade.rb +7 -11
- data/lib/gettext/parser/ruby.rb +2 -3
- data/lib/gettext/rails.rb +220 -85
- data/lib/gettext/rgettext.rb +2 -2
- data/lib/gettext/rmsgfmt.rb +3 -3
- data/lib/gettext/rmsgmerge.rb +2 -2
- data/lib/gettext/string.rb +2 -1
- data/lib/gettext/textdomain.rb +5 -2
- data/lib/gettext/textdomainmanager.rb +3 -3
- data/lib/gettext/version.rb +1 -1
- data/po/cs/rails.po +63 -22
- data/po/cs/rgettext.po +71 -37
- data/po/de/rails.po +54 -16
- data/po/de/rgettext.po +56 -22
- data/po/el/rails.po +54 -16
- data/po/el/rgettext.po +56 -22
- data/po/es/rails.po +57 -20
- data/po/es/rgettext.po +70 -30
- data/po/fr/rails.po +57 -19
- data/po/fr/rgettext.po +61 -25
- data/po/it/rails.po +54 -16
- data/po/it/rgettext.po +56 -22
- data/po/ja/rails.po +55 -18
- data/po/ja/rgettext.po +58 -24
- data/po/ko/rails.po +68 -33
- data/po/ko/rgettext.po +77 -37
- data/po/nl/rails.po +61 -22
- data/po/nl/rgettext.po +72 -36
- data/po/pt_BR/rails.po +54 -16
- data/po/pt_BR/rgettext.po +56 -22
- data/po/rails.pot +54 -16
- data/po/rgettext.pot +55 -21
- data/po/ru/rails.po +68 -26
- data/po/ru/rgettext.po +70 -30
- data/po/sv/rgettext.po +55 -21
- data/po/zh/rails.po +51 -16
- data/po/zh/rgettext.po +59 -23
- data/samples/rails/app/controllers/application.rb +7 -1
- data/samples/rails/app/models/article.rb +0 -6
- data/src/poparser.ry +1 -1
- data/test/gettext_test.rb +1 -1
- data/test/gettext_test_parser.rb +0 -1
- data/test/test_rubyparser.rb +0 -11
- metadata +233 -8
data/lib/gettext.rb
CHANGED
@@ -10,7 +10,7 @@
|
|
10
10
|
You may redistribute it and/or modify it under the same
|
11
11
|
license terms as Ruby.
|
12
12
|
|
13
|
-
$Id: gettext.rb,v 1.
|
13
|
+
$Id: gettext.rb,v 1.15 2006/06/11 15:36:20 mutoh Exp $
|
14
14
|
=end
|
15
15
|
|
16
16
|
require 'rbconfig'
|
@@ -31,27 +31,25 @@ module GetText
|
|
31
31
|
|
32
32
|
@@__textdomainmanagers = Hash.new
|
33
33
|
|
34
|
+
# call-seq:
|
35
|
+
# bindtextdomain(domainname, options = {})
|
36
|
+
#
|
34
37
|
# Bind a textdomain(%{path}/%{locale}/LC_MESSAGES/%{domainname}.mo) to your program.
|
35
38
|
# Normally, the texdomain scope becomes a ruby-script-file.
|
36
39
|
# So you need to call this function each ruby-script-files.
|
37
40
|
# On the other hand, if you call this function under GetText::Container
|
38
|
-
#(gettext/container, gettext/erb, gettext/rails), the textdomain scope becomes a Class/Module.
|
39
|
-
#
|
41
|
+
# (gettext/container, gettext/erb, gettext/rails), the textdomain scope becomes a Class/Module.
|
40
42
|
# * domainname: the textdomain name.
|
41
43
|
# * options: options as an Hash.
|
42
44
|
# * :path - the path to the mo-files. When the value is nil, it will search default paths such as
|
43
45
|
# /usr/share/locale, /usr/local/share/locale)
|
44
46
|
# * :locale - the locale string such as "ja_JP.UTF-8". Generally, you should use GetText.set_locale instead.
|
45
47
|
# The value is searched order by:
|
46
|
-
#
|
47
48
|
# the value of this value > System default language.
|
48
|
-
#
|
49
49
|
# * :charset - output charset. This affect the current textdomain only. Generally, you should use GetText.set_output_charset instead.
|
50
50
|
# The value is searched order by:
|
51
|
-
#
|
52
51
|
# the value of Locale.set_output_charset > ENV["OUTPUT_CHARSET"] > this value > System default charset.
|
53
52
|
# * Returns: the GetText::TextDomain.
|
54
|
-
#
|
55
53
|
# Note: Don't use locale_, charset argument(not in options).
|
56
54
|
# They are remained for backward compatibility.
|
57
55
|
#
|
@@ -102,7 +100,7 @@ module GetText
|
|
102
100
|
# * klass: a class/module to find. Default is the class of self.
|
103
101
|
# * ignore_targets: Ignore tragets.
|
104
102
|
# * Returns: a bound GetText::TextDomain or nil.
|
105
|
-
def each_textdomain(klass = bound_target, ignore_targets = [])
|
103
|
+
def each_textdomain(klass = bound_target, ignore_targets = []) #:nodoc:
|
106
104
|
(klass.ancestors + [GetText]).each do |target|
|
107
105
|
unless ignore_targets.include? target
|
108
106
|
ignore_targets << target
|
@@ -145,7 +143,7 @@ module GetText
|
|
145
143
|
}
|
146
144
|
ret ? ret : msgid
|
147
145
|
end
|
148
|
-
|
146
|
+
|
149
147
|
# call-seq:
|
150
148
|
# ngettext(msgid, msgid_plural, n)
|
151
149
|
# ngettext(msgids, n) # msgids = [msgid, msgid_plural]
|
@@ -313,7 +311,7 @@ module GetText
|
|
313
311
|
end
|
314
312
|
|
315
313
|
# Deprecated. Now this function do nothing. Use GetText.output_charset= instead.
|
316
|
-
def set_charset(cs)
|
314
|
+
def set_charset(cs) #:nodoc:
|
317
315
|
$stderr.puts "Deprecated. Now this function do nothing. Use GetText.output_charset= instead." if $DEBUG
|
318
316
|
self
|
319
317
|
end
|
@@ -325,12 +323,40 @@ module GetText
|
|
325
323
|
|
326
324
|
# Add default locale path.
|
327
325
|
# * path: a new locale path. (e.g.) "/usr/share/locale/%{locale}/LC_MESSAGES/%{name}.mo"
|
328
|
-
#
|
326
|
+
# ('locale' => "ja_JP", 'name' => "textdomain")
|
329
327
|
# * Returns: the new DEFAULT_LOCALE_PATHS
|
330
328
|
def add_default_locale_path(path)
|
331
329
|
TextDomain.add_default_locale_path(path)
|
332
330
|
end
|
333
331
|
|
332
|
+
# Show the current textdomain information. This function is for debugging.
|
333
|
+
# * options: options as a Hash.
|
334
|
+
# * :with_messages - show informations with messages of the current mo file. Default is false.
|
335
|
+
# * :out - An output target. Default is STDOUT.
|
336
|
+
# * :with_paths - show the load paths for mo-files.
|
337
|
+
# * Returns: localized text by msgid. If there are not binded mo-file, it will return msgid.
|
338
|
+
def current_textdomain_info(options = {})
|
339
|
+
opts = {:with_messages => false, :with_paths => false, :out => STDOUT}.merge(options)
|
340
|
+
ret = nil
|
341
|
+
each_textdomain {|textdomain|
|
342
|
+
opts[:out].puts "TextDomain name: \"#{textdomain.name}\""
|
343
|
+
opts[:out].puts "TextDomain current locale: \"#{textdomain.current_locale}\""
|
344
|
+
opts[:out].puts "TextDomain current mo filename: \"#{textdomain.current_mo.filename}\""
|
345
|
+
if opts[:with_paths]
|
346
|
+
opts[:out].puts "TextDomain locale file paths:"
|
347
|
+
textdomain.locale_paths.each do |v|
|
348
|
+
opts[:out].puts " #{v}"
|
349
|
+
end
|
350
|
+
end
|
351
|
+
if opts[:with_messages]
|
352
|
+
opts[:out].puts "The messages in the mo file:"
|
353
|
+
textdomain.current_mo.each{|k, v|
|
354
|
+
opts[:out].puts " \"#{k}\": \"#{v}\""
|
355
|
+
}
|
356
|
+
end
|
357
|
+
}
|
358
|
+
end
|
359
|
+
|
334
360
|
alias :setlocale :locale= #:nodoc:
|
335
361
|
alias :_ :gettext #:nodoc:
|
336
362
|
alias :n_ :ngettext #:nodoc:
|
@@ -339,5 +365,5 @@ module GetText
|
|
339
365
|
module_function :bindtextdomain, :textdomain, :each_textdomain,
|
340
366
|
:N_, :gettext, :_, :ngettext, :n_, :sgettext, :s_, :bound_target,
|
341
367
|
:setlocale, :set_locale, :locale=, :set_locale_all, :locale, :charset=, :set_charset,
|
342
|
-
:set_output_charset, :output_charset=, :output_charset
|
368
|
+
:set_output_charset, :output_charset=, :output_charset, :current_textdomain_info
|
343
369
|
end
|
data/lib/gettext/container.rb
CHANGED
@@ -6,12 +6,16 @@
|
|
6
6
|
You may redistribute it and/or modify it under the same
|
7
7
|
license terms as Ruby.
|
8
8
|
|
9
|
-
$Id: container.rb,v 1.
|
9
|
+
$Id: container.rb,v 1.6 2006/06/11 15:36:20 mutoh Exp $
|
10
10
|
=end
|
11
11
|
|
12
12
|
require 'gettext'
|
13
13
|
|
14
|
-
|
14
|
+
<<<<<<< container.rb
|
15
|
+
module GetText
|
16
|
+
=======
|
17
|
+
module GetText
|
18
|
+
>>>>>>> 1.6
|
15
19
|
# Deprecated. You don't need this. Use GetText instead.
|
16
20
|
module Container
|
17
21
|
include GetText
|
data/lib/gettext/iconv.rb
CHANGED
@@ -9,7 +9,7 @@
|
|
9
9
|
You may redistribute it and/or modify it under the same
|
10
10
|
license terms as Ruby.
|
11
11
|
|
12
|
-
$Id: iconv.rb,v 1.
|
12
|
+
$Id: iconv.rb,v 1.3 2006/06/11 15:36:20 mutoh Exp $
|
13
13
|
=end
|
14
14
|
|
15
15
|
begin
|
@@ -17,7 +17,7 @@ begin
|
|
17
17
|
rescue LoadError
|
18
18
|
begin
|
19
19
|
require 'glib2'
|
20
|
-
#
|
20
|
+
# Pseudo Iconv module
|
21
21
|
#
|
22
22
|
# Provides Iconv.iconv which uses Ruby/GLib(1) functions. This library also required from 'gettext'.
|
23
23
|
# If you require 'gettext/iconv', Iconv.iconv try to call Ruby/GLib function
|
data/lib/gettext/locale_cgi.rb
CHANGED
@@ -6,11 +6,11 @@
|
|
6
6
|
You may redistribute it and/or modify it under the same
|
7
7
|
license terms as Ruby.
|
8
8
|
|
9
|
-
$Id: locale_cgi.rb,v 1.
|
9
|
+
$Id: locale_cgi.rb,v 1.4 2006/06/11 15:36:20 mutoh Exp $
|
10
10
|
=end
|
11
11
|
|
12
12
|
|
13
|
-
module Locale
|
13
|
+
module Locale
|
14
14
|
# Locale::System module for Default OS (Unix)
|
15
15
|
# This is low-level class. Application shouldn't use this directly.
|
16
16
|
module SystemCGI
|
@@ -21,6 +21,7 @@ module Locale # :nodoc:
|
|
21
21
|
# Gets the default locale using setlocale and nl_langinfo.
|
22
22
|
# * Returns the system locale (Locale::Object).
|
23
23
|
def system
|
24
|
+
return @@default_locale unless @@cgi
|
24
25
|
cgi_ = cgi
|
25
26
|
if ret = cgi_["lang"] and ret.size > 0
|
26
27
|
elsif ret = cgi_.cookies["lang"][0]
|
@@ -6,11 +6,11 @@
|
|
6
6
|
You may redistribute it and/or modify it under the same
|
7
7
|
license terms as Ruby.
|
8
8
|
|
9
|
-
$Id: locale_object.rb,v 1.
|
9
|
+
$Id: locale_object.rb,v 1.8 2006/06/11 15:36:20 mutoh Exp $
|
10
10
|
=end
|
11
11
|
|
12
12
|
|
13
|
-
module Locale
|
13
|
+
module Locale
|
14
14
|
class Object
|
15
15
|
attr_accessor :language, :country, :charset, :script, :variant, :modifier, :orig_str
|
16
16
|
|
@@ -19,16 +19,16 @@ module Locale # :nodoc:
|
|
19
19
|
# * locale_name: locale name as String
|
20
20
|
#
|
21
21
|
# * Basic POSIX format: <language>_<COUNTRY>.<charset>@<modifier>
|
22
|
-
#
|
22
|
+
# * Both of POSIX and C are converted to "en".
|
23
23
|
# * Basic RFC3066 format: <language>-<COUNTRY>
|
24
24
|
# * Win32 format: <language>-<COUNTRY>-<Script>_<sort order>
|
25
25
|
# * CLDR format: <language>_<Script>_<COUNTRY>_<variant>@<modifier>
|
26
26
|
# * Some broken format: <language>_<country>_<script> # Don't use this.
|
27
27
|
# * The max locale format is below:
|
28
|
-
#
|
29
|
-
#
|
30
|
-
#
|
31
|
-
#
|
28
|
+
# * <language>-<COUNTRY>-<Script>_<sort order>.<charset>@<modifier>
|
29
|
+
# * format: <language>_<Script>_<COUNTRY>_<variant>@<modifier>
|
30
|
+
# * both of '-' and '_' are separators.
|
31
|
+
# * each elements are omittable.
|
32
32
|
#
|
33
33
|
# (e.g.) uz-UZ-Latn, ja_JP.eucJP, wa_BE.iso885915@euro
|
34
34
|
# * Returns: [language, country, charset, script, modifier]
|
@@ -39,7 +39,7 @@ module Locale # :nodoc:
|
|
39
39
|
# * variant: variant value in CLDR or sort order in Win32.
|
40
40
|
# * modifier: (no standard)
|
41
41
|
#
|
42
|
-
#
|
42
|
+
# (e.g.)
|
43
43
|
# "ja_JP.eucJP" => ["ja", "JP", "eucJP", nil, nil]
|
44
44
|
# "ja-jp.utf-8" => ["ja", "JP", "utf-8", nil, nil]
|
45
45
|
# "ja-jp" => ["ja", "JP", nil, nil, nil]
|
data/lib/gettext/locale_posix.rb
CHANGED
@@ -6,11 +6,11 @@
|
|
6
6
|
You may redistribute it and/or modify it under the same
|
7
7
|
license terms as Ruby.
|
8
8
|
|
9
|
-
$Id: locale_posix.rb,v 1.
|
9
|
+
$Id: locale_posix.rb,v 1.4 2006/06/11 15:36:20 mutoh Exp $
|
10
10
|
=end
|
11
11
|
|
12
12
|
|
13
|
-
module Locale
|
13
|
+
module Locale
|
14
14
|
# Locale::SystemPosix module for Posix OS (Unix)
|
15
15
|
# This is low-level class. Application shouldn't use this directly.
|
16
16
|
module SystemPosix
|
@@ -6,11 +6,11 @@
|
|
6
6
|
You may redistribute it and/or modify it under the same
|
7
7
|
license terms as Ruby.
|
8
8
|
|
9
|
-
$Id: locale_table_win32.rb,v 1.
|
9
|
+
$Id: locale_table_win32.rb,v 1.5 2006/06/11 15:36:20 mutoh Exp $
|
10
10
|
=end
|
11
11
|
|
12
|
-
module Locale
|
13
|
-
module SystemWin32
|
12
|
+
module Locale
|
13
|
+
module SystemWin32
|
14
14
|
#LangID, locale name, code page
|
15
15
|
LocaleTable = [
|
16
16
|
[0x0000, "en", "CP1252"],
|
data/lib/gettext/locale_win32.rb
CHANGED
@@ -6,12 +6,12 @@
|
|
6
6
|
You may redistribute it and/or modify it under the same
|
7
7
|
license terms as Ruby.
|
8
8
|
|
9
|
-
$Id: locale_win32.rb,v 1.
|
9
|
+
$Id: locale_win32.rb,v 1.14 2006/06/11 15:36:20 mutoh Exp $
|
10
10
|
=end
|
11
11
|
|
12
12
|
require 'gettext/locale_table_win32'
|
13
13
|
|
14
|
-
module Locale
|
14
|
+
module Locale
|
15
15
|
# Locale::SystemWin32 module for win32.
|
16
16
|
module SystemWin32
|
17
17
|
extend Locale::System
|
data/lib/gettext/mo.rb
CHANGED
@@ -12,14 +12,16 @@
|
|
12
12
|
of Ruby. License of Ruby is included with Ruby distribution in
|
13
13
|
the file "README".
|
14
14
|
|
15
|
-
$Id: mo.rb,v 1.
|
15
|
+
$Id: mo.rb,v 1.7 2006/06/11 15:36:20 mutoh Exp $
|
16
16
|
=end
|
17
17
|
|
18
18
|
require 'gettext/iconv'
|
19
19
|
|
20
|
-
class MOFile < Hash
|
20
|
+
class MOFile < Hash
|
21
21
|
class InvalidFormat < RuntimeError; end;
|
22
22
|
|
23
|
+
attr_reader :filename
|
24
|
+
|
23
25
|
Header = Struct.new(:magic,
|
24
26
|
:revision,
|
25
27
|
:nstrings,
|
@@ -249,6 +251,7 @@ class MOFile < Hash #:nodoc:
|
|
249
251
|
end
|
250
252
|
|
251
253
|
def load_from_file(filename)
|
254
|
+
@filename = filename
|
252
255
|
File.open(filename, 'rb'){|f| load_from_stream(f)}
|
253
256
|
end
|
254
257
|
|
@@ -7,7 +7,7 @@
|
|
7
7
|
You may redistribute it and/or modify it under the same
|
8
8
|
license terms as Ruby.
|
9
9
|
|
10
|
-
$Id: activerecord.rb,v 1.
|
10
|
+
$Id: activerecord.rb,v 1.11 2006/07/13 18:22:09 mutoh Exp $
|
11
11
|
=end
|
12
12
|
|
13
13
|
require 'gettext'
|
@@ -25,6 +25,7 @@ module GetText
|
|
25
25
|
:db_yml => "config/database.yml",
|
26
26
|
:db_mode => "development",
|
27
27
|
:activerecord_classes => ["ActiveRecord::Base"],
|
28
|
+
:untranslate_columns => ["id"],
|
28
29
|
:use_classname => true,
|
29
30
|
}
|
30
31
|
|
@@ -42,10 +43,11 @@ module GetText
|
|
42
43
|
# Sets some preferences to parse ActiveRecord files.
|
43
44
|
#
|
44
45
|
# * config: a Hash of the config. It can takes some values below:
|
45
|
-
# * :use_classname
|
46
|
-
# * :db_yml
|
47
|
-
# * :db_mode
|
48
|
-
# * :activerecord_classes
|
46
|
+
# * :use_classname - If true, the msgids of ActiveRecord become "ClassName|FieldName" (e.g. "Article|Title"). Otherwise the ClassName is not used (e.g. "Title"). Default is true.
|
47
|
+
# * :db_yml - the path of database.yml. Default is "config/database.yml".
|
48
|
+
# * :db_mode - the mode of the database. Default is "development"
|
49
|
+
# * :activerecord_classes - an Array of the superclass of the models. The classes should be String value. Default is ["ActiveRecord::Base"]
|
50
|
+
# * :untranslate_columns - an Array of the column names which is ignored as the msgid.
|
49
51
|
#
|
50
52
|
# "ClassName|FieldName" uses GetText.sgettext. So you don't need to translate the left-side of "|".
|
51
53
|
# See <Documents for Translators for more details(http://www.yotabanana.com/hiki/ruby-gettext-translate.html)>.
|
@@ -58,6 +60,10 @@ module GetText
|
|
58
60
|
@ar_re = /class.*(#{@config[:activerecord_classes].join("|")})/
|
59
61
|
end
|
60
62
|
|
63
|
+
def untranslate_column?(klass, columnname)
|
64
|
+
klass.untranslate?(columnname) || @config[:untranslate_columns].include?(columnname)
|
65
|
+
end
|
66
|
+
|
61
67
|
def parse(file, targets = []) # :nodoc:
|
62
68
|
old_constants = constants
|
63
69
|
begin
|
@@ -70,20 +76,24 @@ module GetText
|
|
70
76
|
loaded_constants.each do |classname|
|
71
77
|
klass = eval(classname)
|
72
78
|
if klass < ActiveRecord::Base
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
79
|
+
unless klass.untranslate_all?
|
80
|
+
add_target(targets, file, ::Inflector.singularize(klass.table_name.gsub(/_/, " ")))
|
81
|
+
tablename = klass.class_name
|
82
|
+
begin
|
83
|
+
klass.columns.each do |column|
|
84
|
+
unless untranslate_column?(klass, column.name)
|
85
|
+
if @config[:use_classname]
|
86
|
+
msgid = tablename + "|" + klass.human_attribute_name(column.name)
|
87
|
+
else
|
88
|
+
msgid = klass.human_attribute_name(column.name)
|
89
|
+
end
|
90
|
+
add_target(targets, file, msgid)
|
91
|
+
end
|
81
92
|
end
|
82
|
-
|
93
|
+
rescue
|
94
|
+
$stderr.puts _("No database is available.")
|
95
|
+
$stderr.puts $!
|
83
96
|
end
|
84
|
-
rescue
|
85
|
-
$stderr.puts _("No database is available.")
|
86
|
-
$stderr.puts $!
|
87
97
|
end
|
88
98
|
end
|
89
99
|
end
|
data/lib/gettext/parser/glade.rb
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
You may redistribute it and/or modify it under the same
|
7
7
|
license terms as Ruby.
|
8
8
|
|
9
|
-
$Id: glade.rb,v 1.
|
9
|
+
$Id: glade.rb,v 1.5 2006/06/11 15:36:20 mutoh Exp $
|
10
10
|
=end
|
11
11
|
|
12
12
|
require 'cgi'
|
@@ -67,17 +67,13 @@ module GetText
|
|
67
67
|
|
68
68
|
def target?(file) # :nodoc:
|
69
69
|
data = IO.readlines(file)
|
70
|
-
if XML_RE =~ data[0]
|
71
|
-
|
72
|
-
return true
|
73
|
-
else
|
74
|
-
if File.extname(file) == '.glade'
|
75
|
-
raise _("%s is not glade-2.0 format.") % [file]
|
76
|
-
end
|
77
|
-
return false
|
78
|
-
end
|
70
|
+
if XML_RE =~ data[0] and GLADE_RE =~ data[1]
|
71
|
+
true
|
79
72
|
else
|
80
|
-
|
73
|
+
if File.extname(file) == '.glade'
|
74
|
+
raise _("`%{file}' is not glade-2.0 format.") % {:file => file}
|
75
|
+
end
|
76
|
+
false
|
81
77
|
end
|
82
78
|
end
|
83
79
|
|
data/lib/gettext/parser/ruby.rb
CHANGED
@@ -9,7 +9,7 @@
|
|
9
9
|
You may redistribute it and/or modify it under the same
|
10
10
|
license terms as Ruby.
|
11
11
|
|
12
|
-
$Id: ruby.rb,v 1.
|
12
|
+
$Id: ruby.rb,v 1.7 2006/06/11 15:36:20 mutoh Exp $
|
13
13
|
=end
|
14
14
|
|
15
15
|
require 'irb/ruby-lex.rb'
|
@@ -171,7 +171,7 @@ module GetText
|
|
171
171
|
end
|
172
172
|
else
|
173
173
|
if msgid
|
174
|
-
key_existed = targets.assoc(msgid)
|
174
|
+
key_existed = targets.assoc(msgid.gsub(/\n/, '\n'))
|
175
175
|
if key_existed
|
176
176
|
targets[targets.index(key_existed)] = key_existed <<
|
177
177
|
file_name + ":" + line_no
|
@@ -184,7 +184,6 @@ module GetText
|
|
184
184
|
end
|
185
185
|
targets
|
186
186
|
end
|
187
|
-
|
188
187
|
targets
|
189
188
|
end
|
190
189
|
|
data/lib/gettext/rails.rb
CHANGED
@@ -6,15 +6,14 @@
|
|
6
6
|
You may redistribute it and/or modify it under the same
|
7
7
|
license terms as Ruby.
|
8
8
|
|
9
|
-
$Id: rails.rb,v 1.
|
9
|
+
$Id: rails.rb,v 1.43 2006/07/16 15:19:17 mutoh Exp $
|
10
10
|
=end
|
11
11
|
|
12
12
|
require 'gettext/cgi'
|
13
13
|
require 'active_record'
|
14
14
|
require 'active_support'
|
15
15
|
|
16
|
-
module GetText
|
17
|
-
# = GetText for Ruby on Rails
|
16
|
+
module GetText
|
18
17
|
# GetText::Rails supports Ruby on Rails.
|
19
18
|
# You add only 2 lines in your controller, all of the controller/view/models are
|
20
19
|
# targeted the textdomain.
|
@@ -32,6 +31,9 @@ module GetText #:nodoc:
|
|
32
31
|
end
|
33
32
|
|
34
33
|
module_function
|
34
|
+
# call-seq:
|
35
|
+
# bindtextdomain(domainname, options = {})
|
36
|
+
#
|
35
37
|
# Bind a textdomain(#{path}/#{locale}/LC_MESSAGES/#{domainname}.mo) to your program.
|
36
38
|
# Notes the textdomain scope becomes all of the controllers/views/models in your app.
|
37
39
|
# This is different from normal GetText.bindtextomain.
|
@@ -43,16 +45,16 @@ module GetText #:nodoc:
|
|
43
45
|
#
|
44
46
|
# * domainname: the textdomain name.
|
45
47
|
# * options: options as a Hash.
|
46
|
-
#
|
47
|
-
#
|
48
|
-
#
|
49
|
-
#
|
50
|
-
#
|
51
|
-
#
|
52
|
-
#
|
53
|
-
#
|
54
|
-
#
|
55
|
-
#
|
48
|
+
# * :locale - the locale value such as "ja-JP". When the value is nil,
|
49
|
+
# locale is searched the order by this value > "lang" value of QUERY_STRING >
|
50
|
+
# params["lang"] > "lang" value of Cookie > HTTP_ACCEPT_LANGUAGE value
|
51
|
+
# > Default locale(en).
|
52
|
+
# * :path - the path to the mo-files. Default is "RAIL_ROOT/locale".
|
53
|
+
# * :charset - the charset. Generally UTF-8 is recommanded.
|
54
|
+
# And the charset is set order by "the argument of bindtextdomain"
|
55
|
+
# > HTTP_ACCEPT_CHARSET > Default charset(UTF-8).
|
56
|
+
# * :with_model - false if you want to ignore ActiveRecord support.
|
57
|
+
# * :with_helper - false if you want to ignore ApplicationHelper support.
|
56
58
|
#
|
57
59
|
# Note: Don't use locale, charset, with_model argument(not in options).
|
58
60
|
# They are remained for backward compatibility.
|
@@ -126,8 +128,8 @@ module ActionController #:nodoc:
|
|
126
128
|
# Bind a 'textdomain' to all of the controllers/views/models. Call this instead of GetText.bindtextdomain.
|
127
129
|
# * textdomain: the textdomain
|
128
130
|
# * options: options as a Hash.
|
129
|
-
#
|
130
|
-
#
|
131
|
+
# * :charset - the output charset. Default is "UTF-8"
|
132
|
+
# * :content_type - the content type. Default is "text/html"
|
131
133
|
#
|
132
134
|
# locale is searched the order by @params["lang"] > "lang" value of QUERY_STRING >
|
133
135
|
# "lang" value of Cookie > HTTP_ACCEPT_LANGUAGE value > Default locale(en).
|
@@ -156,6 +158,12 @@ module ActionController #:nodoc:
|
|
156
158
|
@@gettext_domainname = domainname
|
157
159
|
@@gettext_content_type = opt[:content_type]
|
158
160
|
end
|
161
|
+
|
162
|
+
# Gets the textdomain name of this controller.
|
163
|
+
def self.textdomainname
|
164
|
+
@@gettext_domainname
|
165
|
+
end
|
166
|
+
|
159
167
|
end
|
160
168
|
|
161
169
|
class TestRequest < AbstractRequest #:nodoc:
|
@@ -168,6 +176,11 @@ module ActionController #:nodoc:
|
|
168
176
|
end
|
169
177
|
|
170
178
|
module ActiveRecord #:nodoc:
|
179
|
+
class Migration
|
180
|
+
extend GetText
|
181
|
+
include GetText
|
182
|
+
end
|
183
|
+
|
171
184
|
module ConnectionAdapters #:nodoc:
|
172
185
|
# An abstract definition of a column in a table.
|
173
186
|
class Column
|
@@ -178,46 +191,79 @@ module ActiveRecord #:nodoc:
|
|
178
191
|
end
|
179
192
|
end
|
180
193
|
end
|
194
|
+
|
195
|
+
module Validations # :nodoc:
|
196
|
+
def self.append_features(base) # :nodoc:
|
197
|
+
super
|
198
|
+
base.extend ClassMethods
|
199
|
+
base.class_eval{
|
200
|
+
def gettext(str) #:nodoc:
|
201
|
+
_(str)
|
202
|
+
end
|
203
|
+
def self.human_attribute_name(attribute_key_name) #:nodoc:
|
204
|
+
s_("#{self}|#{attribute_key_name.humanize}")
|
205
|
+
end
|
206
|
+
|
207
|
+
def self.human_attribute_table_name_for_error(table_name) #:nodoc:
|
208
|
+
_(table_name.gsub(/_/, " "))
|
209
|
+
end
|
210
|
+
}
|
211
|
+
end
|
212
|
+
|
213
|
+
module ClassMethods #:nodoc:
|
214
|
+
@@custom_error_messages_d = {}
|
215
|
+
|
216
|
+
# Very ugly but...
|
217
|
+
def validates_length_of(*attrs) #:nodoc:
|
218
|
+
if attrs.last.is_a?(Hash)
|
219
|
+
msg = attrs.last[:message]
|
220
|
+
if msg
|
221
|
+
@@custom_error_messages_d[msg] = /#{Regexp.escape(msg).sub(/%d/, '(\d+)')}/
|
222
|
+
end
|
223
|
+
end
|
224
|
+
validates_size_of(*attrs)
|
225
|
+
end
|
226
|
+
|
227
|
+
def custom_error_messages_d #:nodoc:
|
228
|
+
@@custom_error_messages_d
|
229
|
+
end
|
230
|
+
end
|
231
|
+
def custom_error_messages_d #:nodoc:
|
232
|
+
self.class.custom_error_messages_d
|
233
|
+
end
|
234
|
+
end
|
181
235
|
|
182
236
|
class Base
|
183
|
-
|
184
|
-
|
237
|
+
include GetText::Rails
|
238
|
+
include Validations
|
239
|
+
|
240
|
+
@@gettext_untranslate = false
|
241
|
+
@@gettext_untranslate_columns = []
|
242
|
+
|
243
|
+
# Untranslate all of the tablename/fieldnames in this model class.
|
244
|
+
def self.untranslate_all
|
245
|
+
@@gettext_untranslate = true
|
185
246
|
end
|
186
247
|
|
187
|
-
|
188
|
-
|
248
|
+
# Returns true if "untranslate_all" is called. Otherwise false.
|
249
|
+
def self.untranslate_all?
|
250
|
+
@@gettext_untranslate
|
189
251
|
end
|
190
252
|
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
# set_error_message_title(msg)
|
196
|
-
#
|
197
|
-
# Sets a your own title of error message dialog.
|
198
|
-
# * msg: [single_msg, plural_msg]. Usually you need to call this with Nn_().
|
199
|
-
# * Returns: [single_msg, plural_msg]
|
200
|
-
def self.set_error_message_title(msg, plural_msg = nil)
|
201
|
-
if msg.kind_of? Array
|
202
|
-
single_msg = msg[0]
|
203
|
-
plural_msg = msg[1]
|
204
|
-
else
|
205
|
-
single_msg = msg
|
206
|
-
end
|
207
|
-
@@error_message_title = [single_msg, plural_msg]
|
253
|
+
# Sets the untranslate columns.
|
254
|
+
# (e.g.) untranslate :foo, :bar, :baz
|
255
|
+
def self.untranslate(*w)
|
256
|
+
@@gettext_untranslate_columns += w.collect{|v| v.to_s}
|
208
257
|
end
|
209
258
|
|
210
|
-
#
|
211
|
-
|
212
|
-
def self.
|
213
|
-
|
214
|
-
msg = attrs.last[:message]
|
215
|
-
@@custom_error_messages_d[msg] = /#{Regexp.escape(msg).sub(/%d/, '(\d+)')}/ if msg
|
216
|
-
end
|
217
|
-
validates_size_of(*attrs)
|
259
|
+
# Returns true if the column is set "untranslate".
|
260
|
+
# (e.g.) untranslate? :foo
|
261
|
+
def self.untranslate?(columnname)
|
262
|
+
@@gettext_untranslate_columns.include?(columnname)
|
218
263
|
end
|
219
|
-
|
220
|
-
|
264
|
+
|
265
|
+
def self.untranslate_data #:nodoc:
|
266
|
+
[@@gettext_untranslate, @@gettext_untranslate_columns]
|
221
267
|
end
|
222
268
|
|
223
269
|
def self.columns
|
@@ -230,46 +276,40 @@ module ActiveRecord #:nodoc:
|
|
230
276
|
end
|
231
277
|
@columns
|
232
278
|
end
|
279
|
+
|
280
|
+
# call-seq:
|
281
|
+
# set_error_message_title(msg)
|
282
|
+
#
|
283
|
+
# ((*Deprecated*))
|
284
|
+
# Use ActionView::Helpers::ActiveRecordHelper::L10n.set_error_message_title
|
285
|
+
# instead.
|
286
|
+
#
|
287
|
+
# Sets a your own title of error message dialog.
|
288
|
+
# * msg: [single_msg, plural_msg]. Usually you need to call this with Nn_().
|
289
|
+
# * Returns: [single_msg, plural_msg]
|
290
|
+
def self.set_error_message_title(msg, plural_msg = nil)
|
291
|
+
ActionView::Helpers::ActiveRecordHelper::L10n.set_error_message_title(msg, plural_msg)
|
292
|
+
end
|
233
293
|
|
234
294
|
# call-seq:
|
235
295
|
# set_error_message_explanation(msg)
|
236
296
|
#
|
297
|
+
# ((*Deprecated*))
|
298
|
+
# Use ActionView::Helpers::ActiveRecordHelper::L10n.set_error_message_explanation
|
299
|
+
# instead.
|
300
|
+
#
|
237
301
|
# Sets a your own explanation of the error message dialog.
|
238
302
|
# * msg: [single_msg, plural_msg]. Usually you need to call this with Nn_().
|
239
303
|
# * Returns: [single_msg, plural_msg]
|
240
304
|
def self.set_error_message_explanation(msg, plural_msg = nil)
|
241
|
-
|
242
|
-
single_msg = msg[0]
|
243
|
-
plural_msg = msg[1]
|
244
|
-
else
|
245
|
-
single_msg = msg
|
246
|
-
end
|
247
|
-
@@error_message_explanation = [single_msg, plural_msg]
|
248
|
-
end
|
249
|
-
|
250
|
-
def error_message_title #:nodoc:
|
251
|
-
if @@error_message_title
|
252
|
-
[_(@@error_message_title[0]), _(@@error_message_title[1])]
|
253
|
-
else
|
254
|
-
nil
|
255
|
-
end
|
256
|
-
end
|
257
|
-
def error_message_explanation #:nodoc:
|
258
|
-
if @@error_message_explanation
|
259
|
-
[_(@@error_message_explanation[0]), _(@@error_message_explanation[1])]
|
260
|
-
else
|
261
|
-
nil
|
262
|
-
end
|
263
|
-
end
|
264
|
-
|
265
|
-
def gettext(str) #:nodoc:
|
266
|
-
_(str)
|
305
|
+
ActionView::Helpers::ActiveRecordHelper::L10n.set_error_message_explanation(msg, plural_msg)
|
267
306
|
end
|
268
307
|
end
|
269
308
|
|
309
|
+
# activerecord-1.14.3/lib/active_record/validations.rb
|
270
310
|
class Errors #:nodoc:
|
271
311
|
include GetText
|
272
|
-
|
312
|
+
|
273
313
|
RE_FIELD_NAME = /%\{fn\}/ #:nodoc:
|
274
314
|
|
275
315
|
# You need to define this here, because this values will be updated by application.
|
@@ -294,8 +334,8 @@ module ActiveRecord #:nodoc:
|
|
294
334
|
}
|
295
335
|
cattr_accessor :default_error_messages_d
|
296
336
|
|
297
|
-
def
|
298
|
-
|
337
|
+
def localize_error_messages # :nodoc:
|
338
|
+
errors = {}
|
299
339
|
@errors.each_key do |attr|
|
300
340
|
@errors[attr].each do |msg|
|
301
341
|
next if msg.nil?
|
@@ -305,8 +345,8 @@ module ActiveRecord #:nodoc:
|
|
305
345
|
if regexp =~ msg
|
306
346
|
custom_msg = @base.gettext(key)
|
307
347
|
custom_msg = _(msg) if custom_msg == msg
|
308
|
-
|
309
|
-
|
348
|
+
custom_msg = _(custom_msg) % $1.to_i
|
349
|
+
break
|
310
350
|
end
|
311
351
|
end
|
312
352
|
unless custom_msg
|
@@ -314,14 +354,36 @@ module ActiveRecord #:nodoc:
|
|
314
354
|
custom_msg = _(msg) if custom_msg == msg
|
315
355
|
end
|
316
356
|
if attr == "base"
|
317
|
-
|
357
|
+
full_message = custom_msg
|
318
358
|
elsif RE_FIELD_NAME =~ custom_msg
|
319
|
-
|
359
|
+
full_message = custom_msg % {:fn => @base.class.human_attribute_name(attr)}
|
320
360
|
else
|
321
|
-
|
361
|
+
full_message = @base.class.human_attribute_name(attr) + " " + custom_msg
|
322
362
|
end
|
363
|
+
errors[attr] = full_message
|
323
364
|
end
|
324
365
|
end
|
366
|
+
errors
|
367
|
+
end
|
368
|
+
|
369
|
+
def on(attribute) #:nodoc:
|
370
|
+
errors = localize_error_messages
|
371
|
+
if errors[attribute.to_s].nil?
|
372
|
+
nil
|
373
|
+
elsif errors[attribute.to_s].length == 1
|
374
|
+
errors[attribute.to_s].first
|
375
|
+
else
|
376
|
+
errors[attribute.to_s]
|
377
|
+
end
|
378
|
+
end
|
379
|
+
|
380
|
+
def full_messages #:nodoc:
|
381
|
+
full_messages = []
|
382
|
+
errors = localize_error_messages
|
383
|
+
errors.each do |attr, msg|
|
384
|
+
next if msg.nil?
|
385
|
+
full_messages << msg
|
386
|
+
end
|
325
387
|
full_messages
|
326
388
|
end
|
327
389
|
end
|
@@ -349,7 +411,8 @@ module ActionView #:nodoc:
|
|
349
411
|
module L10n
|
350
412
|
# Separate namespace for textdomain
|
351
413
|
include GetText
|
352
|
-
|
414
|
+
|
415
|
+
bindtextdomain("rails")
|
353
416
|
|
354
417
|
@error_message_title = Nn_("%{num} error prohibited this %{record} from being saved",
|
355
418
|
"%{num} errors prohibited this %{record} from being saved")
|
@@ -357,9 +420,56 @@ module ActionView #:nodoc:
|
|
357
420
|
"There were problems with the following fields:")
|
358
421
|
|
359
422
|
module_function
|
423
|
+
# call-seq:
|
424
|
+
# set_error_message_title(msgs)
|
425
|
+
#
|
426
|
+
# Sets a your own title of error message dialog.
|
427
|
+
# * msgs: [single_msg, plural_msg]. Usually you need to call this with Nn_().
|
428
|
+
# * Returns: [single_msg, plural_msg]
|
429
|
+
def set_error_message_title(msg, plural_msg = nil)
|
430
|
+
if msg.kind_of? Array
|
431
|
+
single_msg = msg[0]
|
432
|
+
plural_msg = msg[1]
|
433
|
+
else
|
434
|
+
single_msg = msg
|
435
|
+
end
|
436
|
+
@error_message_title = [single_msg, plural_msg]
|
437
|
+
end
|
438
|
+
|
439
|
+
# call-seq:
|
440
|
+
# set_error_message_explanation(msg)
|
441
|
+
#
|
442
|
+
# Sets a your own explanation of the error message dialog.
|
443
|
+
# * msg: [single_msg, plural_msg]. Usually you need to call this with Nn_().
|
444
|
+
# * Returns: [single_msg, plural_msg]
|
445
|
+
def set_error_message_explanation(msg, plural_msg = nil)
|
446
|
+
if msg.kind_of? Array
|
447
|
+
single_msg = msg[0]
|
448
|
+
plural_msg = msg[1]
|
449
|
+
else
|
450
|
+
single_msg = msg
|
451
|
+
end
|
452
|
+
@error_message_explanation = [single_msg, plural_msg]
|
453
|
+
end
|
454
|
+
|
455
|
+
def error_message_title #:nodoc:
|
456
|
+
if @error_message_title
|
457
|
+
[_(@error_message_title[0]), _(@error_message_title[1])]
|
458
|
+
else
|
459
|
+
nil
|
460
|
+
end
|
461
|
+
end
|
462
|
+
def error_message_explanation #:nodoc:
|
463
|
+
if @error_message_explanation
|
464
|
+
[_(@error_message_explanation[0]), _(@error_message_explanation[1])]
|
465
|
+
else
|
466
|
+
nil
|
467
|
+
end
|
468
|
+
end
|
469
|
+
|
360
470
|
def render_error_message(object, klass, record, count, options)
|
361
|
-
message_title =
|
362
|
-
message_explanation =
|
471
|
+
message_title = @error_message_title
|
472
|
+
message_explanation = @error_message_explanation
|
363
473
|
|
364
474
|
klass.content_tag("div",
|
365
475
|
klass.content_tag(
|
@@ -373,8 +483,6 @@ module ActionView #:nodoc:
|
|
373
483
|
end
|
374
484
|
|
375
485
|
def error_messages_for(object, object_name, klass, options = {})
|
376
|
-
textdomain("rails")
|
377
|
-
|
378
486
|
options = options.symbolize_keys
|
379
487
|
|
380
488
|
if object && ! object.errors.empty?
|
@@ -389,6 +497,33 @@ module ActionView #:nodoc:
|
|
389
497
|
L10n.error_messages_for(object, object_name, self, options)
|
390
498
|
end
|
391
499
|
end
|
500
|
+
|
501
|
+
module DateHelper #:nodoc: all
|
502
|
+
include GetText
|
503
|
+
alias distance_of_time_in_words_without_locale distance_of_time_in_words #:nodoc:
|
504
|
+
|
505
|
+
bindtextdomain("rails")
|
506
|
+
|
507
|
+
# This is FAKE constant. The messages are found by rgettext as the msgid.
|
508
|
+
MESSAGESS = [N_('less than 5 seconds'), N_('less than 10 seconds'), N_('less than 20 seconds'),
|
509
|
+
N_('half a minute'), N_('less than a minute')]
|
510
|
+
MINUTES = [/^(\d+) minutes?$/, Nn_('1 minute', '%{num} minutes')]
|
511
|
+
HOURS = [/^about (\d+) hours?$/, Nn_('about 1 hour', 'about %{num} hours')]
|
512
|
+
DAYS = [/^(\d+) days?$/, Nn_('1 day', '%{num} days')]
|
513
|
+
|
514
|
+
def distance_of_time_in_words(from_time, to_time = 0, include_seconds = false)
|
515
|
+
msg = distance_of_time_in_words_without_locale(from_time, to_time, include_seconds)
|
516
|
+
match = false
|
517
|
+
[MINUTES, HOURS, DAYS].each do |regexp, nn|
|
518
|
+
if regexp =~ msg
|
519
|
+
match = true
|
520
|
+
msg = n_(nn, $1.to_i) % {:num => $1}
|
521
|
+
break
|
522
|
+
end
|
523
|
+
end
|
524
|
+
match ? msg : _(msg)
|
525
|
+
end
|
526
|
+
end
|
392
527
|
end
|
393
528
|
end
|
394
529
|
|