1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-10-08 23:22:25 +02:00

resource translation

This commit is contained in:
Laserlicht
2025-09-14 16:17:55 +02:00
parent 75f965c93a
commit 40062d7755
10 changed files with 54 additions and 29 deletions

View File

@@ -1083,5 +1083,14 @@
"spellSchool.core.air.name" : "Air",
"spellSchool.core.earth.name" : "Earth",
"spellSchool.core.fire.name" : "Fire",
"spellSchool.core.water.name" : "Water"
"spellSchool.core.water.name" : "Water",
"resources.core.wood.name" : "Wood",
"resources.core.mercury.name" : "Mercury",
"resources.core.ore.name" : "Ore",
"resources.core.sulfur.name" : "Sulfur",
"resources.core.crystal.name" : "Crystal",
"resources.core.gems.name" : "Gems",
"resources.core.gold.name" : "Gold",
"resources.core.mithril.name" : "Mithril"
}

View File

@@ -1076,5 +1076,14 @@
"spellSchool.core.air.name" : "Luft",
"spellSchool.core.earth.name" : "Erde",
"spellSchool.core.fire.name" : "Feuer",
"spellSchool.core.water.name" : "Wasser"
"spellSchool.core.water.name" : "Wasser",
"resources.core.wood.name" : "Holz",
"resources.core.mercury.name" : "Quecksilber",
"resources.core.ore.name" : "Erz",
"resources.core.sulfur.name" : "Schwefel",
"resources.core.crystal.name" : "Kristall",
"resources.core.gems.name" : "Edelsteine",
"resources.core.gold.name" : "Gold",
"resources.core.mithril.name" : "Mithril"
}

View File

