[DEV] continue removing stl
This commit is contained in:
parent
0eee1350df
commit
64c33467e1
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user