From 05300dc436c04a25b3ed9e1d283b1b0408df6fc0 Mon Sep 17 00:00:00 2001 From: Angel Faus Date: Tue, 21 Sep 2010 13:58:00 +0200 Subject: [PATCH] performance improvement when the translation is missing and there are many messages: moving a regex construction of a potentialy large loop --- lib/gettext/runtime/textdomain.rb | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/gettext/runtime/textdomain.rb b/lib/gettext/runtime/textdomain.rb index 8d519fba..bc9f413a 100644 --- a/lib/gettext/runtime/textdomain.rb +++ b/lib/gettext/runtime/textdomain.rb @@ -91,8 +91,9 @@ def translate_singluar_message(lang, msgid) # Check "aaa\000bbb" and show warning but return the singluar part. ret = nil msgid_single = msgid.split("\000")[0] + regex = /^#{Regexp.quote(msgid_single)}\000/ mofile.each{|key, val| - if key =~ /^#{Regexp.quote(msgid_single)}\000/ + if key =~ regex # Usually, this is not caused to make po-files from rgettext. warn %Q[Warning: n_("#{msgid_single}", "#{msgid.split("\000")[1]}") and n_("#{key.gsub(/\000/, '", "')}") are duplicated.] ret = val @@ -102,8 +103,9 @@ def translate_singluar_message(lang, msgid) ret else ret = nil + regex = /^#{Regexp.quote(msgid)}\000/ mofile.each{|key, val| - if key =~ /^#{Regexp.quote(msgid)}\000/ + if key =~ regex ret = val.split("\000")[0] break end