Project

General

Profile

Download (2.78 KB) Statistics
| Branch: | Tag: | Revision:
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

(1-1/2)