#include <stdarg.h>
#include <ctype.h>
+#ifdef HAVE_GETTEXT
+#include <libintl.h>
+#else HAVE_GETTEXT
+#define gettext(x) (x)
+#define dgettext(domain, x) (x)
+#endif
+
+#define _(x) dgettext("ecore", x)
+
#ifdef _WIN32_WCE
# include <Evil.h>
#endif
static void
_ecore_getopt_version(FILE *fp, const Ecore_Getopt *parser)
{
- fputs("Version: ", fp);
+ fputs(_("Version:"), fp);
+ fputc(' ', fp);
_ecore_getopt_help_print_replace_program(fp, parser, parser->version);
}
static void
_ecore_getopt_help_usage(FILE *fp, const Ecore_Getopt *parser)
{
- fputs("Usage: ", fp);
+ fputs(_("Usage:"), fp);
+ fputc(' ', fp);
if (!parser->usage)
{
- fprintf(fp, "%s [options]\n", prog);
+ fprintf(fp, _("%s [options]\n"), prog);
return;
}
- _ecore_getopt_help_print_replace_program(fp, parser, parser->usage);
+ _ecore_getopt_help_print_replace_program(fp, parser, gettext(parser->usage));
}
static int
const char *p, *prg, *ver;
int used, prglen, verlen;
- p = parser->description;
+ p = gettext(parser->description);
if (!p)
return;
static void
_ecore_getopt_copyright(FILE *fp, const Ecore_Getopt *parser)
{
- fputs("Copyright:\n ", fp);
+ const char *txt = gettext(parser->copyright);
+ fputs(_("Copyright:"), fp);
+ fputs(_("\n ", fp);
_ecore_getopt_help_line
- (fp, 3, cols, 3, parser->copyright, strlen(parser->copyright));
+ (fp, 3, cols, 3, txt, strlen(txt));
fputc('\n', fp);
}
static void
_ecore_getopt_license(FILE *fp, const Ecore_Getopt *parser)
{
- fputs("License:\n ", fp);
+ const char *txt = gettext(parser->license);
+ fputs(_("License:"), fp);
+ fputs("\n ", fp);
_ecore_getopt_help_line
- (fp, 3, cols, 3, parser->license, strlen(parser->license));
+ (fp, 3, cols, 3, txt, strlen(txt));
fputc('\n', fp);
}
{
if (desc->metavar)
{
- *metavarlen = strlen(desc->metavar);
+ const char *txt = gettext(desc->metavar);
+ *metavarlen = strlen(txt);
if (*metavarlen > maxsize - 1)
*metavarlen = maxsize - 1;
- memcpy(metavar, desc->metavar, *metavarlen);
+ memcpy(metavar, txt, *metavarlen);
metavar[*metavarlen] = '\0';
}
else if (desc->longname)
{
const Ecore_Getopt_Desc *desc;
- fputs("Options:\n", fp);
+ fputs(_("Options:\n"), fp);
for (desc = parser->descs; !_ecore_getopt_desc_is_sentinel(desc); desc++)
_ecore_getopt_help_desc(fp, desc);
if (!desc)
{
if (arg[1] == '-')
- fprintf(stderr, "ERROR: unknown option --%s.\n", arg + 2);
+ fprintf(stderr, _("ERROR: unknown option --%s.\n"), arg + 2);
else
- fprintf(stderr, "ERROR: unknown option -%c.\n", arg[1]);
+ fprintf(stderr, _("ERROR: unknown option -%c.\n"), arg[1]);
if (parser->strict)
{
memmove(argv + dst, nonargs, used * sizeof(char *));
{
va_list ap;
- fputs("ERROR: ", stderr);
+ fputs(_("ERROR: "), stderr);
if (desc->shortname)
{
(strcasecmp(str, "f") == 0) ||
(strcasecmp(str, "false") == 0) ||
(strcasecmp(str, "no") == 0) ||
- (strcasecmp(str, "off") == 0))
+ (strcasecmp(str, "off") == 0) ||
+
+ (strcasecmp(str, _("f")) == 0) ||
+ (strcasecmp(str, _("false")) == 0) ||
+ (strcasecmp(str, _("no")) == 0) ||
+ (strcasecmp(str, _("off")) == 0))
{
*v = 0;
return 1;
(strcasecmp(str, "t") == 0) ||
(strcasecmp(str, "true") == 0) ||
(strcasecmp(str, "yes") == 0) ||
- (strcasecmp(str, "on") == 0))
+ (strcasecmp(str, "on") == 0) ||
+
+ (strcasecmp(str, _("t")) == 0) ||
+ (strcasecmp(str, _("true")) == 0) ||
+ (strcasecmp(str, _("yes")) == 0) ||
+ (strcasecmp(str, _("on")) == 0))
{
*v = 1;
return 1;
if (!value->ptrp)
{
- _ecore_getopt_desc_print_error(desc, "value has no pointer set.\n");
+ _ecore_getopt_desc_print_error(desc, _("value has no pointer set.\n"));
return 0;
}
else
{
_ecore_getopt_desc_print_error
- (desc, "unknown boolean value %s.\n", arg_val);
+ (desc, _("unknown boolean value %s.\n"), arg_val);
return 0;
}
case ECORE_GETOPT_TYPE_SHORT:
return 1;
error:
- _ecore_getopt_desc_print_error(desc, "invalid number format %s\n", arg_val);
+ _ecore_getopt_desc_print_error
+ (desc, _("invalid number format %s\n"), arg_val);
return 0;
use_optional:
{
if (!val->ptrp)
{
- _ecore_getopt_desc_print_error(desc, "value has no pointer set.\n");
+ _ecore_getopt_desc_print_error(desc, _("value has no pointer set.\n"));
return 0;
}
{
if (!val->boolp)
{
- _ecore_getopt_desc_print_error(desc, "value has no pointer set.\n");
+ _ecore_getopt_desc_print_error(desc, _("value has no pointer set.\n"));
return 0;
}
*val->boolp = 1;
{
if (!val->boolp)
{
- _ecore_getopt_desc_print_error(desc, "value has no pointer set.\n");
+ _ecore_getopt_desc_print_error(desc, _("value has no pointer set.\n"));
return 0;
}
*val->boolp = 0;
if (!val->strp)
{
- _ecore_getopt_desc_print_error(desc, "value has no pointer set.\n");
+ _ecore_getopt_desc_print_error(desc, _("value has no pointer set.\n"));
return 0;
}
}
_ecore_getopt_desc_print_error
- (desc, "invalid choice \"%s\". Valid values are: ", arg_val);
+ (desc, _("invalid choice \"%s\". Valid values are: "), arg_val);
pchoice = desc->action_param.choices;
for (; *pchoice != NULL; pchoice++)
if (!arg_val)
{
- _ecore_getopt_desc_print_error(desc, "missing parameter to append.\n");
+ _ecore_getopt_desc_print_error
+ (desc, _("missing parameter to append.\n"));
return 0;
}
if (!val->listp)
{
- _ecore_getopt_desc_print_error(desc, "value has no pointer set.\n");
+ _ecore_getopt_desc_print_error(desc, _("value has no pointer set.\n"));
return 0;
}
else
{
_ecore_getopt_desc_print_error
- (desc, "unknown boolean value %s.\n", arg_val);
+ (desc, _("unknown boolean value %s.\n"), arg_val);
return 0;
}
}
break;
default:
{
- _ecore_getopt_desc_print_error(desc, "could not parse value.\n");
- return 0;
+ _ecore_getopt_desc_print_error(desc, _("could not parse value.\n"));
+ return 0;
}
}
return 1;
error:
- _ecore_getopt_desc_print_error(desc, "invalid number format %s\n", arg_val);
+ _ecore_getopt_desc_print_error
+ (desc, _("invalid number format %s\n"), arg_val);
return 0;
}
{
if (!val->intp)
{
- _ecore_getopt_desc_print_error(desc, "value has no pointer set.\n");
+ _ecore_getopt_desc_print_error(desc, _("value has no pointer set.\n"));
return 0;
}
{
if ((!arg_val) || (arg_val[0] == '\0'))
{
- _ecore_getopt_desc_print_error(desc, "missing parameter.\n");
+ _ecore_getopt_desc_print_error(desc, _("missing parameter.\n"));
return 0;
}
if (!val->ptrp)
{
_ecore_getopt_desc_print_error
- (desc, "value has no pointer set.\n");
+ (desc, _("value has no pointer set.\n"));
return 0;
}
}
if (!cb->func)
{
- _ecore_getopt_desc_print_error(desc, "missing callback function!\n");
+ _ecore_getopt_desc_print_error(desc, _("missing callback function!\n"));
return 0;
}
(*val->boolp) = 1;
if (!parser->version)
{
- _ecore_getopt_desc_print_error(desc, "no version was defined.\n");
+ _ecore_getopt_desc_print_error(desc, _("no version was defined.\n"));
return 0;
}
_ecore_getopt_version(stdout, parser);
(*val->boolp) = 1;
if (!parser->copyright)
{
- _ecore_getopt_desc_print_error(desc, "no copyright was defined.\n");
+ _ecore_getopt_desc_print_error(desc, _("no copyright was defined.\n"));
return 0;
}
_ecore_getopt_copyright(stdout, parser);
(*val->boolp) = 1;
if (!parser->license)
{
- _ecore_getopt_desc_print_error(desc, "no license was defined.\n");
+ _ecore_getopt_desc_print_error(desc, _("no license was defined.\n"));
return 0;
}
_ecore_getopt_license(stdout, parser);
desc = _ecore_getopt_parse_find_long(parser, arg);
if (!desc)
{
- fprintf(stderr, "ERROR: unknown option --%s, ignored.\n", arg);
+ fprintf(stderr, _("ERROR: unknown option --%s, ignored.\n"), arg);
if (parser->strict)
return 0;
if ((!arg_val) && (arg_req == ECORE_GETOPT_DESC_ARG_REQUIREMENT_YES))
{
- fprintf(stderr, "ERROR: option --%s requires an argument!\n", arg);
+ fprintf
+ (stderr, _("ERROR: option --%s requires an argument!\n"), arg);
if (parser->strict)
return 0;
return 1;
desc = _ecore_getopt_parse_find_short(parser, arg[0]);
if (!desc)
{
- fprintf(stderr, "ERROR: unknown option -%c, ignored.\n", arg[0]);
+ fprintf
+ (stderr, _("ERROR: unknown option -%c, ignored.\n"), arg[0]);
if (parser->strict)
return 0;
if ((!arg_val) &&
(arg_req == ECORE_GETOPT_DESC_ARG_REQUIREMENT_YES))
{
- fprintf(stderr, "ERROR: option -%c requires an argument!\n",
- opt);
+ fprintf
+ (stderr, _("ERROR: option -%c requires an argument!\n"),
+ opt);
if (parser->strict)
return 0;
return 1;
*
* This function may reorder @a argv elements.
*
+ * Translation of help strings (description), metavar, usage, license
+ * and copyright may be translated, standard/global gettext() call
+ * will be applied on them if ecore was compiled with such support.
+ *
* @param parser description of how to work.
* @param value where to store values, it is assumed that this is a vector
* of the same size as @c parser->descs. Values should be previously
if (!parser)
{
- fputs("ERROR: no parser provided.\n", stderr);
+ fputs(_("ERROR: no parser provided.\n"), stderr);
return -1;
}
if (!values)
{
- fputs("ERROR: no values provided.\n", stderr);
+ fputs(_("ERROR: no values provided.\n"), stderr);
return -1;
}
if (argc < 1)
{
- fputs("ERROR: no arguments provided.\n", stderr);
+ fputs(_("ERROR: no arguments provided.\n"), stderr);
return -1;
}
error:
{
const Ecore_Getopt_Desc *help;
- fputs("ERROR: invalid options found.", stderr);
+ fputs(_("ERROR: invalid options found."), stderr);
help = _ecore_getopt_find_help(parser);
if (!help)
fputc('\n', stderr);
else if (help->longname)
- fprintf(stderr, " See --%s.\n", help->longname);
+ fprintf(stderr, _(" See --%s.\n"), help->longname);
else
- fprintf(stderr, " See -%c.\n", help->shortname);
+ fprintf(stderr, _(" See -%c.\n"), help->shortname);
}
return -1;
if (sscanf(str, "%d:%d:%d:%d", &v->x, &v->y, &v->w, &v->h) != 4)
{
- fprintf(stderr, "ERROR: incorrect geometry value '%s'\n", str);
+ fprintf(stderr, _("ERROR: incorrect geometry value '%s'\n"), str);
return 0;
}
if (sscanf(str, "%dx%d", &v->w, &v->h) != 2)
{
- fprintf(stderr, "ERROR: incorrect size value '%s'\n", str);
+ fprintf(stderr, _("ERROR: incorrect size value '%s'\n"), str);
return 0;
}
v->x = 0;