From 586c56b1ba3ec1a5cffa5588d787c628bab75eec Mon Sep 17 00:00:00 2001 From: Haruka Yoshihara Date: Thu, 20 Sep 2012 12:36:05 +0900 Subject: [PATCH] mofile: don't include untranlated messages in a .mo file from .po files refs #11 --- lib/gettext/runtime/mofile.rb | 12 +++++++----- test/test_mofile.rb | 1 + 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/lib/gettext/runtime/mofile.rb b/lib/gettext/runtime/mofile.rb index 7b85efa8..7854c500 100644 --- a/lib/gettext/runtime/mofile.rb +++ b/lib/gettext/runtime/mofile.rb @@ -203,6 +203,12 @@ def hash_string(str) #Save data as little endian format. def save_to_stream(io) + # remove untranslated message + mo = self.delete_if do |msgid, msgstr| + msgstr.nil? + end + + size = mo.size header_size = 4 * 7 table_size = 4 * 2 * size @@ -219,11 +225,7 @@ def save_to_stream(io) ) io.write(header.to_a.pack('a4V*')) - ary = to_a - ary = ary.collect do |msgid, msgstr| - msgstr ||= "" - [msgid, msgstr] - end + ary = mo.to_a ary.sort!{|a, b| a[0] <=> b[0]} # sort by original string pos = header.hash_table_size * 4 + header.hash_table_offset diff --git a/test/test_mofile.rb b/test/test_mofile.rb index d5c6823f..a301537d 100644 --- a/test/test_mofile.rb +++ b/test/test_mofile.rb @@ -10,6 +10,7 @@ def test_not_exist_msgid def test_untranslated mo = load_mo("untranslated.mo") + assert_false(mo.has_key?("untranslated")) assert_equal(nil, mo["untranslated"]) end