ruby-gettext / gettext

Gettext gem is a pure Ruby Localization(L10n) library and tool which is modeled after the GNU gettext package.
https://ruby-gettext.github.io/
69 stars 28 forks source link

rxgettext writes location paths relative to output file directory #26

Closed 375gnu closed 11 years ago

375gnu commented 11 years ago

This bug is originally reported as Debian bug 726946.

I noticed something really weird in rxgettext. It seems that its output .pot file includes location paths relative to the destination directory, rather than to the current working directory!

I am not sure this causes problems with ruby-gettext library, but it sure looks unusual and awkward.

I'll show the issue with my usual test case, described in bug #684182 .

Let's start with the example application in a directory:

  $ tree
  .
  └── myapplication.rb

  0 directories, 1 file

Then, let's create a subdirectory:

  $ mkdir po

and create the .pot file with xgettext:

  $ xgettext --add-comments=TRANSLATORS --no-wrap \
             --copyright-holder="Francesco Poli" \
             --package-name=myapplication --package-version=0.1 \
             --msgid-bugs-address="address@example.com" \
             --language=python \
             myapplication.rb -o po/myapplication_XGETTEXT.pot
  $ cat po/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@ADDRESS>, YEAR.
  #
  #, fuzzy
  msgid ""
  msgstr ""
  "Project-Id-Version: myapplication 0.1\n"
  "Report-Msgid-Bugs-To: address@example.com\n"
  "POT-Creation-Date: 2013-10-20 22:35+0200\n"
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
  "Language-Team: LANGUAGE <LL@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 ""

This is OK. Let's try with rxgettext:

  $ rxgettext --add-comments=TRANSLATORS --no-wrap \
              --copyright-holder="Francesco Poli" \
              --package-name=myapplication --package-version=0.1 \
              --msgid-bugs-address="address@example.com" \
              myapplication.rb -o po/myapplication_RXGETTEXT.pot
  $ cat po/myapplication_RXGETTEXT.pot
  # SOME DESCRIPTIVE TITLE.
  # Copyright (C) YEAR Francesco Poli
  # This file is distributed under the same license as the myapplication package.
  # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
  #
  #, fuzzy
  msgid ""
  msgstr ""
  "Project-Id-Version: myapplication 0.1\n"
  "Report-Msgid-Bugs-To: address@example.com\n"
  "POT-Creation-Date: 2013-10-20 22:39+0200\n"
  "PO-Revision-Date: 2013-10-20 22:39+0200\n"
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
  "Language-Team: LANGUAGE <LL@li.org>\n"
  "Language: \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 ""

  #. TRANSLATORS: %d is the number of already printed messages
  #: ../myapplication.rb:31
  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 ""

Please note that the location paths are "../myapplication.rb", rather than "myapplication.rb". I think that rxgettext should behave like xgettext in this respect.

Please fix this bug and/or forward this bug report upstream. Thanks for your time!

kou commented 11 years ago

I'm sorry but I reject the request.

The rxgettext behavior is more useful rather than xgettext. po-mode.el that is provided by GNU gettext searches source file relative from where the PO file stands by s.

http://www.gnu.org/software/gettext/manual/gettext.html#C-Sources-Context

Program source files are usually found relative to where the PO file stands.

If there is any reasonable reason to adjust to the xgettext behavior, I may implement an option to use a directory for base directory.