Working on translations and minor bugs fix
This commit is contained in:
parent
a40a582b5a
commit
c6ba8bd008
39
resources/config/translate_names.json
Normal file
39
resources/config/translate_names.json
Normal file
@ -0,0 +1,39 @@
|
||||
{
|
||||
"dialogue_translations": [
|
||||
{
|
||||
"key": "Алик",
|
||||
"ru": "Алик",
|
||||
"en": "Alik"
|
||||
},
|
||||
{
|
||||
"key": "Айпери",
|
||||
"ru": "Айпери",
|
||||
"en": "Aiperi"
|
||||
},
|
||||
{
|
||||
"key": "Аида Джаныбековна",
|
||||
"ru": "Аида Джаныбековна",
|
||||
"en": "Aida Dzhanybekovna"
|
||||
},
|
||||
{
|
||||
"key": "Алтынай",
|
||||
"ru": "Алтынай",
|
||||
"en": "Altynai"
|
||||
},
|
||||
{
|
||||
"key": "Призрак",
|
||||
"ru": "Призрак",
|
||||
"en": "Ghost"
|
||||
},
|
||||
{
|
||||
"key": "Бегимай",
|
||||
"ru": "Бегимай",
|
||||
"en": "Begimai"
|
||||
},
|
||||
{
|
||||
"key": "Тень",
|
||||
"ru": "Тень",
|
||||
"en": "Shadow"
|
||||
}
|
||||
]
|
||||
}
|
||||
@ -686,8 +686,8 @@
|
||||
"en": "Could you open the teachers' room for me?"
|
||||
},
|
||||
{
|
||||
"key": "Аида Джаныбекова",
|
||||
"ru": "Аида Джаныбекова",
|
||||
"key": "Аида Джаныбековна",
|
||||
"ru": "Аида Джаныбековна",
|
||||
"en": "Aida Dzhanybekovna"
|
||||
},
|
||||
{
|
||||
@ -1376,8 +1376,8 @@
|
||||
"en": "You'll see worse things than that. Go to the dorm and get some sleep."
|
||||
},
|
||||
{
|
||||
"key": "Аида Джаныбекова увидела меня в учительской, и заставила писать эссе по этой тупой книге.",
|
||||
"ru": "Аида Джаныбекова увидела меня в учительской, и заставила писать эссе по этой тупой книге.",
|
||||
"key": "Аида Джаныбековна увидела меня в учительской, и заставила писать эссе по этой тупой книге.",
|
||||
"ru": "Аида Джаныбековна увидела меня в учительской, и заставила писать эссе по этой тупой книге.",
|
||||
"en": "Aida Dzhanybekovna saw me in the teachers' room and made me write an essay on this stupid book."
|
||||
},
|
||||
{
|
||||
|
||||
@ -135,8 +135,8 @@
|
||||
"y": 100,
|
||||
"texture": "resources/w/ui_en/img/Hint6b.png",
|
||||
"pulse": {
|
||||
"minScale": 0.92,
|
||||
"maxScale": 1.08,
|
||||
"minScale": 0.82,
|
||||
"maxScale": 0.9,
|
||||
"periodMs": 1500
|
||||
},
|
||||
"fadeIn": {
|
||||
|
||||
@ -88,8 +88,8 @@
|
||||
"y": 100,
|
||||
"texture": "resources/w/ui_en/img/Hint6b.png",
|
||||
"pulse": {
|
||||
"minScale": 0.92,
|
||||
"maxScale": 1.08,
|
||||
"minScale": 0.82,
|
||||
"maxScale": 0.9,
|
||||
"periodMs": 1500
|
||||
},
|
||||
"fadeIn": {
|
||||
|
||||
@ -18,6 +18,8 @@ namespace ZL {
|
||||
const float ATTACK_RANGE = 1.25f;
|
||||
const float VISIBLE_RANGE = 6.f;
|
||||
|
||||
Dialogue::TranslationDatabase Character::nameTranslations;
|
||||
|
||||
void Character::loadAnimation(AnimationState animState, const std::string& filename, const std::string& zipFile) {
|
||||
auto& data = animations[animState];
|
||||
data.model.LoadFromFile(filename, zipFile);
|
||||
@ -1236,7 +1238,9 @@ void Character::drawName(TextRenderer& textRenderer,
|
||||
? std::array<float, 4>{ 1.f, 0.f, 0.f, 1.f }
|
||||
: std::array<float, 4>{ 0.f, 1.f, 0.f, 1.f };
|
||||
|
||||
textRenderer.drawText(state.npcName, screenX, screenY, 1.0f, true, color);
|
||||
const std::string& translatedName = Character::nameTranslations.translateRef(state.npcName, g_currentLanguage);
|
||||
|
||||
textRenderer.drawText(translatedName, screenX, screenY, 1.0f, true, color);
|
||||
}
|
||||
|
||||
void Character::drawHealthBar(Renderer& renderer,
|
||||
|
||||
@ -11,6 +11,7 @@
|
||||
#include <cstdint>
|
||||
#include <vector>
|
||||
#include <unordered_map>
|
||||
#include "dialogue/TranslationDatabase.h"
|
||||
|
||||
namespace ZL {
|
||||
|
||||
@ -107,6 +108,8 @@ public:
|
||||
|
||||
SparkEmitter hitSparkEmitter;
|
||||
|
||||
static Dialogue::TranslationDatabase nameTranslations;
|
||||
|
||||
private:
|
||||
std::map<AnimationState, BoneAnimationDataNew> animations;
|
||||
VertexRenderStruct modelMutable;
|
||||
|
||||
@ -249,6 +249,8 @@ namespace ZL
|
||||
|
||||
ItemRegistry::instance().loadFromJson("resources/config/items.json", CONST_ZIP_FILE);
|
||||
|
||||
Character::nameTranslations.loadFromFile("resources/config/translate_names.json");
|
||||
|
||||
createLocations();
|
||||
|
||||
// Wire inventory callbacks: tutorial tracking + toast notifications.
|
||||
|
||||
@ -77,4 +77,21 @@ std::string TranslationDatabase::translate(const std::string& key, Language lang
|
||||
return key;
|
||||
}
|
||||
|
||||
const std::string& TranslationDatabase::translateRef(const std::string& key, Language lang) const {
|
||||
if (key.empty()) return key;
|
||||
|
||||
auto it = entries.find(key);
|
||||
if (it == entries.end()) return key;
|
||||
|
||||
const auto& langMap = it->second;
|
||||
|
||||
auto langIt = langMap.find(languageToCode(lang));
|
||||
if (langIt != langMap.end() && !langIt->second.empty()) return langIt->second;
|
||||
|
||||
auto ruIt = langMap.find("ru");
|
||||
if (ruIt != langMap.end() && !ruIt->second.empty()) return ruIt->second;
|
||||
|
||||
return key;
|
||||
}
|
||||
|
||||
} // namespace ZL::Dialogue
|
||||
|
||||
@ -18,6 +18,7 @@ public:
|
||||
// Returns the translated text for `key` in `lang`, falling back to Russian,
|
||||
// then to `key` itself if no entry or translation exists.
|
||||
std::string translate(const std::string& key, Language lang) const;
|
||||
const std::string& translateRef(const std::string& key, Language lang) const;
|
||||
|
||||
private:
|
||||
std::unordered_map<std::string, std::unordered_map<std::string, std::string>> entries;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user