update
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
#include "localization.h"
|
||||
#include "yamlparser.h"
|
||||
#include <QDebug>
|
||||
|
||||
Localization& Localization::instance()
|
||||
{
|
||||
static Localization s_instance;
|
||||
return s_instance;
|
||||
}
|
||||
|
||||
Localization::Localization()
|
||||
: m_loaded(false)
|
||||
{
|
||||
}
|
||||
|
||||
void Localization::flattenNode(const YamlNode &node, const QString &prefix)
|
||||
{
|
||||
if (!node.value.isEmpty()) {
|
||||
m_strings[prefix] = node.value;
|
||||
}
|
||||
for (auto it = node.children.begin(); it != node.children.end(); ++it) {
|
||||
QString nextPrefix = prefix.isEmpty() ? it.key() : (prefix + "." + it.key());
|
||||
flattenNode(it.value(), nextPrefix);
|
||||
}
|
||||
}
|
||||
|
||||
bool Localization::loadFile(const QString &filePath)
|
||||
{
|
||||
YamlNode root = YamlParser::parseFile(filePath);
|
||||
if (root.children.isEmpty() && root.value.isEmpty()) {
|
||||
qWarning() << "Failed to parse localization file:" << filePath;
|
||||
return false;
|
||||
}
|
||||
|
||||
m_strings.clear();
|
||||
flattenNode(root, "");
|
||||
m_loaded = true;
|
||||
qDebug() << "Localization loaded" << m_strings.size() << "keys from" << filePath;
|
||||
return true;
|
||||
}
|
||||
|
||||
QString Localization::get(const QString &key, const QString &defaultVal) const
|
||||
{
|
||||
auto it = m_strings.find(key);
|
||||
if (it != m_strings.end()) {
|
||||
return it.value();
|
||||
}
|
||||
return defaultVal.isEmpty() ? key : defaultVal;
|
||||
}
|
||||
Reference in New Issue
Block a user