wonu yanga çevirirken ekranda (%s Yang'ı %s Won'a dönüştürmek ister misin?1100.000.000) yazıyor sorunu bulamadım
not : %s Yang'ı %d Won'a dönüştürmek ister misin şeklindede denedim
locale_quest fonksiyonu :
locale_quest.txt :
quest :
binary :
görsel :
not : %s Yang'ı %d Won'a dönüştürmek ister misin şeklindede denedim
locale_quest fonksiyonu :
Kod:
locale_quest = function(vnum, ...) -- LC -> locale_quest.txt
local val = ""
for i, v in ipairs(arg) do
val = val .. tostring(string.format(";%s", v))
end
return string.format("[LC;%d%s]", vnum, val)
end
locale_quest.txt :
Kod:
10041 %s Yang'ı %s Won'a dönüştürmek ister misin?
quest :
Kod:
local Cheque = tonumber(input())
say(locale_quest(10041), gold_format(GoldWithTax), Cheque)
binary :
Kod:
void CPythonLocale::ReplaceLocaleString(std::string& sMessage) const
{
while (true)
{
size_t pos_1 = sMessage.rfind("[LS;");
if (pos_1 == std::string::npos)
break;
size_t pos_2 = sMessage.find(';', pos_1);
if (pos_2 == std::string::npos)
break;
++pos_2;
size_t pos_3 = sMessage.find('[', pos_2);
size_t pos_4 = sMessage.find(']', pos_2);
if (pos_4 == std::string::npos)
break;
if (pos_3 != std::string::npos && pos_3 < pos_4)
pos_4 = sMessage.find(']', pos_4 + 1);
std::string sArgs = sMessage.substr(pos_2, pos_4 - pos_2);
CTokenVector kTokenVector;
SplitLine(sArgs.c_str(), ";", &kTokenVector);
if (kTokenVector.empty())
break;
auto it = m_LocaleStringMap[LOCALE_STRING].find(kTokenVector[0]);
if (it == m_LocaleStringMap[LOCALE_STRING].end()) {
TraceError("CPythonLocale::ReplaceLocaleString wrong LS vnum : %s", kTokenVector[0].c_str());
break;
}
if (kTokenVector.size() > 1) {
try {
boost::format f(it->second);
for (size_t i = 1; i < kTokenVector.size(); i++)
f% kTokenVector[i];
sMessage.replace(pos_1, (pos_4 + 1) - pos_1, f.str());
}
catch (const std::exception& ex) {
TraceError("CPythonLocale::ReplaceLocaleString: Error: %s", ex.what());
break;
}
}
else
sMessage.replace(pos_1, (pos_4 + 1) - pos_1, it->second);
}
}
bool CPythonLocale::LoadQuestLocaleString(const char* c_szFileName)
{
if (m_LocaleStringMap[LOCALE_QUEST_STRING].empty() == false)
return true;
const VOID* pvData;
CMappedFile kFile;
if (!CEterPackManager::Instance().Get(kFile, c_szFileName, &pvData)) {
TraceError("CPythonLocale::LoadQuestLocaleString(c_szFileName: %s) - Load Error", c_szFileName);
return false;
}
CMemoryTextFileLoader kTextFileLoader;
kTextFileLoader.Bind(kFile.Size(), pvData);
CTokenVector kTokenVector;
for (uint32_t i = 0; i < kTextFileLoader.GetLineCount(); ++i)
{
const std::string& c_rstLine = kTextFileLoader.GetLineString(i);
if (c_rstLine.empty())
continue;
if (c_rstLine[0] == '#')
continue;
if (!kTextFileLoader.SplitLineByTab(i, &kTokenVector))
continue;
if (kTokenVector.size() != 2)
continue;
m_LocaleStringMap[LOCALE_QUEST_STRING][kTokenVector[0]] = kTokenVector[1];
}
return true;
}
void CPythonLocale::ReplaceQuestLocaleString(std::string& sMessage) const
{
while (true)
{
size_t pos_1 = sMessage.rfind("[LC;");
if (pos_1 == std::string::npos)
break;
size_t pos_2 = sMessage.find(';', pos_1);
if (pos_2 == std::string::npos)
break;
++pos_2;
size_t pos_3 = sMessage.find('[', pos_2);
size_t pos_4 = sMessage.find(']', pos_2);
if (pos_4 == std::string::npos)
break;
if (pos_3 != std::string::npos && pos_3 < pos_4)
pos_4 = sMessage.find(']', pos_4 + 1);
std::string sArgs = sMessage.substr(pos_2, pos_4 - pos_2);
CTokenVector kTokenVector;
SplitLine(sArgs.c_str(), ";", &kTokenVector);
if (kTokenVector.empty())
break;
auto it = m_LocaleStringMap[LOCALE_QUEST_STRING].find(kTokenVector[0]);
if (it == m_LocaleStringMap[LOCALE_QUEST_STRING].end()) {
TraceError("CPythonLocale::ReplaceQuestLocaleString wrong LC vnum : %s", kTokenVector[0].c_str());
break;
}
if (kTokenVector.size() > 1) {
try {
boost::format f(it->second);
for (size_t i = 1; i < kTokenVector.size(); i++)
f% kTokenVector[i];
sMessage.replace(pos_1, (pos_4 + 1) - pos_1, f.str());
}
catch (const std::exception& ex) {
TraceError("CPythonLocale::ReplaceQuestLocaleString: Error: %s", ex.what());
break;
}
}
else
sMessage.replace(pos_1, (pos_4 + 1) - pos_1, it->second);
}
}
görsel :
Son düzenleme: