diff options
Diffstat (limited to 'examples/example2.c')
-rw-r--r-- | examples/example2.c | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/examples/example2.c b/examples/example2.c new file mode 100644 index 0000000..cc4a3fa --- /dev/null +++ b/examples/example2.c @@ -0,0 +1,60 @@ +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <locale.h> + +#include <librcc.h> + + +int main(int argc, char *argv[]) { + rcc_language_id language_id, current_language_id, english_language_id; + rcc_string rccstring; + const char *language; + char buf[255]; + char *recoded; + + rcc_class classes[] = { + { "input", RCC_CLASS_STANDARD, NULL, NULL, "Input Encoding", 0 }, + { "output", RCC_CLASS_STANDARD, "LC_CTYPE", NULL, "Output Encoding", 0 }, + { NULL } + }; + + setlocale(LC_ALL, ""); + + rccInit(); + rccInitDefaultContext(NULL, 0, 0, classes, 0); + rccInitDb4(NULL, "example", 0); + rccSetOption(NULL, RCC_OPTION_TRANSLATE, 1); + +// rccExternalInit(); +// rccExternalFree(); + + current_language_id = rccGetCurrentLanguage(NULL); + english_language_id = rccGetLanguageByName(NULL, "en"); + if (argc>1) rccSetLanguageByName(NULL, argv[1]); + language_id = rccGetCurrentLanguage(NULL); + + language = rccGetCurrentLanguageName(NULL); + if (language) printf("Current Language: %s\n\n", language); + else printf("Unable Detect Language\n\n"); + + while (fgets(buf,255,stdin)) { + if (strlen(buf)<2) break; + + rccSetLanguage(NULL, language_id); + rccstring = rccFrom(NULL, 0, buf); + if (rccstring) { + rccSetLanguage(NULL, english_language_id); + recoded = rccTo(NULL, 1, rccstring); + if (recoded) { + printf(recoded); + free(recoded); + } else printf("Recoding from UTF-8 is failed\n"); + free(rccstring); + } else printf("Recoding to UTF-8 is failed\n"); + } + + rccFree(); + + return 0; +} |