>>>>> Maris Nartiss <maris....@gmail.com> writes:

[...]

 >> * the code like the following could bring all the sorts of woe upon
 >> the heads of unsuspecting translators (this issue may deserve a
 >> mention on Trac.)

 >> --cut--
 >>         sprintf(buf,
 >>                 _("Unable to read header file for raster map <%...@%s>."),
 >>                 name, mapset);
 >>         tail = buf + strlen(buf);
 >>         sprintf(tail, _(" It is a reclass of raster map <%...@%s> "),
 >>                 real_name, real_mapset);
 >>         tail = buf + strlen(buf);
 >>         if (!G_find_cell(real_name, real_mapset))
 >>             sprintf(tail, _("which is missing."));
 >>         else
 >>             sprintf(tail, _("whose header file can't be opened."));
 >>         G_warning ("%s", buf);
 >>         return -1;
 >> --cut--

 > Hello Ivan, It's good to see Your internationalisation efforts,

        It's more about cleaning the things up than i18n, actually.

 > still I spotted one huge NO-NO in Your patch - one should NEVER split
 > strings marked for translation.  Some languages may require opposite
 > word order in sentence or even different sentence for each case. Also
 > if translating such sentences is possible, it's hard, as it's not
 > possible to see whole sentence just it's start or end.

        Yes, that's why I've pointed the code fragment above, as it may
        easily be unsuitable for translation into some languages.
        Unfortunately, I have too little spare time nowadays to fix the
        issues like this myself, so I've just left the things untouched.

        Should I put the issue into Trac?

        ... Or was your remark about the use of string literals'
        concatenation in my patch?  But, then, both the C compiler /and/
        gettext do support these properly.  Essentially, the C compiler
        isn't expected to treat, e. g., the following fragments
        differently:

   const char *hello = ("Hello, world!");

   const char *hello = ("He" "llo,"
                        " world!");     /* NB: same as "Hello, world!" */

        You may consider, e. g., the following change:

--- lib/gis/put_title.c (revision 36445)
+++ lib/gis/put_title.c (working copy)
@@ -25,10 +25,9 @@
     in = out = 0;
     in = G_fopen_old("cats", name, mapset);
     if (!in) {
-       sprintf(buf,
-               _("category information for [%s] in [%s] missing or invalid"),
-               name, mapset);
-       G_warning(buf);
+       G_warning (_("category information for [%s] in [%s]"
+                    " missing or invalid"),
+                  name, mapset);
        return -1;
     }
 

        Despite the string appears ``split'', gettext still produces the
        correct result:

--cut: locale/templates/grasslibs.pot --
#: ../lib/gis/put_title.c:28
#, c-format
msgid "category information for [%s] in [%s] missing or invalid"
msgstr ""
--cut: locale/templates/grasslibs.pot --

[...]

-- 
FSF associate member #7257
_______________________________________________
grass-dev mailing list
grass-dev@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/grass-dev

Reply via email to