fast_gettext 1.0.0 → 1.1.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.
- checksums.yaml +4 -4
- data/lib/fast_gettext/mo_file.rb +19 -9
- data/lib/fast_gettext/po_file.rb +22 -2
- data/lib/fast_gettext/translation_repository.rb +3 -4
- data/lib/fast_gettext/translation_repository/mo.rb +2 -1
- data/lib/fast_gettext/translation_repository/po.rb +1 -1
- data/lib/fast_gettext/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f1c679c3594754eaf0836fe85d8727b4a104127f
|
4
|
+
data.tar.gz: 65b5ca0ccd954bc5b173d3076c0094f7cbfa8e83
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 641ee741ba7027c9e85cdf8bd83f4cc1877bebe583633b52be941e0de1cb2794944fadea3916bcf929559faed7d00889aa85c362b6ad1892f4665016fbc05d7a
|
7
|
+
data.tar.gz: 304487d75a07a5b33e6b4241e332225b37e3e647e474fe77fd56aa23c4437a548a084a43d5b669dc6af0630815af209d875c320c6651d2f85b91c096c0db1886
|
data/lib/fast_gettext/mo_file.rb
CHANGED
@@ -6,17 +6,13 @@ module FastGettext
|
|
6
6
|
PLURAL_SEPERATOR = "\000"
|
7
7
|
|
8
8
|
# file => path or FastGettext::GetText::MOFile
|
9
|
-
def initialize(file)
|
10
|
-
|
11
|
-
|
12
|
-
else
|
13
|
-
@data = FastGettext::GetText::MOFile.open(file, "UTF-8")
|
14
|
-
end
|
15
|
-
make_singular_and_plural_available
|
9
|
+
def initialize(file, options={})
|
10
|
+
@filename = file
|
11
|
+
load_data if options[:eager_load]
|
16
12
|
end
|
17
13
|
|
18
14
|
def [](key)
|
19
|
-
|
15
|
+
data[key]
|
20
16
|
end
|
21
17
|
|
22
18
|
#returns the plural forms or all singular translations that where found
|
@@ -28,7 +24,7 @@ module FastGettext
|
|
28
24
|
def pluralisation_rule
|
29
25
|
#gettext uses 0 as default rule, which would turn off all pluralisation, very clever...
|
30
26
|
#additionally parsing fails when directly accessing po files, so this line was taken from gettext/mofile
|
31
|
-
(
|
27
|
+
(data['']||'').split("\n").each do |line|
|
32
28
|
return lambda{|n|eval($2)} if /^Plural-Forms:\s*nplurals\s*\=\s*(\d*);\s*plural\s*\=\s*([^;]*)\n?/ =~ line
|
33
29
|
end
|
34
30
|
nil
|
@@ -40,6 +36,20 @@ module FastGettext
|
|
40
36
|
|
41
37
|
private
|
42
38
|
|
39
|
+
def data
|
40
|
+
load_data if @data.nil?
|
41
|
+
@data
|
42
|
+
end
|
43
|
+
|
44
|
+
def load_data
|
45
|
+
@data = if @filename.is_a? FastGettext::GetText::MOFile
|
46
|
+
@filename
|
47
|
+
else
|
48
|
+
FastGettext::GetText::MOFile.open(@filename, "UTF-8")
|
49
|
+
end
|
50
|
+
make_singular_and_plural_available
|
51
|
+
end
|
52
|
+
|
43
53
|
#(if plural==singular, prefer singular)
|
44
54
|
def make_singular_and_plural_available
|
45
55
|
data = {}
|
data/lib/fast_gettext/po_file.rb
CHANGED
@@ -2,8 +2,28 @@ require 'fast_gettext/mo_file'
|
|
2
2
|
module FastGettext
|
3
3
|
# Responsibility:
|
4
4
|
# - abstract po files for Po Repository
|
5
|
-
class PoFile
|
5
|
+
class PoFile < MoFile
|
6
|
+
def initialize(file, options={})
|
7
|
+
@options = options
|
8
|
+
super
|
9
|
+
end
|
10
|
+
|
6
11
|
def self.to_mo_file(file, options={})
|
12
|
+
MoFile.new(parse_po_file(file, options))
|
13
|
+
end
|
14
|
+
|
15
|
+
protected
|
16
|
+
|
17
|
+
def load_data
|
18
|
+
@data = if @filename.is_a? FastGettext::GetText::MOFile
|
19
|
+
@filename
|
20
|
+
else
|
21
|
+
FastGettext::PoFile.parse_po_file(@filename, @options)
|
22
|
+
end
|
23
|
+
make_singular_and_plural_available
|
24
|
+
end
|
25
|
+
|
26
|
+
def self.parse_po_file(file, options={})
|
7
27
|
require 'fast_gettext/vendor/poparser'
|
8
28
|
parser = FastGettext::GetText::PoParser.new
|
9
29
|
|
@@ -13,7 +33,7 @@ module FastGettext
|
|
13
33
|
|
14
34
|
mo_file = FastGettext::GetText::MOFile.new
|
15
35
|
parser.parse(File.read(file), mo_file)
|
16
|
-
|
36
|
+
mo_file
|
17
37
|
end
|
18
38
|
end
|
19
39
|
end
|
@@ -4,14 +4,13 @@ module FastGettext
|
|
4
4
|
module TranslationRepository
|
5
5
|
extend self
|
6
6
|
|
7
|
-
# only single-word types supported atm (mytype works, MyType will not)
|
8
7
|
def build(name, options)
|
9
8
|
type = options[:type] || :mo
|
10
|
-
class_name = type.to_s.capitalize
|
9
|
+
class_name = type.to_s.split('_').map(&:capitalize).join
|
11
10
|
unless FastGettext::TranslationRepository.constants.map{|c|c.to_s}.include?(class_name)
|
12
|
-
require "fast_gettext/translation_repository/#{type}"
|
11
|
+
require "fast_gettext/translation_repository/#{type}"
|
13
12
|
end
|
14
13
|
eval(class_name).new(name,options)
|
15
14
|
end
|
16
15
|
end
|
17
|
-
end
|
16
|
+
end
|
@@ -7,6 +7,7 @@ module FastGettext
|
|
7
7
|
class Mo < Base
|
8
8
|
def initialize(name,options={})
|
9
9
|
super
|
10
|
+
@eager_load = options.fetch(:eager_load, false)
|
10
11
|
reload
|
11
12
|
end
|
12
13
|
|
@@ -28,7 +29,7 @@ module FastGettext
|
|
28
29
|
def find_and_store_files(name,options)
|
29
30
|
# parse all .mo files with the right name, that sit in locale/LC_MESSAGES folders
|
30
31
|
find_files_in_locale_folders(File.join('LC_MESSAGES',"#{name}.mo"), options[:path]) do |locale,file|
|
31
|
-
MoFile.new(file)
|
32
|
+
MoFile.new(file, eager_load: @eager_load)
|
32
33
|
end
|
33
34
|
end
|
34
35
|
|
@@ -10,7 +10,7 @@ module FastGettext
|
|
10
10
|
def find_and_store_files(name, options)
|
11
11
|
require 'fast_gettext/po_file'
|
12
12
|
find_files_in_locale_folders("#{name}.po", options[:path]) do |locale,file|
|
13
|
-
PoFile.
|
13
|
+
PoFile.new(file, options)
|
14
14
|
end
|
15
15
|
end
|
16
16
|
end
|
data/lib/fast_gettext/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fast_gettext
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Grosser
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-05-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -160,7 +160,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
160
160
|
version: '0'
|
161
161
|
requirements: []
|
162
162
|
rubyforge_project:
|
163
|
-
rubygems_version: 2.
|
163
|
+
rubygems_version: 2.4.5.1
|
164
164
|
signing_key:
|
165
165
|
specification_version: 4
|
166
166
|
summary: A simple, fast, memory-efficient and threadsafe implementation of GetText
|