Commit | Line | Data |
---|---|---|
dc9c5d88 FAW |
1 | From: Julien Viard de Galbert <julien@vdg.blogsite.org> |
2 | Subject: Convert to use gettext [first part] | |
3 | ||
4 | If you apply this patch you MUST apply the next patch as this patch is not self | |
5 | contained. The reason is that the second patch can be regenerated by running a | |
6 | script. | |
7 | ||
8 | This patch is based on 17_gettext.dpatch by Jose Carlos Medeiros <debian@psabs.com.br> | |
9 | He described his patch as follows: | |
10 | ############################################# | |
11 | # To create this patch I did follow: | |
12 | # 1. Created and ran script lang_po.sh , see it above below. | |
13 | # This script create a new .c file and a .diff file t each source .c file | |
14 | # 2. Changed these arrays strings from ex. l_month[] to _(l_month[]) | |
15 | # l_month[], s_month[], h_msg[], language, response[], top_ctrys[] | |
16 | # 3. Changed "language" string to _("locale") | |
17 | # 4. After ran lang_po.sh script, it change another strings that cant be | |
18 | # translated. Then I need to change wrong substituitions like: | |
19 | # - case 't': msg_title=optarg; break; /* Report title */ | |
20 | # + case 't': _("Usage Statistics for")=optarg; break; /* Report title */ | |
21 | # To do it, just look at .diff files and after remove these one. | |
22 | # 5. Looked for strings that arent msg_*, like new string put with fprintf, ex. | |
23 | # fprintf(stderr,"%s %s!\n","Error: File is a symlink",log_fname); | |
24 | # in webalizer.c file | |
25 | # grep \" *.c |grep -v "_(\"" |less | |
26 | # 6. Found and change string that arent msg_* . Patch of Geolizer is an example. | |
27 | # It put messages like "Error, something..." and we need to change to _("Error, som...") | |
28 | # 7. Created webalizer.pot file with the follow command: | |
29 | # xgettext --default-domain=webalizer --directory=. -o po/webalizer.pot \ | |
30 | # --language=C --add-comments="TRANS:" --escape --sort-by-file \ | |
31 | # --keyword=_ --keyword=N_ --keyword=Q_ --keyword=PL_:1,2 *.c *.h | |
32 | # 8. Merged old .po files. | |
33 | # for i in po/*.po;do echo -n $i;msgmerge -U $i po/webalizer.pot;done; | |
34 | # rm -f po/*.po~; | |
35 | ||
36 | # lang_po.sh | |
37 | # --- cut here and strip all first "#" --- | |
38 | ##!/bin/bash | |
39 | ## create lang.txt file with vars and strings from webalizer_lang.english file | |
40 | #cat lang/webalizer_lang.english | grep ^char | sed \ | |
41 | # -e 's/^char//' -e 's/ \*//' -e 's/= /=/' -e 's/ *=/=/' \ | |
42 | # -e 's/="/=/' -e 's/;$//' -e 's/"$//' -e 's/!/\\!/' | \ | |
43 | # grep -v "^l_month" | grep -v "^s_month" | grep -v "^h_msg" | \ | |
44 | # grep -v "^language=" | sort -r > lang.txt | |
45 | ## create a sed line with -e options that subst msg_* strings to _("string") | |
46 | ## take strings from lang.txt file. | |
47 | #SED_E=""; | |
48 | #for i in $(cat lang.txt |cut -f1 -d=); do | |
49 | # SUBST=$(cat lang.txt | grep ^$i=| cut -f2 -d=); | |
50 | # SED_E="$SED_E -e "'"'"s/$i/_("'\"'$SUBST'\"'")/"'"' | |
51 | #done; | |
52 | ## create a script file with commands to subst and create a diff file | |
53 | ## I create this script because had errors when I tried to run commands here. | |
54 | #echo "" > lang_po_exec.sh | |
55 | #for i in *.c; do | |
56 | # echo "cat $i | sed $SED_E > $i.new;" >> lang_po_exec.sh; | |
57 | # echo "diff -uNad $i $i.new > $i.diff;" >> lang_po_exec.sh; | |
58 | # echo "cat $i.new > $i;" >> lang_po_exec.sh; | |
59 | # echo "rm -f $i.new;" >> lang_po_exec.sh; | |
60 | #done; | |
61 | #bash ./lang_po_exec.sh; | |
62 | #rm -f lang_po_exec.sh lang.txt; | |
63 | # --- cut here --- | |
64 | ||
65 | ########################################### | |
66 | # debian package won't compile | |
67 | # http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=252541 | |
68 | # From: Paolo <pp@ieee.org> | |
69 | # Patch to resolve little problem in gettextize | |
70 | ||
71 | ########################################### | |
72 | # some messages & variables are missed while gettextize | |
73 | # http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=201697 | |
74 | # From: Tatsuki Sugiura <sugi@nemui.org> | |
75 | ||
76 | ########################################### | |
77 | # Webalizer doesn't display 'language' anymore | |
78 | # http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=202293 | |
79 | # From: Fabien Chevalier <fabien@juliana-multimedia.com> | |
80 | ||
81 | ||
82 | Based on this, I applied the original patch without any part that will be | |
83 | corrected by the script. | |
84 | Also I partially regenerated the lang2.h file by using the strings from | |
85 | the new version of 'lang/webalizer_lang.english' | |
86 | This patch also generate a fixed version of the above script. | |
87 | ||
88 | It handles the following bugs as well: | |
89 | ||
90 | * Fix report title translation handling | |
91 | gettext patch was making ReportTitle (and -t) useless. | |
92 | Also the fix is done in a way so that the script no longer generate wrong | |
93 | substitutions (see point 4 above). | |
94 | ||
95 | * Fix month translations | |
96 | From: Gerome Fournier <gerome.fournier@infomaniak.ch> | |
97 | http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=520408 | |
98 | ||
99 | Index: webalizer/Makefile.in | |
100 | =================================================================== | |
101 | --- webalizer.orig/Makefile.in 2011-01-07 19:11:55.000000000 +0100 | |
102 | +++ webalizer/Makefile.in 2011-01-07 19:13:13.000000000 +0100 | |
103 | @@ -23,10 +23,11 @@ | |
104 | BINDIR = @bindir@ | |
105 | MANDIR = ${datadir}/man/man1 | |
106 | ETCDIR = @sysconfdir@ | |
107 | +LOCALEDIR = @localedir@ | |
108 | GEODB = @GEODB_LOC@ | |
109 | CC = @CC@ | |
110 | CFLAGS = @CFLAGS@ @CPPFLAGS@ | |
111 | -LIBS = @LIBS@ | |
112 | +LIBS = @LIBS@ -ldb | |
113 | WCMGR_LIBS = @WCMGR_LIBS@ | |
114 | DEFS = -DETCDIR=\"${ETCDIR}\" -DGEODB_LOC=\"${GEODB}\" @DEFS@ @OPTS@ | |
115 | LDFLAGS = @LDFLAGS@ | |
116 | @@ -35,6 +36,9 @@ | |
117 | INSTALL_DATA = @INSTALL_DATA@ | |
118 | DEFLANG = @DEFAULT_LANG@ | |
119 | ||
120 | +LANGS=$(shell for a in po/*.po; do basename $${a%.po}; done) | |
121 | + | |
122 | + | |
123 | # Shouldn't have to touch below here! | |
124 | ||
125 | all: webalizer wcmgr | |
126 | @@ -43,13 +47,13 @@ | |
127 | linklist.o linklist.h preserve.o preserve.h \ | |
128 | dns_resolv.o dns_resolv.h parser.o parser.h \ | |
129 | output.o output.h graphs.o graphs.h lang.h \ | |
130 | - webalizer_lang.h | |
131 | + $(LANGS:%=po/%.mo) | |
132 | $(CC) ${LDFLAGS} -o webalizer webalizer.o hashtab.o linklist.o preserve.o parser.o output.o dns_resolv.o graphs.o ${LIBS} | |
133 | rm -f webazolver | |
134 | @LN_S@ webalizer webazolver | |
135 | ||
136 | webalizer.o: webalizer.c webalizer.h parser.h output.h preserve.h \ | |
137 | - graphs.h dns_resolv.h webalizer_lang.h | |
138 | + graphs.h dns_resolv.h | |
139 | $(CC) ${CFLAGS} ${DEFS} -c webalizer.c | |
140 | ||
141 | parser.o: parser.c parser.h webalizer.h lang.h | |
142 | @@ -81,14 +85,16 @@ | |
143 | wcmgr.o: wcmgr.c | |
144 | $(CC) ${CFLAGS} ${DEFS} -c wcmgr.c | |
145 | ||
146 | +$(LANGS:%=po/%.mo): %.mo: %.po | |
147 | + msgfmt $< -o $@ | |
148 | + | |
149 | clean: | |
150 | rm -f webalizer webazolver wcmgr *.o usage*.png daily*.png hourly*.png | |
151 | rm -f ctry*.png *.html *.hist *.current core *.gif | |
152 | ||
153 | distclean: clean | |
154 | rm -f webalizer.conf *.tar *.tgz *.Z *.tar.gz | |
155 | - rm -f Makefile webalizer_lang.h config.cache config.log config.status | |
156 | - @LN_S@ lang/webalizer_lang.@DEFAULT_LANG@ webalizer_lang.h | |
157 | + rm -f Makefile config.cache config.log config.status $(LANGS:%=po/%.mo) | |
158 | ||
159 | install: all | |
160 | mkdir -p ${DESTDIR}${BINDIR} | |
161 | @@ -103,6 +109,7 @@ | |
162 | rm -f ${DESTDIR}${MANDIR}/webazolver.1 | |
163 | @LN_S@ webalizer.1 ${DESTDIR}${MANDIR}/webazolver.1 | |
164 | $(INSTALL_DATA) sample.conf ${DESTDIR}${ETCDIR}/webalizer.conf.sample | |
165 | + for a in $(LANGS); do $(INSTALL_DATA) po/$$a.mo ${DESTDIR}/$(LOCALEDIR)/$$a/LC_MESSAGES/webalizer.mo; done | |
166 | ||
167 | uninstall: | |
168 | rm -f ${DESTDIR}${BINDIR}/webalizer | |
169 | @@ -112,5 +119,4 @@ | |
170 | rm -f ${DESTDIR}${MANDIR}/webazolver.1 | |
171 | rm -f ${DESTDIR}${MANDIR}/wcmgr.1 | |
172 | rm -f ${DESTDIR}${ETCDIR}/webalizer.conf.sample | |
173 | - rm -f webalizer_lang.h | |
174 | - @LN_S@ lang/webalizer_lang.${DEFLANG} webalizer_lang.h | |
175 | + for a in $(LANGS); do rm -f $(LOCALEDIR)/$$a/LC_MESSAGES/webalizer.mo; done | |
176 | Index: webalizer/configure.in | |
177 | =================================================================== | |
178 | --- webalizer.orig/configure.in 2011-01-07 19:12:51.000000000 +0100 | |
179 | +++ webalizer/configure.in 2011-01-07 19:13:13.000000000 +0100 | |
180 | @@ -281,43 +281,16 @@ | |
181 | if test "$OLDHASH" = "yes"; then OPTS="-DUSE_OLDHASH"; fi | |
182 | ||
183 | dnl ------------------------------------------ | |
184 | -dnl check language to use (default is english) | |
185 | +dnl language with gettext | |
186 | dnl ------------------------------------------ | |
187 | ||
188 | -LANG_CACHE=yes | |
189 | -AC_ARG_WITH(language, | |
190 | - [ --with-language=name Use language 'name' (default is english)], | |
191 | - WEBALIZER_LANG="${withval}"; LANG_CACHE=no, LANG_CACHE=yes) | |
192 | -if test "$WEBALIZER_LANG" = "no"; then WEBALIZER_LANG=english; fi | |
193 | +dnl keep datadir, it is needed for "bindtextdomain" since we use gettext | |
194 | +OPTS="-DDATADIR=\\\"${datadir}\\\" ${OPTS}" | |
195 | ||
196 | -dnl ------------------------------------------ | |
197 | -dnl check if specfied language is valid | |
198 | -dnl ------------------------------------------ | |
199 | - | |
200 | -AC_MSG_CHECKING(for language file) | |
201 | -if test "$LANG_CACHE" = "yes"; then | |
202 | - AC_CACHE_VAL(ac_cv_language, ac_cv_language=$DEFAULT_LANG) | |
203 | - WEBALIZER_LANG=$ac_cv_language | |
204 | -fi | |
205 | - | |
206 | -if test -f lang/webalizer_lang.${WEBALIZER_LANG}; then | |
207 | -AC_MSG_RESULT(yes - ${WEBALIZER_LANG}) | |
208 | -else | |
209 | - if test -f lang/webalizer_lang.${DEFAULT_LANG}; then | |
210 | - AC_MSG_RESULT('${WEBALIZER_LANG}' not found - using ${DEFAULT_LANG}) | |
211 | - WEBALIZER_LANG=${DEFAULT_LANG} | |
212 | - else | |
213 | - AC_MSG_RESULT(no) | |
214 | - AC_MSG_ERROR(language files not found... fix before continuing) | |
215 | - fi | |
216 | -fi | |
217 | -ac_cv_language=${WEBALIZER_LANG} | |
218 | - | |
219 | -dnl ------------------------------------------ | |
220 | -dnl create link to language file | |
221 | -dnl ------------------------------------------ | |
222 | +#AM_GNU_GETTEXT | |
223 | ||
224 | -AC_LINK_FILES(lang/webalizer_lang.${WEBALIZER_LANG}, webalizer_lang.h) | |
225 | +localedir=${datadir}/locale | |
226 | +AC_SUBST(localedir) | |
227 | ||
228 | dnl ------------------------------------------ | |
229 | dnl done.. write out our Makefile | |
230 | Index: webalizer/dns_resolv.c | |
231 | =================================================================== | |
232 | --- webalizer.orig/dns_resolv.c 2011-01-07 19:11:55.000000000 +0100 | |
233 | +++ webalizer/dns_resolv.c 2011-01-07 19:13:13.000000000 +0100 | |
234 | @@ -120,7 +120,7 @@ | |
235 | query.data = log_rec->hostname; | |
236 | query.size = strlen(log_rec->hostname); | |
237 | ||
238 | - if (debug_mode) fprintf(stderr,"Checking %s...", log_rec->hostname); | |
239 | + if (debug_mode) fprintf(stderr,_("Checking %s..."), log_rec->hostname); | |
240 | ||
241 | if ( (i=dns_db->get(dns_db, NULL, &query, &response, 0)) == 0) | |
242 | { | |
243 | @@ -130,15 +130,15 @@ | |
244 | MAXHOST); | |
245 | log_rec->hostname[MAXHOST-1]=0; | |
246 | if (debug_mode) | |
247 | - fprintf(stderr," found: %s (%ld)\n", | |
248 | + fprintf(stderr,_(" found: %s (%ld)\n"), | |
249 | log_rec->hostname, alignedRecord.timeStamp); | |
250 | } | |
251 | - else /* not found or error occured during get */ | |
252 | + else /* not found or error occurred during get */ | |
253 | { | |
254 | if (debug_mode) | |
255 | { | |
256 | - if (i==DB_NOTFOUND) fprintf(stderr," not found\n"); | |
257 | - else fprintf(stderr," error (%d)\n",i); | |
258 | + if (i==DB_NOTFOUND) fprintf(stderr,_(" not found\n")); | |
259 | + else fprintf(stderr,_(" error (%d)\n"),i); | |
260 | } | |
261 | } | |
262 | } | |
263 | @@ -328,7 +328,7 @@ | |
264 | i=( (int)((float)listEntries/temp_time) ); | |
265 | else i=0; | |
266 | ||
267 | - if ( (i>0) && (i<=listEntries) ) printf(", %d/sec\n", i); | |
268 | + if ( (i>0) && (i<=listEntries) ) printf(_(", %d/sec\n"), i); | |
269 | else printf("\n"); | |
270 | } | |
271 | ||
272 | @@ -371,13 +371,13 @@ | |
273 | { | |
274 | if(pipe(child[i].inpipe)) | |
275 | { | |
276 | - if (verbose) fprintf(stderr,"INPIPE creation error"); | |
277 | + if (verbose) fprintf(stderr,_("INPIPE creation error")); | |
278 | return; /* exit(1) */ | |
279 | } | |
280 | ||
281 | if(pipe(child[i].outpipe)) | |
282 | { | |
283 | - if (verbose) fprintf(stderr,"OUTPIPE creation error"); | |
284 | + if (verbose) fprintf(stderr,_("OUTPIPE creation error")); | |
285 | return; /* exit(1); */ | |
286 | } | |
287 | ||
288 | @@ -386,7 +386,7 @@ | |
289 | { | |
290 | case -1: | |
291 | { | |
292 | - if (verbose) fprintf(stderr,"FORK error"); | |
293 | + if (verbose) fprintf(stderr,_("FORK error")); | |
294 | return; /* exit(1); */ | |
295 | } | |
296 | ||
297 | @@ -402,7 +402,7 @@ | |
298 | { | |
299 | if(size < 0) | |
300 | { | |
301 | - perror("read error"); | |
302 | + perror(_("read error")); | |
303 | exit(1); | |
304 | } | |
305 | else | |
306 | @@ -425,18 +425,18 @@ | |
307 | else | |
308 | { | |
309 | if (debug_mode) | |
310 | - printf("Child %d getnameinfo bad hbuf!\n",i); | |
311 | + printf(_("Child %d getnameinfo bad hbuf!\n"),i); | |
312 | } | |
313 | } | |
314 | else | |
315 | { | |
316 | if(debug_mode) | |
317 | - printf("Child %d getnameinfo failed!\n",i); | |
318 | + printf(_("Child %d getnameinfo failed!\n"),i); | |
319 | } | |
320 | ||
321 | if (write(child[i].inpipe[1], child_buf, size) == -1) | |
322 | { | |
323 | - perror("write error"); | |
324 | + perror(_("write error")); | |
325 | exit(1); | |
326 | } | |
327 | } | |
328 | @@ -445,7 +445,7 @@ | |
329 | close(child[i].outpipe[0]); | |
330 | ||
331 | if(debug_mode) | |
332 | - printf( "Child %d got closed input, shutting down\n", i); | |
333 | + printf( _("Child %d got closed input, shutting down\n"), i); | |
334 | ||
335 | fflush(stdout); | |
336 | exit(0); | |
337 | @@ -490,7 +490,7 @@ | |
338 | nof_children--; | |
339 | ||
340 | if(debug_mode) | |
341 | - printf("Reaped Child %d\n", pid); | |
342 | + printf(_("Reaped Child %d\n"), pid); | |
343 | ||
344 | break; | |
345 | } | |
346 | @@ -519,7 +519,7 @@ | |
347 | max_fd = MAX(max_fd, child[i].inpipe[0]); | |
348 | ||
349 | if(debug_mode) | |
350 | - printf("Giving %d bytes to Child %d\n", | |
351 | + printf(_("Giving %d bytes to Child %d\n"), | |
352 | trav->addrlen, i); | |
353 | ||
354 | trav = trav->llist; | |
355 | @@ -528,7 +528,7 @@ | |
356 | { | |
357 | if(errno != EINTR) /* Could be a signal */ | |
358 | { | |
359 | - perror("Could not write to pipe"); | |
360 | + perror(_("Could not write to pipe")); | |
361 | close(child[i].outpipe[1]); /* kill */ | |
362 | child[i].flags &= ~DNS_CHILD_RUNNING; /* child */ | |
363 | } | |
364 | @@ -557,7 +557,7 @@ | |
365 | case -1: | |
366 | { | |
367 | if(errno != EINTR) /* Could be a signal */ | |
368 | - perror("Error in select"); | |
369 | + perror(_("Error in select")); | |
370 | ||
371 | break; | |
372 | } | |
373 | @@ -565,7 +565,7 @@ | |
374 | case 0: /* Timeout, just fall once through the child loop */ | |
375 | { | |
376 | if(debug_mode) | |
377 | - printf("tick\n"); | |
378 | + printf(_("tick\n")); | |
379 | ||
380 | break; | |
381 | } | |
382 | @@ -600,7 +600,7 @@ | |
383 | child[i].flags &= ~DNS_CHILD_RUNNING; | |
384 | ||
385 | if(debug_mode) | |
386 | - printf("Child %d wants to be reaped\n", i); | |
387 | + printf(_("Child %d wants to be reaped\n"), i); | |
388 | ||
389 | break; | |
390 | } | |
391 | @@ -613,14 +613,14 @@ | |
392 | sizeof(child[i].cur->addr))) | |
393 | { | |
394 | if(debug_mode) | |
395 | - printf("Child %d Got a result: %s -> %s\n", | |
396 | + printf(_("Child %d Got a result: %s -> %s\n"), | |
397 | i, child[i].cur->string, dns_buf); | |
398 | db_put(child[i].cur->string, dns_buf, 0); | |
399 | } | |
400 | else | |
401 | { | |
402 | if(debug_mode) | |
403 | - printf("Child %d could not resolve: %s (%s)\n", | |
404 | + printf(_("Child %d could not resolve: %s (%s)\n"), | |
405 | i, child[i].cur->string, | |
406 | (cache_ips)?"cache":"no cache"); | |
407 | if (cache_ips) /* Cache non-resolved? */ | |
408 | @@ -629,7 +629,7 @@ | |
409 | } | |
410 | ||
411 | if(debug_mode) | |
412 | - printf("Child %d back in task pool\n", i); | |
413 | + printf(_("Child %d back in task pool\n"), i); | |
414 | ||
415 | /* Child is back in the task pool */ | |
416 | child[i].flags |= DNS_CHILD_READY; | |
417 | @@ -721,7 +721,7 @@ | |
418 | v.data = recPtr; | |
419 | ||
420 | if ( dns_db->put(dns_db, NULL, &k, &v, 0) != 0 ) | |
421 | - if (verbose>1) fprintf(stderr,"db_put fail!\n"); | |
422 | + if (verbose>1) fprintf(stderr,_("db_put fail!\n")); | |
423 | free(recPtr); | |
424 | } | |
425 | } | |
426 | Index: webalizer/graphs.c | |
427 | =================================================================== | |
428 | --- webalizer.orig/graphs.c 2011-01-07 19:12:51.000000000 +0100 | |
429 | +++ webalizer/graphs.c 2011-01-07 19:13:13.000000000 +0100 | |
430 | @@ -217,12 +217,12 @@ | |
431 | if (graph_mths<16) | |
432 | { | |
433 | gdImageString(im,gdFontSmall,ci+((i-s_mth)*cs)+(((cw+co+co)-18)/2)+1, | |
434 | - 236,(unsigned char *)s_month[data[i].month-1],black); | |
435 | + 236,(unsigned char *)Q_(s_month[data[i].month-1]),black); | |
436 | } | |
437 | else if (graph_mths<36) | |
438 | { | |
439 | gdImageChar(im,gdFontSmall,ci+((i-s_mth)*cs)+(((cw+co+co)-6)/2)+1, | |
440 | - 236,s_month[data[i].month-1][0], | |
441 | + 236,Q_(s_month[data[i].month-1])[0], | |
442 | (data[i].month==1)?blue:black); | |
443 | } | |
444 | else | |
445 | Index: webalizer/lang.h | |
446 | =================================================================== | |
447 | --- webalizer.orig/lang.h 2011-01-07 19:12:27.000000000 +0100 | |
448 | +++ webalizer/lang.h 2011-01-07 19:13:13.000000000 +0100 | |
449 | @@ -1,187 +1,20 @@ | |
450 | #ifndef _LANG_H | |
451 | #define _LANG_H | |
452 | ||
453 | -extern char *language ; | |
454 | -extern char *langcode ; | |
455 | +#include <libintl.h> | |
456 | +#include <locale.h> | |
457 | ||
458 | -extern char *msg_records ; | |
459 | -extern char *msg_addresses; | |
460 | -extern char *msg_ignored ; | |
461 | -extern char *msg_bad ; | |
462 | -extern char *msg_in ; | |
463 | -extern char *msg_seconds ; | |
464 | - | |
465 | -extern char *msg_log_err ; | |
466 | -extern char *msg_log_use ; | |
467 | -extern char *msg_dir_err ; | |
468 | -extern char *msg_dir_use ; | |
469 | -extern char *msg_cur_dir ; | |
470 | -extern char *msg_hostname; | |
471 | -extern char *msg_ign_hist; | |
472 | -extern char *msg_no_hist ; | |
473 | -extern char *msg_get_hist; | |
474 | -extern char *msg_put_hist; | |
475 | -extern char *msg_hist_err; | |
476 | -extern char *msg_bad_hist; | |
477 | -extern char *msg_bad_conf; | |
478 | -extern char *msg_bad_key ; | |
479 | -extern char *msg_bad_date; | |
480 | -extern char *msg_ign_nscp; | |
481 | -extern char *msg_bad_rec ; | |
482 | -extern char *msg_no_vrec ; | |
483 | -extern char *msg_gen_rpt ; | |
484 | -extern char *msg_gen_sum ; | |
485 | -extern char *msg_get_data; | |
486 | -extern char *msg_put_data; | |
487 | -extern char *msg_no_data ; | |
488 | -extern char *msg_bad_data; | |
489 | -extern char *msg_data_err; | |
490 | -extern char *msg_dup_data; | |
491 | - | |
492 | -extern char *msg_dns_nocf; | |
493 | -extern char *msg_dns_nodb; | |
494 | -extern char *msg_dns_nolk; | |
495 | -extern char *msg_dns_usec; | |
496 | -extern char *msg_dns_rslf; | |
497 | -extern char *msg_dns_none; | |
498 | -extern char *msg_dns_abrt; | |
499 | - | |
500 | -extern char *msg_geo_open; | |
501 | -extern char *msg_geo_use ; | |
502 | -extern char *msg_geo_nolu; | |
503 | -extern char *msg_geo_dflt; | |
504 | - | |
505 | -extern char *msg_nomem_ts; | |
506 | -extern char *msg_nomem_tr; | |
507 | -extern char *msg_nomem_tu; | |
508 | -extern char *msg_nomem_tc; | |
509 | -extern char *msg_nomem_ta; | |
510 | -extern char *msg_nomem_tsr; | |
511 | -extern char *msg_nomem_ti; | |
512 | -extern char *msg_nomem_dh; | |
513 | -extern char *msg_nomem_mh; | |
514 | -extern char *msg_nomem_u ; | |
515 | -extern char *msg_nomem_a ; | |
516 | -extern char *msg_nomem_r ; | |
517 | -extern char *msg_nomem_sc; | |
518 | -extern char *msg_nomem_i ; | |
519 | - | |
520 | -extern char *msg_big_rec ; | |
521 | -extern char *msg_big_host; | |
522 | -extern char *msg_big_date; | |
523 | -extern char *msg_big_req ; | |
524 | -extern char *msg_big_ref ; | |
525 | -extern char *msg_big_user; | |
526 | -extern char *msg_big_one ; | |
527 | +#define _(String) gettext (String) | |
528 | +#define gettext_noop(String) String | |
529 | +#define N_(String) gettext_noop (String) | |
530 | +#define Q_(String) intl_strip_context (String) | |
531 | ||
532 | -extern char *msg_no_open ; | |
533 | - | |
534 | -extern char *h_usage1 ; | |
535 | -extern char *h_usage2 ; | |
536 | extern char *h_msg[]; | |
537 | ||
538 | -/* HTML Strings */ | |
539 | - | |
540 | -extern char *msg_hhdr_sp ; | |
541 | -extern char *msg_hhdr_gt ; | |
542 | - | |
543 | -extern char *msg_main_us ; | |
544 | -extern char *msg_main_per; | |
545 | -extern char *msg_main_sum; | |
546 | -extern char *msg_main_da ; | |
547 | -extern char *msg_main_mt ; | |
548 | - | |
549 | -extern char *msg_hmth_du ; | |
550 | -extern char *msg_hmth_hu ; | |
551 | - | |
552 | -extern char *msg_h_by ; | |
553 | -extern char *msg_h_avg ; | |
554 | -extern char *msg_h_max ; | |
555 | -extern char *msg_h_total ; | |
556 | -extern char *msg_h_totals; | |
557 | -extern char *msg_h_day ; | |
558 | -extern char *msg_h_mth ; | |
559 | -extern char *msg_h_hour ; | |
560 | -extern char *msg_h_hits ; | |
561 | -extern char *msg_h_pages ; | |
562 | -extern char *msg_h_visits; | |
563 | -extern char *msg_h_files ; | |
564 | -extern char *msg_h_sites ; | |
565 | -extern char *msg_h_xfer ; | |
566 | -extern char *msg_h_ixfer ; | |
567 | -extern char *msg_h_oxfer ; | |
568 | -extern char *msg_h_hname ; | |
569 | -extern char *msg_h_url ; | |
570 | -extern char *msg_h_agent ; | |
571 | -extern char *msg_h_ref ; | |
572 | -extern char *msg_h_ctry ; | |
573 | -extern char *msg_h_search; | |
574 | -extern char *msg_h_uname ; | |
575 | - | |
576 | -extern char *msg_hlnk_ds ; | |
577 | -extern char *msg_hlnk_hs ; | |
578 | -extern char *msg_hlnk_u ; | |
579 | -extern char *msg_hlnk_s ; | |
580 | -extern char *msg_hlnk_a ; | |
581 | -extern char *msg_hlnk_c ; | |
582 | -extern char *msg_hlnk_r ; | |
583 | -extern char *msg_hlnk_en ; | |
584 | -extern char *msg_hlnk_ex ; | |
585 | -extern char *msg_hlnk_sr ; | |
586 | -extern char *msg_hlnk_i ; | |
587 | - | |
588 | -extern char *msg_mtot_ms ; | |
589 | -extern char *msg_mtot_th ; | |
590 | -extern char *msg_mtot_tf ; | |
591 | -extern char *msg_mtot_tx ; | |
592 | -extern char *msg_mtot_ix ; | |
593 | -extern char *msg_mtot_ox ; | |
594 | -extern char *msg_mtot_us ; | |
595 | -extern char *msg_mtot_ur ; | |
596 | -extern char *msg_mtot_ua ; | |
597 | -extern char *msg_mtot_uu ; | |
598 | -extern char *msg_mtot_ui ; | |
599 | -extern char *msg_mtot_mhd; | |
600 | -extern char *msg_mtot_mhh; | |
601 | -extern char *msg_mtot_mfd; | |
602 | -extern char *msg_mtot_mpd; | |
603 | -extern char *msg_mtot_msd; | |
604 | -extern char *msg_mtot_mvd; | |
605 | -extern char *msg_mtot_mkd; | |
606 | -extern char *msg_mtot_ikd; | |
607 | -extern char *msg_mtot_okd; | |
608 | -extern char *msg_mtot_rc ; | |
609 | - | |
610 | -extern char *msg_dtot_ds ; | |
611 | - | |
612 | -extern char *msg_htot_hs ; | |
613 | - | |
614 | -extern char *msg_ctry_use; | |
615 | - | |
616 | -extern char *msg_top_top ; | |
617 | -extern char *msg_top_of ; | |
618 | -extern char *msg_top_s ; | |
619 | -extern char *msg_top_u ; | |
620 | -extern char *msg_top_r ; | |
621 | -extern char *msg_top_a ; | |
622 | -extern char *msg_top_c ; | |
623 | -extern char *msg_top_en ; | |
624 | -extern char *msg_top_ex ; | |
625 | -extern char *msg_top_sr ; | |
626 | -extern char *msg_top_i ; | |
627 | -extern char *msg_v_sites ; | |
628 | -extern char *msg_v_urls ; | |
629 | -extern char *msg_v_refs ; | |
630 | -extern char *msg_v_agents; | |
631 | -extern char *msg_v_search; | |
632 | -extern char *msg_v_users ; | |
633 | - | |
634 | -extern char *msg_title ; | |
635 | -extern char *msg_h_other ; | |
636 | - | |
637 | extern char *s_month[12]; | |
638 | extern char *l_month[12]; | |
639 | ||
640 | +extern char *report_title; | |
641 | extern struct response_code response[]; | |
642 | extern struct country_code ctry[]; | |
643 | ||
644 | Index: webalizer/lang2.h | |
645 | =================================================================== | |
646 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | |
647 | +++ webalizer/lang2.h 2011-01-07 19:13:13.000000000 +0100 | |
648 | @@ -0,0 +1,435 @@ | |
649 | +/* | |
650 | + webalizer_lang.english | |
651 | + | |
652 | + Webalizer V2.0x Language Support file for English. | |
653 | + 15-May-1998 by Bradford L. Barrett (brad@mrunix.net) | |
654 | + 31-May-1998 Modified for level 1.1 support (brad@mrunix.net) | |
655 | + 23-Jul-1998 Modified for level 1.2 support (brad@mrunix.net) | |
656 | + 08-Mar-1999 Updated HTTP 1.1 response codes by Yves Lafon (ylafon@w3.org) | |
657 | + 28-Jun-1999 Modified for level 1.3 support (brad@mrunix.net) | |
658 | + 16-Feb-2000 Modified for level 2.0 support (brad@mrunix.net) | |
659 | + 26-Mar-2008 Updated to current IANA TLDs (brad@mrunix.net) | |
660 | + 26-May-2008 Modified for level 2.2 support (brad@mrunix.net) | |
661 | + | |
662 | + | |
663 | + Language files are named using the following convention: | |
664 | + | |
665 | + webalizer_lang.LANGUAGE | |
666 | + | |
667 | + where 'LANGUAGE' is the name of the language the file is | |
668 | + translated into (ie: webalizer_lang.russian for russian). | |
669 | + Either copy the desired language file to webalizer_lang.h | |
670 | + or create a symbolic link, then re-compile. | |
671 | + | |
672 | + If you translate this file into a different language, please | |
673 | + send a copy to brad@mrunix.net. | |
674 | + | |
675 | +*/ | |
676 | + | |
677 | +/* lib gettext */ | |
678 | +#include <libintl.h> | |
679 | +#include <locale.h> | |
680 | + | |
681 | +#define _(String) gettext (String) | |
682 | +#define gettext_noop(String) String | |
683 | +#define N_(String) gettext_noop (String) | |
684 | +#define Q_(String) intl_strip_context (String) | |
685 | + | |
686 | +/* Help display... */ | |
687 | +char *h_msg[]= { | |
688 | + gettext_noop("-h = print this help message") , | |
689 | + gettext_noop("-V = print version information") , | |
690 | + gettext_noop("-v = be verbose") , | |
691 | + gettext_noop("-d = print additional debug info") , | |
692 | + gettext_noop("-F type = Log type. type= (clf | ftp | squid | w3c)"), | |
693 | + gettext_noop("-f = Fold sequence errors") , | |
694 | + gettext_noop("-i = ignore history file") , | |
695 | + gettext_noop("-p = preserve state (incremental)") , | |
696 | + gettext_noop("-b = ignore state (incremental)") , | |
697 | + gettext_noop("-q = supress informational messages") , | |
698 | + gettext_noop("-Q = supress _ALL_ messages") , | |
699 | + gettext_noop("-Y = supress country graph") , | |
700 | + gettext_noop("-G = supress hourly graph") , | |
701 | + gettext_noop("-H = supress hourly stats") , | |
702 | + gettext_noop("-L = supress color coded graph legends") , | |
703 | + gettext_noop("-l num = use num background lines on graph") , | |
704 | + gettext_noop("-m num = Visit timout value (seconds)") , | |
705 | + gettext_noop("-T = print timing information") , | |
706 | + gettext_noop("-c file = use configuration file 'file'") , | |
707 | + gettext_noop("-n name = hostname to use") , | |
708 | + gettext_noop("-o dir = output directory to use") , | |
709 | + gettext_noop("-t name = report title 'name'") , | |
710 | + gettext_noop("-a name = hide user agent 'name'") , | |
711 | + gettext_noop("-r name = hide referrer 'name'") , | |
712 | + gettext_noop("-s name = hide site 'name'") , | |
713 | + gettext_noop("-u name = hide URL 'name'") , | |
714 | + gettext_noop("-x name = Use filename extension 'name'") , | |
715 | + gettext_noop("-O name = Omit page 'name'") , | |
716 | + gettext_noop("-P name = Page type extension 'name'") , | |
717 | + gettext_noop("-I name = Index alias 'name'") , | |
718 | + gettext_noop("-K num = num months in summary table") , | |
719 | + gettext_noop("-k num = num months in summary graph") , | |
720 | + gettext_noop("-A num = Display num top agents") , | |
721 | + gettext_noop("-C num = Display num top countries") , | |
722 | + gettext_noop("-R num = Display num top referrers") , | |
723 | + gettext_noop("-S num = Display num top sites") , | |
724 | + gettext_noop("-U num = Display num top URLs") , | |
725 | + gettext_noop("-e num = Display num top Entry Pages") , | |
726 | + gettext_noop("-E num = Display num top Exit Pages") , | |
727 | + gettext_noop("-g num = Group Domains to 'num' levels") , | |
728 | + gettext_noop("-X = Hide individual sites") , | |
729 | + gettext_noop("-z dir = Use country flags in 'dir'") , | |
730 | +#ifdef USE_DNS | |
731 | + gettext_noop("-D name = Use DNS Cache file 'name'") , | |
732 | + gettext_noop("-N num = Number of DNS processes (0=disable)") , | |
733 | + gettext_noop("-j = Enable native GeoDB lookups") , | |
734 | + gettext_noop("-J name = Use GeoDB database 'name'") , | |
735 | +#endif | |
736 | +#ifdef USE_GEOIP | |
737 | + gettext_noop("-w = Enable GeoIP lookups") , | |
738 | + gettext_noop("-W name = Use GeoIP database 'name'") , | |
739 | +#endif | |
740 | + NULL}; | |
741 | + | |
742 | +/* short month names MUST BE 3 CHARS in size... pad if needed*/ | |
743 | +char *s_month[12]={ gettext_noop("Jan"), gettext_noop("Feb"), gettext_noop("Mar"), | |
744 | + gettext_noop("Apr"), gettext_noop("short|May"), gettext_noop("Jun"), | |
745 | + gettext_noop("Jul"), gettext_noop("Aug"), gettext_noop("Sep"), | |
746 | + gettext_noop("Oct"), gettext_noop("Nov"), gettext_noop("Dec")}; | |
747 | + | |
748 | +/* long month names - can be any length */ | |
749 | +char *l_month[12]={ gettext_noop("January"), gettext_noop("February"), gettext_noop("March"), | |
750 | + gettext_noop("April"), gettext_noop("long|May"), gettext_noop("June"), | |
751 | + gettext_noop("July"), gettext_noop("August"), gettext_noop("September"), | |
752 | + gettext_noop("October"), gettext_noop("November"),gettext_noop("December")}; | |
753 | + | |
754 | +/* response code descriptions... order IS important! */ | |
755 | +struct response_code response[] = | |
756 | + { { gettext_noop("Undefined response code"), 0 }, | |
757 | + { gettext_noop("Code 100 - Continue"), 0 }, | |
758 | + { gettext_noop("Code 101 - Switching Protocols"), 0 }, | |
759 | + { gettext_noop("Code 200 - OK"), 0 }, | |
760 | + { gettext_noop("Code 201 - Created"), 0 }, | |
761 | + { gettext_noop("Code 202 - Accepted"), 0 }, | |
762 | + { gettext_noop("Code 203 - Non-Authoritative Information"), 0 }, | |
763 | + { gettext_noop("Code 204 - No Content"), 0 }, | |
764 | + { gettext_noop("Code 205 - Reset Content"), 0 }, | |
765 | + { gettext_noop("Code 206 - Partial Content"), 0 }, | |
766 | + { gettext_noop("Code 300 - Multiple Choices"), 0 }, | |
767 | + { gettext_noop("Code 301 - Moved Permanently"), 0 }, | |
768 | + { gettext_noop("Code 302 - Found"), 0 }, | |
769 | + { gettext_noop("Code 303 - See Other"), 0 }, | |
770 | + { gettext_noop("Code 304 - Not Modified"), 0 }, | |
771 | + { gettext_noop("Code 305 - Use Proxy"), 0 }, | |
772 | + { gettext_noop("Code 307 - Moved Temporarily"), 0 }, | |
773 | + { gettext_noop("Code 400 - Bad Request"), 0 }, | |
774 | + { gettext_noop("Code 401 - Unauthorized"), 0 }, | |
775 | + { gettext_noop("Code 402 - Payment Required"), 0 }, | |
776 | + { gettext_noop("Code 403 - Forbidden"), 0 }, | |
777 | + { gettext_noop("Code 404 - Not Found"), 0 }, | |
778 | + { gettext_noop("Code 405 - Method Not Allowed"), 0 }, | |
779 | + { gettext_noop("Code 406 - Not Acceptable"), 0 }, | |
780 | + { gettext_noop("Code 407 - Proxy Authentication Required"), 0 }, | |
781 | + { gettext_noop("Code 408 - Request Timeout"), 0 }, | |
782 | + { gettext_noop("Code 409 - Conflict"), 0 }, | |
783 | + { gettext_noop("Code 410 - Gone"), 0 }, | |
784 | + { gettext_noop("Code 411 - Length Required"), 0 }, | |
785 | + { gettext_noop("Code 412 - Precondition Failed"), 0 }, | |
786 | + { gettext_noop("Code 413 - Request Entity Too Large"), 0 }, | |
787 | + { gettext_noop("Code 414 - Request-URI Too Long"), 0 }, | |
788 | + { gettext_noop("Code 415 - Unsupported Media Type"), 0 }, | |
789 | + { gettext_noop("Code 416 - Requested Range Not Satisfiable"), 0 }, | |
790 | + { gettext_noop("Code 417 - Expectation Failed"), 0 }, | |
791 | + { gettext_noop("Code 500 - Internal Server Error"), 0 }, | |
792 | + { gettext_noop("Code 501 - Not Implemented"), 0 }, | |
793 | + { gettext_noop("Code 502 - Bad Gateway"), 0 }, | |
794 | + { gettext_noop("Code 503 - Service Unavailable"), 0 }, | |
795 | + { gettext_noop("Code 504 - Gateway Timeout"), 0 }, | |
796 | + { gettext_noop("Code 505 - HTTP Version Not Supported"), 0 } }; | |
797 | + | |
798 | +char *report_title; | |
799 | + | |
800 | +/* Country codes (previously in ctry.h header file) */ | |
801 | + | |
802 | +struct country_code ctry[] = { | |
803 | +{ 0, gettext_noop("Unresolved/Unknown"), 0,0,0 }, | |
804 | +{ IDX_3C('c','o','m'), gettext_noop("Commercial (com)"), 0,0,0 }, | |
805 | +{ IDX_3C('e','d','u'), gettext_noop("Educational (edu)"), 0,0,0 }, | |
806 | +{ IDX_3C('g','o','v'), gettext_noop("US Government (gov)"), 0,0,0 }, | |
807 | +{ IDX_3C('i','n','t'), gettext_noop("International (int)"), 0,0,0 }, | |
808 | +{ IDX_3C('m','i','l'), gettext_noop("US Military (mil)"), 0,0,0 }, | |
809 | +{ IDX_3C('n','e','t'), gettext_noop("Network (net)"), 0,0,0 }, | |
810 | +{ IDX_3C('o','r','g'), gettext_noop("Non-Profit (org)"), 0,0,0 }, | |
811 | +{ IDX_3C('b','i','z'), gettext_noop("Generic Business (biz)"), 0,0,0 }, | |
812 | +{ IDX_3C('c','a','t'), gettext_noop("Catalan Community (cat)"), 0,0,0 }, | |
813 | +{ IDX_3C('p','r','o'), gettext_noop("Professional (pro)"), 0,0,0 }, | |
814 | +{ IDX_3C('t','e','l'), gettext_noop("Ind. Contact Data (tel)"), 0,0,0 }, | |
815 | +{ IDX_4C('a','e','r','o'),gettext_noop("Air Transport Industry (aero)"), 0,0,0 }, | |
816 | +{ IDX_4C('a','s','i','a'),gettext_noop("Asia Pacific Community (asia)"), 0,0,0 }, | |
817 | +{ IDX_4C('c','o','o','p'),gettext_noop("Cooperative Association (coop)"), 0,0,0 }, | |
818 | +{ IDX_4C('i','n','f','o'),gettext_noop("Generic TLD (info)"), 0,0,0 }, | |
819 | +{ IDX_4C('j','o','b','s'),gettext_noop("Human Resources (jobs)"), 0,0,0 }, | |
820 | +{ IDX_4C('m','o','b','i'),gettext_noop("Generic Mobile TLD (mobi)"), 0,0,0 }, | |
821 | +{ IDX_4C('n','a','m','e'),gettext_noop("Individual (name)"), 0,0,0 }, | |
822 | +{ IDX_4C('a','r','p','a'),gettext_noop("Address Routing (arpa)"), 0,0,0 }, | |
823 | +{ IDX_4C('n','a','t','o'),gettext_noop("Nato field (nato)"), 0,0,0 }, | |
824 | +{ IDX_6C('m','u','s','e','u','m'), gettext_noop("Museums (museum)"), 0,0,0 }, | |
825 | +{ IDX_6C('t','r','a','v','e','l'), gettext_noop("Travel Ind. (travel)"), 0,0,0 }, | |
826 | +{ IDX_2C('a','c'), gettext_noop("Ascension Island"), 0,0,0 }, | |
827 | +{ IDX_2C('a','d'), gettext_noop("Andorra"), 0,0,0 }, | |
828 | +{ IDX_2C('a','e'), gettext_noop("United Arab Emirates"), 0,0,0 }, | |
829 | +{ IDX_2C('a','f'), gettext_noop("Afghanistan"), 0,0,0 }, | |
830 | +{ IDX_2C('a','g'), gettext_noop("Antigua and Barbuda"), 0,0,0 }, | |
831 | +{ IDX_2C('a','i'), gettext_noop("Anguilla"), 0,0,0 }, | |
832 | +{ IDX_2C('a','l'), gettext_noop("Albania"), 0,0,0 }, | |
833 | +{ IDX_2C('a','m'), gettext_noop("Armenia"), 0,0,0 }, | |
834 | +{ IDX_2C('a','n'), gettext_noop("Netherlands Antilles"), 0,0,0 }, | |
835 | +{ IDX_2C('a','o'), gettext_noop("Angola"), 0,0,0 }, | |
836 | +{ IDX_2C('a','q'), gettext_noop("Antarctica"), 0,0,0 }, | |
837 | +{ IDX_2C('a','r'), gettext_noop("Argentina"), 0,0,0 }, | |
838 | +{ IDX_2C('a','s'), gettext_noop("American Samoa"), 0,0,0 }, | |
839 | +{ IDX_2C('a','t'), gettext_noop("Austria"), 0,0,0 }, | |
840 | +{ IDX_2C('a','u'), gettext_noop("Australia"), 0,0,0 }, | |
841 | +{ IDX_2C('a','w'), gettext_noop("Aruba"), 0,0,0 }, | |
842 | +{ IDX_2C('a','x'), gettext_noop("Aland Islands"), 0,0,0 }, | |
843 | +{ IDX_2C('a','z'), gettext_noop("Azerbaijan"), 0,0,0 }, | |
844 | +{ IDX_2C('b','a'), gettext_noop("Bosnia and Herzegovina"), 0,0,0 }, | |
845 | +{ IDX_2C('b','b'), gettext_noop("Barbados"), 0,0,0 }, | |
846 | +{ IDX_2C('b','d'), gettext_noop("Bangladesh"), 0,0,0 }, | |
847 | +{ IDX_2C('b','e'), gettext_noop("Belgium"), 0,0,0 }, | |
848 | +{ IDX_2C('b','f'), gettext_noop("Burkina Faso"), 0,0,0 }, | |
849 | +{ IDX_2C('b','g'), gettext_noop("Bulgaria"), 0,0,0 }, | |
850 | +{ IDX_2C('b','h'), gettext_noop("Bahrain"), 0,0,0 }, | |
851 | +{ IDX_2C('b','i'), gettext_noop("Burundi"), 0,0,0 }, | |
852 | +{ IDX_2C('b','j'), gettext_noop("Benin"), 0,0,0 }, | |
853 | +{ IDX_2C('b','l'), gettext_noop("Saint Barthelemy"), 0,0,0 }, | |
854 | +{ IDX_2C('b','m'), gettext_noop("Bermuda"), 0,0,0 }, | |
855 | +{ IDX_2C('b','n'), gettext_noop("Brunei Darussalam"), 0,0,0 }, | |
856 | +{ IDX_2C('b','o'), gettext_noop("Bolivia"), 0,0,0 }, | |
857 | +{ IDX_2C('b','r'), gettext_noop("Brazil"), 0,0,0 }, | |
858 | +{ IDX_2C('b','s'), gettext_noop("Bahamas"), 0,0,0 }, | |
859 | +{ IDX_2C('b','t'), gettext_noop("Bhutan"), 0,0,0 }, | |
860 | +{ IDX_2C('b','v'), gettext_noop("Bouvet Island"), 0,0,0 }, | |
861 | +{ IDX_2C('b','w'), gettext_noop("Botswana"), 0,0,0 }, | |
862 | +{ IDX_2C('b','y'), gettext_noop("Belarus"), 0,0,0 }, | |
863 | +{ IDX_2C('b','z'), gettext_noop("Belize"), 0,0,0 }, | |
864 | +{ IDX_2C('c','a'), gettext_noop("Canada"), 0,0,0 }, | |
865 | +{ IDX_2C('c','c'), gettext_noop("Cocos (Keeling) Islands"), 0,0,0 }, | |
866 | +{ IDX_2C('c','d'), gettext_noop("Congo, Democratic Republic"), 0,0,0 }, | |
867 | +{ IDX_2C('c','f'), gettext_noop("Central African Republic"), 0,0,0 }, | |
868 | +{ IDX_2C('c','g'), gettext_noop("Congo"), 0,0,0 }, | |
869 | +{ IDX_2C('c','h'), gettext_noop("Switzerland"), 0,0,0 }, | |
870 | +{ IDX_2C('c','i'), gettext_noop("Cote D'Ivoire (Ivory Coast)"), 0,0,0 }, | |
871 | +{ IDX_2C('c','k'), gettext_noop("Cook Islands"), 0,0,0 }, | |
872 | +{ IDX_2C('c','l'), gettext_noop("Chile"), 0,0,0 }, | |
873 | +{ IDX_2C('c','m'), gettext_noop("Cameroon"), 0,0,0 }, | |
874 | +{ IDX_2C('c','n'), gettext_noop("China"), 0,0,0 }, | |
875 | +{ IDX_2C('c','o'), gettext_noop("Colombia"), 0,0,0 }, | |
876 | +{ IDX_2C('c','r'), gettext_noop("Costa Rica"), 0,0,0 }, | |
877 | +{ IDX_2C('c','u'), gettext_noop("Cuba"), 0,0,0 }, | |
878 | +{ IDX_2C('c','v'), gettext_noop("Cape Verde"), 0,0,0 }, | |
879 | +{ IDX_2C('c','x'), gettext_noop("Christmas Island"), 0,0,0 }, | |
880 | +{ IDX_2C('c','y'), gettext_noop("Cyprus"), 0,0,0 }, | |
881 | +{ IDX_2C('c','z'), gettext_noop("Czech Republic"), 0,0,0 }, | |
882 | +{ IDX_2C('d','e'), gettext_noop("Germany"), 0,0,0 }, | |
883 | +{ IDX_2C('d','j'), gettext_noop("Djibouti"), 0,0,0 }, | |
884 | +{ IDX_2C('d','k'), gettext_noop("Denmark"), 0,0,0 }, | |
885 | +{ IDX_2C('d','m'), gettext_noop("Dominica"), 0,0,0 }, | |
886 | +{ IDX_2C('d','o'), gettext_noop("Dominican Republic"), 0,0,0 }, | |
887 | +{ IDX_2C('d','z'), gettext_noop("Algeria"), 0,0,0 }, | |
888 | +{ IDX_2C('e','c'), gettext_noop("Ecuador"), 0,0,0 }, | |
889 | +{ IDX_2C('e','e'), gettext_noop("Estonia"), 0,0,0 }, | |
890 | +{ IDX_2C('e','g'), gettext_noop("Egypt"), 0,0,0 }, | |
891 | +{ IDX_2C('e','h'), gettext_noop("Western Sahara"), 0,0,0 }, | |
892 | +{ IDX_2C('e','r'), gettext_noop("Eritrea"), 0,0,0 }, | |
893 | +{ IDX_2C('e','s'), gettext_noop("Spain"), 0,0,0 }, | |
894 | +{ IDX_2C('e','t'), gettext_noop("Ethiopia"), 0,0,0 }, | |
895 | +{ IDX_2C('e','u'), gettext_noop("European Union"), 0,0,0 }, | |
896 | +{ IDX_2C('f','i'), gettext_noop("Finland"), 0,0,0 }, | |
897 | +{ IDX_2C('f','j'), gettext_noop("Fiji"), 0,0,0 }, | |
898 | +{ IDX_2C('f','k'), gettext_noop("Falkland Islands (Malvinas)"), 0,0,0 }, | |
899 | +{ IDX_2C('f','m'), gettext_noop("Micronesia"), 0,0,0 }, | |
900 | +{ IDX_2C('f','o'), gettext_noop("Faroe Islands"), 0,0,0 }, | |
901 | +{ IDX_2C('f','r'), gettext_noop("France"), 0,0,0 }, | |
902 | +{ IDX_2C('g','a'), gettext_noop("Gabon"), 0,0,0 }, | |
903 | +{ IDX_2C('g','b'), gettext_noop("Great Britain (UK)"), 0,0,0 }, | |
904 | +{ IDX_2C('g','d'), gettext_noop("Grenada"), 0,0,0 }, | |
905 | +{ IDX_2C('g','e'), gettext_noop("Georgia"), 0,0,0 }, | |
906 | +{ IDX_2C('g','f'), gettext_noop("French Guiana"), 0,0,0 }, | |
907 | +{ IDX_2C('g','g'), gettext_noop("Guernsey"), 0,0,0 }, | |
908 | +{ IDX_2C('g','h'), gettext_noop("Ghana"), 0,0,0 }, | |
909 | +{ IDX_2C('g','i'), gettext_noop("Gibraltar"), 0,0,0 }, | |
910 | +{ IDX_2C('g','l'), gettext_noop("Greenland"), 0,0,0 }, | |
911 | +{ IDX_2C('g','m'), gettext_noop("Gambia"), 0,0,0 }, | |
912 | +{ IDX_2C('g','n'), gettext_noop("Guinea"), 0,0,0 }, | |
913 | +{ IDX_2C('g','p'), gettext_noop("Guadeloupe"), 0,0,0 }, | |
914 | +{ IDX_2C('g','q'), gettext_noop("Equatorial Guinea"), 0,0,0 }, | |
915 | +{ IDX_2C('g','r'), gettext_noop("Greece"), 0,0,0 }, | |
916 | +{ IDX_2C('g','s'), gettext_noop("S. Georgia and S. Sandwich Isls."), 0,0,0 }, | |
917 | +{ IDX_2C('g','t'), gettext_noop("Guatemala"), 0,0,0 }, | |
918 | +{ IDX_2C('g','u'), gettext_noop("Guam"), 0,0,0 }, | |
919 | +{ IDX_2C('g','w'), gettext_noop("Guinea-Bissau"), 0,0,0 }, | |
920 | +{ IDX_2C('g','y'), gettext_noop("Guyana"), 0,0,0 }, | |
921 | +{ IDX_2C('h','k'), gettext_noop("Hong Kong"), 0,0,0 }, | |
922 | +{ IDX_2C('h','m'), gettext_noop("Heard and McDonald Islands"), 0,0,0 }, | |
923 | +{ IDX_2C('h','n'), gettext_noop("Honduras"), 0,0,0 }, | |
924 | +{ IDX_2C('h','r'), gettext_noop("Croatia"), 0,0,0 }, | |
925 | +{ IDX_2C('h','t'), gettext_noop("Haiti"), 0,0,0 }, | |
926 | +{ IDX_2C('h','u'), gettext_noop("Hungary"), 0,0,0 }, | |
927 | +{ IDX_2C('i','d'), gettext_noop("Indonesia"), 0,0,0 }, | |
928 | +{ IDX_2C('i','e'), gettext_noop("Ireland"), 0,0,0 }, | |
929 | +{ IDX_2C('i','l'), gettext_noop("Israel"), 0,0,0 }, | |
930 | +{ IDX_2C('i','m'), gettext_noop("Isle of Man"), 0,0,0 }, | |
931 | +{ IDX_2C('i','n'), gettext_noop("India"), 0,0,0 }, | |
932 | +{ IDX_2C('i','o'), gettext_noop("British Indian Ocean Territory"), 0,0,0 }, | |
933 | +{ IDX_2C('i','q'), gettext_noop("Iraq"), 0,0,0 }, | |
934 | +{ IDX_2C('i','r'), gettext_noop("Iran"), 0,0,0 }, | |
935 | +{ IDX_2C('i','s'), gettext_noop("Iceland"), 0,0,0 }, | |
936 | +{ IDX_2C('i','t'), gettext_noop("Italy"), 0,0,0 }, | |
937 | +{ IDX_2C('j','e'), gettext_noop("Jersey"), 0,0,0 }, | |
938 | +{ IDX_2C('j','m'), gettext_noop("Jamaica"), 0,0,0 }, | |
939 | +{ IDX_2C('j','o'), gettext_noop("Jordan"), 0,0,0 }, | |
940 | +{ IDX_2C('j','p'), gettext_noop("Japan"), 0,0,0 }, | |
941 | +{ IDX_2C('k','e'), gettext_noop("Kenya"), 0,0,0 }, | |
942 | +{ IDX_2C('k','g'), gettext_noop("Kyrgyzstan"), 0,0,0 }, | |
943 | +{ IDX_2C('k','h'), gettext_noop("Cambodia"), 0,0,0 }, | |
944 | +{ IDX_2C('k','i'), gettext_noop("Kiribati"), 0,0,0 }, | |
945 | +{ IDX_2C('k','m'), gettext_noop("Comoros"), 0,0,0 }, | |
946 | +{ IDX_2C('k','n'), gettext_noop("Saint Kitts and Nevis"), 0,0,0 }, | |
947 | +{ IDX_2C('k','p'), gettext_noop("Korea, Democratic Republic of"), 0,0,0 }, | |
948 | +{ IDX_2C('k','r'), gettext_noop("Korea, Republic of"), 0,0,0 }, | |
949 | +{ IDX_2C('k','w'), gettext_noop("Kuwait"), 0,0,0 }, | |
950 | +{ IDX_2C('k','y'), gettext_noop("Cayman Islands"), 0,0,0 }, | |
951 | +{ IDX_2C('k','z'), gettext_noop("Kazakhstan"), 0,0,0 }, | |
952 | +{ IDX_2C('l','a'), gettext_noop("Laos"), 0,0,0 }, | |
953 | +{ IDX_2C('l','b'), gettext_noop("Lebanon"), 0,0,0 }, | |
954 | +{ IDX_2C('l','c'), gettext_noop("Saint Lucia"), 0,0,0 }, | |
955 | +{ IDX_2C('l','i'), gettext_noop("Liechtenstein"), 0,0,0 }, | |
956 | +{ IDX_2C('l','k'), gettext_noop("Sri Lanka"), 0,0,0 }, | |
957 | +{ IDX_2C('l','r'), gettext_noop("Liberia"), 0,0,0 }, | |
958 | +{ IDX_2C('l','s'), gettext_noop("Lesotho"), 0,0,0 }, | |
959 | +{ IDX_2C('l','t'), gettext_noop("Lithuania"), 0,0,0 }, | |
960 | +{ IDX_2C('l','u'), gettext_noop("Luxembourg"), 0,0,0 }, | |
961 | +{ IDX_2C('l','v'), gettext_noop("Latvia"), 0,0,0 }, | |
962 | +{ IDX_2C('l','y'), gettext_noop("Libya"), 0,0,0 }, | |
963 | +{ IDX_2C('m','a'), gettext_noop("Morocco"), 0,0,0 }, | |
964 | +{ IDX_2C('m','c'), gettext_noop("Monaco"), 0,0,0 }, | |
965 | +{ IDX_2C('m','d'), gettext_noop("Moldova"), 0,0,0 }, | |
966 | +{ IDX_2C('m','e'), gettext_noop("Montenegro"), 0,0,0 }, | |
967 | +{ IDX_2C('m','f'), gettext_noop("Saint Martin (French part)"), 0,0,0 }, | |
968 | +{ IDX_2C('m','g'), gettext_noop("Madagascar"), 0,0,0 }, | |
969 | +{ IDX_2C('m','h'), gettext_noop("Marshall Islands"), 0,0,0 }, | |
970 | +{ IDX_2C('m','k'), gettext_noop("Macedonia"), 0,0,0 }, | |
971 | +{ IDX_2C('m','l'), gettext_noop("Mali"), 0,0,0 }, | |
972 | +{ IDX_2C('m','m'), gettext_noop("Myanmar"), 0,0,0 }, | |
973 | +{ IDX_2C('m','n'), gettext_noop("Mongolia"), 0,0,0 }, | |
974 | +{ IDX_2C('m','o'), gettext_noop("Macau"), 0,0,0 }, | |
975 | +{ IDX_2C('m','p'), gettext_noop("Northern Mariana Islands"), 0,0,0 }, | |
976 | +{ IDX_2C('m','q'), gettext_noop("Martinique"), 0,0,0 }, | |
977 | +{ IDX_2C('m','r'), gettext_noop("Mauritania"), 0,0,0 }, | |
978 | +{ IDX_2C('m','s'), gettext_noop("Montserrat"), 0,0,0 }, | |
979 | +{ IDX_2C('m','t'), gettext_noop("Malta"), 0,0,0 }, | |
980 | +{ IDX_2C('m','u'), gettext_noop("Mauritius"), 0,0,0 }, | |
981 | +{ IDX_2C('m','v'), gettext_noop("Maldives"), 0,0,0 }, | |
982 | +{ IDX_2C('m','w'), gettext_noop("Malawi"), 0,0,0 }, | |
983 | +{ IDX_2C('m','x'), gettext_noop("Mexico"), 0,0,0 }, | |
984 | +{ IDX_2C('m','y'), gettext_noop("Malaysia"), 0,0,0 }, | |
985 | +{ IDX_2C('m','z'), gettext_noop("Mozambique"), 0,0,0 }, | |
986 | +{ IDX_2C('n','a'), gettext_noop("Namibia"), 0,0,0 }, | |
987 | +{ IDX_2C('n','c'), gettext_noop("New Caledonia"), 0,0,0 }, | |
988 | +{ IDX_2C('n','e'), gettext_noop("Niger"), 0,0,0 }, | |
989 | +{ IDX_2C('n','f'), gettext_noop("Norfolk Island"), 0,0,0 }, | |
990 | +{ IDX_2C('n','g'), gettext_noop("Nigeria"), 0,0,0 }, | |
991 | +{ IDX_2C('n','i'), gettext_noop("Nicaragua"), 0,0,0 }, | |
992 | +{ IDX_2C('n','l'), gettext_noop("Netherlands"), 0,0,0 }, | |
993 | +{ IDX_2C('n','o'), gettext_noop("Norway"), 0,0,0 }, | |
994 | +{ IDX_2C('n','p'), gettext_noop("Nepal"), 0,0,0 }, | |
995 | +{ IDX_2C('n','r'), gettext_noop("Nauru"), 0,0,0 }, | |
996 | +{ IDX_2C('n','u'), gettext_noop("Niue"), 0,0,0 }, | |
997 | +{ IDX_2C('n','z'), gettext_noop("New Zealand"), 0,0,0 }, | |
998 | +{ IDX_2C('o','m'), gettext_noop("Oman"), 0,0,0 }, | |
999 | +{ IDX_2C('p','a'), gettext_noop("Panama"), 0,0,0 }, | |
1000 | +{ IDX_2C('p','e'), gettext_noop("Peru"), 0,0,0 }, | |
1001 | +{ IDX_2C('p','f'), gettext_noop("French Polynesia"), 0,0,0 }, | |
1002 | +{ IDX_2C('p','g'), gettext_noop("Papua New Guinea"), 0,0,0 }, | |
1003 | +{ IDX_2C('p','h'), gettext_noop("Philippines"), 0,0,0 }, | |
1004 | +{ IDX_2C('p','k'), gettext_noop("Pakistan"), 0,0,0 }, | |
1005 | +{ IDX_2C('p','l'), gettext_noop("Poland"), 0,0,0 }, | |
1006 | +{ IDX_2C('p','m'), gettext_noop("St. Pierre and Miquelon"), 0,0,0 }, | |
1007 | +{ IDX_2C('p','n'), gettext_noop("Pitcairn"), 0,0,0 }, | |
1008 | +{ IDX_2C('p','r'), gettext_noop("Puerto Rico"), 0,0,0 }, | |
1009 | +{ IDX_2C('p','s'), gettext_noop("Palestinian Territory, Occupied"), 0,0,0 }, | |
1010 | +{ IDX_2C('p','t'), gettext_noop("Portugal"), 0,0,0 }, | |
1011 | +{ IDX_2C('p','w'), gettext_noop("Palau"), 0,0,0 }, | |
1012 | +{ IDX_2C('p','y'), gettext_noop("Paraguay"), 0,0,0 }, | |
1013 | +{ IDX_2C('q','a'), gettext_noop("Qatar"), 0,0,0 }, | |
1014 | +{ IDX_2C('r','e'), gettext_noop("Reunion"), 0,0,0 }, | |
1015 | +{ IDX_2C('r','o'), gettext_noop("Romania"), 0,0,0 }, | |
1016 | +{ IDX_2C('r','s'), gettext_noop("Serbia"), 0,0,0 }, | |
1017 | +{ IDX_2C('r','u'), gettext_noop("Russian Federation"), 0,0,0 }, | |
1018 | +{ IDX_2C('r','w'), gettext_noop("Rwanda"), 0,0,0 }, | |
1019 | +{ IDX_2C('s','a'), gettext_noop("Saudi Arabia"), 0,0,0 }, | |
1020 | +{ IDX_2C('s','b'), gettext_noop("Solomon Islands"), 0,0,0 }, | |
1021 | +{ IDX_2C('s','c'), gettext_noop("Seychelles"), 0,0,0 }, | |
1022 | +{ IDX_2C('s','d'), gettext_noop("Sudan"), 0,0,0 }, | |
1023 | +{ IDX_2C('s','e'), gettext_noop("Sweden"), 0,0,0 }, | |
1024 | +{ IDX_2C('s','g'), gettext_noop("Singapore"), 0,0,0 }, | |
1025 | +{ IDX_2C('s','h'), gettext_noop("St. Helena"), 0,0,0 }, | |
1026 | +{ IDX_2C('s','i'), gettext_noop("Slovenia"), 0,0,0 }, | |
1027 | +{ IDX_2C('s','j'), gettext_noop("Svalbard and Jan Mayen Islands"), 0,0,0 }, | |
1028 | +{ IDX_2C('s','k'), gettext_noop("Slovakia"), 0,0,0 }, | |
1029 | +{ IDX_2C('s','l'), gettext_noop("Sierra Leone"), 0,0,0 }, | |
1030 | +{ IDX_2C('s','m'), gettext_noop("San Marino"), 0,0,0 }, | |
1031 | +{ IDX_2C('s','n'), gettext_noop("Senegal"), 0,0,0 }, | |
1032 | +{ IDX_2C('s','o'), gettext_noop("Somalia"), 0,0,0 }, | |
1033 | +{ IDX_2C('s','r'), gettext_noop("Suriname"), 0,0,0 }, | |
1034 | +{ IDX_2C('s','t'), gettext_noop("Sao Tome and Principe"), 0,0,0 }, | |
1035 | +{ IDX_2C('s','u'), gettext_noop("Soviet Union"), 0,0,0 }, | |
1036 | +{ IDX_2C('s','v'), gettext_noop("El Salvador"), 0,0,0 }, | |
1037 | +{ IDX_2C('s','y'), gettext_noop("Syrian Arab Republic"), 0,0,0 }, | |
1038 | +{ IDX_2C('s','z'), gettext_noop("Swaziland"), 0,0,0 }, | |
1039 | +{ IDX_2C('t','c'), gettext_noop("Turks and Caicos Islands"), 0,0,0 }, | |
1040 | +{ IDX_2C('t','d'), gettext_noop("Chad"), 0,0,0 }, | |
1041 | +{ IDX_2C('t','f'), gettext_noop("French Southern Territories"), 0,0,0 }, | |
1042 | +{ IDX_2C('t','g'), gettext_noop("Togo"), 0,0,0 }, | |
1043 | +{ IDX_2C('t','h'), gettext_noop("Thailand"), 0,0,0 }, | |
1044 | +{ IDX_2C('t','j'), gettext_noop("Tajikistan"), 0,0,0 }, | |
1045 | +{ IDX_2C('t','k'), gettext_noop("Tokelau"), 0,0,0 }, | |
1046 | +{ IDX_2C('t','l'), gettext_noop("Timor-Leste"), 0,0,0 }, | |
1047 | +{ IDX_2C('t','m'), gettext_noop("Turkmenistan"), 0,0,0 }, | |
1048 | +{ IDX_2C('t','n'), gettext_noop("Tunisia"), 0,0,0 }, | |
1049 | +{ IDX_2C('t','o'), gettext_noop("Tonga"), 0,0,0 }, | |
1050 | +{ IDX_2C('t','p'), gettext_noop("Portuguese Timor"), 0,0,0 }, | |
1051 | +{ IDX_2C('t','r'), gettext_noop("Turkey"), 0,0,0 }, | |
1052 | +{ IDX_2C('t','t'), gettext_noop("Trinidad and Tobago"), 0,0,0 }, | |
1053 | +{ IDX_2C('t','v'), gettext_noop("Tuvalu"), 0,0,0 }, | |
1054 | +{ IDX_2C('t','w'), gettext_noop("Taiwan"), 0,0,0 }, | |
1055 | +{ IDX_2C('t','z'), gettext_noop("Tanzania"), 0,0,0 }, | |
1056 | +{ IDX_2C('u','a'), gettext_noop("Ukraine"), 0,0,0 }, | |
1057 | +{ IDX_2C('u','g'), gettext_noop("Uganda"), 0,0,0 }, | |
1058 | +{ IDX_2C('u','k'), gettext_noop("United Kingdom"), 0,0,0 }, | |
1059 | +{ IDX_2C('u','m'), gettext_noop("US Minor Outlying Islands"), 0,0,0 }, | |
1060 | +{ IDX_2C('u','s'), gettext_noop("United States"), 0,0,0 }, | |
1061 | +{ IDX_2C('u','y'), gettext_noop("Uruguay"), 0,0,0 }, | |
1062 | +{ IDX_2C('u','z'), gettext_noop("Uzbekistan"), 0,0,0 }, | |
1063 | +{ IDX_2C('v','a'), gettext_noop("Vatican City State (Holy See)"), 0,0,0 }, | |
1064 | +{ IDX_2C('v','c'), gettext_noop("Saint Vincent and the Grenadines"), 0,0,0 }, | |
1065 | +{ IDX_2C('v','e'), gettext_noop("Venezuela"), 0,0,0 }, | |
1066 | +{ IDX_2C('v','g'), gettext_noop("Virgin Islands (British)"), 0,0,0 }, | |
1067 | +{ IDX_2C('v','i'), gettext_noop("Virgin Islands (U.S.)"), 0,0,0 }, | |
1068 | +{ IDX_2C('v','n'), gettext_noop("Vietnam"), 0,0,0 }, | |
1069 | +{ IDX_2C('v','u'), gettext_noop("Vanuatu"), 0,0,0 }, | |
1070 | +{ IDX_2C('w','f'), gettext_noop("Wallis and Futuna Islands"), 0,0,0 }, | |
1071 | +{ IDX_2C('w','s'), gettext_noop("Samoa"), 0,0,0 }, | |
1072 | +{ IDX_2C('y','e'), gettext_noop("Yemen"), 0,0,0 }, | |
1073 | +{ IDX_2C('y','t'), gettext_noop("Mayotte"), 0,0,0 }, | |
1074 | +{ IDX_2C('y','u'), gettext_noop("Yugoslavia"), 0,0,0 }, | |
1075 | +{ IDX_2C('z','a'), gettext_noop("South Africa"), 0,0,0 }, | |
1076 | +{ IDX_2C('z','m'), gettext_noop("Zambia"), 0,0,0 }, | |
1077 | +{ IDX_2C('z','w'), gettext_noop("Zimbabwe"), 0,0,0 }, | |
1078 | +{ IDX_2C('a','1'), gettext_noop("Anonymous Proxy"), 0,0,0 }, | |
1079 | +{ IDX_2C('a','2'), gettext_noop("Satellite Provider"), 0,0,0 }, | |
1080 | +{ IDX_2C('o','1'), gettext_noop("Other"), 0,0,0 }, | |
1081 | +{ IDX_2C('a','p'), gettext_noop("Asia/Pacific Region"), 0,0,0 }, | |
1082 | +{ IDX_3C('l','a','n'), gettext_noop("Local Network (lan)"), 0,0,0 }, | |
1083 | +{ 0 , NULL, 0,0,0 }}; | |
1084 | Index: webalizer/lang_po.sh | |
1085 | =================================================================== | |
1086 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | |
1087 | +++ webalizer/lang_po.sh 2011-01-07 19:13:13.000000000 +0100 | |
1088 | @@ -0,0 +1,24 @@ | |
1089 | +#!/bin/bash | |
1090 | +# create lang.txt file with vars and strings from webalizer_lang.english file | |
1091 | +cat lang/webalizer_lang.english | grep ^char | sed \ | |
1092 | + -e 's/^char//' -e 's/ \*//' -e 's/= /=/' -e 's/ *=/=/' \ | |
1093 | + -e 's/="/=/' -e 's/;$//' -e 's/"$//' -e 's/!/\\!/' | \ | |
1094 | + grep -v "^l_month" | grep -v "^s_month" | grep -v "^h_msg" | \ | |
1095 | + grep -v "^language=" | sort -r > lang.txt | |
1096 | +# create a sed line with -e options that subst msg_* strings to _("string") | |
1097 | +# take strings from lang.txt file. | |
1098 | +SED_E=""; | |
1099 | +for i in $(cat lang.txt |cut -f1 -d=); do | |
1100 | + SUBST=$(cat lang.txt | grep ^$i=| cut -f2 -d=); | |
1101 | + SED_E="$SED_E -e "'"'"s/\<$i\>/_("'\"'$SUBST'\"'")/"'"' | |
1102 | +done; | |
1103 | +# create a script file with commands to subst and create a diff file | |
1104 | +# I create this script because had errors when I tried to run commands here. | |
1105 | +echo "" > lang_po_exec.sh | |
1106 | +for i in *.c; do | |
1107 | + echo "cat $i | sed $SED_E > $i.new;" >> lang_po_exec.sh; | |
1108 | + echo "cat $i.new > $i;" >> lang_po_exec.sh; | |
1109 | + echo "rm -f $i.new;" >> lang_po_exec.sh; | |
1110 | +done; | |
1111 | +bash ./lang_po_exec.sh; | |
1112 | +rm -f lang_po_exec.sh lang.txt; | |
1113 | Index: webalizer/output.c | |
1114 | =================================================================== | |
1115 | --- webalizer.orig/output.c 2011-01-07 19:12:31.000000000 +0100 | |
1116 | +++ webalizer/output.c 2011-01-07 19:13:13.000000000 +0100 | |
1117 | @@ -191,7 +191,7 @@ | |
1118 | ||
1119 | fprintf(out_fp,"<HTML lang=\"%s\">\n<HEAD>\n",langcode); | |
1120 | fprintf(out_fp," <TITLE>%s %s - %s</TITLE>\n", | |
1121 | - msg_title, hname, (period)?period:msg_main_per); | |
1122 | + report_title, hname, (period)?period:msg_main_per); | |
1123 | lptr=html_head; | |
1124 | while (lptr!=NULL) | |
1125 | { | |
1126 | @@ -213,7 +213,7 @@ | |
1127 | lptr=lptr->next; | |
1128 | } | |
1129 | } | |
1130 | - fprintf(out_fp,"<H2>%s %s</H2>\n",msg_title, hname); | |
1131 | + fprintf(out_fp,"<H2>%s %s</H2>\n",report_title, hname); | |
1132 | if (period) | |
1133 | fprintf(out_fp,"<SMALL><STRONG>\n%s: %s<BR>\n",msg_hhdr_sp,period); | |
1134 | else | |
1135 | @@ -289,7 +289,7 @@ | |
1136 | char htitle[256]; | |
1137 | ||
1138 | if (verbose>1) | |
1139 | - printf("%s %s %d\n",msg_gen_rpt, l_month[cur_month-1], cur_year); | |
1140 | + printf("%s %s %d\n",msg_gen_rpt, Q_(l_month[cur_month-1]), cur_year); | |
1141 | ||
1142 | /* fill in filenames */ | |
1143 | snprintf(html_fname,sizeof(html_fname),"usage_%04d%02d.%s", | |
1144 | @@ -301,7 +301,7 @@ | |
1145 | if (daily_graph) | |
1146 | { | |
1147 | snprintf(dtitle,sizeof(dtitle),"%s %s %d", | |
1148 | - msg_hmth_du,l_month[cur_month-1],cur_year); | |
1149 | + msg_hmth_du,Q_(l_month[cur_month-1]),cur_year); | |
1150 | month_graph6 ( png1_fname, /* filename */ | |
1151 | dtitle, /* graph title */ | |
1152 | cur_month, /* graph month */ | |
1153 | @@ -319,7 +319,7 @@ | |
1154 | if (hourly_graph) | |
1155 | { | |
1156 | snprintf(htitle,sizeof(htitle),"%s %s %d", | |
1157 | - msg_hmth_hu,l_month[cur_month-1],cur_year); | |
1158 | + msg_hmth_hu,Q_(l_month[cur_month-1]),cur_year); | |
1159 | day_graph3( png2_fname, | |
1160 | htitle, | |
1161 | th_hit, | |
1162 | @@ -331,7 +331,7 @@ | |
1163 | /* first, open the file */ | |
1164 | if ( (out_fp=open_out_file(html_fname))==NULL ) return 1; | |
1165 | ||
1166 | - snprintf(buffer,sizeof(buffer),"%s %d",l_month[cur_month-1],cur_year); | |
1167 | + snprintf(buffer,sizeof(buffer),"%s %d",Q_(l_month[cur_month-1]),cur_year); | |
1168 | write_html_head(buffer, out_fp); | |
1169 | month_links(); | |
1170 | month_total_table(); | |
1171 | @@ -529,7 +529,7 @@ | |
1172 | fprintf(out_fp,"<TABLE WIDTH=510 BORDER=2 CELLSPACING=1 CELLPADDING=1>\n"); | |
1173 | fprintf(out_fp,"<TR><TH HEIGHT=4></TH></TR>\n"); | |
1174 | fprintf(out_fp,"<TR><TH COLSPAN=3 ALIGN=center BGCOLOR=\"%s\">" \ | |
1175 | - "%s %s %d</TH></TR>\n",GREY,msg_mtot_ms,l_month[cur_month-1],cur_year); | |
1176 | + "%s %s %d</TH></TR>\n",GREY,msg_mtot_ms,Q_(l_month[cur_month-1]),cur_year); | |
1177 | fprintf(out_fp,"<TR><TH HEIGHT=4></TH></TR>\n"); | |
1178 | /* Total Hits */ | |
1179 | fprintf(out_fp,"<TR><TD WIDTH=380><FONT SIZE=\"-1\">%s</FONT></TD>\n" \ | |
1180 | @@ -694,7 +694,7 @@ | |
1181 | /* Daily statistics for ... */ | |
1182 | fprintf(out_fp,"<TR><TH BGCOLOR=\"%s\" COLSPAN=%d ALIGN=center>" \ | |
1183 | "%s %s %d</TH></TR>\n", | |
1184 | - GREY,(dump_inout==0)?13:17,msg_dtot_ds,l_month[cur_month-1], cur_year); | |
1185 | + GREY,(dump_inout==0)?13:17,msg_dtot_ds,Q_(l_month[cur_month-1]), cur_year); | |
1186 | fprintf(out_fp,"<TR><TH HEIGHT=4></TH></TR>\n"); | |
1187 | fprintf(out_fp,"<TR><TH ALIGN=center BGCOLOR=\"%s\">" \ | |
1188 | "<FONT SIZE=\"-1\">%s</FONT></TH>\n" \ | |
1189 | @@ -807,7 +807,7 @@ | |
1190 | fprintf(out_fp,"<TR><TH HEIGHT=4></TH></TR>\n"); | |
1191 | fprintf(out_fp,"<TR><TH BGCOLOR=\"%s\" COLSPAN=%d ALIGN=center>"\ | |
1192 | "%s %s %d</TH></TR>\n", | |
1193 | - GREY,(dump_inout==0)?13:19,msg_htot_hs,l_month[cur_month-1], cur_year); | |
1194 | + GREY,(dump_inout==0)?13:19,msg_htot_hs,Q_(l_month[cur_month-1]), cur_year); | |
1195 | fprintf(out_fp,"<TR><TH HEIGHT=4></TH></TR>\n"); | |
1196 | fprintf(out_fp,"<TR><TH ALIGN=center ROWSPAN=2 BGCOLOR=\"%s\">" \ | |
1197 | "<FONT SIZE=\"-1\">%s</FONT></TH>\n" \ | |
1198 | @@ -1085,7 +1085,7 @@ | |
1199 | if ( (out_fp=open_out_file(site_fname))==NULL ) return 0; | |
1200 | ||
1201 | snprintf(buffer,sizeof(buffer),"%s %d - %s", | |
1202 | - l_month[cur_month-1],cur_year,msg_h_sites); | |
1203 | + Q_(l_month[cur_month-1]),cur_year,msg_h_sites); | |
1204 | write_html_head(buffer, out_fp); | |
1205 | ||
1206 | fprintf(out_fp,"<FONT SIZE=\"-1\"></CENTER><PRE>\n"); | |
1207 | @@ -1344,7 +1344,7 @@ | |
1208 | if ( (out_fp=open_out_file(url_fname))==NULL ) return 0; | |
1209 | ||
1210 | snprintf(buffer,sizeof(buffer),"%s %d - %s", | |
1211 | - l_month[cur_month-1],cur_year,msg_h_url); | |
1212 | + Q_(l_month[cur_month-1]),cur_year,msg_h_url); | |
1213 | write_html_head(buffer, out_fp); | |
1214 | ||
1215 | fprintf(out_fp,"<FONT SIZE=\"-1\"></CENTER><PRE>\n"); | |
1216 | @@ -1644,7 +1644,7 @@ | |
1217 | if ( (out_fp=open_out_file(ref_fname))==NULL ) return 0; | |
1218 | ||
1219 | snprintf(buffer,sizeof(buffer),"%s %d - %s", | |
1220 | - l_month[cur_month-1],cur_year,msg_h_ref); | |
1221 | + Q_(l_month[cur_month-1]),cur_year,msg_h_ref); | |
1222 | write_html_head(buffer, out_fp); | |
1223 | ||
1224 | fprintf(out_fp,"<FONT SIZE=\"-1\"></CENTER><PRE>\n"); | |
1225 | @@ -1798,7 +1798,7 @@ | |
1226 | if ( (out_fp=open_out_file(agent_fname))==NULL ) return 0; | |
1227 | ||
1228 | snprintf(buffer,sizeof(buffer),"%s %d - %s", | |
1229 | - l_month[cur_month-1],cur_year,msg_h_agent); | |
1230 | + Q_(l_month[cur_month-1]),cur_year,msg_h_agent); | |
1231 | write_html_head(buffer, out_fp); | |
1232 | ||
1233 | fprintf(out_fp,"<FONT SIZE=\"-1\"></CENTER><PRE>\n"); | |
1234 | @@ -1934,7 +1934,7 @@ | |
1235 | if ( (out_fp=open_out_file(search_fname))==NULL ) return 0; | |
1236 | ||
1237 | snprintf(buffer,sizeof(buffer),"%s %d - %s", | |
1238 | - l_month[cur_month-1],cur_year,msg_h_search); | |
1239 | + Q_(l_month[cur_month-1]),cur_year,msg_h_search); | |
1240 | write_html_head(buffer, out_fp); | |
1241 | ||
1242 | fprintf(out_fp,"<FONT SIZE=\"-1\"></CENTER><PRE>\n"); | |
1243 | @@ -2098,7 +2098,7 @@ | |
1244 | if ( (out_fp=open_out_file(user_fname))==NULL ) return 0; | |
1245 | ||
1246 | snprintf(buffer,sizeof(buffer),"%s %d - %s", | |
1247 | - l_month[cur_month-1],cur_year,msg_h_uname); | |
1248 | + Q_(l_month[cur_month-1]),cur_year,msg_h_uname); | |
1249 | write_html_head(buffer, out_fp); | |
1250 | ||
1251 | fprintf(out_fp,"<FONT SIZE=\"-1\"></CENTER><PRE>\n"); | |
1252 | @@ -2226,7 +2226,7 @@ | |
1253 | if (geo_ctry[0]=='-') | |
1254 | { | |
1255 | if (debug_mode) | |
1256 | - fprintf(stderr,"GeoDB: %s unknown!\n",hptr->string); | |
1257 | + fprintf(stderr,_("GeoDB: %s unknown!\n"),hptr->string); | |
1258 | } | |
1259 | else idx=ctry_idx(geo_ctry); | |
1260 | } | |
1261 | @@ -2239,7 +2239,7 @@ | |
1262 | if (geo_rc==NULL||geo_rc[0]=='\0'||geo_rc[0]=='-') | |
1263 | { | |
1264 | if (debug_mode) | |
1265 | - fprintf(stderr,"GeoIP: %s unknown (returns '%s')\n", | |
1266 | + fprintf(stderr,_("GeoIP: %s unknown (returns '%s')\n"), | |
1267 | hptr->string,(geo_rc==NULL)?"null":geo_rc); | |
1268 | } | |
1269 | else | |
1270 | @@ -2321,10 +2321,10 @@ | |
1271 | for (i=0;i<j;i++) | |
1272 | { | |
1273 | pie_data[i]=top_ctrys[i]->count; /* load the array */ | |
1274 | - pie_legend[i]=top_ctrys[i]->desc; | |
1275 | + pie_legend[i]=_(top_ctrys[i]->desc); | |
1276 | } | |
1277 | snprintf(pie_title,sizeof(pie_title),"%s %s %d", | |
1278 | - msg_ctry_use,l_month[cur_month-1],cur_year); | |
1279 | + msg_ctry_use,Q_(l_month[cur_month-1]),cur_year); | |
1280 | sprintf(pie_fname,"ctry_usage_%04d%02d.png",cur_year,cur_month); | |
1281 | ||
1282 | pie_chart(pie_fname,pie_title,t_hit,pie_data,pie_legend); /* do it */ | |
1283 | @@ -2741,7 +2741,7 @@ | |
1284 | else | |
1285 | { | |
1286 | if (errno!=EEXIST && verbose) | |
1287 | - fprintf(stderr,"Error: Failed to create .htaccess file: %s\n", | |
1288 | + fprintf(stderr,_("Error: Failed to create .htaccess file: %s\n"), | |
1289 | strerror(errno)); | |
1290 | } | |
1291 | } | |
1292 | @@ -2849,10 +2849,10 @@ | |
1293 | fprintf(out_fp,"<A HREF=\"usage_%04d%02d.%s\">" \ | |
1294 | "<FONT SIZE=\"-1\">%s %d</FONT></A></TD>\n", | |
1295 | hist[i].year, hist[i].month, html_ext, | |
1296 | - s_month[hist[i].month-1], hist[i].year); | |
1297 | + Q_(s_month[hist[i].month-1]), hist[i].year); | |
1298 | else | |
1299 | fprintf(out_fp,"<FONT SIZE=\"-1\">%s %d</FONT></A></TD>\n", \ | |
1300 | - s_month[hist[i].month-1], hist[i].year); | |
1301 | + Q_(s_month[hist[i].month-1]), hist[i].year); | |
1302 | ||
1303 | fprintf(out_fp,"<TD ALIGN=right><FONT SIZE=\"-1\">%llu</FONT></TD>\n", | |
1304 | hist[i].hit/days_in_month); | |
1305 | Index: webalizer/update_po.sh | |
1306 | =================================================================== | |
1307 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | |
1308 | +++ webalizer/update_po.sh 2011-01-07 19:13:13.000000000 +0100 | |
1309 | @@ -0,0 +1,9 @@ | |
1310 | +# 7. Created webalizer.pot file with the follow command: | |
1311 | + xgettext --default-domain=webalizer --directory=. -o po/webalizer.pot \ | |
1312 | + --language=C --add-comments="TRANS:" --escape --sort-by-file \ | |
1313 | + --keyword=_ --keyword=N_ --keyword=Q_ --keyword=PL_:1,2 *.c *.h | |
1314 | +# 8. Merged old .po files. | |
1315 | + for i in po/*.po;do echo -n $i;msgmerge -U $i po/webalizer.pot;done; | |
1316 | + rm -f po/*.po~; | |
1317 | + | |
1318 | + | |
1319 | Index: webalizer/webalizer.c | |
1320 | =================================================================== | |
1321 | --- webalizer.orig/webalizer.c 2011-01-07 19:12:51.000000000 +0100 | |
1322 | +++ webalizer/webalizer.c 2011-01-07 19:13:13.000000000 +0100 | |
1323 | @@ -86,7 +86,7 @@ | |
1324 | #include "preserve.h" | |
1325 | #include "hashtab.h" | |
1326 | #include "linklist.h" | |
1327 | -#include "webalizer_lang.h" /* lang. support */ | |
1328 | +#include "lang2.h" /* lang. support */ | |
1329 | #ifdef USE_DNS | |
1330 | #include "dns_resolv.h" | |
1331 | #endif | |
1332 | @@ -96,7 +96,7 @@ | |
1333 | void clear_month(); /* clear monthly stuff */ | |
1334 | char *unescape(char *); /* unescape URLs */ | |
1335 | void print_opts(char *); /* print options */ | |
1336 | -void print_version(); /* duhh... */ | |
1337 | +void print_version(char * locale); /* duhh... */ | |
1338 | int isurlchar(unsigned char, int); /* valid URL char fnc. */ | |
1339 | void get_config(char *); /* Read a config file */ | |
1340 | static char *save_opt(char *); /* save conf option */ | |
1341 | @@ -299,6 +299,7 @@ | |
1342 | ||
1343 | time_t start_time, end_time; /* program timers */ | |
1344 | float temp_time; /* temporary time storage */ | |
1345 | + char *current_locale; | |
1346 | ||
1347 | int rec_year,rec_month=1,rec_day,rec_hour,rec_min,rec_sec; | |
1348 | ||
1349 | @@ -317,10 +318,16 @@ | |
1350 | ||
1351 | /* stat struct for files */ | |
1352 | struct stat log_stat; | |
1353 | + current_locale = setlocale (LC_ALL, ""); | |
1354 | + bindtextdomain ("webalizer", DATADIR"/locale"); | |
1355 | + textdomain ("webalizer"); | |
1356 | ||
1357 | /* Assume that LC_CTYPE is what the user wants for non-ASCII chars */ | |
1358 | setlocale(LC_CTYPE,""); | |
1359 | ||
1360 | + /* Initialise report_title with the default localized value */ | |
1361 | + report_title = msg_title; | |
1362 | + | |
1363 | /* initalize epoch */ | |
1364 | epoch=jdate(1,1,1970); /* used for timestamp adj. */ | |
1365 | ||
1366 | @@ -377,12 +384,12 @@ | |
1367 | case 'R': ntop_refs=atoi(optarg); break; /* Top referrers */ | |
1368 | case 's': add_nlist(optarg,&hidden_sites); break; /* Hide site */ | |
1369 | case 'S': ntop_sites=atoi(optarg); break; /* Top sites */ | |
1370 | - case 't': msg_title=optarg; break; /* Report title */ | |
1371 | + case 't': report_title=optarg; break; /* Report title */ | |
1372 | case 'T': time_me=1; break; /* TimeMe */ | |
1373 | case 'u': add_nlist(optarg,&hidden_urls); break; /* hide URL */ | |
1374 | case 'U': ntop_urls=atoi(optarg); break; /* Top urls */ | |
1375 | case 'v': verbose=2; debug_mode=1; break; /* Verbose */ | |
1376 | - case 'V': print_version(); break; /* Version */ | |
1377 | + case 'V': print_version(current_locale); break; /* Version */ | |
1378 | #ifdef USE_GEOIP | |
1379 | case 'w': geoip=1; break; /* Enable GeoIP */ | |
1380 | case 'W': geoip_db=optarg; break; /* GeoIP database name */ | |
1381 | @@ -482,9 +489,9 @@ | |
1382 | if (verbose>1) | |
1383 | { | |
1384 | uname(&system_info); | |
1385 | - printf("Webalizer V%s-%s (%s %s %s) %s\n", version,editlvl, | |
1386 | + printf("Webalizer V%s-%s (%s %s %s) %s: %s\n", version,editlvl, | |
1387 | system_info.sysname, system_info.release, | |
1388 | - system_info.machine,language); | |
1389 | + system_info.machine, _("locale"), current_locale); | |
1390 | } | |
1391 | ||
1392 | #ifndef USE_DNS | |
1393 | @@ -697,7 +704,7 @@ | |
1394 | total_rec++; | |
1395 | if (strlen(buffer) == (BUFSIZE-1)) | |
1396 | { | |
1397 | - if (verbose) | |
1398 | + if (verbose>1) | |
1399 | { | |
1400 | fprintf(stderr,"%s",msg_big_rec); | |
1401 | if (debug_mode) fprintf(stderr,":\n%s",buffer); | |
1402 | @@ -1728,7 +1735,7 @@ | |
1403 | { | |
1404 | case 1: out_dir=save_opt(value); break; /* OutputDir */ | |
1405 | case 2: log_fname=save_opt(value); break; /* LogFile */ | |
1406 | - case 3: msg_title=save_opt(value); break; /* ReportTitle */ | |
1407 | + case 3: report_title=save_opt(value); break; /* ReportTitle */ | |
1408 | case 4: hname=save_opt(value); break; /* HostName */ | |
1409 | case 5: ignore_hist= | |
1410 | (tolower(value[0])=='y')?1:0; break; /* IgnoreHist */ | |
1411 | @@ -1989,7 +1996,7 @@ | |
1412 | int i; | |
1413 | ||
1414 | printf("%s: %s %s\n",h_usage1,pname,h_usage2); | |
1415 | - for (i=0;h_msg[i];i++) printf("%s\n",h_msg[i]); | |
1416 | + for (i=0;h_msg[i];i++) printf("%s\n",_(h_msg[i])); | |
1417 | exit(1); | |
1418 | } | |
1419 | ||
1420 | @@ -1997,7 +2004,7 @@ | |
1421 | /* PRINT_VERSION */ | |
1422 | /*********************************************/ | |
1423 | ||
1424 | -void print_version() | |
1425 | +void print_version(char *locale) | |
1426 | { | |
1427 | char buf[128]=""; | |
1428 | uname(&system_info); | |
1429 | @@ -2005,7 +2012,7 @@ | |
1430 | printf("Webalizer V%s-%s (%s %s %s) %s\n%s\n", | |
1431 | version,editlvl, | |
1432 | system_info.sysname,system_info.release,system_info.machine, | |
1433 | - language,copyright); | |
1434 | + _("locale"),copyright); | |
1435 | ||
1436 | #ifdef USE_DNS | |
1437 | strncpy(&buf[strlen(buf)],"DNS/GeoDB ",11); | |
1438 | @@ -2024,9 +2031,9 @@ | |
1439 | else printf("none"); | |
1440 | printf("\n"); | |
1441 | #if USE_DNS | |
1442 | - printf("Default GeoDB dir : %s\n",GEODB_LOC); | |
1443 | + printf(_("Default GeoDB dir : %s\n"),GEODB_LOC); | |
1444 | #endif | |
1445 | - printf("Default config dir: %s\n",ETCDIR); | |
1446 | + printf(_("Default config dir: %s\n"),ETCDIR); | |
1447 | printf("\n"); | |
1448 | } | |
1449 | else printf("\n"); | |
1450 | @@ -2532,3 +2539,33 @@ | |
1451 | ||
1452 | return(days+5); | |
1453 | } | |
1454 | + | |
1455 | +/*****************************************************************/ | |
1456 | +/* */ | |
1457 | +/* intl_strip_context - Strip Context in gettext */ | |
1458 | +/* */ | |
1459 | +/* Strip "|" string from a string that will be translated */ | |
1460 | +/* */ | |
1461 | +/* Originally copied from gettext info page. */ | |
1462 | +/* Returns a translated string witout nothing before the first */ | |
1463 | +/* "|" character. */ | |
1464 | +/* */ | |
1465 | +/* Usage: string = intl_strip_context(string) */ | |
1466 | +/* Or: string = Q_(string) */ | |
1467 | +/* */ | |
1468 | +/* This function is useful to help translation of strings like */ | |
1469 | +/* month "May" that its forms is equal in Short and Long */ | |
1470 | +/*****************************************************************/ | |
1471 | + | |
1472 | +char *intl_strip_context (const char *msgid) | |
1473 | +{ | |
1474 | + char *msgval = gettext (msgid); | |
1475 | + char *pipe; | |
1476 | + | |
1477 | + pipe = strchr(msgval, '|'); | |
1478 | + if (pipe != NULL) | |
1479 | + return (char*)(pipe + 1); | |
1480 | + | |
1481 | + return (char*)msgval; | |
1482 | +} | |
1483 | + | |
1484 | Index: webalizer/webalizer.h | |
1485 | =================================================================== | |
1486 | --- webalizer.orig/webalizer.h 2011-01-07 19:12:31.000000000 +0100 | |
1487 | +++ webalizer/webalizer.h 2011-01-07 19:13:13.000000000 +0100 | |
1488 | @@ -301,7 +301,7 @@ | |
1489 | extern char pie_color3[]; /* pie additionnal color 3 */ | |
1490 | extern char pie_color4[]; /* pie additionnal color 4 */ | |
1491 | ||
1492 | -/* define our externally visable functions */ | |
1493 | +/* define our externally visible functions */ | |
1494 | ||
1495 | extern char *cur_time(); | |
1496 | extern u_int64_t ctry_idx(char *); | |
1497 | @@ -311,5 +311,6 @@ | |
1498 | extern u_int64_t jdate(int,int,int); | |
1499 | extern char from_hex(char); | |
1500 | extern int isipaddr(char *); | |
1501 | +extern char *intl_strip_context(); | |
1502 | ||
1503 | #endif /* _WEBALIZER_H */ |