| 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 */ |