1 #include "config.h"
2
3 #include "i18n.h"
4 #include <locale.h>
5
6 #include <stdio.h>
7 #include <string.h>
8
9 struct _testcase {
10 char *locale;
11 char *untranslated;
12 char *expected;
13 };
14
15 typedef struct _testcase testcase;
16
17 /* Translators: Just ignore the stuff in the test subdirectory. */
18 static testcase testcases[] = {
19 { "de_DE.UTF-8",
20 N_("[DO_NOT_TRANSLATE_THIS_MARKER]"),
21 "[DO_NOT_TRANSLATE_THIS_MARKER_de]" },
22 { "C",
23 N_("[DO_NOT_TRANSLATE_THIS_MARKER]"),
24 N_("[DO_NOT_TRANSLATE_THIS_MARKER]") },
25 };
26
main(int argc,char * argv[])27 int main(int argc, char *argv[])
28 {
29 char *localedir;
30 int i;
31
32 if (argc != 2) {
33 puts("Syntax: test-nls <localedir>\n");
34 return 1;
35 }
36
37 localedir = argv[1];
38
39 do {
40 const char *newloc = setlocale(LC_ALL, NULL);
41 printf("Default locale: %s\n", newloc);
42 } while (0);
43
44
45 for (i=0; i < sizeof(testcases)/sizeof(testcases[0]); i++) {
46 char *locale = testcases[i].locale;
47 char *untranslated = testcases[i].untranslated;
48 char *expected = testcases[i].expected;
49 char *translation;
50
51 if (1) {
52 printf("setlocale(\"%s\")\n", locale);
53 const char *actual_locale = setlocale(LC_MESSAGES, locale);
54 if (actual_locale == NULL) {
55 fprintf(stderr, "Error: Cannot set locale to %s.\n", locale);
56 return 4;
57 }
58 printf("new locale: %s\n", actual_locale);
59 }
60
61 if (1) {
62 const char *basedir = bindtextdomain(GETTEXT_PACKAGE, localedir);
63 printf("message basedir: %s\n", basedir);
64 }
65
66 if (1) {
67 const char *domain = textdomain(GETTEXT_PACKAGE);
68 printf("message domain: %s\n", domain);
69 }
70
71 if (1) {
72 const char *codeset = bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8");
73 printf("message codeset: %s\n", codeset);
74 }
75
76 puts("before translation");
77 translation = gettext(untranslated);
78 puts("after translation");
79
80 if (strcmp(expected, translation) != 0) {
81 fprintf(stderr,
82 "locale: %s\n"
83 "localedir: %s\n"
84 "untranslated: %s\n"
85 "expected: %s\n"
86 "translation: %s\n"
87 "Error: translation != expected\n",
88 locale,
89 localedir,
90 untranslated,
91 expected,
92 translation);
93
94 return 1;
95 } else {
96 fprintf(stderr,
97 "expected: %s\n"
98 "translation: %s\n"
99 "Match!\n",
100 expected,
101 translation);
102 }
103 }
104 return 0;
105 }
106