| #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; |
| } |