You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
106 lines
2.3 KiB
106 lines
2.3 KiB
#include "config.h"
|
|
|
|
#include "i18n.h"
|
|
#include <locale.h>
|
|
|
|
#include <stdio.h>
|
|
#include <string.h>
|
|
|
|
struct _testcase {
|
|
char *locale;
|
|
char *untranslated;
|
|
char *expected;
|
|
};
|
|
|
|
typedef struct _testcase testcase;
|
|
|
|
/* Translators: Just ignore the stuff in the test subdirectory. */
|
|
static testcase testcases[] = {
|
|
{ "de_DE.UTF-8",
|
|
N_("[DO_NOT_TRANSLATE_THIS_MARKER]"),
|
|
"[DO_NOT_TRANSLATE_THIS_MARKER_de]" },
|
|
{ "C",
|
|
N_("[DO_NOT_TRANSLATE_THIS_MARKER]"),
|
|
N_("[DO_NOT_TRANSLATE_THIS_MARKER]") },
|
|
};
|
|
|
|
int main(int argc, char *argv[])
|
|
{
|
|
char *localedir;
|
|
int i;
|
|
|
|
if (argc != 2) {
|
|
puts("Syntax: test-nls <localedir>\n");
|
|
return 1;
|
|
}
|
|
|
|
localedir = argv[1];
|
|
|
|
do {
|
|
const char *newloc = setlocale(LC_ALL, NULL);
|
|
printf("Default locale: %s\n", newloc);
|
|
} while (0);
|
|
|
|
|
|
for (i=0; i < sizeof(testcases)/sizeof(testcases[0]); i++) {
|
|
char *locale = testcases[i].locale;
|
|
char *untranslated = testcases[i].untranslated;
|
|
char *expected = testcases[i].expected;
|
|
char *translation;
|
|
|
|
if (1) {
|
|
printf("setlocale(\"%s\")\n", locale);
|
|
const char *actual_locale = setlocale(LC_MESSAGES, locale);
|
|
if (actual_locale == NULL) {
|
|
fprintf(stderr, "Error: Cannot set locale to %s.\n", locale);
|
|
return 4;
|
|
}
|
|
printf("new locale: %s\n", actual_locale);
|
|
}
|
|
|
|
if (1) {
|
|
const char *basedir = bindtextdomain(GETTEXT_PACKAGE, localedir);
|
|
printf("message basedir: %s\n", basedir);
|
|
}
|
|
|
|
if (1) {
|
|
const char *domain = textdomain(GETTEXT_PACKAGE);
|
|
printf("message domain: %s\n", domain);
|
|
}
|
|
|
|
if (1) {
|
|
const char *codeset = bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8");
|
|
printf("message codeset: %s\n", codeset);
|
|
}
|
|
|
|
puts("before translation");
|
|
translation = gettext(untranslated);
|
|
puts("after translation");
|
|
|
|
if (strcmp(expected, translation) != 0) {
|
|
fprintf(stderr,
|
|
"locale: %s\n"
|
|
"localedir: %s\n"
|
|
"untranslated: %s\n"
|
|
"expected: %s\n"
|
|
"translation: %s\n"
|
|
"Error: translation != expected\n",
|
|
locale,
|
|
localedir,
|
|
untranslated,
|
|
expected,
|
|
translation);
|
|
|
|
return 1;
|
|
} else {
|
|
fprintf(stderr,
|
|
"expected: %s\n"
|
|
"translation: %s\n"
|
|
"Match!\n",
|
|
expected,
|
|
translation);
|
|
}
|
|
}
|
|
return 0;
|
|
}
|