fb-localizer 0.1.3 → 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/.rspec ADDED
@@ -0,0 +1 @@
1
+ --colour
@@ -0,0 +1,6 @@
1
+ rvm:
2
+ - 1.8.7
3
+ - 1.8.7-ree # (current default)
4
+ - 1.9.2
5
+ - 1.9.3
6
+ script: "bundle exec rspec spec/"
@@ -1,9 +1,9 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- fb-localizer (0.1.2)
4
+ fb-localizer (0.2.0)
5
5
  i18n
6
- libxml-ruby (= 1.1.3)
6
+ libxml-ruby
7
7
  rails
8
8
 
9
9
  GEM
@@ -36,20 +36,20 @@ GEM
36
36
  activemodel (= 3.0.5)
37
37
  activesupport (= 3.0.5)
38
38
  activesupport (3.0.5)
39
- arel (2.0.9)
39
+ arel (2.0.10)
40
40
  builder (2.1.2)
41
41
  diff-lcs (1.1.2)
42
42
  erubis (2.6.6)
43
43
  abstract (>= 1.0.0)
44
44
  i18n (0.5.0)
45
- libxml-ruby (1.1.3)
45
+ libxml-ruby (2.2.2)
46
46
  mail (2.2.19)
47
47
  activesupport (>= 2.3.6)
48
48
  i18n (>= 0.4.0)
49
49
  mime-types (~> 1.16)
50
50
  treetop (~> 1.4.8)
51
51
  mime-types (1.16)
52
- polyglot (0.3.1)
52
+ polyglot (0.3.2)
53
53
  rack (1.2.2)
54
54
  rack-mount (0.6.14)
55
55
  rack (>= 1.0.0)
@@ -86,7 +86,8 @@ GEM
86
86
  sqlite3-ruby (1.3.3)
87
87
  sqlite3 (>= 1.3.3)
88
88
  thor (0.14.6)
89
- treetop (1.4.9)
89
+ treetop (1.4.10)
90
+ polyglot
90
91
  polyglot (>= 0.3.1)
91
92
  tzinfo (0.3.25)
92
93
 
data/README.md CHANGED
@@ -13,6 +13,35 @@ So, if we want to add a localized "I like it" button into our web page, we need
13
13
  Note: a more complex algorithm on planning which is the nearest locale
14
14
  is planned.
15
15
 
