Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #include <iostream>
00012 #include <fstream>
00013
00014 #include "i18n/i18n.h"
00015 #include "nstream/nstream.h"
00016 #include "perf/perf.h"
00017 #include "util/file.h"
00018
00019
00020
00021
00022
00023
00024
00025
00026 static void
00027 displayString
00028 (
00029 IN i18n::Manager * mgr,
00030 IN const char * id
00031 )
00032 throw()
00033 {
00034 ASSERT(mgr, "null");
00035 ASSERT(id, "null");
00036
00037 const char * val = mgr->getString(id);
00038 if (!val) {
00039 DPRINTF("No string found with id='%s'", id);
00040 return;
00041 }
00042
00043 DPRINTF("String[%s] = '%s'", id, val);
00044 }
00045
00046
00047
00048 static void
00049 doTest
00050 (
00051 IN const char * locale,
00052 IN const char * dir
00053 )
00054 {
00055 ASSERT(locale, "null");
00056 ASSERT(dir, "null");
00057
00058 DPRINTF("Host locale: '%s'", i18n::getHostLocale());
00059
00060 i18n::locale_t lc;
00061 i18n::getLocaleFromString(locale, lc);
00062 ASSERT_THROW(lc.isValid(), "should be valid locale!");
00063
00064 smart_ptr<i18n::Manager> mgr = i18n::Manager::create(locale);
00065 ASSERT_THROW(mgr, "failed to create i18n Manager object");
00066
00067
00068 smart_ptr<nstream::Manager> fsMgr = nstream::getFilesystemManager(dir);
00069 ASSERT(fsMgr, "null");
00070
00071 SetString extensions;
00072 extensions.insert("txt");
00073 mgr->parseFolder(fsMgr->getRoot(), &extensions);
00074
00075
00076 displayString(mgr, "id0");
00077 displayString(mgr, "id1");
00078 displayString(mgr, "xyz");
00079 displayString(mgr, "yabbadabbado");
00080 }
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090 int
00091 main
00092 (
00093 IN int argc,
00094 IN const char * argv[]
00095 )
00096 {
00097 int retval = 0;
00098 DPRINTF("Example locale: en_US.UTF-8");
00099 ASSERT(3 == argc,
00100 "Usage: i18n-test1 <locale> <dir>");
00101
00102 const char * locale = argv[1];
00103 const char * dir = argv[2];
00104 DPRINTF("Requested locale: %s", locale);
00105
00106 try {
00107 perf::Timer timer("overall timer");
00108 doTest(locale, dir);
00109
00110 } catch (std::exception& e) {
00111 DPRINTF("Exception: %s", e.what());
00112 retval = 1;
00113 }
00114
00115 perf::dumpTimingSummary(std::cerr);
00116
00117 return retval;
00118 }
00119