mirror of
https://github.com/git/git.git
synced 2025-12-12 20:36:24 +01:00
The _ function is for translating strings into the user's chosen
language. The N_ macro just marks translatable strings for the
xgettext(1) tool without translating them; it is intended for use in
contexts where a function call cannot be used. So, for example:
fprintf(stderr, _("Expansion of alias '%s' failed; "
"'%s' is not a git command\n"),
cmd, argv[0]);
and
const char *unpack_plumbing_errors[NB_UNPACK_TREES_ERROR_TYPES] = {
/* ERROR_WOULD_OVERWRITE */
N_("Entry '%s' would be overwritten by merge. Cannot merge."),
[...]
Define such _ and N_ in a new gettext.h and include it in cache.h, so
they can be used everywhere. Each just returns its argument for now.
_ is a function rather than a macro like N_ to avoid the temptation to
use _("foo") as a string literal (which would be a compile-time error
once _(s) expands to an expression for the translation of s).
Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
27 lines
581 B
C
27 lines
581 B
C
/*
|
|
* Copyright (c) 2010-2011 Ævar Arnfjörð Bjarmason
|
|
*
|
|
* This is a skeleton no-op implementation of gettext for Git.
|
|
* You can replace it with something that uses libintl.h and wraps
|
|
* gettext() to try out the translations.
|
|
*/
|
|
|
|
#ifndef GETTEXT_H
|
|
#define GETTEXT_H
|
|
|
|
#ifdef _
|
|
#error "namespace conflict: '_' is pre-defined?"
|
|
#endif
|
|
|
|
#define FORMAT_PRESERVING(n) __attribute__((format_arg(n)))
|
|
|
|
static inline FORMAT_PRESERVING(1) const char *_(const char *msgid)
|
|
{
|
|
return msgid;
|
|
}
|
|
|
|
/* Mark msgid for translation but do not translate it. */
|
|
#define N_(msgid) (msgid)
|
|
|
|
#endif
|