Re: [PATCH 3/5] gettext docs: the gettext.h C interface

2 messages, 2 authors, 2016-06-15 · open the first message on its own page

Re: [PATCH 3/5] gettext docs: the gettext.h C interface

From: Junio C Hamano <hidden>
Date: 2016-06-15 22:49:32

Ævar Arnfjörð Bjarmason  [off-list ref] writes:
+   - _()
+
+    Mark and translate a string. E.g.:
+
+        printf(_("HEAD is now at %s"), hex);
+
+   - N_()
+
+    A no-op pass-through macro for marking strings inside static
+    initializations, e.g.:
+        
+        static const char *reset_type_names[] = {
+            N_("mixed"), N_("soft"), N_("hard"), N_("merge"), N_("keep"), NULL
+        };
+        
+    And then, later:
+
+        die(_("%s reset is not allowed in a bare repository"),
+               _(reset_type_names[reset_type]));
I do not think this is a very good example.  Unless we are doing l10n of
option names, a Portuguese won't be typing "git reset --misto", so there
is no point in invoking _(reset_type_names[]) to begin with, and there is
no need to mark mixed/soft/hard/... for translation.

And we won't be doing l10n of option names or subcommand names, I hope ;-).

Re: [PATCH 3/5] gettext docs: the gettext.h C interface

From: Ævar Arnfjörð Bjarmason <hidden>
Date: 2016-06-15 22:49:32

On Fri, Sep 10, 2010 at 22:52, Junio C Hamano [off-list ref] wrote:
Ævar Arnfjörð Bjarmason  [off-list ref] writes:
quoted
+   - _()
+
+    Mark and translate a string. E.g.:
+
+        printf(_("HEAD is now at %s"), hex);
+
+   - N_()
+
+    A no-op pass-through macro for marking strings inside static
+    initializations, e.g.:
+
+        static const char *reset_type_names[] = {
+            N_("mixed"), N_("soft"), N_("hard"), N_("merge"), N_("keep"), NULL
+        };
+
+    And then, later:
+
+        die(_("%s reset is not allowed in a bare repository"),
+               _(reset_type_names[reset_type]));
I do not think this is a very good example.  Unless we are doing l10n of
option names, a Portuguese won't be typing "git reset --misto", so there
is no point in invoking _(reset_type_names[]) to begin with, and there is
no need to mark mixed/soft/hard/... for translation.
Actually all the code that uses reset_type_names isn't referring to
the option directly, but to the action currently being undertaken:

    die(_("Cannot do a %s reset in the middle of a merge."),
        _(reset_type_names[reset_type]));

    die(_("Cannot do %s reset with paths."),
        _(reset_type_names[reset_type]));

    die(_("%s reset is not allowed in a bare repository"),
        _(reset_type_names[reset_type]));

In that context translators probably want to translate them, e.g. I'd
translate the first one into Icelandic as:

    "Get ekki framkvæmt %s endurstillingu í miðri sameiningu" with %s
== "blandaða" ("mixed")
And we won't be doing l10n of option names or subcommand names, I hope ;-).
We could do that, I don't have plans for it though, and in any case I
don't think this is such a case.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help