[DRE-maint] Bug#684182: ruby-gettext: rgettext wrongly skips translatable strings containing the hash symbol (#)
Francesco Poli (wintermute)
invernomuto at paranoici.org
Tue Aug 7 15:14:00 UTC 2012
Package: ruby-gettext
Version: 2.2.1-2
Severity: normal
Hello, thanks for maintaining ruby-gettext in Debian!
I noticed a bug in rgettext.
I prepared a small test case to reproduce it.
Let's consider the following short Ruby program:
$ cat myapplication.rb
#!/usr/bin/ruby1.8
# Copyright (C) 2012 Francesco Poli
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License with
# the Debian GNU/Linux distribution in file /usr/share/common-licenses/GPL;
# if not, write to the Free Software Foundation, Inc., 59 Temple Place,
# Suite 330, Boston, MA 02111-1307 USA
require 'gettext'
include GetText
GetText::bindtextdomain("myapplication")
count = 0
print _("Hello everybody!\n")
count += 1
print _("You are running an internationalized Ruby program.\n")
count += 1
# TRANSLATORS: %d is the number of already printed messages
print _("You have already seen %d translatable messages.\n") % count
print _("Is this message # 3 or # 4 ?\n")
print _("OK, I am tired...\n")
print _("Goodbye!\n")
Suppose we want to generate the corresponding .pot file.
We can use xgettext (from the gettext package):
$ xgettext --add-comments=TRANSLATORS --no-wrap \
--copyright-holder="Francesco Poli" \
--package-name=myapplication --package-version=0.1 \
--msgid-bugs-address="address at example.com" \
--language=python \
myapplication.rb -o myapplication_XGETTEXT.pot
$ cat myapplication_XGETTEXT.pot
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR Francesco Poli
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: myapplication 0.1\n"
"Report-Msgid-Bugs-To: address at example.com\n"
"POT-Creation-Date: 2012-08-07 16:38+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
"Language-Team: LANGUAGE <LL at li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
#: myapplication.rb:24
msgid "Hello everybody!\n"
msgstr ""
#: myapplication.rb:27
msgid "You are running an internationalized Ruby program.\n"
msgstr ""
#. TRANSLATORS: %d is the number of already printed messages
#: myapplication.rb:31
#, python-format
msgid "You have already seen %d translatable messages.\n"
msgstr ""
#: myapplication.rb:33
msgid "Is this message # 3 or # 4 ?\n"
msgstr ""
#: myapplication.rb:35
msgid "OK, I am tired...\n"
msgstr ""
#: myapplication.rb:37
msgid "Goodbye!\n"
msgstr ""
Everything seems to be OK.
But the language is actually Ruby, not Python.
Hence, rgettext should be the tool of choice.
Let's try with rgettext, then:
$ rgettext myapplication.rb -o myapplication_RGETTEXT.pot
$ cat myapplication_RGETTEXT.pot
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2012-08-07 16:39+0200\n"
"PO-Revision-Date: 2012-08-07 16:39+0200\n"
"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
"Language-Team: LANGUAGE <LL at li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
#: myapplication.rb:24
msgid "Hello everybody!\n"
msgstr ""
#: myapplication.rb:27
msgid "You are running an internationalized Ruby program.\n"
msgstr ""
#. %d is the number of already printed messages
#: myapplication.rb:31
msgid "You have already seen %d translatable messages.\n"
msgstr ""
#. %d is the number of already printed messages
#: myapplication.rb:35
msgid "OK, I am tired...\n"
msgstr ""
#. %d is the number of already printed messages
#: myapplication.rb:37
msgid "Goodbye!\n"
msgstr ""
Wait!
Where is the string from line 33 ?!?
It seems that it was wrongly skipped, since it contains hash
symbols (#)...
I think that this should not happen.
Please fix this bug and/or forward this bug report upstream.
Thanks for your time!
-- System Information:
Debian Release: wheezy/sid
APT prefers testing
APT policy: (800, 'testing'), (500, 'unstable')
Architecture: amd64 (x86_64)
Kernel: Linux 3.2.0-3-amd64 (SMP w/2 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash
Versions of packages ruby-gettext depends on:
ii ruby 4.9
ii ruby-locale 2.0.5-5
ii ruby1.8 [ruby-interpreter] 1.8.7.358-4
ii ruby1.9.1 [ruby-interpreter] 1.9.3.194-1
ruby-gettext recommends no packages.
ruby-gettext suggests no packages.
-- no debconf information
More information about the Pkg-ruby-extras-maintainers
mailing list