C program example
- Sample codes for C Language to show deference between non-I18N and I18n.
 - Simple application to get string from prompt and show that character-length with current date.
 
#define _(String) gettext(String) 
#define N_(String) (String) 
int
main (int argc, char *argv[])
{
    
  //char instr[256];
  wchar_t instr[256];
  
  FILE *infp = stdin; 
  
  time_t t;
  struct tm* TM;
  
  char tstr[256];
  ...
setlocale(LC_ALL ,"");
bindtextdomain("sample", ".");
textdomain("sample");
//fgets(instr, 256, infp);
fgetws(instr, 256, infp);
fclose(infp);
//printf("Character length is %d\n", strlen(instr)-1);
printf(_(N_("Character length is %d\n")), wcslen(instr)-1);
...
t= time(NULL);
TM = localtime(&t);
strftime(tstr, sizeof(tstr), nl_langinfo(D_T_FMT), TM);
//printf("Current Date is %s\n", tstr);
printf(_(N_("Current Date is %s\n")), tstr);
return 0;
}
Result of execution:
***Non-I18n***
  export LANG=en_US.UTF-8
  aaa
  Character length is  3
  Current Date is  Tue Dec  4 16:51:20 2007
  export LANG=ja_JP.UTF-8
 あああ
   Character length is  9
  Current Date is  Tue Dec  4 16:53:00 2007
***I18N***
 export LANG=en_US.UTF-8
 aaa
 Character length is  3
 Current Date is  Tue 04 Dec 2007 04:54:45 PM JST
 export LANG=ja_JP.UTF-8 
 あああ
 文字数は  3
 現在の日付は  2007年12月04日 16時55分38秒