excel_to_json java工程下载:https://github.com/Mr-Zhong/Excel2Json.git
项目中多语言配置中,将如下表格转成4个.json:
lng_de_or_str.json
lng_zh-Hans_or_str.json
lng_zh-Hant_or_str.json
lng_en_or_str.json
1.new project
2.将excel_to_json项目下的bin,libs,lng.xls,src文件替换掉你新建的项目中去。
3.将libs下 .jar导入
4.然后运行就可以得到对应的多语言.json文件.
5.代码
std::map<t_string, tv_string > m_setStrRes;
void readJson(std::string jsonStr)
{
//读取的多语言
rapidjson::Document doc;
if(loadLanguageRes("str.json",doc, true))//该函数在前面的文章中《项目整理一.cfg》
{
m_setStrRes.clear();
rapidjson::Value& v_pt=doc;
if(v_pt.IsObject())
{
for (auto it = v_pt.MemberonBegin(); it != v_pt.MemberonEnd(); ++it)
{
t_string fold = it->name.GetString();
rapidjson::Value& v_fold= it->value;
for (auto it_key = v_fold.MemberonBegin(); it_key != v_fold.MemberonEnd(); ++it_key)
{
t_string key = it_key->name.GetString();
if(it_key->value.IsArray())
{
rapidjson::SizeType nSize = it_key->value.Size();
for (rapidjson::SizeType i=0; i<nSize; ++i)
{
addStringRes(fold, key, MGF_Helper::json_getString(it_key->value[i]) );
}
}else if(it_key->value.IsString())
{
t_string v = it_key->value.GetString();
addStringRes(fold, key, v );
}
}
}
}
}
void addStringRes(const t_string& strFold, const t_string& strKey, const t_string& strV)
{
if(strFold == "" || strKey == "")
{
mgf_log("add string res fold or key is null");
return ;
}
t_string tmpV = strV;
MGF_Helper::string_replace(tmpV, "\n", "\\n");
t_string key = strFold+strKey;
std::map<t_string, tv_string >::iterator it = m_setStrRes.find(key);
if(it != m_setStrRes.end())
{
tv_string& v = it->second;
v.push_back(tmpV);
}else
{
tv_string v ;
v.push_back(tmpV);
m_setStrRes.insert(make_pair(key, v));
}
}
t_string getStringRes(const t_string& strFold, const t_string& strKey, const t_string& strDefault)
{
t_string ret;
if(strFold != "" && strKey != "")
{
t_string key = strFold+strKey;
std::map<t_string, tv_string >::iterator it = m_setStrRes.find(key);
if(it != m_setStrRes.end())
{
tv_string& v = it->second;
if(v.size() == 1)
{
ret = v[0];
}else if(v.size() > 1)
{
int n = MGF_Helper::rndInt(0, v.size()-1);
ret = v[n];
}
}
}
if(""!= ret)
{
return ret;
}else
if("" == strDefault )
{
return strKey;
}
return strDefault;
}
6.调用
pLab_txt->setString(getStringRes("view", "title"));