[DEV] continue removing stl

This commit is contained in:
Edouard DUPIN 2017-08-28 00:05:36 +02:00
parent 0eee1350df
commit 64c33467e1
2 changed files with 46 additions and 46 deletions

View File

@ -6,18 +6,18 @@
#include <etranslate/debug.hpp> #include <etranslate/debug.hpp>
#include <etranslate/etranslate.hpp> #include <etranslate/etranslate.hpp>
#include <map> #include <etk/Map.hpp>
#include <etk/os/FSNode.hpp> #include <etk/os/FSNode.hpp>
#include <ejson/ejson.hpp> #include <ejson/ejson.hpp>
class LocalInstanceTranslation { class LocalInstanceTranslation {
private: private:
std::map<std::string,std::string> m_listPath; etk::Map<etk::String,etk::String> m_listPath;
std::string m_major; etk::String m_major;
std::string m_languageDefault; etk::String m_languageDefault;
std::string m_language; etk::String m_language;
bool m_translateLoadad; bool m_translateLoadad;
std::map<std::string,std::string> m_translate; etk::Map<etk::String,etk::String> m_translate;
public: public:
LocalInstanceTranslation() : LocalInstanceTranslation() :
m_major("etranslate"), m_major("etranslate"),
@ -27,7 +27,7 @@ class LocalInstanceTranslation {
// nothing to do ... // nothing to do ...
} }
public: public:
void addPath(const std::string& _lib, const std::string& _path, bool _major) { void addPath(const etk::String& _lib, const etk::String& _path, bool _major) {
auto it = m_listPath.find(_lib); auto it = m_listPath.find(_lib);
if (it == m_listPath.end()) { if (it == m_listPath.end()) {
m_listPath.insert(make_pair(_lib, _path)); m_listPath.insert(make_pair(_lib, _path));
@ -42,16 +42,16 @@ class LocalInstanceTranslation {
m_translate.clear(); m_translate.clear();
}; };
const std::string& getPaths(const std::string& _lib) { const etk::String& getPaths(const etk::String& _lib) {
auto it = m_listPath.find(_lib); auto it = m_listPath.find(_lib);
if (it == m_listPath.end()) { if (it == m_listPath.end()) {
static const std::string g_error(""); static const etk::String g_error("");
return g_error; return g_error;
} }
return it->second; return it->second;
}; };
void setLanguageDefault(const std::string& _lang) { void setLanguageDefault(const etk::String& _lang) {
if (m_languageDefault == _lang) { if (m_languageDefault == _lang) {
return; return;
} }
@ -61,11 +61,11 @@ class LocalInstanceTranslation {
m_translate.clear(); m_translate.clear();
}; };
const std::string& getLanguageDefault() { const etk::String& getLanguageDefault() {
return m_languageDefault; return m_languageDefault;
}; };
void setLanguage(const std::string& _lang) { void setLanguage(const etk::String& _lang) {
if (m_language == _lang) { if (m_language == _lang) {
return; return;
} }
@ -97,29 +97,29 @@ class LocalInstanceTranslation {
} }
}; };
const std::string& getLanguage() { const etk::String& getLanguage() {
return m_language; return m_language;
}; };
std::string get(const std::string& _instance) { etk::String get(const etk::String& _instance) {
loadTranslation(); loadTranslation();
ETRANSLATE_VERBOSE("Request translate: '" << _instance << "'"); ETRANSLATE_VERBOSE("Request translate: '" << _instance << "'");
// find all iterance of '_T{' ... '}' // find all iterance of '_T{' ... '}'
std::string out; etk::String out;
auto itOld = _instance.begin(); auto itOld = _instance.begin();
size_t pos = _instance.find("_T{"); size_t pos = _instance.find("_T{");
while (pos != std::string::npos) { while (pos != etk::String::npos) {
out.append(itOld, _instance.begin() + pos); out.append(itOld, _instance.begin() + pos);
auto it = _instance.begin() + pos + 3; auto it = _instance.begin() + pos + 3;
itOld = it; itOld = it;
pos = _instance.find("}", pos); pos = _instance.find("}", pos);
if (pos == std::string::npos) { if (pos == etk::String::npos) {
ETRANSLATE_WARNING("missing end translation '}' in: '" << _instance << "'"); ETRANSLATE_WARNING("missing end translation '}' in: '" << _instance << "'");
it = _instance.end(); it = _instance.end();
} else { } else {
it = _instance.begin() + pos; it = _instance.begin() + pos;
} }
std::string basicEmptyValue = std::string(itOld, it); etk::String basicEmptyValue = etk::String(itOld, it);
auto itTranslate = m_translate.find(basicEmptyValue); auto itTranslate = m_translate.find(basicEmptyValue);
if (itTranslate == m_translate.end()) { if (itTranslate == m_translate.end()) {
ETRANSLATE_DEBUG("Can not find tranlation : '" << _instance << "'"); ETRANSLATE_DEBUG("Can not find tranlation : '" << _instance << "'");
@ -149,17 +149,17 @@ class LocalInstanceTranslation {
// start parse language for Major: // start parse language for Major:
auto itMajor = m_listPath.find(m_major); auto itMajor = m_listPath.find(m_major);
if (itMajor != m_listPath.end()) { if (itMajor != m_listPath.end()) {
std::string filename(itMajor->second + "/" + m_language + ".json"); etk::String filename(itMajor->second + "/" + m_language + ".json");
ejson::Document doc; ejson::Document doc;
doc.load(filename); doc.load(filename);
for (auto element : doc.getKeys()) { for (auto element : doc.getKeys()) {
std::string val = doc[element].toString().get(); etk::String val = doc[element].toString().get();
m_translate.insert(make_pair(element, val)); m_translate.insert(make_pair(element, val));
} }
filename = itMajor->second + "/" + m_languageDefault + ".json"; filename = itMajor->second + "/" + m_languageDefault + ".json";
doc.load(filename); doc.load(filename);
for (auto element : doc.getKeys()) { for (auto element : doc.getKeys()) {
std::string val = doc[element].toString().get(); etk::String val = doc[element].toString().get();
auto itTrans = m_translate.find(element); auto itTrans = m_translate.find(element);
if (itTrans == m_translate.end()) { if (itTrans == m_translate.end()) {
m_translate.insert(make_pair(element, val)); m_translate.insert(make_pair(element, val));
@ -171,14 +171,14 @@ class LocalInstanceTranslation {
if (it.first == m_major) { if (it.first == m_major) {
continue; continue;
} }
std::string filename(it.second + "/" + m_languageDefault + ".json"); etk::String filename(it.second + "/" + m_languageDefault + ".json");
if (etk::FSNodeExist(filename) == false) { if (etk::FSNodeExist(filename) == false) {
continue; continue;
} }
ejson::Document doc; ejson::Document doc;
doc.load(filename); doc.load(filename);
for (auto element : doc.getKeys()) { for (auto element : doc.getKeys()) {
std::string val = doc[element].toString().get(); etk::String val = doc[element].toString().get();
auto itTrans = m_translate.find(element); auto itTrans = m_translate.find(element);
if (itTrans == m_translate.end()) { if (itTrans == m_translate.end()) {
m_translate.insert(make_pair(element, val)); m_translate.insert(make_pair(element, val));
@ -190,14 +190,14 @@ class LocalInstanceTranslation {
if (it.first == m_major) { if (it.first == m_major) {
continue; continue;
} }
std::string filename(it.second + "/" + m_languageDefault + ".json"); etk::String filename(it.second + "/" + m_languageDefault + ".json");
if (etk::FSNodeExist(filename) == false) { if (etk::FSNodeExist(filename) == false) {
continue; continue;
} }
ejson::Document doc; ejson::Document doc;
doc.load(filename); doc.load(filename);
for (auto element : doc.getKeys()) { for (auto element : doc.getKeys()) {
std::string val = doc[element].toString().get(); etk::String val = doc[element].toString().get();
auto itTrans = m_translate.find(element); auto itTrans = m_translate.find(element);
if (itTrans == m_translate.end()) { if (itTrans == m_translate.end()) {
m_translate.insert(make_pair(element, val)); m_translate.insert(make_pair(element, val));
@ -221,7 +221,7 @@ void etranslate::init(int _argc, const char** _argv) {
} }
ETRANSLATE_INFO("E-translate system init"); ETRANSLATE_INFO("E-translate system init");
for (int32_t iii=0; iii<_argc ; ++iii) { for (int32_t iii=0; iii<_argc ; ++iii) {
std::string data = _argv[iii]; etk::String data = _argv[iii];
if ( data == "-h" if ( data == "-h"
|| data == "--help") { || data == "--help") {
ETRANSLATE_PRINT("e-translate - help : "); ETRANSLATE_PRINT("e-translate - help : ");
@ -246,42 +246,42 @@ void etranslate::unInit() {
ETRANSLATE_ERROR("E-translate system un-init (already done before)"); ETRANSLATE_ERROR("E-translate system un-init (already done before)");
} }
void etranslate::addPath(const std::string& _lib, const std::string& _path, bool _major) { void etranslate::addPath(const etk::String& _lib, const etk::String& _path, bool _major) {
if (g_isInit <= 0) { if (g_isInit <= 0) {
ETRANSLATE_ERROR("E-translate system has not been init"); ETRANSLATE_ERROR("E-translate system has not been init");
} }
getInstanceTranslation().addPath(_lib, _path, _major); getInstanceTranslation().addPath(_lib, _path, _major);
} }
const std::string& etranslate::getPaths(const std::string& _lib) { const etk::String& etranslate::getPaths(const etk::String& _lib) {
if (g_isInit <= 0) { if (g_isInit <= 0) {
ETRANSLATE_ERROR("E-translate system has not been init"); ETRANSLATE_ERROR("E-translate system has not been init");
} }
return getInstanceTranslation().getPaths(_lib); return getInstanceTranslation().getPaths(_lib);
} }
void etranslate::setLanguageDefault(const std::string& _lang) { void etranslate::setLanguageDefault(const etk::String& _lang) {
if (g_isInit <= 0) { if (g_isInit <= 0) {
ETRANSLATE_ERROR("E-translate system has not been init"); ETRANSLATE_ERROR("E-translate system has not been init");
} }
getInstanceTranslation().setLanguageDefault(_lang); getInstanceTranslation().setLanguageDefault(_lang);
} }
const std::string& etranslate::getLanguageDefault() { const etk::String& etranslate::getLanguageDefault() {
if (g_isInit <= 0) { if (g_isInit <= 0) {
ETRANSLATE_ERROR("E-translate system has not been init"); ETRANSLATE_ERROR("E-translate system has not been init");
} }
return getInstanceTranslation().getLanguageDefault(); return getInstanceTranslation().getLanguageDefault();
} }
void etranslate::setLanguage(const std::string& _lang) { void etranslate::setLanguage(const etk::String& _lang) {
if (g_isInit <= 0) { if (g_isInit <= 0) {
ETRANSLATE_ERROR("E-translate system has not been init"); ETRANSLATE_ERROR("E-translate system has not been init");
} }
getInstanceTranslation().setLanguage(_lang); getInstanceTranslation().setLanguage(_lang);
} }
const std::string& etranslate::getLanguage() { const etk::String& etranslate::getLanguage() {
if (g_isInit <= 0) { if (g_isInit <= 0) {
ETRANSLATE_ERROR("E-translate system has not been init"); ETRANSLATE_ERROR("E-translate system has not been init");
} }
@ -293,9 +293,9 @@ void etranslate::autoDetectLanguage() {
ETRANSLATE_ERROR("E-translate system has not been init"); ETRANSLATE_ERROR("E-translate system has not been init");
} }
ETRANSLATE_VERBOSE("Auto-detect language of system"); ETRANSLATE_VERBOSE("Auto-detect language of system");
std::string nonameLocalName; etk::String nonameLocalName;
std::string userLocalName; etk::String userLocalName;
std::string globalLocalName; etk::String globalLocalName;
try { try {
nonameLocalName = std::locale(std::locale(), new std::ctype<char>).name(); nonameLocalName = std::locale(std::locale(), new std::ctype<char>).name();
userLocalName = std::locale("").name(); userLocalName = std::locale("").name();
@ -309,7 +309,7 @@ void etranslate::autoDetectLanguage() {
userLocalName = "EN"; userLocalName = "EN";
globalLocalName = "EN"; globalLocalName = "EN";
} }
std::string lang = nonameLocalName; etk::String lang = nonameLocalName;
if ( lang == "*" if ( lang == "*"
|| lang == "") { || lang == "") {
lang = userLocalName; lang = userLocalName;
@ -323,7 +323,7 @@ void etranslate::autoDetectLanguage() {
|| lang.size() < 2) { || lang.size() < 2) {
lang = "EN"; lang = "EN";
} }
lang = std::string(lang.begin(), lang.begin()+2); lang = etk::String(lang.begin(), lang.begin()+2);
lang = etk::toupper(lang); lang = etk::toupper(lang);
ETRANSLATE_INFO("Select Language : '" << lang << "'"); ETRANSLATE_INFO("Select Language : '" << lang << "'");
getInstanceTranslation().setLanguage(lang); getInstanceTranslation().setLanguage(lang);
@ -334,7 +334,7 @@ void etranslate::autoDetectLanguage() {
if (s == nullptr || strlen(s) < 2) { if (s == nullptr || strlen(s) < 2) {
ETRANSLATE_INFO("Try to determine system language FAIL ..."); ETRANSLATE_INFO("Try to determine system language FAIL ...");
} else { } else {
std::string lang; etk::String lang;
lang += s[0]; lang += s[0];
lang += s[1]; lang += s[1];
lang = etk::toupper(lang); lang = etk::toupper(lang);
@ -346,7 +346,7 @@ void etranslate::autoDetectLanguage() {
#endif #endif
} }
std::string etranslate::get(const std::string& _instance) { etk::String etranslate::get(const etk::String& _instance) {
return getInstanceTranslation().get(_instance); return getInstanceTranslation().get(_instance);
} }

View File

@ -39,33 +39,33 @@ namespace etranslate {
* @param[in] _path ETK generic path (DATA:... or /xxx) * @param[in] _path ETK generic path (DATA:... or /xxx)
* @param[in] _major This path is the major path (The last loaded, the one which overload all) * @param[in] _major This path is the major path (The last loaded, the one which overload all)
*/ */
void addPath(const std::string& _lib, const std::string& _path, bool _major = false); void addPath(const etk::String& _lib, const etk::String& _path, bool _major = false);
/** /**
* @brief Get the current paths of the library * @brief Get the current paths of the library
* @param[in] _lib Library name that the path depend * @param[in] _lib Library name that the path depend
* @return Path name. * @return Path name.
*/ */
const std::string& getPaths(const std::string& _lib); const etk::String& getPaths(const etk::String& _lib);
/** /**
* @brief Set the default language to load data (the default language might contain all internal data for the basic application) * @brief Set the default language to load data (the default language might contain all internal data for the basic application)
* @param[in] _lang Language to load : ("EN" for english, "FR" for french, "DE" for German, "SP" for spanish ...) * @param[in] _lang Language to load : ("EN" for english, "FR" for french, "DE" for German, "SP" for spanish ...)
*/ */
void setLanguageDefault(const std::string& _lang); void setLanguageDefault(const etk::String& _lang);
/** /**
* @brief Get the current language selected * @brief Get the current language selected
* @return The 2/3 char defining the language * @return The 2/3 char defining the language
*/ */
const std::string& getLanguageDefault(); const etk::String& getLanguageDefault();
/** /**
* @brief Set the language to load data. when no data availlable, we get the default language. * @brief Set the language to load data. when no data availlable, we get the default language.
* @param[in] _lang Language to load : ("EN" for english, "FR" for french, "DE" for German, "SP" for spanish ...) * @param[in] _lang Language to load : ("EN" for english, "FR" for french, "DE" for German, "SP" for spanish ...)
*/ */
void setLanguage(const std::string& _lang); void setLanguage(const etk::String& _lang);
/** /**
* @brief Get the current language loaded * @brief Get the current language loaded
* @return The 2/3 char defining the language * @return The 2/3 char defining the language
*/ */
const std::string& getLanguage(); const etk::String& getLanguage();
/** /**
* @brief Automatic detection of the system language * @brief Automatic detection of the system language
*/ */
@ -75,7 +75,7 @@ namespace etranslate {
* @param[in] _instance Text to translate. * @param[in] _instance Text to translate.
* @return The tranlated text. * @return The tranlated text.
*/ */
std::string get(const std::string& _instance); etk::String get(const etk::String& _instance);
}; };
// Here we define a simple macro to Translate all string simply: // Here we define a simple macro to Translate all string simply:
#define TRANSLATE(a) etranslate::get(a) #define TRANSLATE(a) etranslate::get(a)