|
From 77c62f8e9410c7ab743f0b4cbc7ff9c2a147c98a Mon Sep 17 00:00:00 2001
|
|
From: Tomas Strachota <tstrachota@redhat.com>
|
|
Date: Mon, 31 Mar 2014 11:18:16 +0000
|
|
Subject: [PATCH] Fixes #4916 - skip missing translation domains
|
|
|
|
---
|
|
lib/hammer_cli/i18n.rb | 16 +++++++++++++-
|
|
test/unit/i18n_test.rb | 50 ++++++++++++++++++++++++++++++++++++++++++++++++
|
|
2 files changed, 64 insertions(+), 2 deletions(-)
|
|
create mode 100644 test/unit/i18n_test.rb
|
|
|
|
diff --git a/lib/hammer_cli/i18n.rb b/lib/hammer_cli/i18n.rb
|
|
index 6b883fc..0cb62b0 100644
|
|
--- a/lib/hammer_cli/i18n.rb
|
|
+++ b/lib/hammer_cli/i18n.rb
|
|
@@ -37,6 +37,10 @@ module HammerCLI
|
|
:mo
|
|
end
|
|
|
|
+ def available?
|
|
+ File.exist?(locale_dir)
|
|
+ end
|
|
+
|
|
attr_reader :locale_dir, :domain_name
|
|
end
|
|
|
|
@@ -76,12 +80,20 @@ module HammerCLI
|
|
@domains
|
|
end
|
|
|
|
+
|
|
def self.add_domain(domain)
|
|
- domains << domain
|
|
- FastGettext.add_text_domain(domain.domain_name, :path => domain.locale_dir, :type => domain.type, :report_warning => false)
|
|
+ if domain.available?
|
|
+ domains << domain
|
|
+ FastGettext.add_text_domain(domain.domain_name, :path => domain.locale_dir, :type => domain.type, :report_warning => false)
|
|
+ end
|
|
end
|
|
|
|
|
|
+ def self.clear
|
|
+ FastGettext.translation_repositories.clear
|
|
+ domains.clear
|
|
+ end
|
|
+
|
|
Encoding.default_external='UTF-8' if defined? Encoding
|
|
FastGettext.locale = locale
|
|
|
|
diff --git a/test/unit/i18n_test.rb b/test/unit/i18n_test.rb
|
|
new file mode 100644
|
|
index 0000000..c0a884c
|
|
--- /dev/null
|
|
+++ b/test/unit/i18n_test.rb
|
|
@@ -0,0 +1,50 @@
|
|
+require File.join(File.dirname(__FILE__), 'test_helper')
|
|
+
|
|
+
|
|
+describe HammerCLI::I18n do
|
|
+
|
|
+ class TestLocaleDomain < HammerCLI::I18n::AbstractLocaleDomain
|
|
+
|
|
+ def initialize(name, available)
|
|
+ @name = name
|
|
+ @available = available
|
|
+ end
|
|
+
|
|
+ def locale_dir
|
|
+ File.dirname(__FILE__)
|
|
+ end
|
|
+
|
|
+ def domain_name
|
|
+ @name
|
|
+ end
|
|
+
|
|
+ def available?
|
|
+ @available
|
|
+ end
|
|
+ end
|
|
+
|
|
+ before :each do
|
|
+ HammerCLI::I18n.clear
|
|
+ end
|
|
+
|
|
+ let(:domain1) { TestLocaleDomain.new('domain1', true) }
|
|
+ let(:domain2) { TestLocaleDomain.new('domain2', true) }
|
|
+ let(:unavailable_domain) { TestLocaleDomain.new('domain3', false) }
|
|
+
|
|
+ it "registers available domains at gettext" do
|
|
+ FastGettext.expects(:add_text_domain).with do |name, options|
|
|
+ (name == domain1.domain_name) && (options[:path] == domain1.locale_dir) && (options[:type] == domain1.type)
|
|
+ end
|
|
+ HammerCLI::I18n.add_domain(domain1)
|
|
+ end
|
|
+
|
|
+ it "skips registering domains that are not available" do
|
|
+ HammerCLI::I18n.add_domain(domain1)
|
|
+ HammerCLI::I18n.add_domain(domain2)
|
|
+ HammerCLI::I18n.add_domain(unavailable_domain)
|
|
+ HammerCLI::I18n.domains.must_equal [domain1, domain2]
|
|
+ end
|
|
+
|
|
+
|
|
+end
|
|
+
|
|
--
|
|
1.7.1
|
|
|