@@ -28,6 +28,7 @@
#include "../windows/InfoWindows.h"
#include "../widgets/Slider.h"
#include "../../lib/entities/ResourceTypeHandler.h"
#include "../../lib/gameState/GameStatistics.h"
#include "../../lib/gameState/CGameState.h"
#include "../../lib/texts/CGeneralTextHandler.h"
@@ -79,7 +80,7 @@ void CStatisticScreen::onSelectButton()
auto possibleRes = std::vector<EGameResID>{EGameResID::GOLD, EGameResID::WOOD, EGameResID::MERCURY, EGameResID::ORE, EGameResID::SULFUR, EGameResID::CRYSTAL, EGameResID::GEMS};
std::vector<std::string> resourceText;
for(const auto & res : possibleRes)
resourceText.emplace_back(LIBRARY->generaltexth->translate(TextIdentifier("core.restypes", res.getNum()).get()));
resourceText.emplace_back(MetaString::createFromTextID(LIBRARY->resourceTypeHandler->getById(res)->getNameTextID()).toString());
ENGINE->windows().createAndPushWindow<StatisticSelector>(resourceText, [this, content, possibleRes](int index)
{
@@ -169,7 +170,7 @@ std::shared_ptr<CIntObject> CStatisticScreen::getContent(Content c, EGameResID r
case CHART_RESOURCES:
plotData = extractData(statistic, [res](const StatisticDataSetEntry & val) -> float { return val.resources[res]; });
return std::make_shared<LineChart>(contentArea.resize(-5), LIBRARY->generaltexth->translate(std::get<0>(contentInfo[c])) + " - " + LIBRARY->generaltexth->translate(TextIdentifier("core.restypes", res.getNum()).get()), plotData, icons, 0);
return std::make_shared<LineChart>(contentArea.resize(-5), LIBRARY->generaltexth->translate(std::get<0>(contentInfo[c])) + " - " + MetaString::createFromTextID(LIBRARY->resourceTypeHandler->getById(res)->getNameTextID()).toString(), plotData, icons, 0);
case CHART_INCOME:
plotData = extractData(statistic, [](const StatisticDataSetEntry & val) -> float { return val.income; });
@@ -193,7 +194,7 @@ std::shared_ptr<CIntObject> CStatisticScreen::getContent(Content c, EGameResID r
case CHART_NUMBER_OF_MINES:
plotData = extractData(statistic, [res](StatisticDataSetEntry val) -> float { return val.numMines[res]; });
return std::make_shared<LineChart>(contentArea.resize(-5), LIBRARY->generaltexth->translate(std::get<0>(contentInfo[c])) + " - " + LIBRARY->generaltexth->translate(TextIdentifier("core.restypes", res.getNum()).get()), plotData, icons, 0);
return std::make_shared<LineChart>(contentArea.resize(-5), LIBRARY->generaltexth->translate(std::get<0>(contentInfo[c])) + " - " + MetaString::createFromTextID(LIBRARY->resourceTypeHandler->getById(res)->getNameTextID()).toString(), plotData, icons, 0);
case CHART_ARMY_STRENGTH:
plotData = extractData(statistic, [](const StatisticDataSetEntry & val) -> float { return val.armyStrength; });
@@ -205,11 +206,11 @@ std::shared_ptr<CIntObject> CStatisticScreen::getContent(Content c, EGameResID r
case CHART_RESOURCES_SPENT_ARMY:
plotData = extractData(statistic, [res](const StatisticDataSetEntry & val) -> float { return val.spentResourcesForArmy[res]; });
return std::make_shared<LineChart>(contentArea.resize(-5), LIBRARY->generaltexth->translate(std::get<0>(contentInfo[c])) + " - " + LIBRARY->generaltexth->translate(TextIdentifier("core.restypes", res.getNum()).get()), plotData, icons, 0);
return std::make_shared<LineChart>(contentArea.resize(-5), LIBRARY->generaltexth->translate(std::get<0>(contentInfo[c])) + " - " + MetaString::createFromTextID(LIBRARY->resourceTypeHandler->getById(res)->getNameTextID()).toString(), plotData, icons, 0);
case CHART_RESOURCES_SPENT_BUILDINGS:
plotData = extractData(statistic, [res](const StatisticDataSetEntry & val) -> float { return val.spentResourcesForBuildings[res]; });
return std::make_shared<LineChart>(contentArea.resize(-5), LIBRARY->generaltexth->translate(std::get<0>(contentInfo[c])) + " - " + LIBRARY->generaltexth->translate(TextIdentifier("core.restypes", res.getNum()).get()), plotData, icons, 0);
return std::make_shared<LineChart>(contentArea.resize(-5), LIBRARY->generaltexth->translate(std::get<0>(contentInfo[c])) + " - " + MetaString::createFromTextID(LIBRARY->resourceTypeHandler->getById(res)->getNameTextID()).toString(), plotData, icons, 0);
case CHART_MAP_EXPLORED:
plotData = extractData(statistic, [](const StatisticDataSetEntry & val) -> float { return val.mapExploredRatio; });
@@ -330,43 +331,43 @@ OverviewPanel::OverviewPanel(Rect position, std::string title, const StatisticDa
}
},
{
LIBRARY->generaltexth->translate("vcmi.statisticWindow.param.tradeVolume") + " - " + LIBRARY->generaltexth->translate(TextIdentifier("core.restypes", EGameResID::GOLD).get()), [this](PlayerColor color){
LIBRARY->generaltexth->translate("vcmi.statisticWindow.param.tradeVolume") + " - " + MetaString::createFromTextID(LIBRARY->resourceTypeHandler->getById(EGameResID::GOLD)->getNameTextID()).toString(), [this](PlayerColor color){
auto val = playerDataFilter(color).back();
return std::to_string(val.tradeVolume[EGameResID::GOLD]);
}
},
{
LIBRARY->generaltexth->translate("vcmi.statisticWindow.param.tradeVolume") + " - " + LIBRARY->generaltexth->translate(TextIdentifier("core.restypes", EGameResID::WOOD).get()), [this](PlayerColor color){
LIBRARY->generaltexth->translate("vcmi.statisticWindow.param.tradeVolume") + " - " + MetaString::createFromTextID(LIBRARY->resourceTypeHandler->getById(EGameResID::WOOD)->getNameTextID()).toString(), [this](PlayerColor color){
auto val = playerDataFilter(color).back();
return std::to_string(val.tradeVolume[EGameResID::WOOD]);
}
},
{
LIBRARY->generaltexth->translate("vcmi.statisticWindow.param.tradeVolume") + " - " + LIBRARY->generaltexth->translate(TextIdentifier("core.restypes", EGameResID::MERCURY).get()), [this](PlayerColor color){
LIBRARY->generaltexth->translate("vcmi.statisticWindow.param.tradeVolume") + " - " + MetaString::createFromTextID(LIBRARY->resourceTypeHandler->getById(EGameResID::MERCURY)->getNameTextID()).toString(), [this](PlayerColor color){
auto val = playerDataFilter(color).back();
return std::to_string(val.tradeVolume[EGameResID::MERCURY]);
}
},
{
LIBRARY->generaltexth->translate("vcmi.statisticWindow.param.tradeVolume") + " - " + LIBRARY->generaltexth->translate(TextIdentifier("core.restypes", EGameResID::ORE).get()), [this](PlayerColor color){
LIBRARY->generaltexth->translate("vcmi.statisticWindow.param.tradeVolume") + " - " + MetaString::createFromTextID(LIBRARY->resourceTypeHandler->getById(EGameResID::ORE)->getNameTextID()).toString(), [this](PlayerColor color){
auto val = playerDataFilter(color).back();
return std::to_string(val.tradeVolume[EGameResID::ORE]);
}
},
{
LIBRARY->generaltexth->translate("vcmi.statisticWindow.param.tradeVolume") + " - " + LIBRARY->generaltexth->translate(TextIdentifier("core.restypes", EGameResID::SULFUR).get()), [this](PlayerColor color){
LIBRARY->generaltexth->translate("vcmi.statisticWindow.param.tradeVolume") + " - " + MetaString::createFromTextID(LIBRARY->resourceTypeHandler->getById(EGameResID::SULFUR)->getNameTextID()).toString(), [this](PlayerColor color){
auto val = playerDataFilter(color).back();
return std::to_string(val.tradeVolume[EGameResID::SULFUR]);
}
},
{
LIBRARY->generaltexth->translate("vcmi.statisticWindow.param.tradeVolume") + " - " + LIBRARY->generaltexth->translate(TextIdentifier("core.restypes", EGameResID::CRYSTAL).get()), [this](PlayerColor color){
LIBRARY->generaltexth->translate("vcmi.statisticWindow.param.tradeVolume") + " - " + MetaString::createFromTextID(LIBRARY->resourceTypeHandler->getById(EGameResID::CRYSTAL)->getNameTextID()).toString(), [this](PlayerColor color){
auto val = playerDataFilter(color).back();
return std::to_string(val.tradeVolume[EGameResID::CRYSTAL]);
}
},
{
LIBRARY->generaltexth->translate("vcmi.statisticWindow.param.tradeVolume") + " - " + LIBRARY->generaltexth->translate(TextIdentifier("core.restypes", EGameResID::GEMS).get()), [this](PlayerColor color){
LIBRARY->generaltexth->translate("vcmi.statisticWindow.param.tradeVolume") + " - " + MetaString::createFromTextID(LIBRARY->resourceTypeHandler->getById(EGameResID::GEMS)->getNameTextID()).toString(), [this](PlayerColor color){
auto val = playerDataFilter(color).back();
return std::to_string(val.tradeVolume[EGameResID::GEMS]);
}

View File

@@ -23,6 +23,7 @@
#include "../../../lib/entities/artifact/CArtHandler.h"
#include "../../../lib/texts/CGeneralTextHandler.h"
#include "../../../lib/mapObjects/CGHeroInstance.h"
#include "../../../lib/entities/ResourceTypeHandler.h"
CTradeableItem::CTradeableItem(const Rect & area, EType Type, int32_t ID, int32_t serial)
: SelectableSlot(area, Point(1, 1))
@@ -175,7 +176,7 @@ void CTradeableItem::hover(bool on)
ENGINE->statusbar()->write(LIBRARY->artifacts()->getByIndex(id)->getNameTranslated());
break;
case EType::RESOURCE:
ENGINE->statusbar()->write(LIBRARY->generaltexth->restypes[id]);
ENGINE->statusbar()->write(MetaString::createFromTextID(LIBRARY->resourceTypeHandler->getById(id)->getNameTextID()).toString());
break;
case EType::PLAYER:
ENGINE->statusbar()->write(LIBRARY->generaltexth->capColors[id]);

View File

@@ -58,10 +58,10 @@
#include "../../lib/campaign/CampaignState.h"
#include "../../lib/entities/artifact/CArtifact.h"
#include "../../lib/entities/building/CBuilding.h"
#include "../../lib/entities/ResourceTypeHandler.h"
#include "../../lib/mapObjects/CGHeroInstance.h"
#include "../../lib/mapObjects/CGTownInstance.h"
#include "../../lib/mapObjects/TownBuildingInstance.h"
#include "../../lib/entities/ResourceTypeHandler.h"
static bool useCompactCreatureBox()
@@ -1127,7 +1127,7 @@ void CCastleBuildings::enterFountain(const BuildingID & building, BuildingSubID:
else //Mystic Pond produced something;
{
descr += "\n\n" + hasProduced;
boost::algorithm::replace_first(descr,"%s",LIBRARY->generaltexth->restypes[town->bonusValue.first]);
boost::algorithm::replace_first(descr,"%s",MetaString::createFromTextID(LIBRARY->resourceTypeHandler->getById(town->bonusValue.first)->getNameTextID()).toString());
boost::algorithm::replace_first(descr,"%d",std::to_string(town->bonusValue.second));
}
}

View File

@@ -17,6 +17,7 @@
#include "../callback/IGameInfoCallback.h"
#include "../entities/faction/CTownHandler.h"
#include "../entities/hero/CHeroClass.h"
#include "../entities/ResourceTypeHandler.h"
#include "../mapObjects/CGHeroInstance.h"
#include "../mapObjects/CGTownInstance.h"
#include "../mapObjects/MiscObjects.h"
@@ -60,7 +61,7 @@ bool ResourceInstanceConstructor::hasNameTextID() const
std::string ResourceInstanceConstructor::getNameTextID() const
{
return TextIdentifier("core", "restypes", resourceType.getNum()).get();
return LIBRARY->resourceTypeHandler->getById(resourceType)->getNameTextID();
}
GameResID ResourceInstanceConstructor::getResourceType() const

View File

@@ -21,6 +21,7 @@
#include "../gameState/CGameState.h"
#include "../serializer/JsonSerializeFormat.h"
#include "../CSoundBase.h"
#include "../entities/ResourceTypeHandler.h"
#include <vstd/RNG.h>
@@ -50,7 +51,7 @@ GameResID CGResource::resourceID() const
std::string CGResource::getHoverText(PlayerColor player) const
{
return LIBRARY->generaltexth->restypes[resourceID().getNum()];
return MetaString::createFromTextID(LIBRARY->resourceTypeHandler->getById(resourceID())->getNameTextID()).toString();
}
void CGResource::pickRandomObject(IGameRandomizer & gameRandomizer)

View File

@@ -165,7 +165,7 @@ std::string CGMine::getHoverText(PlayerColor player) const
std::string hoverName = CArmedInstance::getHoverText(player);
if (tempOwner != PlayerColor::NEUTRAL)
hoverName += "\n(" + LIBRARY->generaltexth->restypes[producedResource.getNum()] + ")";
hoverName += "\n(" + MetaString::createFromTextID(LIBRARY->resourceTypeHandler->getById(producedResource.getNum())->getNameTextID()).toString() + ")";
if(stacksCount())
{

View File

@@ -14,6 +14,7 @@
#include "entities/artifact/CArtifact.h"
#include "entities/faction/CFaction.h"
#include "entities/hero/CHero.h"
#include "entities/ResourceTypeHandler.h"
#include "texts/CGeneralTextHandler.h"
#include "CSkillHandler.h"
#include "GameConstants.h"
@@ -378,7 +379,7 @@ void MetaString::appendName(const CreatureID & id, TQuantity count)
void MetaString::appendName(const GameResID& id)
{
appendTextID(TextIdentifier("core.restypes", id.getNum()).get());
appendTextID(LIBRARY->resourceTypeHandler->getById(id)->getNameTextID());
}
void MetaString::appendNameSingular(const CreatureID & id)
@@ -423,7 +424,7 @@ void MetaString::replaceName(const SpellID & id)
void MetaString::replaceName(const GameResID& id)
{
replaceTextID(TextIdentifier("core.restypes", id.getNum()).get());
replaceTextID(LIBRARY->resourceTypeHandler->getById(id)->getNameTextID());
}
void MetaString::replaceNameSingular(const CreatureID & id)

View File

@@ -15,8 +15,10 @@
#include "../../lib/GameLibrary.h"
#include "../../lib/texts/CGeneralTextHandler.h"
#include "../../lib/texts/MetaString.h"
#include "../../lib/entities/ResourceTypeHandler.h"
auto resources = std::vector<EGameResID>{EGameResID::GOLD, EGameResID::WOOD, EGameResID::MERCURY, EGameResID::ORE, EGameResID::SULFUR, EGameResID::CRYSTAL, EGameResID::GEMS};
auto resourcesToShow = std::vector<EGameResID>{EGameResID::GOLD, EGameResID::WOOD, EGameResID::MERCURY, EGameResID::ORE, EGameResID::SULFUR, EGameResID::CRYSTAL, EGameResID::GEMS};
MineSelector::MineSelector(std::map<TResource, ui16> & mines) :
ui(new Ui::MineSelector),
@@ -29,18 +31,18 @@ MineSelector::MineSelector(std::map<TResource, ui16> & mines) :
setWindowModality(Qt::ApplicationModal);
ui->tableWidgetMines->setColumnCount(2);
ui->tableWidgetMines->setRowCount(resources.size());
ui->tableWidgetMines->setRowCount(resourcesToShow.size());
ui->tableWidgetMines->setHorizontalHeaderLabels({tr("Resource"), tr("Mines")});
for (int row = 0; row < resources.size(); ++row)
for (int row = 0; row < resourcesToShow.size(); ++row)
{
auto name = LIBRARY->generaltexth->translate(TextIdentifier("core.restypes", resources[row].getNum()).get());
auto name = MetaString::createFromTextID(LIBRARY->resourceTypeHandler->getById(resourcesToShow[row].getNum())->getNameTextID()).toString();
auto label = new QLabel(QString::fromStdString(name));
label->setAlignment(Qt::AlignCenter);
ui->tableWidgetMines->setCellWidget(row, 0, label);
auto spinBox = new QSpinBox();
spinBox->setRange(0, 100);
spinBox->setValue(mines[resources[row]]);
spinBox->setValue(mines[resourcesToShow[row]]);
ui->tableWidgetMines->setCellWidget(row, 1, spinBox);
}
ui->tableWidgetMines->resizeColumnsToContents();
@@ -57,8 +59,8 @@ void MineSelector::showMineSelector(std::map<TResource, ui16> & mines)
void MineSelector::on_buttonBoxResult_accepted()
{
for (int row = 0; row < resources.size(); ++row)
minesSelected[resources[row]] = static_cast<QSpinBox *>(ui->tableWidgetMines->cellWidget(row, 1))->value();
for (int row = 0; row < resourcesToShow.size(); ++row)
minesSelected[resourcesToShow[row]] = static_cast<QSpinBox *>(ui->tableWidgetMines->cellWidget(row, 1))->value();
close();
}