16
+ Priority locales
17
+ ----------------
18
+
19
+ FB-Localizer has, from version 0.1.3, the ability to allow the user to
20
+ set priorities to certain locales.
21
+
22
+ If you try to convert "en" (for English) to a Facebook-compatible locale, you will find out that many are available: Pirate, Upside down, United States, and Great Britain. With this priority-locales feature you can indicate FB-Localizer to, in case of having English ("en") to translate, use directly, for example, the English's Great Britain locale.
23
+
24
+ Just create an initializer in app/initializers/, and set something like:
25
+
26
+ FbLocalizer.configure do |config|
27
+ config.priorized = { :en => "en_GB" }
28
+ end
29
+
30
+ The format of the priorized locales is a hash. For each record in the hash,
31
+
32
+ * The key is the symbol for the locale, e.g :en or :es
33
+ * The value is your priorized Facebook locale for it, e.g. "en_US" for :en or "es_ES" for :es
34
+
35
+ Nevertheless, FB-Localizer itself has default locales for a ruby locale. The complete list is:
36
+
37
+ * United States' english
38
+ * Spain's spanish
39
+ * Portugal's portuguese
40
+ * Simplified chinese
41
+
42
+ The complete list of Facebook locales is in a XML provided by Facebook
43
+ itself: [complete list of Facebook locales](http://www.facebook.com/translations/FacebookLocales.xml)
44
+
16
45
  Usage
17
46
  -----
18
47
 
@@ -24,5 +24,5 @@ nearest Facebook's locale. This way you can localize the "I like it" button on e
24
24
  s.add_development_dependency "rspec-rails", "~> 2.5"
25
25
  s.add_dependency "rails"
26
26
  s.add_dependency "i18n"
27
- s.add_dependency "libxml-ruby", "1.1.3"
27
+ s.add_dependency "libxml-ruby"
28
28
  end
@@ -5,20 +5,23 @@ module FbLocalizer
5
5
  DEFAULT_PRIORITIES = { :en => "en_US", :es => "es_ES", :pt => "pt_PT", :zh => "zh_CN" }
6
6
  mattr_accessor :priorized
7
7
 
8
+ @@skip_loading = false
9
+ @@skip_loading = true if defined?(Rails) && Rails.env.development?
10
+ mattr_accessor :skip_loading
11
+
8
12
  module FbLocalizerHelpers
9
13
  def get_fb_locale(ruby_locale = nil)
10
- ruby_locale = ruby_locale.to_sym if ruby_locale.is_a? String
11
14
  ruby_locale ||= I18n.locale
12
- fb_candidate_locales = FbLocalizer::FbLocalizerHelpers::FB_LOCALES.select{ |l| l.match(/^#{ruby_locale}/)}
13
- if fb_candidate_locales.any?
14
- priorized = FbLocalizer.priorized[ruby_locale] # get priorized locale for that one
15
- if priorized && fb_candidate_locales.include?(priorized) # if available, get that one
16
- priorized
17
- else # if not, just get the first available
18
- fb_candidate_locales[0]
19
- end
20
- else
21
- "en_US" # US english by default
15
+ ruby_locale = ruby_locale.to_sym if ruby_locale.is_a? String
16
+
17
+ candidates = FbLocalizer::FbLocalizerHelpers::FB_LOCALES.select{ |l| l.match(/^#{ruby_locale}/)}
18
+ return "en_US" if candidates.empty? # return American English if no candidates at all
19
+
20
+ priorized = FbLocalizer.priorized[ruby_locale] # get priorized locale for that one
21
+ if priorized && candidates.include?(priorized) # if available, get that one
22
+ priorized
23
+ else # if not, just get the first available
24
+ candidates.first
22
25
  end
23
26
  end
24
27
  end
@@ -7,22 +7,31 @@ require "timeout"
7
7
  module FbLocalizer
8
8
  class Railtie < Rails::Railtie
9
9
  initializer "fb-localizer.configure_rails_initialization" do
10
- begin
11
- Timeout::timeout(5) do
12
- url = "http://www.facebook.com/translations/FacebookLocales.xml"
13
- open(url){ |f|
14
- xml = f.readlines.join("\n")
15
- fb_locales = XML::Parser.string(xml).parse
16
- FbLocalizer::FbLocalizerHelpers::FB_LOCALES = []
17
- fb_locales.find('//locales/locale/codes/code/standard/representation').each do |node|
18
- FbLocalizer::FbLocalizerHelpers::FB_LOCALES << node.content
19
- end
20
- puts "FB-Localizer => Locales read successfully from <http://www.facebook.com/translations/FacebookLocales.xml>"
21
- }
10
+ def load_defaults
11
+ FbLocalizer::FbLocalizerHelpers.const_set(:FB_LOCALES, ["en_US","es_ES","ca_ES"])
12
+ end
13
+
14
+ if FbLocalizer.skip_loading
15
+ puts "FB-Localizer => Skipped, using defaults instead"
16
+ load_defaults
17
+ else
18
+ begin
19
+ Timeout::timeout(5) do
20
+ url = "http://www.facebook.com/translations/FacebookLocales.xml"
21
+ open(url){ |f|
22
+ xml = f.readlines.join("\n")
23
+ fb_locales = XML::Parser.string(xml).parse
24
+ FbLocalizer::FbLocalizerHelpers::FB_LOCALES = []
25
+ fb_locales.find('//locales/locale/codes/code/standard/representation').each do |node|
26
+ FbLocalizer::FbLocalizerHelpers::FB_LOCALES << node.content
27
+ end
28
+ puts "FB-Localizer => Locales read successfully from <http://www.facebook.com/translations/FacebookLocales.xml>"
29
+ }
30
+ end
31
+ rescue Exception => e
32
+ puts "FB-Localizer => Exception '#{e}', using defaults instead"
33
+ load_defaults
22
34
  end
23
- rescue Exception => e
24
- puts "FB-Localizer => Exception '#{e}', using defaults instead"
25
- FbLocalizer::FbLocalizerHelpers::FB_LOCALES = ["en_US","es_ES","ca_ES"]
26
35
  end
27
36
  end
28
37
  end
@@ -1,5 +1,5 @@
1
1
  module Fb
2
2
  module Localizer
3
- VERSION = "0.1.3"
3
+ VERSION = "0.2.0"
4
4
  end
5
5
  end
@@ -1,4 +1,5 @@
1
1
  # Require fb-localize and load server
2
+ ENV["RAILS_ENV"] = "test"
2
3
  require File.expand_path('../../testapp/config/environment', __FILE__)
3
4
  require 'rspec/rails'
4
5
  require 'fb-localizer'
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: ..
3
3
  specs:
4
- fb-localizer (0.1.2)
4
+ fb-localizer (0.1.3)
5
5
  i18n
6
6
  libxml-ruby (= 1.1.3)
7
7
  rails
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fb-localizer
3
3
  version: !ruby/object:Gem::Version
4
- hash: 29
4
+ hash: 23
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
- - 1
9
- - 3
10
- version: 0.1.3
8
+ - 2
9
+ - 0
10
+ version: 0.2.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Albert Bellonch
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-05-13 00:00:00 +02:00
18
+ date: 2011-10-08 00:00:00 +02:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -67,14 +67,12 @@ dependencies:
67
67
  requirement: &id004 !ruby/object:Gem::Requirement
68
68
  none: false
69
69
  requirements:
70
- - - "="
70
+ - - ">="
71
71
  - !ruby/object:Gem::Version
72
- hash: 21
72
+ hash: 3
73
73
  segments:
74
- - 1
75
- - 1
76
- - 3
77
- version: 1.1.3
74
+ - 0
75
+ version: "0"
78
76
  type: :runtime
79
77
  version_requirements: *id004
80
78
  description: |-
@@ -90,6 +88,8 @@ extra_rdoc_files: []
90
88
 
91
89
  files:
92
90
  - .gitignore
91
+ - .rspec
92
+ - .travis.yml
93
93
  - Gemfile
94
94
  - Gemfile.lock
95
95
  - README.md