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?"
|
"en": "Could you open the teachers' room for me?"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"key": "Аида Джаныбекова",
|
"key": "Аида Джаныбековна",
|
||||||
"ru": "Аида Джаныбекова",
|
"ru": "Аида Джаныбековна",
|
||||||
"en": "Aida Dzhanybekovna"
|
"en": "Aida Dzhanybekovna"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -1376,8 +1376,8 @@
|
|||||||
"en": "You'll see worse things than that. Go to the dorm and get some sleep."
|
"en": "You'll see worse things than that. Go to the dorm and get some sleep."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"key": "Аида Джаныбекова увидела меня в учительской, и заставила писать эссе по этой тупой книге.",
|
"key": "Аида Джаныбековна увидела меня в учительской, и заставила писать эссе по этой тупой книге.",
|
||||||
"ru": "Аида Джаныбекова увидела меня в учительской, и заставила писать эссе по этой тупой книге.",
|
"ru": "Аида Джаныбековна увидела меня в учительской, и заставила писать эссе по этой тупой книге.",
|
||||||
"en": "Aida Dzhanybekovna saw me in the teachers' room and made me write an essay on this stupid book."
|
"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,
|
"y": 100,
|
||||||
"texture": "resources/w/ui_en/img/Hint6b.png",
|
"texture": "resources/w/ui_en/img/Hint6b.png",
|
||||||
"pulse": {
|
"pulse": {
|
||||||
"minScale": 0.92,
|
"minScale": 0.82,
|
||||||
"maxScale": 1.08,
|
"maxScale": 0.9,
|
||||||
"periodMs": 1500
|
"periodMs": 1500
|
||||||
},
|
},
|
||||||
"fadeIn": {
|
"fadeIn": {
|
||||||
|
|||||||
@ -88,8 +88,8 @@
|
|||||||
"y": 100,
|
"y": 100,
|
||||||
"texture": "resources/w/ui_en/img/Hint6b.png",
|
"texture": "resources/w/ui_en/img/Hint6b.png",
|
||||||
"pulse": {
|
"pulse": {
|
||||||
"minScale": 0.92,
|
"minScale": 0.82,
|
||||||
"maxScale": 1.08,
|
"maxScale": 0.9,
|
||||||
"periodMs": 1500
|
"periodMs": 1500
|
||||||
},
|
},
|
||||||
"fadeIn": {
|
"fadeIn": {
|
||||||
|
|||||||
@ -18,6 +18,8 @@ namespace ZL {
|
|||||||
const float ATTACK_RANGE = 1.25f;
|
const float ATTACK_RANGE = 1.25f;
|
||||||
const float VISIBLE_RANGE = 6.f;
|
const float VISIBLE_RANGE = 6.f;
|
||||||
|
|
||||||
|
Dialogue::TranslationDatabase Character::nameTranslations;
|
||||||
|
|
||||||
void Character::loadAnimation(AnimationState animState, const std::string& filename, const std::string& zipFile) {
|
void Character::loadAnimation(AnimationState animState, const std::string& filename, const std::string& zipFile) {
|
||||||
auto& data = animations[animState];
|
auto& data = animations[animState];
|
||||||
data.model.LoadFromFile(filename, zipFile);
|
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>{ 1.f, 0.f, 0.f, 1.f }
|
||||||
: std::array<float, 4>{ 0.f, 1.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,
|
void Character::drawHealthBar(Renderer& renderer,
|
||||||
|
|||||||
@ -11,6 +11,7 @@
|
|||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <unordered_map>
|
#include <unordered_map>
|
||||||
|
#include "dialogue/TranslationDatabase.h"
|
||||||
|
|
||||||
namespace ZL {
|
namespace ZL {
|
||||||
|
|
||||||
@ -107,6 +108,8 @@ public:
|
|||||||
|
|
||||||
SparkEmitter hitSparkEmitter;
|
SparkEmitter hitSparkEmitter;
|
||||||
|
|
||||||
|
static Dialogue::TranslationDatabase nameTranslations;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::map<AnimationState, BoneAnimationDataNew> animations;
|
std::map<AnimationState, BoneAnimationDataNew> animations;
|
||||||
VertexRenderStruct modelMutable;
|
VertexRenderStruct modelMutable;
|
||||||
|
|||||||
@ -249,6 +249,8 @@ namespace ZL
|
|||||||
|
|
||||||
ItemRegistry::instance().loadFromJson("resources/config/items.json", CONST_ZIP_FILE);
|
ItemRegistry::instance().loadFromJson("resources/config/items.json", CONST_ZIP_FILE);
|
||||||
|
|
||||||
|
Character::nameTranslations.loadFromFile("resources/config/translate_names.json");
|
||||||
|
|
||||||
createLocations();
|
createLocations();
|
||||||
|
|
||||||
// Wire inventory callbacks: tutorial tracking + toast notifications.
|
// Wire inventory callbacks: tutorial tracking + toast notifications.
|
||||||
|
|||||||
@ -77,4 +77,21 @@ std::string TranslationDatabase::translate(const std::string& key, Language lang
|
|||||||
return key;
|
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
|
} // namespace ZL::Dialogue
|
||||||
|
|||||||
@ -18,6 +18,7 @@ public:
|
|||||||
// Returns the translated text for `key` in `lang`, falling back to Russian,
|
// Returns the translated text for `key` in `lang`, falling back to Russian,
|
||||||
// then to `key` itself if no entry or translation exists.
|
// then to `key` itself if no entry or translation exists.
|
||||||
std::string translate(const std::string& key, Language lang) const;
|
std::string translate(const std::string& key, Language lang) const;
|
||||||
|
const std::string& translateRef(const std::string& key, Language lang) const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::unordered_map<std::string, std::unordered_map<std::string, std::string>> entries;
|
std::unordered_map<std::string, std::unordered_map<std::string, std::string>> entries;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user