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

Merge remote-tracking branch 'upstream/develop' into develop

This commit is contained in:
Xilmi
2024-09-29 12:35:44 +02:00
96 changed files with 4074 additions and 2698 deletions

View File

@@ -352,7 +352,7 @@ jobs:
run: |
find . -path ./.git -prune -o -path ./AI/FuzzyLite -prune -o -path ./test/googletest \
-o -path ./osx -prune -o -type f \
-not -name '*.png' -and -not -name '*.vcxproj*' -and -not -name '*.props' -and -not -name '*.wav' -and -not -name '*.webm' -and -not -name '*.ico' -and -not -name '*.bat' -print0 | \
-not -name '*.png' -and -not -name '*.ttf' -and -not -name '*.wav' -and -not -name '*.webm' -and -not -name '*.ico' -and -not -name '*.bat' -print0 | \
{ ! xargs -0 grep -l -z -P '\r\n'; }
- name: Validate JSON

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -12,6 +12,7 @@
"vcmi.adventureMap.monsterThreat.levels.9" : "压倒性的",
"vcmi.adventureMap.monsterThreat.levels.10" : "致命的",
"vcmi.adventureMap.monsterThreat.levels.11" : "无法取胜",
"vcmi.adventureMap.monsterLevel" : "\n\n%TOWN%LEVEL级生物",
"vcmi.adventureMap.confirmRestartGame" : "你想要重新开始游戏吗?",
"vcmi.adventureMap.noTownWithMarket" : "没有足够的市场。",
@@ -20,6 +21,7 @@
"vcmi.adventureMap.playerAttacked" : "玩家遭受攻击: %s",
"vcmi.adventureMap.moveCostDetails" : "移动点数 - 花费: %TURNS 轮 + %POINTS 点移动力, 剩余移动力: %REMAINING",
"vcmi.adventureMap.moveCostDetailsNoTurns" : "移动点数 - 花费: %POINTS 点移动力, 剩余移动力: %REMAINING",
"vcmi.adventureMap.movementPointsHeroInfo" : "(移动点数: %REMAINING / %POINTS)",
"vcmi.adventureMap.replayOpponentTurnNotImplemented" : "抱歉,重放对手行动功能目前暂未实现!",
"vcmi.capitalColors.0" : "红色",
@@ -236,6 +238,8 @@
"vcmi.adventureOptions.infoBarCreatureManagement.help" : "{信息面板生物管理}\n\n允许在信息面板中重新排列生物,而不是在默认组件之间循环。",
"vcmi.adventureOptions.leftButtonDrag.hover" : "左键拖动地图",
"vcmi.adventureOptions.leftButtonDrag.help" : "{左键拖动地图}\n\n启用后,按住左键移动鼠标将拖动冒险地图视图。",
"vcmi.adventureOptions.rightButtonDrag.hover" : "右键拖动地图",
"vcmi.adventureOptions.rightButtonDrag.help" : "{右键拖动地图}\n\n启用后,按住右键移动鼠标将拖动冒险地图视图。",
"vcmi.adventureOptions.smoothDragging.hover" : "平滑地图拖动",
"vcmi.adventureOptions.smoothDragging.help" : "{平滑地图拖动}\n\n启用后,地图拖动会产生柔和的羽化效果。",
"vcmi.adventureOptions.skipAdventureMapAnimations.hover" : "关闭淡入淡出特效",
@@ -662,5 +666,7 @@
"core.bonus.WIDE_BREATH.name": "弧形焰息",
"core.bonus.WIDE_BREATH.description": "大范围喷吐攻击(目标左右以及后方共6格)",
"core.bonus.DISINTEGRATE.name": "解体",
"core.bonus.DISINTEGRATE.description": "死亡后不会留下尸体"
"core.bonus.DISINTEGRATE.description": "死亡后不会留下尸体",
"core.bonus.INVINCIBLE.name": "无敌",
"core.bonus.INVINCIBLE.description": "不受任何效果影响"
}

View File

@@ -95,10 +95,10 @@ set(vcmiclientcommon_SRCS
render/ImageLocator.cpp
renderSDL/CBitmapFont.cpp
renderSDL/CBitmapHanFont.cpp
renderSDL/CTrueTypeFont.cpp
renderSDL/CursorHardware.cpp
renderSDL/CursorSoftware.cpp
renderSDL/FontChain.cpp
renderSDL/ImageScaled.cpp
renderSDL/RenderHandler.cpp
renderSDL/SDLImage.cpp
@@ -303,10 +303,10 @@ set(vcmiclientcommon_HEADERS
render/IScreenHandler.h
renderSDL/CBitmapFont.h
renderSDL/CBitmapHanFont.h
renderSDL/CTrueTypeFont.h
renderSDL/CursorHardware.h
renderSDL/CursorSoftware.h
renderSDL/FontChain.h
renderSDL/ImageScaled.h
renderSDL/RenderHandler.h
renderSDL/SDLImage.h

View File

@@ -930,7 +930,7 @@ void CPlayerInterface::battleAttack(const BattleID & battleID, const BattleAttac
info.secondaryDefender.push_back(cb->getBattle(battleID)->battleGetStackByID(elem.stackAttacked));
}
}
assert(info.defender != nullptr);
assert(info.defender != nullptr || (info.spellEffect != SpellID::NONE && info.indirectAttack));
assert(info.attacker != nullptr);
battleInt->stackAttacking(info);

View File

@@ -175,6 +175,18 @@ void BattleActionsController::enterCreatureCastingMode()
if (!owner.stacksController->getActiveStack())
return;
if(owner.getBattle()->battleCanTargetEmptyHex(owner.stacksController->getActiveStack()))
{
auto actionFilterPredicate = [](const PossiblePlayerBattleAction x)
{
return x.get() != PossiblePlayerBattleAction::SHOOT;
};
vstd::erase_if(possibleActions, actionFilterPredicate);
GH.fakeMouseMove();
return;
}
if (!isActiveStackSpellcaster())
return;
@@ -263,6 +275,9 @@ void BattleActionsController::reorderPossibleActionsPriority(const CStack * stac
return 2;
break;
case PossiblePlayerBattleAction::SHOOT:
if(targetStack == nullptr || targetStack->unitSide() == stack->unitSide())
return 100; //bottom priority
return 4;
break;
case PossiblePlayerBattleAction::ATTACK_AND_RETURN:
@@ -356,6 +371,12 @@ const CSpell * BattleActionsController::getStackSpellToCast(BattleHex hoveredHex
auto action = selectAction(hoveredHex);
if(owner.stacksController->getActiveStack()->hasBonusOfType(BonusType::SPELL_LIKE_ATTACK))
{
auto bonus = owner.stacksController->getActiveStack()->getBonus(Selector::type()(BonusType::SPELL_LIKE_ATTACK));
return bonus->subtype.as<SpellID>().toSpell();
}
if (action.spell() == SpellID::NONE)
return nullptr;
@@ -514,6 +535,13 @@ std::string BattleActionsController::actionGetStatusMessage(PossiblePlayerBattle
case PossiblePlayerBattleAction::SHOOT:
{
if(targetStack == nullptr) //should be true only for spell-like attack
{
auto spellLikeAttackBonus = owner.stacksController->getActiveStack()->getBonus(Selector::type()(BonusType::SPELL_LIKE_ATTACK));
assert(spellLikeAttackBonus != nullptr);
return boost::str(boost::format(CGI->generaltexth->allTexts[26]) % spellLikeAttackBonus->subtype.as<SpellID>().toSpell()->getNameTranslated());
}
const auto * shooter = owner.stacksController->getActiveStack();
DamageEstimation retaliation;
@@ -625,7 +653,20 @@ bool BattleActionsController::actionIsLegal(PossiblePlayerBattleAction action, B
return false;
case PossiblePlayerBattleAction::SHOOT:
return owner.getBattle()->battleCanShoot(owner.stacksController->getActiveStack(), targetHex);
{
auto currentStack = owner.stacksController->getActiveStack();
if(!owner.getBattle()->battleCanShoot(currentStack, targetHex))
return false;
if(targetStack == nullptr && owner.getBattle()->battleCanTargetEmptyHex(currentStack))
{
auto spellLikeAttackBonus = currentStack->getBonus(Selector::type()(BonusType::SPELL_LIKE_ATTACK));
const CSpell * spellDataToCheck = spellLikeAttackBonus->subtype.as<SpellID>().toSpell();
return isCastingPossibleHere(spellDataToCheck, nullptr, targetHex);
}
return true;
}
case PossiblePlayerBattleAction::NO_LOCATION:
return false;
@@ -771,7 +812,7 @@ void BattleActionsController::actionRealize(PossiblePlayerBattleAction action, B
}
}
if (!spellcastingModeActive())
if (!heroSpellcastingModeActive())
{
if (action.spell().hasValue())
{
@@ -1018,14 +1059,9 @@ void BattleActionsController::activateStack()
void BattleActionsController::onHexRightClicked(BattleHex clickedHex)
{
auto spellcastActionPredicate = [](PossiblePlayerBattleAction & action)
{
return action.spellcast();
};
bool isCurrentStackInSpellcastMode = creatureSpellcastingModeActive();
bool isCurrentStackInSpellcastMode = !possibleActions.empty() && std::all_of(possibleActions.begin(), possibleActions.end(), spellcastActionPredicate);
if (spellcastingModeActive() || isCurrentStackInSpellcastMode)
if (heroSpellcastingModeActive() || isCurrentStackInSpellcastMode)
{
endCastingSpell();
CRClickPopup::createAndPush(CGI->generaltexth->translate("core.genrltxt.731")); // spell cancelled
@@ -1044,11 +1080,21 @@ void BattleActionsController::onHexRightClicked(BattleHex clickedHex)
owner.defendingHero->heroRightClicked();
}
bool BattleActionsController::spellcastingModeActive() const
bool BattleActionsController::heroSpellcastingModeActive() const
{
return heroSpellToCast != nullptr;
}
bool BattleActionsController::creatureSpellcastingModeActive() const
{
auto spellcastModePredicate = [](const PossiblePlayerBattleAction & action)
{
return action.spellcast() || action.get() == PossiblePlayerBattleAction::SHOOT; //for hotkey-eligible SPELL_LIKE_ATTACK creature should have only SHOOT action
};
return !possibleActions.empty() && std::all_of(possibleActions.begin(), possibleActions.end(), spellcastModePredicate);
}
bool BattleActionsController::currentActionSpellcasting(BattleHex hoveredHex)
{
if (heroSpellToCast)

View File

@@ -82,8 +82,10 @@ public:
/// initialize list of potential actions for new active stack
void activateStack();
/// returns true if UI is currently in target selection mode
bool spellcastingModeActive() const;
/// returns true if UI is currently in hero spell target selection mode
bool heroSpellcastingModeActive() const;
/// returns true if UI is currently in "F" hotkey creature spell target selection mode
bool creatureSpellcastingModeActive() const;
/// returns true if one of the following is true:
/// - we are casting spell by hero

View File

@@ -566,7 +566,9 @@ void BattleFieldController::showHighlightedHexes(Canvas & canvas)
calculateRangeLimitAndHighlightImages(shootingRangeDistance, shootingRangeLimitImages, shootingRangeLimitHexes, shootingRangeLimitHexesHighlights);
}
bool useSpellRangeForMouse = hoveredHex != BattleHex::INVALID && owner.actionsController->currentActionSpellcasting(getHoveredHex());
bool useSpellRangeForMouse = hoveredHex != BattleHex::INVALID
&& (owner.actionsController->currentActionSpellcasting(getHoveredHex())
|| owner.actionsController->creatureSpellcastingModeActive()); //at least shooting with SPELL_LIKE_ATTACK can operate in spellcasting mode without being actual spellcast
bool useMoveRangeForMouse = !hoveredMoveHexes.empty() || !settings["battle"]["mouseShadow"].Bool();
const auto & hoveredMouseHexes = useSpellRangeForMouse ? hoveredSpellHexes : ( useMoveRangeForMouse ? hoveredMoveHexes : hoveredMouseHex);

View File

@@ -112,9 +112,10 @@ std::vector<std::string> BattleConsole::splitText(const std::string &text)
boost::split(lines, text, boost::is_any_of("\n"));
const auto & font = GH.renderHandler().loadFont(FONT_SMALL);
for(const auto & line : lines)
{
if (graphics->fonts[FONT_SMALL]->getStringWidth(text) < pos.w)
if (font->getStringWidth(text) < pos.w)
{
output.push_back(line);
}
@@ -327,7 +328,7 @@ void BattleHero::setPhase(EHeroAnimType newPhase)
void BattleHero::heroLeftClicked()
{
if(owner.actionsController->spellcastingModeActive()) //we are casting a spell
if(owner.actionsController->heroSpellcastingModeActive()) //we are casting a spell
return;
if(!hero || !owner.makingTurn())
@@ -1098,7 +1099,8 @@ void StackQueue::StackBox::setUnit(const battle::Unit * unit, size_t turn, std::
if(currentTurn && !owner->embedded)
{
std::string tmp = std::to_string(*currentTurn);
int len = graphics->fonts[FONT_SMALL]->getStringWidth(tmp);
const auto & font = GH.renderHandler().loadFont(FONT_SMALL);
int len = font->getStringWidth(tmp);
roundRect->pos.w = len + 6;
round->setText(tmp);
}

View File

@@ -17,7 +17,9 @@
#include "../render/Colors.h"
#include "../render/EFont.h"
#include "../render/IFont.h"
#include "../render/IRenderHandler.h"
#include "../gui/TextAlignment.h"
#include "../gui/CGuiHandler.h"
#include "../render/Graphics.h"
BattleOverlayLogVisualizer::BattleOverlayLogVisualizer(
@@ -30,7 +32,8 @@ BattleOverlayLogVisualizer::BattleOverlayLogVisualizer(
void BattleOverlayLogVisualizer::drawText(BattleHex hex, int lineNumber, const std::string & text)
{
Point offset = owner.fieldController->hexPositionLocal(hex).topLeft() + Point(20, 20);
int h = graphics->fonts[EFonts::FONT_TINY]->getLineHeight();
const auto & font = GH.renderHandler().loadFont(FONT_TINY);
int h = font->getLineHeight();
offset.y += h * lineNumber;

View File

@@ -318,10 +318,10 @@ void BattleStacksController::showStackAmountBox(Canvas & canvas, const CStack *
boxPosition = owner.fieldController->hexPositionLocal(frontPos).center() + Point(-8, -14);
}
Point textPosition = Point(amountBG->dimensions().x/2 + boxPosition.x, boxPosition.y + graphics->fonts[EFonts::FONT_TINY]->getLineHeight() - 6);
Point textPosition = Point(amountBG->dimensions().x/2 + boxPosition.x, boxPosition.y + amountBG->dimensions().y/2);
canvas.draw(amountBG, boxPosition);
canvas.drawText(textPosition, EFonts::FONT_TINY, Colors::WHITE, ETextAlignment::TOPCENTER, TextOperations::formatMetric(stack->getCount(), 4));
canvas.drawText(textPosition, EFonts::FONT_TINY, Colors::WHITE, ETextAlignment::CENTER, TextOperations::formatMetric(stack->getCount(), 4));
}
void BattleStacksController::showStack(Canvas & canvas, const CStack * stack)
@@ -862,7 +862,8 @@ std::vector<const CStack *> BattleStacksController::selectHoveredStacks()
spell = owner.actionsController->getCurrentSpell(hoveredHex);
caster = owner.actionsController->getCurrentSpellcaster();
if(caster && spell && owner.actionsController->currentActionSpellcasting(hoveredHex) ) //when casting spell
//casting spell or in explicit spellcasting mode that also handles SPELL_LIKE_ATTACK
if(caster && spell && (owner.actionsController->currentActionSpellcasting(hoveredHex) || owner.actionsController->creatureSpellcastingModeActive()))
{
spells::Target target;
target.emplace_back(hoveredHex);

View File

@@ -538,7 +538,7 @@ void BattleWindow::tacticPhaseEnded()
void BattleWindow::bOptionsf()
{
if (owner.actionsController->spellcastingModeActive())
if (owner.actionsController->heroSpellcastingModeActive())
return;
CCS->curh->set(Cursor::Map::POINTER);
@@ -548,7 +548,7 @@ void BattleWindow::bOptionsf()
void BattleWindow::bSurrenderf()
{
if (owner.actionsController->spellcastingModeActive())
if (owner.actionsController->heroSpellcastingModeActive())
return;
int cost = owner.getBattle()->battleGetSurrenderCost();
@@ -568,7 +568,7 @@ void BattleWindow::bSurrenderf()
void BattleWindow::bFleef()
{
if (owner.actionsController->spellcastingModeActive())
if (owner.actionsController->heroSpellcastingModeActive())
return;
if ( owner.getBattle()->battleCanFlee() )
@@ -675,7 +675,7 @@ void BattleWindow::setAlternativeActions(const std::list<PossiblePlayerBattleAct
void BattleWindow::bAutofightf()
{
if (owner.actionsController->spellcastingModeActive())
if (owner.actionsController->heroSpellcastingModeActive())
return;
if(settings["battle"]["endWithAutocombat"].Bool() && onlyOnePlayerHuman)
@@ -712,7 +712,7 @@ void BattleWindow::bAutofightf()
void BattleWindow::bSpellf()
{
if (owner.actionsController->spellcastingModeActive())
if (owner.actionsController->heroSpellcastingModeActive())
return;
if (!owner.makingTurn())
@@ -785,7 +785,7 @@ void BattleWindow::bSwitchActionf()
void BattleWindow::bWaitf()
{
if (owner.actionsController->spellcastingModeActive())
if (owner.actionsController->heroSpellcastingModeActive())
return;
if (owner.stacksController->getActiveStack() != nullptr)
@@ -794,7 +794,7 @@ void BattleWindow::bWaitf()
void BattleWindow::bDefencef()
{
if (owner.actionsController->spellcastingModeActive())
if (owner.actionsController->heroSpellcastingModeActive())
return;
if (owner.stacksController->getActiveStack() != nullptr)
@@ -803,7 +803,7 @@ void BattleWindow::bDefencef()
void BattleWindow::bConsoleUpf()
{
if (owner.actionsController->spellcastingModeActive())
if (owner.actionsController->heroSpellcastingModeActive())
return;
console->scrollUp();
@@ -811,7 +811,7 @@ void BattleWindow::bConsoleUpf()
void BattleWindow::bConsoleDownf()
{
if (owner.actionsController->spellcastingModeActive())
if (owner.actionsController->heroSpellcastingModeActive())
return;
console->scrollDown();
@@ -851,8 +851,8 @@ void BattleWindow::blockUI(bool on)
setShortcutBlocked(EShortcut::BATTLE_WAIT, on || owner.tacticsMode || !canWait);
setShortcutBlocked(EShortcut::BATTLE_DEFEND, on || owner.tacticsMode);
setShortcutBlocked(EShortcut::BATTLE_SELECT_ACTION, on || owner.tacticsMode);
setShortcutBlocked(EShortcut::BATTLE_AUTOCOMBAT, (settings["battle"]["endWithAutocombat"].Bool() && onlyOnePlayerHuman) ? on || owner.tacticsMode || owner.actionsController->spellcastingModeActive() : owner.actionsController->spellcastingModeActive());
setShortcutBlocked(EShortcut::BATTLE_END_WITH_AUTOCOMBAT, on || owner.tacticsMode || !onlyOnePlayerHuman || owner.actionsController->spellcastingModeActive());
setShortcutBlocked(EShortcut::BATTLE_AUTOCOMBAT, (settings["battle"]["endWithAutocombat"].Bool() && onlyOnePlayerHuman) ? on || owner.tacticsMode || owner.actionsController->heroSpellcastingModeActive() : owner.actionsController->heroSpellcastingModeActive());
setShortcutBlocked(EShortcut::BATTLE_END_WITH_AUTOCOMBAT, on || owner.tacticsMode || !onlyOnePlayerHuman || owner.actionsController->heroSpellcastingModeActive());
setShortcutBlocked(EShortcut::BATTLE_TACTICS_END, on || !owner.tacticsMode);
setShortcutBlocked(EShortcut::BATTLE_TACTICS_NEXT, on || !owner.tacticsMode);
setShortcutBlocked(EShortcut::BATTLE_CONSOLE_DOWN, on && !owner.tacticsMode);

View File

@@ -192,7 +192,8 @@ void CGuiHandler::drawFPSCounter()
std::string fps = std::to_string(framerate().getFramerate())+" FPS";
graphics->fonts[FONT_SMALL]->renderTextLeft(screen, fps, Colors::WHITE, Point(8 * scaling, screen->h-22 * scaling));
const auto & font = GH.renderHandler().loadFont(FONT_SMALL);
font->renderTextLeft(screen, fps, Colors::WHITE, Point(8 * scaling, screen->h-22 * scaling));
}
bool CGuiHandler::amIGuiThread()

View File

@@ -254,6 +254,10 @@ void EventDispatcher::handleLeftButtonClick(const Point & position, int toleranc
i->mouseClickedState = isPressed;
i->clickCancel(position);
}
else if(isPressed)
{
i->notFocusedClick();
}
}
}
}

View File

@@ -51,6 +51,7 @@ public:
virtual void clickCancel(const Point & cursorPosition) {}
virtual void showPopupWindow(const Point & cursorPosition) {}
virtual void clickDouble(const Point & cursorPosition) {}
virtual void notFocusedClick() {};
/// Called when user pans screen by specified distance
virtual void gesturePanning(const Point & initialPosition, const Point & currentPosition, const Point & lastUpdateDistance) {}

View File

@@ -19,6 +19,7 @@
#include "../gui/Shortcut.h"
#include "../render/Graphics.h"
#include "../render/IFont.h"
#include "../render/IRenderHandler.h"
#include "../widgets/CComponent.h"
#include "../widgets/ComboBox.h"
#include "../widgets/Buttons.h"
@@ -284,7 +285,7 @@ EFonts InterfaceObjectConfigurable::readFont(const JsonNode & config) const
return EFonts::FONT_CALLI;
}
logGlobal->debug("Unknown font attribute");
return EFonts::FONT_TIMES;
return EFonts::FONT_MEDIUM;
}
std::pair<std::string, std::string> InterfaceObjectConfigurable::readHintText(const JsonNode & config) const
@@ -357,8 +358,9 @@ std::shared_ptr<CMultiLineLabel> InterfaceObjectConfigurable::buildMultiLineLabe
auto color = readColor(config["color"]);
auto text = readText(config["text"]);
Rect rect = readRect(config["rect"]);
const auto & fontPtr = GH.renderHandler().loadFont(font);
if(!config["adoptHeight"].isNull() && config["adoptHeight"].Bool())
rect.h = graphics->fonts[font]->getLineHeight() * 2;
rect.h = fontPtr->getLineHeight() * 2;
return std::make_shared<CMultiLineLabel>(rect, font, alignment, color, text);
}

View File

@@ -55,6 +55,7 @@
#include "../../lib/campaign/CampaignState.h"
#include "../../lib/mapping/CMapService.h"
#include "../../lib/mapping/CMapInfo.h"
#include "../../lib/mapping/CMapHeader.h"
#include "../../lib/mapObjects/CGHeroInstance.h"
@@ -126,9 +127,11 @@ CBonusSelection::CBonusSelection()
for(auto scenarioID : getCampaign()->allScenarios())
{
if(getCampaign()->isAvailable(scenarioID))
regions.push_back(std::make_shared<CRegion>(scenarioID, true, true, getCampaign()->getRegions()));
regions.push_back(std::make_shared<CRegion>(scenarioID, true, true, false, getCampaign()->getRegions()));
else if(getCampaign()->isConquered(scenarioID)) //display as striped
regions.push_back(std::make_shared<CRegion>(scenarioID, false, false, getCampaign()->getRegions()));
regions.push_back(std::make_shared<CRegion>(scenarioID, false, false, false, getCampaign()->getRegions()));
else
regions.push_back(std::make_shared<CRegion>(scenarioID, false, false, true, getCampaign()->getRegions()));
}
if (!getCampaign()->getMusic().empty())
@@ -400,6 +403,7 @@ void CBonusSelection::goBack()
CSH->state = EClientState::LOBBY;
}
*/
CMM->playMusic();
}
void CBonusSelection::startMap()
@@ -476,8 +480,8 @@ void CBonusSelection::decreaseDifficulty()
CSH->setDifficulty(CSH->si->difficulty - 1);
}
CBonusSelection::CRegion::CRegion(CampaignScenarioID id, bool accessible, bool selectable, const CampaignRegions & campDsc)
: CIntObject(LCLICK | SHOW_POPUP), idOfMapAndRegion(id), accessible(accessible), selectable(selectable)
CBonusSelection::CRegion::CRegion(CampaignScenarioID id, bool accessible, bool selectable, bool labelOnly, const CampaignRegions & campDsc)
: CIntObject(LCLICK | SHOW_POPUP), idOfMapAndRegion(id), accessible(accessible), selectable(selectable), labelOnly(labelOnly)
{
OBJECT_CONSTRUCTION;
@@ -493,10 +497,20 @@ CBonusSelection::CRegion::CRegion(CampaignScenarioID id, bool accessible, bool s
graphicsStriped->disable();
pos.w = graphicsNotSelected->pos.w;
pos.h = graphicsNotSelected->pos.h;
auto labelPos = campDsc.getLabelPosition(id);
if(labelPos)
{
auto mapHeader = CSH->si->campState->getMapHeader(idOfMapAndRegion);
label = std::make_shared<CLabel>((*labelPos).x, (*labelPos).y, FONT_SMALL, ETextAlignment::CENTER, Colors::WHITE, mapHeader->name.toString());
}
}
void CBonusSelection::CRegion::updateState()
{
if(labelOnly)
return;
if(!accessible)
{
graphicsNotSelected->disable();
@@ -519,7 +533,7 @@ void CBonusSelection::CRegion::updateState()
void CBonusSelection::CRegion::clickReleased(const Point & cursorPosition)
{
if(selectable && !graphicsNotSelected->getSurface()->isTransparent(cursorPosition - pos.topLeft()))
if(!labelOnly && selectable && !graphicsNotSelected->getSurface()->isTransparent(cursorPosition - pos.topLeft()))
{
CSH->setCampaignMap(idOfMapAndRegion);
}
@@ -529,7 +543,7 @@ void CBonusSelection::CRegion::showPopupWindow(const Point & cursorPosition)
{
// FIXME: For some reason "down" is only ever contain indeterminate_value
auto & text = CSH->si->campState->scenario(idOfMapAndRegion).regionText;
if(!graphicsNotSelected->getSurface()->isTransparent(cursorPosition - pos.topLeft()) && !text.empty())
if(!labelOnly && !graphicsNotSelected->getSurface()->isTransparent(cursorPosition - pos.topLeft()) && !text.empty())
{
CRClickPopup::createAndPush(text.toString());
}

View File

@@ -49,8 +49,10 @@ public:
CampaignScenarioID idOfMapAndRegion;
bool accessible; // false if region should be striped
bool selectable; // true if region should be selectable
bool labelOnly;
std::shared_ptr<CLabel> label;
public:
CRegion(CampaignScenarioID id, bool accessible, bool selectable, const CampaignRegions & campDsc);
CRegion(CampaignScenarioID id, bool accessible, bool selectable, bool labelOnly, const CampaignRegions & campDsc);
void updateState();
void clickReleased(const Point & cursorPosition) override;
void showPopupWindow(const Point & cursorPosition) override;

View File

@@ -256,15 +256,17 @@ void InfoCard::changeSelection()
if(!showChat)
labelGroupPlayers->disable();
const auto & font = GH.renderHandler().loadFont(FONT_SMALL);
for(const auto & p : CSH->playerNames)
{
int slotsUsed = labelGroupPlayers->currentSize();
Point labelPosition;
if(slotsUsed < 4)
labelPosition = Point(24, 285 + slotsUsed * graphics->fonts[FONT_SMALL]->getLineHeight()); // left column
labelPosition = Point(24, 285 + slotsUsed * font->getLineHeight()); // left column
else
labelPosition = Point(193, 285 + (slotsUsed - 4) * graphics->fonts[FONT_SMALL]->getLineHeight()); // right column
labelPosition = Point(193, 285 + (slotsUsed - 4) * font->getLineHeight()); // right column
labelGroupPlayers->add(labelPosition.x, labelPosition.y, p.second.name);
}
@@ -358,7 +360,8 @@ CChatBox::CChatBox(const Rect & rect)
pos += rect.topLeft();
setRedrawParent(true);
const int height = static_cast<int>(graphics->fonts[FONT_SMALL]->getLineHeight());
const auto & font = GH.renderHandler().loadFont(FONT_SMALL);
const int height = font->getLineHeight();
Rect textInputArea(1, rect.h - height, rect.w - 1, height);
Rect chatHistoryArea(3, 1, rect.w - 3, rect.h - height - 1);
inputBackground = std::make_shared<TransparentFilledRectangle>(textInputArea, ColorRGBA(0,0,0,192));

View File

@@ -19,6 +19,7 @@
#include "../gui/WindowHandler.h"
#include "../render/Graphics.h"
#include "../render/IFont.h"
#include "../render/IRenderHandler.h"
#include "../media/ISoundPlayer.h"
#include "../widgets/CComponent.h"
#include "../widgets/ComboBox.h"
@@ -1034,12 +1035,14 @@ OptionsTab::PlayerOptionsEntry::PlayerOptionsEntry(const PlayerSettings & S, con
labelPlayerNameEdit = std::make_shared<CTextInput>(Rect(6, 3, 95, 15), EFonts::FONT_SMALL, ETextAlignment::CENTER, false);
labelPlayerNameEdit->setText(name);
}
labelWhoCanPlay = std::make_shared<CMultiLineLabel>(Rect(6, 23, 45, (int)graphics->fonts[EFonts::FONT_TINY]->getLineHeight()*2), EFonts::FONT_TINY, ETextAlignment::CENTER, Colors::WHITE, CGI->generaltexth->arraytxt[206 + whoCanPlay]);
const auto & font = GH.renderHandler().loadFont(FONT_SMALL);
labelWhoCanPlay = std::make_shared<CMultiLineLabel>(Rect(6, 23, 45, font->getLineHeight()*2), EFonts::FONT_TINY, ETextAlignment::CENTER, Colors::WHITE, CGI->generaltexth->arraytxt[206 + whoCanPlay]);
auto hasHandicap = [this](){ return s->handicap.startBonus.empty() && s->handicap.percentIncome == 100 && s->handicap.percentGrowth == 100; };
std::string labelHandicapText = hasHandicap() ? CGI->generaltexth->arraytxt[210] : MetaString::createFromTextID("vcmi.lobby.handicap").toString();
labelHandicap = std::make_shared<CMultiLineLabel>(Rect(57, 24, 47, (int)graphics->fonts[EFonts::FONT_TINY]->getLineHeight()*2), EFonts::FONT_TINY, ETextAlignment::CENTER, Colors::WHITE, labelHandicapText);
handicap = std::make_shared<LRClickableArea>(Rect(56, 24, 49, (int)graphics->fonts[EFonts::FONT_TINY]->getLineHeight()*2), [](){
labelHandicap = std::make_shared<CMultiLineLabel>(Rect(57, 24, 47, font->getLineHeight()*2), EFonts::FONT_TINY, ETextAlignment::CENTER, Colors::WHITE, labelHandicapText);
handicap = std::make_shared<LRClickableArea>(Rect(56, 24, 49, font->getLineHeight()*2), [](){
if(!CSH->isHost())
return;

View File

@@ -17,8 +17,10 @@
#include "../render/Colors.h"
#include "../render/EFont.h"
#include "../render/IFont.h"
#include "../render/IRenderHandler.h"
#include "../render/Graphics.h"
#include "../gui/TextAlignment.h"
#include "../gui/CGuiHandler.h"
MapOverlayLogVisualizer::MapOverlayLogVisualizer(Canvas & target, std::shared_ptr<MapViewModel> model)
@@ -78,8 +80,10 @@ void MapOverlayLogVisualizer::drawText(
if(viewPort.isInside(pStart))
{
int w = graphics->fonts[EFonts::FONT_TINY]->getStringWidth(text);
int h = graphics->fonts[EFonts::FONT_TINY]->getLineHeight();
const auto & font = GH.renderHandler().loadFont(FONT_TINY);
int w = font->getStringWidth(text);
int h = font->getLineHeight();
pStart.y += h * lineNumber;

View File

@@ -188,6 +188,8 @@ void MapViewCache::render(const std::shared_ptr<IMapRendererContext> & context,
if(context->showTextOverlay())
{
const auto & font = GH.renderHandler().loadFont(FONT_TINY);
for(int y = dimensions.top(); y < dimensions.bottom(); ++y)
{
for(int x = dimensions.left(); x < dimensions.right(); ++x)
@@ -204,8 +206,6 @@ void MapViewCache::render(const std::shared_ptr<IMapRendererContext> & context,
else
position.y -= targetRect.h / 4;
const auto font = graphics->fonts[EFonts::FONT_TINY];
Point dimensions(font->getStringWidth(overlay), font->getLineHeight());
Rect textRect = Rect(position - dimensions / 2, dimensions).resize(2);

View File

@@ -11,6 +11,7 @@
#include "Canvas.h"
#include "../gui/CGuiHandler.h"
#include "../render/IRenderHandler.h"
#include "../render/IScreenHandler.h"
#include "../renderSDL/SDL_Extensions.h"
#include "Colors.h"
@@ -169,23 +170,27 @@ void Canvas::drawBorderDashed(const Rect & target, const ColorRGBA & color)
void Canvas::drawText(const Point & position, const EFonts & font, const ColorRGBA & colorDest, ETextAlignment alignment, const std::string & text )
{
const auto & fontPtr = GH.renderHandler().loadFont(font);
switch (alignment)
{
case ETextAlignment::TOPLEFT: return graphics->fonts[font]->renderTextLeft (surface, text, colorDest, transformPos(position));
case ETextAlignment::TOPCENTER: return graphics->fonts[font]->renderTextCenter(surface, text, colorDest, transformPos(position));
case ETextAlignment::CENTER: return graphics->fonts[font]->renderTextCenter(surface, text, colorDest, transformPos(position));
case ETextAlignment::BOTTOMRIGHT: return graphics->fonts[font]->renderTextRight (surface, text, colorDest, transformPos(position));
case ETextAlignment::TOPLEFT: return fontPtr->renderTextLeft (surface, text, colorDest, transformPos(position));
case ETextAlignment::TOPCENTER: return fontPtr->renderTextCenter(surface, text, colorDest, transformPos(position));
case ETextAlignment::CENTER: return fontPtr->renderTextCenter(surface, text, colorDest, transformPos(position));
case ETextAlignment::BOTTOMRIGHT: return fontPtr->renderTextRight (surface, text, colorDest, transformPos(position));
}
}
void Canvas::drawText(const Point & position, const EFonts & font, const ColorRGBA & colorDest, ETextAlignment alignment, const std::vector<std::string> & text )
{
const auto & fontPtr = GH.renderHandler().loadFont(font);
switch (alignment)
{
case ETextAlignment::TOPLEFT: return graphics->fonts[font]->renderTextLinesLeft (surface, text, colorDest, transformPos(position));
case ETextAlignment::TOPCENTER: return graphics->fonts[font]->renderTextLinesCenter(surface, text, colorDest, transformPos(position));
case ETextAlignment::CENTER: return graphics->fonts[font]->renderTextLinesCenter(surface, text, colorDest, transformPos(position));
case ETextAlignment::BOTTOMRIGHT: return graphics->fonts[font]->renderTextLinesRight (surface, text, colorDest, transformPos(position));
case ETextAlignment::TOPLEFT: return fontPtr->renderTextLinesLeft (surface, text, colorDest, transformPos(position));
case ETextAlignment::TOPCENTER: return fontPtr->renderTextLinesCenter(surface, text, colorDest, transformPos(position));
case ETextAlignment::CENTER: return fontPtr->renderTextLinesCenter(surface, text, colorDest, transformPos(position));
case ETextAlignment::BOTTOMRIGHT: return fontPtr->renderTextLinesRight (surface, text, colorDest, transformPos(position));
}
}

View File

@@ -15,7 +15,7 @@
struct SDL_Surface;
class IImage;
enum EFonts : int;
enum EFonts : int8_t;
enum class CanvasScalingPolicy
{

View File

@@ -9,7 +9,15 @@
*/
#pragma once
enum EFonts : int
enum EFonts : int8_t
{
FONT_BIG, FONT_CALLI, FONT_CREDITS, FONT_HIGH_SCORE, FONT_MEDIUM, FONT_SMALL, FONT_TIMES, FONT_TINY, FONT_VERD
FONT_BIG,
FONT_CALLI,
FONT_CREDITS,
FONT_HIGH_SCORE,
FONT_MEDIUM,
FONT_SMALL,
FONT_TIMES,
FONT_TINY,
FONT_VERD
};

View File

@@ -19,25 +19,15 @@
#include <vcmi/spells/Service.h>
#include "../renderSDL/SDL_Extensions.h"
#include "../renderSDL/CBitmapFont.h"
#include "../renderSDL/CBitmapHanFont.h"
#include "../renderSDL/CTrueTypeFont.h"
#include "../render/CAnimation.h"
#include "../render/IImage.h"
#include "../render/IRenderHandler.h"
#include "../gui/CGuiHandler.h"
#include "../lib/filesystem/Filesystem.h"
#include "../lib/filesystem/CBinaryReader.h"
#include "../../lib/json/JsonNode.h"
#include "../lib/modding/CModHandler.h"
#include "../lib/modding/ModScope.h"
#include "CGameInfo.h"
#include "../lib/VCMI_Lib.h"
#include "../CCallback.h"
#include "../lib/texts/CGeneralTextHandler.h"
#include "../lib/vcmi_endian.h"
#include "../lib/CStopWatch.h"
#include "../lib/CHeroHandler.h"
#include <SDL_surface.h>
@@ -127,7 +117,6 @@ void Graphics::initializeBattleGraphics()
}
Graphics::Graphics()
{
loadFonts();
loadPaletteAndColors();
initializeBattleGraphics();
loadErmuToPicture();
@@ -166,29 +155,6 @@ void Graphics::setPlayerFlagColor(SDL_Palette * targetPalette, PlayerColor playe
}
}
void Graphics::loadFonts()
{
const JsonNode config(JsonPath::builtin("config/fonts.json"));
const JsonVector & bmpConf = config["bitmap"].Vector();
const JsonNode & ttfConf = config["trueType"];
const JsonNode & hanConf = config["bitmapHan"];
assert(bmpConf.size() == FONTS_NUMBER);
for (size_t i=0; i<FONTS_NUMBER; i++)
{
std::string filename = bmpConf[i].String();
if (!hanConf[filename].isNull())
fonts[i] = std::make_shared<CBitmapHanFont>(hanConf[filename]);
else if (!ttfConf[filename].isNull()) // no ttf override
fonts[i] = std::make_shared<CTrueTypeFont>(ttfConf[filename]);
else
fonts[i] = std::make_shared<CBitmapFont>(filename);
}
}
void Graphics::loadErmuToPicture()
{
//loading ERMU to picture

View File

@@ -9,26 +9,11 @@
*/
#pragma once
#include "../lib/GameConstants.h"
#include "../lib/constants/NumericConstants.h"
#include "../lib/constants/EntityIdentifiers.h"
#include "../lib/Color.h"
#include "../lib/filesystem/ResourcePath.h"
VCMI_LIB_NAMESPACE_BEGIN
class CGHeroInstance;
class CGTownInstance;
class CHeroClass;
struct InfoAboutHero;
struct InfoAboutTown;
class CGObjectInstance;
class ObjectTemplate;
class EntityService;
class JsonNode;
VCMI_LIB_NAMESPACE_END
struct SDL_Palette;
class IFont;
/// Handles fonts, hero images, town images, various graphics
class Graphics
@@ -36,13 +21,8 @@ class Graphics
void initializeBattleGraphics();
void loadPaletteAndColors();
void loadErmuToPicture();
void loadFonts();
public:
//Fonts
static const int FONTS_NUMBER = 9;
std::array< std::shared_ptr<IFont>, FONTS_NUMBER> fonts;
using PlayerPalette = std::array<ColorRGBA, 32>;
//various graphics

View File

@@ -23,13 +23,33 @@ int IFont::getScalingFactor() const
return GH.screenHandler().getScalingFactor();
}
size_t IFont::getLineHeight() const
{
return getLineHeightScaled() / getScalingFactor();
}
size_t IFont::getGlyphWidth(const char * data) const
{
return getGlyphWidthScaled(data) / getScalingFactor();
}
size_t IFont::getStringWidth(const std::string & data) const
{
return getStringWidthScaled(data) / getScalingFactor();
}
size_t IFont::getFontAscent() const
{
return getFontAscentScaled() / getScalingFactor();
}
size_t IFont::getStringWidthScaled(const std::string & data) const
{
size_t width = 0;
for(size_t i=0; i<data.size(); i += TextOperations::getUnicodeCharacterSize(data[i]))
{
width += getGlyphWidth(data.data() + i);
width += getGlyphWidthScaled(data.data() + i);
}
return width;
}

View File

@@ -19,8 +19,6 @@ struct SDL_Surface;
class IFont : boost::noncopyable
{
protected:
/// Internal function to render font, see renderTextLeft
virtual void renderText(SDL_Surface * surface, const std::string & data, const ColorRGBA & color, const Point & pos) const = 0;
int getScalingFactor() const;
@@ -29,11 +27,27 @@ public:
{}
/// Returns height of font
virtual size_t getLineHeight() const = 0;
virtual size_t getLineHeightScaled() const = 0;
/// Returns width, in pixels of a character glyph. Pointer must contain at least characterSize valid bytes
virtual size_t getGlyphWidth(const char * data) const = 0;
virtual size_t getGlyphWidthScaled(const char * data) const = 0;
/// Return width of the string
virtual size_t getStringWidth(const std::string & data) const;
virtual size_t getStringWidthScaled(const std::string & data) const;
/// Returns distance from top of the font glyphs to baseline
virtual size_t getFontAscentScaled() const = 0;
/// Returns height of font
size_t getLineHeight() const;
/// Returns width, in pixels of a character glyph. Pointer must contain at least characterSize valid bytes
size_t getGlyphWidth(const char * data) const;
/// Return width of the string
size_t getStringWidth(const std::string & data) const;
/// Returns distance from top of the font glyphs to baseline
size_t getFontAscent() const;
/// Internal function to render font, see renderTextLeft
virtual void renderText(SDL_Surface * surface, const std::string & data, const ColorRGBA & color, const Point & pos) const = 0;
virtual bool canRepresentCharacter(const char * data) const = 0;
/**
* @param surface - destination to print text on

View File

@@ -17,9 +17,11 @@ VCMI_LIB_NAMESPACE_END
struct SDL_Surface;
class IFont;
class IImage;
class CAnimation;
enum class EImageBlitMode : uint8_t;
enum EFonts : int8_t;
class IRenderHandler : public boost::noncopyable
{
@@ -40,4 +42,7 @@ public:
/// Loads animation using given path
virtual std::shared_ptr<CAnimation> loadAnimation(const AnimationPath & path, EImageBlitMode mode) = 0;
/// Returns font with specified identifer
virtual std::shared_ptr<const IFont> loadFont(EFonts font) = 0;
};

View File

@@ -96,21 +96,14 @@ static AtlasLayout doAtlasPacking(const std::map<int, Point> & images)
}
}
void CBitmapFont::loadModFont(const std::string & modName, const ResourcePath & resource, std::unordered_map<CodePoint, EntryFNT> & loadedChars)
void CBitmapFont::loadFont(const ResourcePath & resource, std::unordered_map<CodePoint, EntryFNT> & loadedChars)
{
if (!CResourceHandler::get(modName)->existsResource(resource))
{
logGlobal->error("Failed to load font %s from mod %s", resource.getName(), modName);
return;
}
auto data = CResourceHandler::get(modName)->load(resource)->readAll();
std::string modLanguage = CGI->modh->getModLanguage(modName);
auto data = CResourceHandler::get()->load(resource)->readAll();
std::string modName = VLC->modh->findResourceOrigin(resource);
std::string modLanguage = VLC->modh->getModLanguage(modName);
std::string modEncoding = Languages::getLanguageOptions(modLanguage).encoding;
uint32_t dataHeight = data.first[5];
maxHeight = std::max(maxHeight, dataHeight);
height = data.first[5];
constexpr size_t symbolsInFile = 0x100;
constexpr size_t baseIndex = 32;
@@ -126,10 +119,10 @@ void CBitmapFont::loadModFont(const std::string & modName, const ResourcePath &
symbol.leftOffset = read_le_u32(data.first.get() + baseIndex + charIndex * 12 + 0);
symbol.width = read_le_u32(data.first.get() + baseIndex + charIndex * 12 + 4);
symbol.rightOffset = read_le_u32(data.first.get() + baseIndex + charIndex * 12 + 8);
symbol.height = dataHeight;
symbol.height = height;
uint32_t pixelDataOffset = read_le_u32(data.first.get() + offsetIndex + charIndex * 4);
uint32_t pixelsCount = dataHeight * symbol.width;
uint32_t pixelsCount = height * symbol.width;
symbol.pixels.resize(pixelsCount);
@@ -139,21 +132,27 @@ void CBitmapFont::loadModFont(const std::string & modName, const ResourcePath &
loadedChars[codepoint] = symbol;
}
// Try to use symbol 'L' to detect font 'ascent' - number of pixels above text baseline
const auto & symbolL = loadedChars['L'];
uint32_t lastNonEmptyRow = 0;
for (uint32_t row = 0; row < symbolL.height; ++row)
{
for (uint32_t col = 0; col < symbolL.width; ++col)
if (symbolL.pixels.at(row * symbolL.width + col) == 255)
lastNonEmptyRow = std::max(lastNonEmptyRow, row);
}
ascent = lastNonEmptyRow + 1;
}
CBitmapFont::CBitmapFont(const std::string & filename):
maxHeight(0)
height(0)
{
ResourcePath resource("data/" + filename, EResType::BMP_FONT);
std::unordered_map<CodePoint, EntryFNT> loadedChars;
loadModFont("core", resource, loadedChars);
for(const auto & modName : VLC->modh->getActiveMods())
{
if (CResourceHandler::get(modName)->existsResource(resource))
loadModFont(modName, resource, loadedChars);
}
loadFont(resource, loadedChars);
std::map<int, Point> atlasSymbol;
for (auto const & symbol : loadedChars)
@@ -213,8 +212,6 @@ CBitmapFont::CBitmapFont(const std::string & filename):
SDL_FreeSurface(atlasImage);
atlasImage = scaledSurface;
}
IMG_SavePNG(atlasImage, ("/home/ivan/font_" + filename).c_str());
}
CBitmapFont::~CBitmapFont()
@@ -222,12 +219,12 @@ CBitmapFont::~CBitmapFont()
SDL_FreeSurface(atlasImage);
}
size_t CBitmapFont::getLineHeight() const
size_t CBitmapFont::getLineHeightScaled() const
{
return maxHeight;
return height * getScalingFactor();
}
size_t CBitmapFont::getGlyphWidth(const char * data) const
size_t CBitmapFont::getGlyphWidthScaled(const char * data) const
{
CodePoint localChar = TextOperations::getUnicodeCodepoint(data, 4);
@@ -236,7 +233,12 @@ size_t CBitmapFont::getGlyphWidth(const char * data) const
if (iter == chars.end())
return 0;
return iter->second.leftOffset + iter->second.positionInAtlas.w + iter->second.rightOffset;
return (iter->second.leftOffset + iter->second.positionInAtlas.w + iter->second.rightOffset) * getScalingFactor();
}
size_t CBitmapFont::getFontAscentScaled() const
{
return ascent * getScalingFactor();
}
bool CBitmapFont::canRepresentCharacter(const char *data) const

View File

@@ -40,9 +40,10 @@ class CBitmapFont final : public IFont
};
std::unordered_map<CodePoint, BitmapChar> chars;
uint32_t maxHeight;
uint32_t height;
uint32_t ascent;
void loadModFont(const std::string & modName, const ResourcePath & resource, std::unordered_map<CodePoint, EntryFNT> & loadedChars);
void loadFont(const ResourcePath & resource, std::unordered_map<CodePoint, EntryFNT> & loadedChars);
void renderCharacter(SDL_Surface * surface, const BitmapChar & character, const ColorRGBA & color, int &posX, int &posY) const;
void renderText(SDL_Surface * surface, const std::string & data, const ColorRGBA & color, const Point & pos) const override;
@@ -50,11 +51,12 @@ public:
explicit CBitmapFont(const std::string & filename);
~CBitmapFont();
size_t getLineHeight() const override;
size_t getGlyphWidth(const char * data) const override;
size_t getFontAscentScaled() const override;
size_t getLineHeightScaled() const override;
size_t getGlyphWidthScaled(const char * data) const override;
/// returns true if this font contains provided utf-8 character
bool canRepresentCharacter(const char * data) const;
bool canRepresentCharacter(const char * data) const override;
bool canRepresentString(const std::string & data) const;
friend class CBitmapHanFont;

View File

@@ -1,127 +0,0 @@
/*
* CBitmapHanFont.cpp, part of VCMI engine
*
* Authors: listed in file AUTHORS in main folder
*
* License: GNU General Public License v2.0 or later
* Full text of license available in license.txt file, in main folder
*
*/
#include "StdInc.h"
#include "CBitmapHanFont.h"
#include "CBitmapFont.h"
#include "SDL_Extensions.h"
#include "../../lib/filesystem/Filesystem.h"
#include "../../lib/json/JsonNode.h"
#include "../../lib/Rect.h"
#include "../../lib/texts/TextOperations.h"
#include <SDL_surface.h>
size_t CBitmapHanFont::getCharacterDataOffset(size_t index) const
{
size_t rowSize = (size + 7) / 8; // 1 bit per pixel, rounded up
size_t charSize = rowSize * size; // glyph contains "size" rows
return index * charSize;
}
size_t CBitmapHanFont::getCharacterIndex(ui8 first, ui8 second) const
{
if (second > 0x7f )
second--;
return (first - 0x81) * (12*16 - 2) + (second - 0x40);
}
void CBitmapHanFont::renderCharacter(SDL_Surface * surface, int characterIndex, const ColorRGBA & color, int &posX, int &posY) const
{
//TODO: somewhat duplicated with CBitmapFont::renderCharacter();
Rect clipRect;
CSDL_Ext::getClipRect(surface, clipRect);
CSDL_Ext::TColorPutter colorPutter = CSDL_Ext::getPutterFor(surface);
uint8_t bpp = surface->format->BytesPerPixel;
// start of line, may differ from 0 due to end of surface or clipped surface
int lineBegin = std::max<int>(0, clipRect.y - posY);
int lineEnd = std::min((int)size, clipRect.y + clipRect.h - posY);
// start end end of each row, may differ from 0
int rowBegin = std::max<int>(0, clipRect.x - posX);
int rowEnd = std::min<int>((int)size, clipRect.x + clipRect.w - posX);
//for each line in symbol
for(int dy = lineBegin; dy <lineEnd; dy++)
{
uint8_t *dstLine = (uint8_t*)surface->pixels;
uint8_t *source = data.first.get() + getCharacterDataOffset(characterIndex);
// shift source\destination pixels to current position
dstLine += (posY+dy) * surface->pitch + posX * bpp;
source += ((size + 7) / 8) * dy;
//for each column in line
for(int dx = rowBegin; dx < rowEnd; dx++)
{
// select current bit in bitmap
int bit = (source[dx / 8] << (dx % 8)) & 0x80;
uint8_t* dstPixel = dstLine + dx*bpp;
if (bit != 0)
colorPutter(dstPixel, color.r, color.g, color.b);
}
}
posX += (int)size + 1;
}
void CBitmapHanFont::renderText(SDL_Surface * surface, const std::string & data, const ColorRGBA & color, const Point & pos) const
{
int posX = pos.x;
int posY = pos.y;
SDL_LockSurface(surface);
for(size_t i=0; i<data.size(); i += TextOperations::getUnicodeCharacterSize(data[i]))
{
std::string localChar = TextOperations::fromUnicode(data.substr(i, TextOperations::getUnicodeCharacterSize(data[i])), "GBK");
if (localChar.size() == 1)
fallback->renderCharacter(surface, fallback->chars[ui8(localChar[0])], color, posX, posY);
if (localChar.size() == 2)
renderCharacter(surface, (int)getCharacterIndex(localChar[0], localChar[1]), color, posX, posY);
}
SDL_UnlockSurface(surface);
}
CBitmapHanFont::CBitmapHanFont(const JsonNode &config):
fallback(new CBitmapFont(config["fallback"].String())),
data(CResourceHandler::get()->load(ResourcePath("data/" + config["name"].String(), EResType::OTHER))->readAll()),
size((size_t)config["size"].Float())
{
// basic tests to make sure that fonts are OK
// 1) fonts must contain 190 "sections", 126 symbols each.
assert(getCharacterIndex(0xfe, 0xff) == 190*126);
// 2) ensure that font size is correct - enough to fit all possible symbols
assert(getCharacterDataOffset(getCharacterIndex(0xfe, 0xff)) == data.second);
}
size_t CBitmapHanFont::getLineHeight() const
{
return std::max(size + 1, fallback->getLineHeight());
}
size_t CBitmapHanFont::getGlyphWidth(const char * data) const
{
std::string localChar = TextOperations::fromUnicode(std::string(data, TextOperations::getUnicodeCharacterSize(data[0])), "GBK");
if (localChar.size() == 1)
return fallback->getGlyphWidth(data);
if (localChar.size() == 2)
return size + 1;
return 0;
}

View File

@@ -1,40 +0,0 @@
/*
* CBitmapHanFont.h, part of VCMI engine
*
* Authors: listed in file AUTHORS in main folder
*
* License: GNU General Public License v2.0 or later
* Full text of license available in license.txt file, in main folder
*
*/
#pragma once
#include "../render/IFont.h"
VCMI_LIB_NAMESPACE_BEGIN
class JsonNode;
VCMI_LIB_NAMESPACE_END
class CBitmapFont;
/// supports multi-byte characters for such languages like Chinese
class CBitmapHanFont final : public IFont
{
std::unique_ptr<CBitmapFont> fallback;
// data, directly copied from file
const std::pair<std::unique_ptr<ui8[]>, ui64> data;
// size of the font. Not available in file but needed for proper rendering
const size_t size;
size_t getCharacterDataOffset(size_t index) const;
size_t getCharacterIndex(ui8 first, ui8 second) const;
void renderCharacter(SDL_Surface * surface, int characterIndex, const ColorRGBA & color, int &posX, int &posY) const;
void renderText(SDL_Surface * surface, const std::string & data, const ColorRGBA & color, const Point & pos) const override;
public:
CBitmapHanFont(const JsonNode & config);
size_t getLineHeight() const override;
size_t getGlyphWidth(const char * data) const override;
};

View File

@@ -15,6 +15,7 @@
#include "../render/Colors.h"
#include "../renderSDL/SDL_Extensions.h"
#include "../../lib/CConfigHandler.h"
#include "../../lib/json/JsonNode.h"
#include "../../lib/filesystem/Filesystem.h"
#include "../../lib/texts/TextOperations.h"
@@ -29,12 +30,13 @@ std::pair<std::unique_ptr<ui8[]>, ui64> CTrueTypeFont::loadData(const JsonNode &
int CTrueTypeFont::getPointSize(const JsonNode & config) const
{
float fontScale = settings["video"]["fontScalingFactor"].Float();
int scalingFactor = getScalingFactor();
if (config.isNumber())
return config.Integer() * scalingFactor;
return std::round(config.Integer() * scalingFactor * fontScale);
else
return config[scalingFactor-1].Integer();
return std::round(config[scalingFactor-1].Integer() * fontScale);
}
TTF_Font * CTrueTypeFont::loadFont(const JsonNode &config)
@@ -62,57 +64,65 @@ int CTrueTypeFont::getFontStyle(const JsonNode &config) const
CTrueTypeFont::CTrueTypeFont(const JsonNode & fontConfig):
data(loadData(fontConfig)),
font(loadFont(fontConfig), TTF_CloseFont),
dropShadow(fontConfig["blend"].Bool()),
blended(fontConfig["blend"].Bool())
dropShadow(!fontConfig["noShadow"].Bool()),
outline(fontConfig["outline"].Bool()),
blended(true)
{
assert(font);
TTF_SetFontStyle(font.get(), getFontStyle(fontConfig));
TTF_SetFontHinting(font.get(),TTF_HINTING_MONO);
std::string fallbackName = fontConfig["fallback"].String();
if (!fallbackName.empty())
fallbackFont = std::make_unique<CBitmapFont>(fallbackName);
}
CTrueTypeFont::~CTrueTypeFont() = default;
size_t CTrueTypeFont::getLineHeight() const
size_t CTrueTypeFont::getFontAscentScaled() const
{
if (fallbackFont)
return fallbackFont->getLineHeight();
return TTF_FontHeight(font.get()) / getScalingFactor();
return TTF_FontAscent(font.get());
}
size_t CTrueTypeFont::getGlyphWidth(const char *data) const
size_t CTrueTypeFont::getLineHeightScaled() const
{
if (fallbackFont && fallbackFont->canRepresentCharacter(data))
return fallbackFont->getGlyphWidth(data);
return getStringWidth(std::string(data, TextOperations::getUnicodeCharacterSize(*data)));
return TTF_FontHeight(font.get());
}
size_t CTrueTypeFont::getStringWidth(const std::string & data) const
size_t CTrueTypeFont::getGlyphWidthScaled(const char *data) const
{
if (fallbackFont && fallbackFont->canRepresentString(data))
return fallbackFont->getStringWidth(data);
return getStringWidthScaled(std::string(data, TextOperations::getUnicodeCharacterSize(*data)));
}
bool CTrueTypeFont::canRepresentCharacter(const char * data) const
{
uint32_t codepoint = TextOperations::getUnicodeCodepoint(data, TextOperations::getUnicodeCharacterSize(*data));
#if SDL_TTF_VERSION_ATLEAST(2, 0, 18)
return TTF_GlyphIsProvided32(font.get(), codepoint);
#elif SDL_TTF_VERSION_ATLEAST(2, 0, 12)
if (codepoint <= 0xffff)
return TTF_GlyphIsProvided(font.get(), codepoint);
return true;
#else
return true;
#endif
}
size_t CTrueTypeFont::getStringWidthScaled(const std::string & data) const
{
int width;
TTF_SizeUTF8(font.get(), data.c_str(), &width, nullptr);
return width / getScalingFactor();
return width;
}
void CTrueTypeFont::renderText(SDL_Surface * surface, const std::string & data, const ColorRGBA & color, const Point & pos) const
{
if (fallbackFont && fallbackFont->canRepresentString(data))
if (color.r != 0 && color.g != 0 && color.b != 0) // not black - add shadow
{
fallbackFont->renderText(surface, data, color, pos);
return;
}
if (outline)
renderText(surface, data, Colors::BLACK, pos - Point(1,1) * getScalingFactor());
if (dropShadow && color.r != 0 && color.g != 0 && color.b != 0) // not black - add shadow
renderText(surface, data, Colors::BLACK, pos + Point(1,1) * getScalingFactor());
if (dropShadow || outline)
renderText(surface, data, Colors::BLACK, pos + Point(1,1) * getScalingFactor());
}
if (!data.empty())
{

View File

@@ -21,11 +21,11 @@ using TTF_Font = struct _TTF_Font;
class CTrueTypeFont final : public IFont
{
std::unique_ptr<CBitmapFont> fallbackFont;
const std::pair<std::unique_ptr<ui8[]>, ui64> data;
const std::unique_ptr<TTF_Font, void (*)(TTF_Font*)> font;
const bool blended;
const bool outline;
const bool dropShadow;
std::pair<std::unique_ptr<ui8[]>, ui64> loadData(const JsonNode & config);
@@ -34,11 +34,14 @@ class CTrueTypeFont final : public IFont
int getFontStyle(const JsonNode & config) const;
void renderText(SDL_Surface * surface, const std::string & data, const ColorRGBA & color, const Point & pos) const override;
size_t getFontAscentScaled() const override;
public:
CTrueTypeFont(const JsonNode & fontConfig);
~CTrueTypeFont();
size_t getLineHeight() const override;
size_t getGlyphWidth(const char * data) const override;
size_t getStringWidth(const std::string & data) const override;
bool canRepresentCharacter(const char * data) const override;
size_t getLineHeightScaled() const override;
size_t getGlyphWidthScaled(const char * data) const override;
size_t getStringWidthScaled(const std::string & data) const override;
};

View File

@@ -0,0 +1,136 @@
/*
* FontChain.cpp, part of VCMI engine
*
* Authors: listed in file AUTHORS in main folder
*
* License: GNU General Public License v2.0 or later
* Full text of license available in license.txt file, in main folder
*
*/
#include "StdInc.h"
#include "FontChain.h"
#include "CTrueTypeFont.h"
#include "CBitmapFont.h"
#include "../../lib/CConfigHandler.h"
#include "../../lib/texts/TextOperations.h"
void FontChain::renderText(SDL_Surface * surface, const std::string & data, const ColorRGBA & color, const Point & pos) const
{
auto chunks = splitTextToChunks(data);
int maxAscent = getFontAscentScaled();
Point currentPos = pos;
for (auto const & chunk : chunks)
{
Point chunkPos = currentPos;
int currAscent = chunk.font->getFontAscentScaled();
chunkPos.y += maxAscent - currAscent;
chunk.font->renderText(surface, chunk.text, color, chunkPos);
currentPos.x += chunk.font->getStringWidthScaled(chunk.text);
}
}
size_t FontChain::getFontAscentScaled() const
{
size_t maxHeight = 0;
for(const auto & font : chain)
maxHeight = std::max(maxHeight, font->getFontAscentScaled());
return maxHeight;
}
bool FontChain::bitmapFontsPrioritized() const
{
const std::string & fontType = settings["video"]["fontsType"].String();
if (fontType == "original")
return true;
if (fontType == "scalable")
return false;
// else - autoselection.
if (getScalingFactor() != 1)
return false; // If xbrz in use ttf/scalable fonts are preferred
if (!vstd::isAlmostEqual(1.0, settings["video"]["fontScalingFactor"].Float()))
return false; // If player requested non-100% scaling - use scalable fonts
return true; // else - use original bitmap fonts
}
void FontChain::addTrueTypeFont(const JsonNode & trueTypeConfig)
{
chain.insert(chain.begin(), std::make_unique<CTrueTypeFont>(trueTypeConfig));
}
void FontChain::addBitmapFont(const std::string & bitmapFilename)
{
if (bitmapFontsPrioritized())
chain.insert(chain.begin(), std::make_unique<CBitmapFont>(bitmapFilename));
else
chain.push_back(std::make_unique<CBitmapFont>(bitmapFilename));
}
bool FontChain::canRepresentCharacter(const char * data) const
{
for(const auto & font : chain)
if (font->canRepresentCharacter(data))
return true;
return false;
}
size_t FontChain::getLineHeightScaled() const
{
size_t maxHeight = 0;
for(const auto & font : chain)
maxHeight = std::max(maxHeight, font->getLineHeightScaled());
return maxHeight;
}
size_t FontChain::getGlyphWidthScaled(const char * data) const
{
for(const auto & font : chain)
if (font->canRepresentCharacter(data))
return font->getGlyphWidthScaled(data);
return 0;
}
std::vector<FontChain::TextChunk> FontChain::splitTextToChunks(const std::string & data) const
{
std::vector<TextChunk> chunks;
for (size_t i = 0; i < data.size(); i += TextOperations::getUnicodeCharacterSize(data[i]))
{
const IFont * currentFont = nullptr;
for(const auto & font : chain)
{
if (font->canRepresentCharacter(data.data() + i))
{
currentFont = font.get();
break;
}
}
if (currentFont == nullptr)
continue; // not representable
std::string symbol = data.substr(i, TextOperations::getUnicodeCharacterSize(data[i]));
if (chunks.empty() || chunks.back().font != currentFont)
chunks.push_back({currentFont, symbol});
else
chunks.back().text += symbol;
}
return chunks;
}
size_t FontChain::getStringWidthScaled(const std::string & data) const
{
size_t result = 0;
auto chunks = splitTextToChunks(data);
for (auto const & chunk : chunks)
result += chunk.font->getStringWidthScaled(chunk.text);
return result;
}

View File

@@ -0,0 +1,43 @@
/*
* FontChain.h, part of VCMI engine
*
* Authors: listed in file AUTHORS in main folder
*
* License: GNU General Public License v2.0 or later
* Full text of license available in license.txt file, in main folder
*
*/
#pragma once
#include "../render/IFont.h"
VCMI_LIB_NAMESPACE_BEGIN
class JsonNode;
VCMI_LIB_NAMESPACE_END
class FontChain final : public IFont
{
struct TextChunk
{
const IFont * font;
std::string text;
};
std::vector<TextChunk> splitTextToChunks(const std::string & data) const;
std::vector<std::unique_ptr<IFont>> chain;
void renderText(SDL_Surface * surface, const std::string & data, const ColorRGBA & color, const Point & pos) const override;
size_t getFontAscentScaled() const override;
bool bitmapFontsPrioritized() const;
public:
FontChain() = default;
void addTrueTypeFont(const JsonNode & trueTypeConfig);
void addBitmapFont(const std::string & bitmapFilename);
size_t getLineHeightScaled() const override;
size_t getGlyphWidthScaled(const char * data) const override;
size_t getStringWidthScaled(const std::string & data) const override;
bool canRepresentCharacter(const char * data) const override;
};

View File

@@ -12,6 +12,7 @@
#include "SDLImage.h"
#include "ImageScaled.h"
#include "FontChain.h"
#include "../gui/CGuiHandler.h"
@@ -20,7 +21,6 @@
#include "../render/Colors.h"
#include "../render/ColorFilter.h"
#include "../render/IScreenHandler.h"
#include "../../lib/json/JsonUtils.h"
#include "../../lib/filesystem/Filesystem.h"
#include "../../lib/VCMIDirs.h"
@@ -335,3 +335,32 @@ void RenderHandler::onLibraryLoadingFinished(const Services * services)
addImageListEntries(services->spells());
addImageListEntries(services->skills());
}
std::shared_ptr<const IFont> RenderHandler::loadFont(EFonts font)
{
if (fonts.count(font))
return fonts.at(font);
const int8_t index = static_cast<int8_t>(font);
auto configList = CResourceHandler::get()->getResourcesWithName(JsonPath::builtin("config/fonts.json"));
std::shared_ptr<FontChain> loadedFont = std::make_shared<FontChain>();
std::string bitmapPath;
for(auto & loader : configList)
{
auto stream = loader->load(JsonPath::builtin("config/fonts.json"));
std::unique_ptr<ui8[]> textData(new ui8[stream->getSize()]);
stream->read(textData.get(), stream->getSize());
const JsonNode config(reinterpret_cast<const std::byte*>(textData.get()), stream->getSize(), "config/fonts.json");
const JsonVector & bmpConf = config["bitmap"].Vector();
const JsonNode & ttfConf = config["trueType"];
bitmapPath = bmpConf[index].String();
if (!ttfConf[bitmapPath].isNull())
loadedFont->addTrueTypeFont(ttfConf[bitmapPath]);
}
loadedFont->addBitmapFont(bitmapPath);
fonts[font] = loadedFont;
return loadedFont;
}

View File

@@ -26,6 +26,7 @@ class RenderHandler : public IRenderHandler
std::map<AnimationPath, std::shared_ptr<CDefFile>> animationFiles;
std::map<AnimationPath, AnimationLayoutMap> animationLayouts;
std::map<ImageLocator, std::shared_ptr<ISharedImage>> imageFiles;
std::map<EFonts, std::shared_ptr<const IFont>> fonts;
std::shared_ptr<CDefFile> getAnimationFile(const AnimationPath & path);
AnimationLayoutMap & getAnimationLayout(const AnimationPath & path);
@@ -59,4 +60,7 @@ public:
std::shared_ptr<CAnimation> loadAnimation(const AnimationPath & path, EImageBlitMode mode) override;
std::shared_ptr<IImage> createImage(SDL_Surface * source) override;
/// Returns font with specified identifer
std::shared_ptr<const IFont> loadFont(EFonts font) override;
};

View File

@@ -21,6 +21,7 @@
#include "../gui/Shortcut.h"
#include "../render/Canvas.h"
#include "../render/IFont.h"
#include "../render/IRenderHandler.h"
#include "../render/Graphics.h"
#include "../windows/CMessage.h"
#include "../windows/InfoWindows.h"
@@ -95,9 +96,11 @@ void CComponent::init(ComponentType Type, ComponentSubType Subtype, std::optiona
max = 80;
std::vector<std::string> textLines = CMessage::breakText(getSubtitle(), std::max<int>(max, pos.w), font);
const auto & fontPtr = GH.renderHandler().loadFont(font);
const int height = static_cast<int>(fontPtr->getLineHeight());
for(auto & line : textLines)
{
int height = static_cast<int>(graphics->fonts[font]->getLineHeight());
auto label = std::make_shared<CLabel>(pos.w/2, pos.h + height/2, font, ETextAlignment::CENTER, Colors::WHITE, line);
pos.h += height;

View File

@@ -17,6 +17,7 @@
#include "../gui/Shortcut.h"
#include "../render/Graphics.h"
#include "../render/IFont.h"
#include "../render/IRenderHandler.h"
#include "../../lib/texts/TextOperations.h"
@@ -190,8 +191,9 @@ void CTextInput::updateLabel()
std::string visibleText = getVisibleText();
label->alignment = originalAlignment;
const auto & font = GH.renderHandler().loadFont(label->font);
while (graphics->fonts[label->font]->getStringWidth(visibleText) > pos.w)
while (font->getStringWidth(visibleText) > pos.w)
{
label->alignment = ETextAlignment::CENTERRIGHT;
visibleText = visibleText.substr(TextOperations::getUnicodeCharacterSize(visibleText[0]));

View File

@@ -22,6 +22,7 @@
#include "../render/Canvas.h"
#include "../render/Graphics.h"
#include "../render/IFont.h"
#include "../render/IRenderHandler.h"
#include "../../lib/texts/TextOperations.h"
@@ -56,8 +57,9 @@ CLabel::CLabel(int x, int y, EFonts Font, ETextAlignment Align, const ColorRGBA
if(alignment == ETextAlignment::TOPLEFT) // causes issues for MIDDLE
{
pos.w = (int)graphics->fonts[font]->getStringWidth(visibleText().c_str());
pos.h = (int)graphics->fonts[font]->getLineHeight();
const auto & fontPtr = GH.renderHandler().loadFont(font);
pos.w = fontPtr->getStringWidth(visibleText().c_str());
pos.h = fontPtr->getLineHeight();
}
}
@@ -114,8 +116,12 @@ void CLabel::setMaxWidth(int width)
void CLabel::trimText()
{
if(maxWidth > 0)
while ((int)graphics->fonts[font]->getStringWidth(visibleText().c_str()) > maxWidth)
{
const auto & fontPtr = GH.renderHandler().loadFont(font);
while (fontPtr->getStringWidth(visibleText().c_str()) > maxWidth)
TextOperations::trimRightUnicode(text);
}
}
void CLabel::setColor(const ColorRGBA & Color)
@@ -132,7 +138,8 @@ void CLabel::setColor(const ColorRGBA & Color)
size_t CLabel::getWidth()
{
return graphics->fonts[font]->getStringWidth(visibleText());
const auto & fontPtr = GH.renderHandler().loadFont(font);
return fontPtr->getStringWidth(visibleText());
}
CMultiLineLabel::CMultiLineLabel(Rect position, EFonts Font, ETextAlignment Align, const ColorRGBA & Color, const std::string & Text) :
@@ -171,7 +178,7 @@ void CMultiLineLabel::setText(const std::string & Txt)
void CTextContainer::blitLine(Canvas & to, Rect destRect, std::string what)
{
const auto f = graphics->fonts[font];
const auto f = GH.renderHandler().loadFont(font);
Point where = destRect.topLeft();
const std::string delimiters = "{}";
auto delimitersCount = std::count_if(what.cbegin(), what.cend(), [&delimiters](char c)
@@ -264,7 +271,7 @@ void CMultiLineLabel::showAll(Canvas & to)
{
CIntObject::showAll(to);
const auto f = graphics->fonts[font];
const auto & fontPtr = GH.renderHandler().loadFont(font);
// calculate which lines should be visible
int totalLines = static_cast<int>(lines.size());
@@ -274,17 +281,17 @@ void CMultiLineLabel::showAll(Canvas & to)
if(beginLine < 0)
beginLine = 0;
else
beginLine /= (int)f->getLineHeight();
beginLine /= fontPtr->getLineHeight();
if(endLine < 0)
endLine = 0;
else
endLine /= (int)f->getLineHeight();
endLine /= fontPtr->getLineHeight();
endLine++;
// and where they should be displayed
Point lineStart = getTextLocation().topLeft() - visibleSize + Point(0, beginLine * (int)f->getLineHeight());
Point lineSize = Point(getTextLocation().w, (int)f->getLineHeight());
Point lineStart = getTextLocation().topLeft() - visibleSize + Point(0, beginLine * fontPtr->getLineHeight());
Point lineSize = Point(getTextLocation().w, fontPtr->getLineHeight());
CSDL_Ext::CClipRectGuard guard(to.getInternalSurface(), getTextLocation()); // to properly trim text that is too big to fit
@@ -293,7 +300,7 @@ void CMultiLineLabel::showAll(Canvas & to)
if(!lines[i].empty()) //non-empty line
blitLine(to, Rect(lineStart, lineSize), lines[i]);
lineStart.y += (int)f->getLineHeight();
lineStart.y += fontPtr->getLineHeight();
}
}
@@ -301,15 +308,15 @@ void CMultiLineLabel::splitText(const std::string & Txt, bool redrawAfter)
{
lines.clear();
const auto f = graphics->fonts[font];
int lineHeight = static_cast<int>(f->getLineHeight());
const auto & fontPtr = GH.renderHandler().loadFont(font);
int lineHeight = static_cast<int>(fontPtr->getLineHeight());
lines = CMessage::breakText(Txt, pos.w, font);
textSize.y = lineHeight * (int)lines.size();
textSize.x = 0;
for(const std::string & line : lines)
vstd::amax(textSize.x, f->getStringWidth(line.c_str()));
vstd::amax(textSize.x, fontPtr->getStringWidth(line.c_str()));
if(redrawAfter)
redraw();
}
@@ -322,7 +329,8 @@ Rect CMultiLineLabel::getTextLocation()
if(pos.h <= textSize.y)
return pos;
Point textSize(pos.w, (int)graphics->fonts[font]->getLineHeight() * (int)lines.size());
const auto & fontPtr = GH.renderHandler().loadFont(font);
Point textSize(pos.w, fontPtr->getLineHeight() * (int)lines.size());
Point textOffset(pos.w - textSize.x, pos.h - textSize.y);
switch(alignment)
@@ -421,11 +429,12 @@ void CTextBox::setText(const std::string & text)
label->pos.w = pos.w - 16;
assert(label->pos.w > 0);
label->setText(text);
const auto & fontPtr = GH.renderHandler().loadFont(label->font);
OBJECT_CONSTRUCTION;
slider = std::make_shared<CSlider>(Point(pos.w - 16, 0), pos.h, std::bind(&CTextBox::sliderMoved, this, _1),
label->pos.h, label->textSize.y, 0, Orientation::VERTICAL, CSlider::EStyle(sliderStyle));
slider->setScrollStep((int)graphics->fonts[label->font]->getLineHeight());
slider->setScrollStep(fontPtr->getLineHeight());
slider->setPanningStep(1);
slider->setScrollBounds(pos - slider->pos.topLeft());
}

View File

@@ -77,6 +77,7 @@ CHeroQuickBackpackWindow::CHeroQuickBackpackWindow(const CGHeroInstance * hero,
addSet(arts);
arts->setHero(hero);
addUsedEvents(GESTURE);
addUsedEvents(LCLICK);
pos.w = stretchedBackground->pos.w = arts->pos.w + 2 * windowMargin;
pos.h = stretchedBackground->pos.h = arts->pos.h + windowMargin;
}
@@ -96,6 +97,11 @@ void CHeroQuickBackpackWindow::gesturePanning(const Point & initialPosition, con
redraw();
}
void CHeroQuickBackpackWindow::notFocusedClick()
{
close();
}
void CHeroQuickBackpackWindow::showAll(Canvas & to)
{
if(arts->getSlotsNum() == 0)

View File

@@ -33,6 +33,7 @@ public:
CHeroQuickBackpackWindow(const CGHeroInstance * hero, ArtifactPosition targetSlot);
void gesture(bool on, const Point & initialPosition, const Point & finalPosition) override;
void gesturePanning(const Point & initialPosition, const Point & currentPosition, const Point & lastUpdateDistance) override;
void notFocusedClick() override;
private:
std::shared_ptr<CArtifactsOfHeroQuickBackpack> arts;

View File

@@ -70,6 +70,8 @@ std::vector<std::string> CMessage::breakText(std::string text, size_t maxLineWid
boost::algorithm::trim_right_if(text, boost::algorithm::is_any_of(std::string(" ")));
const auto & fontPtr = GH.renderHandler().loadFont(font);
// each iteration generates one output line
while(text.length())
{
@@ -83,7 +85,7 @@ std::vector<std::string> CMessage::breakText(std::string text, size_t maxLineWid
std::string printableString;
// loops till line is full or end of text reached
while(currPos < text.length() && text[currPos] != 0x0a && graphics->fonts[font]->getStringWidth(printableString) <= maxLineWidth)
while(currPos < text.length() && text[currPos] != 0x0a && fontPtr->getStringWidth(printableString) <= maxLineWidth)
{
symbolSize = TextOperations::getUnicodeCharacterSize(text[currPos]);
@@ -193,9 +195,9 @@ std::string CMessage::guessHeader(const std::string & msg)
int CMessage::guessHeight(const std::string & txt, int width, EFonts font)
{
const auto f = graphics->fonts[font];
const auto & fontPtr = GH.renderHandler().loadFont(font);
const auto lines = CMessage::breakText(txt, width, font);
size_t lineHeight = f->getLineHeight();
size_t lineHeight = fontPtr->getLineHeight();
return lineHeight * lines.size();
}

View File

@@ -86,6 +86,11 @@ void CWindowWithArtifacts::clickPressedOnArtPlace(const CGHeroInstance * hero, c
if(allowExchange || hero->id == heroArtOwner->id)
putPickedArtifact(*hero, slot);
}
else if(GH.isKeyboardShiftDown())
{
if(ArtifactUtils::isSlotEquipment(slot))
GH.windows().createAndPushWindow<CHeroQuickBackpackWindow>(hero, slot);
}
else if(auto art = hero->getArt(slot))
{
if(hero->getOwner() == LOCPLINT->playerID)

View File

@@ -34,6 +34,7 @@
#include "../widgets/TextControls.h"
#include "../widgets/ObjectLists.h"
#include "../widgets/VideoWidget.h"
#include "../widgets/GraphicalPrimitiveCanvas.h"
#include "../render/Canvas.h"
#include "../render/IRenderHandler.h"
@@ -1616,22 +1617,26 @@ VideoWindow::VideoWindow(VideoPath video, ImagePath rim, bool showBackground, fl
addUsedEvents(LCLICK | KEYBOARD);
if(showBackground)
backgroundAroundWindow = std::make_shared<CFilledTexture>(ImagePath::builtin("DIBOXBCK"), Rect(0, 0, GH.screenDimensions().x, GH.screenDimensions().y));
if(!rim.empty())
{
setBackground(rim);
videoPlayer = std::make_shared<VideoWidgetOnce>(Point(80, 186), video, true, [this](){ exit(false); });
pos = center(Rect(0, 0, 800, 600));
}
else
{
blackBackground = std::make_shared<GraphicalPrimitiveCanvas>(Rect(0, 0, GH.screenDimensions().x, GH.screenDimensions().y));
videoPlayer = std::make_shared<VideoWidgetOnce>(Point(0, 0), video, true, scaleFactor, [this](){ exit(false); });
pos = center(Rect(0, 0, videoPlayer->pos.w, videoPlayer->pos.h));
blackBackground->addBox(Point(0, 0), Point(pos.x, pos.y), Colors::BLACK);
}
if(showBackground)
backgroundAroundWindow = std::make_shared<CFilledTexture>(ImagePath::builtin("DIBOXBCK"), Rect(-pos.x, -pos.y, GH.screenDimensions().x, GH.screenDimensions().y));
if(backgroundAroundWindow)
backgroundAroundWindow->pos.moveTo(Point(0, 0));
if(!rim.empty())
setBackground(rim);
}
void VideoWindow::exit(bool skipped)

View File

@@ -44,6 +44,7 @@ class CFilledTexture;
class IImage;
class VideoWidget;
class VideoWidgetOnce;
class GraphicalPrimitiveCanvas;
enum class EUserEvent;
@@ -506,6 +507,7 @@ class VideoWindow : public CWindowObject
{
std::shared_ptr<VideoWidgetOnce> videoPlayer;
std::shared_ptr<CFilledTexture> backgroundAroundWindow;
std::shared_ptr<GraphicalPrimitiveCanvas> blackBackground;
std::function<void(bool)> closeCb;

View File

@@ -6,7 +6,7 @@
"introVideo": "H3X1intr",
"videoRim": "IntroRm2"
},
"MAPS/HC1_MAIN" : { // Heroes Chronicles 1
"MAPS/CHRONICLES/HC1_MAIN" : { // Heroes Chronicles 1
"regions":
{
"background": "chronicles_1/CamBkHc",
@@ -14,14 +14,14 @@
"suffix": ["1", "2", "3"],
"color_suffix_length": 0,
"desc": [
{ "infix": "1", "x": 27, "y": 43 },
{ "infix": "2", "x": 231, "y": 43 },
{ "infix": "3", "x": 27, "y": 178 },
{ "infix": "4", "x": 231, "y": 178 },
{ "infix": "5", "x": 27, "y": 312 },
{ "infix": "6", "x": 231, "y": 312 },
{ "infix": "7", "x": 27, "y": 447 },
{ "infix": "8", "x": 231, "y": 447 }
{ "infix": "1", "x": 27, "y": 43, "labelPos": { "x": 98, "y": 112 } },
{ "infix": "2", "x": 231, "y": 43, "labelPos": { "x": 98, "y": 112 } },
{ "infix": "3", "x": 27, "y": 178, "labelPos": { "x": 98, "y": 112 } },
{ "infix": "4", "x": 231, "y": 178, "labelPos": { "x": 98, "y": 112 } },
{ "infix": "5", "x": 27, "y": 312, "labelPos": { "x": 98, "y": 112 } },
{ "infix": "6", "x": 231, "y": 312, "labelPos": { "x": 98, "y": 112 } },
{ "infix": "7", "x": 27, "y": 447, "labelPos": { "x": 98, "y": 112 } },
{ "infix": "8", "x": 231, "y": 447, "labelPos": { "x": 98, "y": 112 } }
]
},
"scenarioCount": 8,
@@ -39,7 +39,7 @@
"videoRim": "chronicles_1/INTRORIM",
"introVideo": "chronicles_1/Intro"
},
"MAPS/HC2_MAIN" : { // Heroes Chronicles 2
"MAPS/CHRONICLES/HC2_MAIN" : { // Heroes Chronicles 2
"regions":
{
"background": "chronicles_2/CamBkHc",
@@ -47,14 +47,14 @@
"suffix": ["1", "2", "3"],
"color_suffix_length": 0,
"desc": [
{ "infix": "1", "x": 27, "y": 43 },
{ "infix": "2", "x": 231, "y": 43 },
{ "infix": "3", "x": 27, "y": 178 },
{ "infix": "4", "x": 231, "y": 178 },
{ "infix": "5", "x": 27, "y": 312 },
{ "infix": "6", "x": 231, "y": 312 },
{ "infix": "7", "x": 27, "y": 447 },
{ "infix": "8", "x": 231, "y": 447 }
{ "infix": "1", "x": 27, "y": 43, "labelPos": { "x": 98, "y": 112 } },
{ "infix": "2", "x": 231, "y": 43, "labelPos": { "x": 98, "y": 112 } },
{ "infix": "3", "x": 27, "y": 178, "labelPos": { "x": 98, "y": 112 } },
{ "infix": "4", "x": 231, "y": 178, "labelPos": { "x": 98, "y": 112 } },
{ "infix": "5", "x": 27, "y": 312, "labelPos": { "x": 98, "y": 112 } },
{ "infix": "6", "x": 231, "y": 312, "labelPos": { "x": 98, "y": 112 } },
{ "infix": "7", "x": 27, "y": 447, "labelPos": { "x": 98, "y": 112 } },
{ "infix": "8", "x": 231, "y": 447, "labelPos": { "x": 98, "y": 112 } }
]
},
"scenarioCount": 8,
@@ -72,7 +72,7 @@
"videoRim": "chronicles_2/INTRORIM",
"introVideo": "chronicles_2/Intro"
},
"MAPS/HC3_MAIN" : { // Heroes Chronicles 3
"MAPS/CHRONICLES/HC3_MAIN" : { // Heroes Chronicles 3
"regions":
{
"background": "chronicles_3/CamBkHc",
@@ -80,14 +80,14 @@
"suffix": ["1", "2", "3"],
"color_suffix_length": 0,
"desc": [
{ "infix": "1", "x": 27, "y": 43 },
{ "infix": "2", "x": 231, "y": 43 },
{ "infix": "3", "x": 27, "y": 178 },
{ "infix": "4", "x": 231, "y": 178 },
{ "infix": "5", "x": 27, "y": 312 },
{ "infix": "6", "x": 231, "y": 312 },
{ "infix": "7", "x": 27, "y": 447 },
{ "infix": "8", "x": 231, "y": 447 }
{ "infix": "1", "x": 27, "y": 43, "labelPos": { "x": 98, "y": 112 } },
{ "infix": "2", "x": 231, "y": 43, "labelPos": { "x": 98, "y": 112 } },
{ "infix": "3", "x": 27, "y": 178, "labelPos": { "x": 98, "y": 112 } },
{ "infix": "4", "x": 231, "y": 178, "labelPos": { "x": 98, "y": 112 } },
{ "infix": "5", "x": 27, "y": 312, "labelPos": { "x": 98, "y": 112 } },
{ "infix": "6", "x": 231, "y": 312, "labelPos": { "x": 98, "y": 112 } },
{ "infix": "7", "x": 27, "y": 447, "labelPos": { "x": 98, "y": 112 } },
{ "infix": "8", "x": 231, "y": 447, "labelPos": { "x": 98, "y": 112 } }
]
},
"scenarioCount": 8,
@@ -105,7 +105,7 @@
"videoRim": "chronicles_3/INTRORIM",
"introVideo": "chronicles_3/Intro"
},
"MAPS/HC4_MAIN" : { // Heroes Chronicles 4
"MAPS/CHRONICLES/HC4_MAIN" : { // Heroes Chronicles 4
"regions":
{
"background": "chronicles_4/CamBkHc",
@@ -113,14 +113,14 @@
"suffix": ["1", "2", "3"],
"color_suffix_length": 0,
"desc": [
{ "infix": "1", "x": 27, "y": 43 },
{ "infix": "2", "x": 231, "y": 43 },
{ "infix": "3", "x": 27, "y": 178 },
{ "infix": "4", "x": 231, "y": 178 },
{ "infix": "5", "x": 27, "y": 312 },
{ "infix": "6", "x": 231, "y": 312 },
{ "infix": "7", "x": 27, "y": 447 },
{ "infix": "8", "x": 231, "y": 447 }
{ "infix": "1", "x": 27, "y": 43, "labelPos": { "x": 98, "y": 112 } },
{ "infix": "2", "x": 231, "y": 43, "labelPos": { "x": 98, "y": 112 } },
{ "infix": "3", "x": 27, "y": 178, "labelPos": { "x": 98, "y": 112 } },
{ "infix": "4", "x": 231, "y": 178, "labelPos": { "x": 98, "y": 112 } },
{ "infix": "5", "x": 27, "y": 312, "labelPos": { "x": 98, "y": 112 } },
{ "infix": "6", "x": 231, "y": 312, "labelPos": { "x": 98, "y": 112 } },
{ "infix": "7", "x": 27, "y": 447, "labelPos": { "x": 98, "y": 112 } },
{ "infix": "8", "x": 231, "y": 447, "labelPos": { "x": 98, "y": 112 } }
]
},
"scenarioCount": 8,
@@ -138,7 +138,7 @@
"videoRim": "chronicles_4/INTRORIM",
"introVideo": "chronicles_4/Intro"
},
"MAPS/HC5_MAIN" : { // Heroes Chronicles 5
"MAPS/CHRONICLES/HC5_MAIN" : { // Heroes Chronicles 5
"regions":
{
"background": "chronicles_5/CamBkHc",
@@ -146,11 +146,11 @@
"suffix": ["1", "2", "3"],
"color_suffix_length": 0,
"desc": [
{ "infix": "1", "x": 34, "y": 184 },
{ "infix": "2", "x": 235, "y": 184 },
{ "infix": "3", "x": 34, "y": 320 },
{ "infix": "4", "x": 235, "y": 320 },
{ "infix": "5", "x": 129, "y": 459 }
{ "infix": "1", "x": 34, "y": 184, "labelPos": { "x": 98, "y": 112 } },
{ "infix": "2", "x": 235, "y": 184, "labelPos": { "x": 98, "y": 112 } },
{ "infix": "3", "x": 34, "y": 320, "labelPos": { "x": 98, "y": 112 } },
{ "infix": "4", "x": 235, "y": 320, "labelPos": { "x": 98, "y": 112 } },
{ "infix": "5", "x": 129, "y": 459, "labelPos": { "x": 98, "y": 112 } }
]
},
"scenarioCount": 5,
@@ -165,7 +165,7 @@
"videoRim": "chronicles_5/INTRORIM",
"introVideo": "chronicles_5/Intro"
},
"MAPS/HC6_MAIN" : { // Heroes Chronicles 6
"MAPS/CHRONICLES/HC6_MAIN" : { // Heroes Chronicles 6
"regions":
{
"background": "chronicles_6/CamBkHc",
@@ -173,11 +173,11 @@
"suffix": ["1", "2", "3"],
"color_suffix_length": 0,
"desc": [
{ "infix": "1", "x": 34, "y": 184 },
{ "infix": "2", "x": 235, "y": 184 },
{ "infix": "3", "x": 34, "y": 320 },
{ "infix": "4", "x": 235, "y": 320 },
{ "infix": "5", "x": 129, "y": 459 }
{ "infix": "1", "x": 34, "y": 184, "labelPos": { "x": 98, "y": 112 } },
{ "infix": "2", "x": 235, "y": 184, "labelPos": { "x": 98, "y": 112 } },
{ "infix": "3", "x": 34, "y": 320, "labelPos": { "x": 98, "y": 112 } },
{ "infix": "4", "x": 235, "y": 320, "labelPos": { "x": 98, "y": 112 } },
{ "infix": "5", "x": 129, "y": 459, "labelPos": { "x": 98, "y": 112 } }
]
},
"scenarioCount": 5,
@@ -192,7 +192,7 @@
"videoRim": "chronicles_6/INTRORIM",
"introVideo": "chronicles_6/Intro"
},
"MAPS/HC7_MAIN" : { // Heroes Chronicles 7
"MAPS/CHRONICLES/HC7_MAIN" : { // Heroes Chronicles 7
"regions":
{
"background": "chronicles_7/CamBkHc",
@@ -200,14 +200,14 @@
"suffix": ["1", "2", "3"],
"color_suffix_length": 0,
"desc": [
{ "infix": "1", "x": 27, "y": 43 },
{ "infix": "2", "x": 231, "y": 43 },
{ "infix": "3", "x": 27, "y": 178 },
{ "infix": "4", "x": 231, "y": 178 },
{ "infix": "5", "x": 27, "y": 312 },
{ "infix": "6", "x": 231, "y": 312 },
{ "infix": "7", "x": 27, "y": 447 },
{ "infix": "8", "x": 231, "y": 447 }
{ "infix": "1", "x": 27, "y": 43, "labelPos": { "x": 98, "y": 112 } },
{ "infix": "2", "x": 231, "y": 43, "labelPos": { "x": 98, "y": 112 } },
{ "infix": "3", "x": 27, "y": 178, "labelPos": { "x": 98, "y": 112 } },
{ "infix": "4", "x": 231, "y": 178, "labelPos": { "x": 98, "y": 112 } },
{ "infix": "5", "x": 27, "y": 312, "labelPos": { "x": 98, "y": 112 } },
{ "infix": "6", "x": 231, "y": 312, "labelPos": { "x": 98, "y": 112 } },
{ "infix": "7", "x": 27, "y": 447, "labelPos": { "x": 98, "y": 112 } },
{ "infix": "8", "x": 231, "y": 447, "labelPos": { "x": 98, "y": 112 } }
]
},
"scenarioCount": 8,
@@ -225,7 +225,7 @@
"videoRim": "chronicles_7/INTRORIM",
"introVideo": "chronicles_7/Intro5"
},
"MAPS/HC8_MAIN" : { // Heroes Chronicles 8
"MAPS/CHRONICLES/HC8_MAIN" : { // Heroes Chronicles 8
"regions":
{
"background": "chronicles_8/CamBkHc",
@@ -233,14 +233,14 @@
"suffix": ["1", "2", "3"],
"color_suffix_length": 0,
"desc": [
{ "infix": "1", "x": 27, "y": 43 },
{ "infix": "2", "x": 231, "y": 43 },
{ "infix": "3", "x": 27, "y": 178 },
{ "infix": "4", "x": 231, "y": 178 },
{ "infix": "5", "x": 27, "y": 312 },
{ "infix": "6", "x": 231, "y": 312 },
{ "infix": "7", "x": 27, "y": 447 },
{ "infix": "8", "x": 231, "y": 447 }
{ "infix": "1", "x": 27, "y": 43, "labelPos": { "x": 98, "y": 112 } },
{ "infix": "2", "x": 231, "y": 43, "labelPos": { "x": 98, "y": 112 } },
{ "infix": "3", "x": 27, "y": 178, "labelPos": { "x": 98, "y": 112 } },
{ "infix": "4", "x": 231, "y": 178, "labelPos": { "x": 98, "y": 112 } },
{ "infix": "5", "x": 27, "y": 312, "labelPos": { "x": 98, "y": 112 } },
{ "infix": "6", "x": 231, "y": 312, "labelPos": { "x": 98, "y": 112 } },
{ "infix": "7", "x": 27, "y": 447, "labelPos": { "x": 98, "y": 112 } },
{ "infix": "8", "x": 231, "y": 447, "labelPos": { "x": 98, "y": 112 } }
]
},
"scenarioCount": 8,

View File

@@ -10,7 +10,7 @@
"cavalryChargeImmunity" :
{
"type" : "CHARGE_IMMUNITY"
},
}
},
"graphics" :
{

View File

@@ -5,12 +5,12 @@
"bitmap" :
[
"BIGFONT", // Mostly used for window titles
"CALLI10R", // Unused in VCMI
"CREDITS", // Used for credits menu
"HISCORE", // Unused in VCMI
"CALLI10R", // Only in World View menu
"CREDITS", // Only in Credits menu
"HISCORE", // Only in High Scores menu
"MEDFONT", // Some titles
"SMALFONT", // Most of the messages
"TIMES08R", // Used to display amounts on creature card
"TIMES08R", // Unused in VCMI
"TINY", // Some text
"VERD10B" // Unused in VCMI
],
@@ -25,17 +25,18 @@
// b) list of scaling factors for each scaling mode, e.g. [ 10, 16, 22, 26]. In this case game will select point size according to xBRZ scaling factor
// so unscaled mode will use 10px, xbrz2 will use 16px, and xbrz3 will use 22
// "style" - italic and\or bold, indicates font style
// "blend" - if set to true, font will be antialiased
// "outline" - if set, black shadow will be generated around entire text (instead of only bottom-right side)
// "noShadow" - if set, this font will not drop any shadow
"trueType":
{
//"BIGFONT" : { "file" : "LiberationSerif-Bold.ttf", "size" : 22, "blend" : true},
//"CALLI10R" : { "file" : "Georgia.ttf", "size" : 10},
//"CREDITS" : { "file" : "LiberationSerif-Bold.ttf", "size" : 28},
//"HISCORE" : { "file" : "Georgia.ttf", "size" : 13},
//"MEDFONT" : { "file" : "LiberationSerif-Bold.ttf", "size" : 16}, // breaks messages (from map events)
//"SMALFONT" : { "file" : "LiberationSerif-Regular.ttf", "size" : 13, "blend" : true},
//"TIMES08R" : { "file" : "LiberationSerif-Regular.ttf", "size" : 11, "blend" : true},
//"TINY" : { "file" : "LiberationSerif-Regular.ttf", "size" : 11, "blend" : true},
//"VERD10B" : { "file" : "Georgia.ttf", "size" : 13}
"BIGFONT" : { "file" : "NotoSerif-Bold.ttf", "size" : [ 19, 39, 58, 78] },
"CALLI10R" : { "file" : "NotoSerif-Bold.ttf", "size" : [ 12, 24, 36, 48] }, // TODO: find better matching font? This is likely non-free 'Callisto MT' font
"CREDITS" : { "file" : "NotoSerif-Black.ttf", "size" : [ 22, 44, 66, 88], "outline" : true },
"HISCORE" : { "file" : "NotoSerif-Black.ttf", "size" : [ 18, 36, 54, 72], "outline" : true },
"MEDFONT" : { "file" : "NotoSerif-Bold.ttf", "size" : [ 15, 31, 46, 62] },
"SMALFONT" : { "file" : "NotoSerif-Medium.ttf", "size" : [ 12, 24, 36, 48] },
"TIMES08R" : { "file" : "NotoSerif-Medium.ttf", "size" : [ 8, 16, 24, 32] },
"TINY" : { "file" : "NotoSans-Medium.ttf", "size" : [ 9, 19, 28, 38], "noShadow" : true }, // The only H3 font without shadow
"VERD10B" : { "file" : "NotoSans-Medium.ttf", "size" : [ 13, 26, 39, 52] }
}
}

View File

@@ -335,6 +335,8 @@
"defensePointDamageFactorCap": 0.7,
// If set to true, double-wide creatures will trigger obstacle effect when moving one tile forward or backwards
"oneHexTriggersObstacles": false,
// Allow area shooters with SPELL_LIKE_ATTACK bonus such as liches or magogs to target empty hexes
"areaShotCanTargetEmptyHex" : false,
// Positions of units on start of the combat
// If battle does not defines specific configuration, 'default' configuration will be used

View File

@@ -69,7 +69,8 @@
"defensePointDamageFactor" : { "type" : "number" },
"defensePointDamageFactorCap" : { "type" : "number" },
"oneHexTriggersObstacles" : { "type" : "boolean" },
"layouts" : { "type" : "object" }
"layouts" : { "type" : "object" },
"areaShotCanTargetEmptyHex" : { "type" : "boolean" }
}
},
"creatures": {

View File

@@ -166,6 +166,8 @@
"showfps",
"targetfps",
"vsync",
"fontsType",
"fontScalingFactor",
"upscalingFilter",
"fontUpscalingFilter",
"downscalingFilter"
@@ -232,6 +234,15 @@
"type" : "boolean",
"default" : true
},
"fontsType" : {
"type" : "string",
"enum" : [ "auto", "original", "scalable" ],
"default" : "auto"
},
"fontScalingFactor" : {
"type" : "number",
"default" : 1
},
"fontUpscalingFilter" : {
"type" : "string",
"enum" : [ "nearest", "bilinear", "xbrz" ],

View File

@@ -191,9 +191,9 @@ Predefined campaign regions are located in file `campaign_regions.json`
"prefix": "G3",
"colorSuffixLength": 1,
"desc": [
{ "infix": "A", "x": 289, "y": 376 },
{ "infix": "B", "x": 60, "y": 147 },
{ "infix": "C", "x": 131, "y": 202 }
{ "infix": "A", "x": 289, "y": 376, "labelPos": { "x": 98, "y": 112 } },
{ "infix": "B", "x": 60, "y": 147, "labelPos": { "x": 98, "y": 112 } },
{ "infix": "C", "x": 131, "y": 202, "labelPos": { "x": 98, "y": 112 } }
]
},
```
@@ -202,6 +202,7 @@ Predefined campaign regions are located in file `campaign_regions.json`
- `"prefix"` used to identify all images related to campaign. In this example (if background parameter wouldn't exists), background picture will be `G3_BG`
- `"suffix"` optional - use other suffixes than the default `En`, `Se` and `Co` for the three different images
- `"infix"` used to identify all images related to region. In this example, it will be pictures whose files names begin with `G3A_..., G3B_..., G3C_..."`
- `"labelPos"` optional - to add scenario name as label on map
- `"colorSuffixLength"` identifies suffix length for region colourful frames. 0 is no color suffix (no colorisation), 1 is used for `R, B, N, G, O, V, T, P`, value 2 is used for `Re, Bl, Br, Gr, Or, Vi, Te, Pi`
## Packing campaign

View File

@@ -168,7 +168,7 @@ void ChroniclesExtractor::extractFiles(int no) const
QDir outDirSprites(pathToQString(basePath / "Sprites" / chroniclesDir));
QDir outDirVideo(pathToQString(basePath / "Video" / chroniclesDir));
QDir outDirSounds(pathToQString(basePath / "Sounds" / chroniclesDir));
QDir outDirMaps(pathToQString(basePath / "Maps"));
QDir outDirMaps(pathToQString(basePath / "Maps" / "Chronicles"));
auto extract = [](QDir scrDir, QDir dest, QString file, std::vector<std::string> files = {}){
CArchiveLoader archive("", scrDir.filePath(scrDir.entryList({file}).front()).toStdString(), false);

View File

@@ -174,17 +174,13 @@ void CSettingsView::loadSettings()
ui->sliderControllerSticksAcceleration->setValue(settings["input"]["controllerAxisScale"].Float() * 100);
ui->lineEditGameLobbyHost->setText(QString::fromStdString(settings["lobby"]["hostname"].String()));
ui->spinBoxNetworkPortLobby->setValue(settings["lobby"]["port"].Integer());
auto mainWindow = getMainWindow();
if(mainWindow)
{
bool fontModAvailable = mainWindow->getModView()->isModInstalled("vcmi-extras.truetypefonts");
if(!fontModAvailable)
{
ui->labelTtfFont->hide();
ui->buttonTtfFont->hide();
}
}
if (settings["video"]["fontsType"].String() == "auto")
ui->buttonFontAuto->setChecked(true);
else if (settings["video"]["fontsType"].String() == "original")
ui->buttonFontOriginal->setChecked(true);
else
ui->buttonFontScalable->setChecked(true);
loadToggleButtonSettings();
}
@@ -210,9 +206,9 @@ void CSettingsView::loadToggleButtonSettings()
int cursorTypeIndex = vstd::find_pos(cursorTypesList, cursorType);
setCheckbuttonState(ui->buttonCursorType, cursorTypeIndex);
auto mainWindow = getMainWindow();
if(mainWindow)
setCheckbuttonState(ui->buttonTtfFont, mainWindow->getModView()->isModEnabled("vcmi-extras.truetypefonts"));
int fontScalingPercentage = settings["video"]["fontScalingFactor"].Float() * 100;
ui->sliderScalingFont->setValue(fontScalingPercentage / 5);
}
void CSettingsView::fillValidResolutions()
@@ -770,12 +766,28 @@ void CSettingsView::on_sliderControllerSticksSensitivity_valueChanged(int value)
node->Integer() = value;
}
void CSettingsView::on_buttonTtfFont_toggled(bool value)
void CSettingsView::on_sliderScalingFont_valueChanged(int value)
{
auto mainWindow = getMainWindow();
if(value)
mainWindow->getModView()->enableModByName("vcmi-extras.truetypefonts");
else
mainWindow->getModView()->disableModByName("vcmi-extras.truetypefonts");
updateCheckbuttonText(ui->buttonTtfFont);
int actualValuePercentage = value * 5;
ui->labelScalingFontValue->setText(QString("%1%").arg(actualValuePercentage));
Settings node = settings.write["video"]["fontScalingFactor"];
node->Float() = actualValuePercentage / 100.0;
}
void CSettingsView::on_buttonFontAuto_clicked(bool checked)
{
Settings node = settings.write["video"]["fontsType"];
node->String() = "auto";
}
void CSettingsView::on_buttonFontScalable_clicked(bool checked)
{
Settings node = settings.write["video"]["fontsType"];
node->String() = "scalable";
}
void CSettingsView::on_buttonFontOriginal_clicked(bool checked)
{
Settings node = settings.write["video"]["fontsType"];
node->String() = "original";
}

View File

@@ -88,7 +88,13 @@ private slots:
void on_sliderControllerSticksSensitivity_valueChanged(int value);
void on_buttonTtfFont_toggled(bool value);
//void on_buttonTtfFont_toggled(bool value);
void on_sliderScalingFont_valueChanged(int value);
void on_buttonFontAuto_clicked(bool checked);
void on_buttonFontScalable_clicked(bool checked);
void on_buttonFontOriginal_clicked(bool checked);
private:
Ui::CSettingsView * ui;

File diff suppressed because it is too large Load Diff

View File

@@ -235,7 +235,7 @@
</message>
<message>
<location filename="../modManager/cmodlistview_moc.ui" line="163"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="350"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="354"/>
<source>Description</source>
<translation></translation>
</message>
@@ -295,181 +295,191 @@
<translation></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="285"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="289"/>
<source>Mod name</source>
<translation></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="286"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="290"/>
<source>Installed version</source>
<translation></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="287"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="291"/>
<source>Latest version</source>
<translation></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="290"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="294"/>
<source>Size</source>
<translation></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="292"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="296"/>
<source>Download size</source>
<translation></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="294"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="298"/>
<source>Authors</source>
<translation></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="297"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="301"/>
<source>License</source>
<translation></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="300"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="304"/>
<source>Contact</source>
<translation></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="309"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="313"/>
<source>Compatibility</source>
<translation></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="311"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="319"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="315"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="323"/>
<source>Required VCMI version</source>
<translation>VCMI版本</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="317"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="321"/>
<source>Supported VCMI version</source>
<translation>VCMI版本</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="317"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="321"/>
<source>please upgrade mod</source>
<translation></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="189"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="809"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="193"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="824"/>
<source>mods repository index</source>
<translation></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="319"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="323"/>
<source>or newer</source>
<translation></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="322"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="326"/>
<source>Supported VCMI versions</source>
<translation>VCMI版本</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="346"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="350"/>
<source>Languages</source>
<translation></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="348"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="352"/>
<source>Required mods</source>
<translatorcomment>Mod统一翻译为模组</translatorcomment>
<translation></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="349"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="353"/>
<source>Conflicting mods</source>
<translatorcomment>Mod统一翻译为模组</translatorcomment>
<translation></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="354"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="358"/>
<source>This mod can not be installed or enabled because the following dependencies are not present</source>
<translation></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="355"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="359"/>
<source>This mod can not be enabled because the following mods are incompatible with it</source>
<translation></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="356"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="360"/>
<source>This mod cannot be disabled because it is required by the following mods</source>
<translation></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="357"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="361"/>
<source>This mod cannot be uninstalled or updated because it is required by the following mods</source>
<translation></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="358"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="362"/>
<source>This is a submod and it cannot be installed or uninstalled separately from its parent mod</source>
<translation></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="373"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="377"/>
<source>Notes</source>
<translation></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="643"/>
<source>All supported files</source>
<translation></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="644"/>
<source>Maps</source>
<translation></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="645"/>
<source>Campaigns</source>
<translation></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="646"/>
<source>Configs</source>
<translation></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="647"/>
<source>Mods</source>
<translation></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="640"/>
<source>Select files (configs, mods, maps, campaigns) to install...</source>
<translation></translation>
<location filename="../modManager/cmodlistview_moc.cpp" line="648"/>
<source>Gog files</source>
<translation>Gog文件</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="665"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="650"/>
<source>All files (*.*)</source>
<translation> (*.*)</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="652"/>
<source>Select files (configs, mods, maps, campaigns, gog files) to install...</source>
<translation>gog文件...</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="677"/>
<source>Replace config file?</source>
<translation></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="665"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="677"/>
<source>Do you want to replace %1?</source>
<translation>%1</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="708"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="720"/>
<source>Downloading %1. %p% (%v MB out of %m MB) finished</source>
<translation> %1. %p% (%v MB %m MB) </translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="733"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="745"/>
<source>Download failed</source>
<translation></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="734"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="746"/>
<source>Unable to download all files.
Encountered errors:
@@ -482,7 +492,7 @@ Encountered errors:
</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="735"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="747"/>
<source>
Install successfully downloaded?</source>
@@ -491,34 +501,39 @@ Install successfully downloaded?</source>
</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="881"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="852"/>
<source>Installing chronicles</source>
<translation></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="925"/>
<source>Installing mod %1</source>
<translation> %1</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="950"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="994"/>
<source>Operation failed</source>
<translation></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="951"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="995"/>
<source>Encountered errors:
</source>
<translation>
</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="986"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="1030"/>
<source>screenshots</source>
<translation></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="992"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="1036"/>
<source>Screenshot %1</source>
<translation> %1</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="280"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="284"/>
<source>Mod is incompatible</source>
<translatorcomment>Mod统一翻译为模组</translatorcomment>
<translation></translation>
@@ -624,7 +639,7 @@ Install successfully downloaded?</source>
<context>
<name>CSettingsView</name>
<message>
<location filename="../settingsView/csettingsview_moc.cpp" line="90"/>
<location filename="../settingsView/csettingsview_moc.cpp" line="98"/>
<source>Off</source>
<translation></translation>
</message>
@@ -718,6 +733,11 @@ Install successfully downloaded?</source>
<source>xBRZ x4</source>
<translation>xBRZ x4</translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.ui" line="1194"/>
<source>Use scalable fonts</source>
<translation>使</translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.ui" line="138"/>
<source>Online Lobby address</source>
@@ -884,7 +904,7 @@ Install successfully downloaded?</source>
<translation></translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.cpp" line="88"/>
<location filename="../settingsView/csettingsview_moc.cpp" line="96"/>
<source>On</source>
<translation></translation>
</message>
@@ -972,31 +992,67 @@ Fullscreen Exclusive Mode - game will cover entirety of your screen and will use
<translation></translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.cpp" line="503"/>
<location filename="../settingsView/csettingsview_moc.cpp" line="525"/>
<source>Active</source>
<translation></translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.cpp" line="508"/>
<location filename="../settingsView/csettingsview_moc.cpp" line="530"/>
<source>Disabled</source>
<translation></translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.cpp" line="509"/>
<location filename="../settingsView/csettingsview_moc.cpp" line="531"/>
<source>Enable</source>
<translation></translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.cpp" line="514"/>
<location filename="../settingsView/csettingsview_moc.cpp" line="536"/>
<source>Not Installed</source>
<translation></translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.cpp" line="515"/>
<location filename="../settingsView/csettingsview_moc.cpp" line="537"/>
<source>Install</source>
<translation></translation>
</message>
</context>
<context>
<name>ChroniclesExtractor</name>
<message>
<location filename="../modManager/chroniclesextractor.cpp" line="48"/>
<source>File cannot opened</source>
<translation></translation>
</message>
<message>
<location filename="../modManager/chroniclesextractor.cpp" line="56"/>
<location filename="../modManager/chroniclesextractor.cpp" line="71"/>
<source>Invalid file selected</source>
<translation></translation>
</message>
<message>
<location filename="../modManager/chroniclesextractor.cpp" line="56"/>
<source>You have to select an gog installer file!</source>
<translation>gog安装文件</translation>
</message>
<message>
<location filename="../modManager/chroniclesextractor.cpp" line="71"/>
<source>You have to select an chronicle installer file!</source>
<translation></translation>
</message>
<message>
<location filename="../modManager/chroniclesextractor.cpp" line="87"/>
<source>Extracting error!</source>
<translation></translation>
</message>
<message>
<location filename="../modManager/chroniclesextractor.cpp" line="104"/>
<location filename="../modManager/chroniclesextractor.cpp" line="105"/>
<location filename="../modManager/chroniclesextractor.cpp" line="141"/>
<source>Heroes Chronicles</source>
<translation></translation>
</message>
</context>
<context>
<name>File size</name>
<message>
@@ -1215,113 +1271,101 @@ Offline installer consists of two parts, .exe and .bin. Make sure you download b
<translation></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="178"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="174"/>
<source>Heroes III installation found!</source>
<translation>3</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="178"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="174"/>
<source>Copy data to VCMI folder?</source>
<translation>VCMI文件夹吗</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="317"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="313"/>
<source>Select %1 file...</source>
<comment>param is file extension</comment>
<translation>%1...</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="318"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="314"/>
<source>You have to select %1 file!</source>
<comment>param is file extension</comment>
<translation>%1</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="320"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="316"/>
<source>GOG file (*.*)</source>
<translation>GOG文件 (*.*)</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="321"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="317"/>
<source>File selection</source>
<translation></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="330"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="326"/>
<source>File cannot be opened</source>
<translation></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="336"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="332"/>
<source>Invalid file selected</source>
<translation></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="346"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="342"/>
<source>GOG installer</source>
<translation>GOG安装包</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="343"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="339"/>
<source>GOG data</source>
<translation>GOC数据</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="438"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="401"/>
<source>No Heroes III data!</source>
<translation>3</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="438"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="401"/>
<source>Selected files do not contain Heroes III data!</source>
<translation>3</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="485"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="499"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="506"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="511"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="448"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="462"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="469"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="474"/>
<source>Heroes III data not found!</source>
<translation>3</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="482"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="445"/>
<source>Failed to detect valid Heroes III data in chosen directory.
Please select directory with installed Heroes III data.</source>
<translation>3
3</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="387"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="383"/>
<source>You&apos;ve provided GOG Galaxy installer! This file doesn&apos;t contain the game. Please download the offline backup game installer!</source>
<translation>GOG Galaxy安装器线</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="412"/>
<source>Stream error while extracting files!
error reason: </source>
<translation>
</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="425"/>
<source>Not a supported Inno Setup installer!</source>
<translation>Inno Setup安装器</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="436"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="399"/>
<source>Extracting error!</source>
<translation></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="506"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="469"/>
<source>Heroes III: HD Edition files are not supported by VCMI.
Please select directory with Heroes III: Complete Edition or Heroes III: Shadow of Death.</source>
<translation>VCMI不支持英雄无敌3高清版文件
33</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="511"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="474"/>
<source>Unknown or unsupported Heroes III version found.
Please select directory with Heroes III: Complete Edition or Heroes III: Shadow of Death.</source>
<translation>3
@@ -1336,6 +1380,26 @@ Please select directory with Heroes III: Complete Edition or Heroes III: Shadow
<translation></translation>
</message>
</context>
<context>
<name>Innoextract</name>
<message>
<location filename="../innoextract.cpp" line="42"/>
<source>Stream error while extracting files!
error reason: </source>
<translation>
</translation>
</message>
<message>
<location filename="../innoextract.cpp" line="55"/>
<source>Not a supported Inno Setup installer!</source>
<translation>Inno Setup安装器</translation>
</message>
<message>
<location filename="../innoextract.cpp" line="58"/>
<source>VCMI was compiled without innoextract support, which is needed to extract exe files!</source>
<translation>VCMI编译时没有启用innoextract支持exe文件中提取数据</translation>
</message>
</context>
<context>
<name>Language</name>
<message>

View File

@@ -233,7 +233,7 @@
</message>
<message>
<location filename="../modManager/cmodlistview_moc.ui" line="163"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="350"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="354"/>
<source>Description</source>
<translation>Popis</translation>
</message>
@@ -293,179 +293,189 @@
<translation>Zrušit</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="285"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="289"/>
<source>Mod name</source>
<translation>Název modifikace</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="286"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="290"/>
<source>Installed version</source>
<translation>Nainstalovaná verze</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="287"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="291"/>
<source>Latest version</source>
<translation>Nejnovější verze</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="290"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="294"/>
<source>Size</source>
<translation>Velikost</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="292"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="296"/>
<source>Download size</source>
<translation>Velikost ke stažení</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="294"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="298"/>
<source>Authors</source>
<translation>Autoři</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="297"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="301"/>
<source>License</source>
<translation>Licence</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="300"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="304"/>
<source>Contact</source>
<translation>Kontakt</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="309"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="313"/>
<source>Compatibility</source>
<translation>Kompabilita</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="311"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="319"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="315"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="323"/>
<source>Required VCMI version</source>
<translation>Vyžadovaná verze VCMI</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="317"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="321"/>
<source>Supported VCMI version</source>
<translation>Podporovaná verze VCMI</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="317"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="321"/>
<source>please upgrade mod</source>
<translation>prosíme aktualizujte modifikaci</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="189"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="809"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="193"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="824"/>
<source>mods repository index</source>
<translation>index repozitáře modifikací</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="319"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="323"/>
<source>or newer</source>
<translation>nebo novější</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="322"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="326"/>
<source>Supported VCMI versions</source>
<translation>Podporované verze VCMI</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="346"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="350"/>
<source>Languages</source>
<translation>Jazyky</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="348"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="352"/>
<source>Required mods</source>
<translation>Vyžadované modifikace VCMI</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="349"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="353"/>
<source>Conflicting mods</source>
<translation>Modifikace v kolizi</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="354"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="358"/>
<source>This mod can not be installed or enabled because the following dependencies are not present</source>
<translation>Tato modifikace nemůže být nainstalována nebo povolena, protože následující závislosti nejsou přítomny</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="355"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="359"/>
<source>This mod can not be enabled because the following mods are incompatible with it</source>
<translation>Tato modifikace nemůže být povolena, protože následující modifikace s nejsou kompatibilní</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="356"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="360"/>
<source>This mod cannot be disabled because it is required by the following mods</source>
<translation>Tato modifikace nemůže být zakázána, protože je vyžadována následujícími modifikacemi</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="357"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="361"/>
<source>This mod cannot be uninstalled or updated because it is required by the following mods</source>
<translation>Tato modifikace nemůže být odinstalována nebo aktualizována, protože je vyžadována následujícími modifikacemi</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="358"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="362"/>
<source>This is a submod and it cannot be installed or uninstalled separately from its parent mod</source>
<translation>Toto je podmodifikace, která nemůže být nainstalována nebo odinstalována bez její rodičovské modifikace</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="373"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="377"/>
<source>Notes</source>
<translation>Poznámky</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="643"/>
<source>All supported files</source>
<translation>Všechny podporované soubory</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="644"/>
<source>Maps</source>
<translation>Mapy</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="645"/>
<source>Campaigns</source>
<translation>Kampaně</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="646"/>
<source>Configs</source>
<translation>Nastavení</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="647"/>
<source>Mods</source>
<translation>Modifikace</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="640"/>
<source>Select files (configs, mods, maps, campaigns) to install...</source>
<translation>Vyberte soubory (nastavení, modifikace, mapy anebo kampaně) pro instalaci...</translation>
<location filename="../modManager/cmodlistview_moc.cpp" line="648"/>
<source>Gog files</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="665"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="650"/>
<source>All files (*.*)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="652"/>
<source>Select files (configs, mods, maps, campaigns, gog files) to install...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="677"/>
<source>Replace config file?</source>
<translation>Nahradit soubor nastavení?</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="665"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="677"/>
<source>Do you want to replace %1?</source>
<translation>Chcete nahradit %1?</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="708"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="720"/>
<source>Downloading %1. %p% (%v MB out of %m MB) finished</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="733"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="745"/>
<source>Download failed</source>
<translation>Stahování selhalo</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="734"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="746"/>
<source>Unable to download all files.
Encountered errors:
@@ -478,7 +488,7 @@ Vyskytly se chyby:
</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="735"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="747"/>
<source>
Install successfully downloaded?</source>
@@ -487,34 +497,39 @@ Install successfully downloaded?</source>
Nainstalovat úspěšně stažené?</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="881"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="852"/>
<source>Installing chronicles</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="925"/>
<source>Installing mod %1</source>
<translation>Instalování modifikace %1</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="950"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="994"/>
<source>Operation failed</source>
<translation>Operace selhala</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="951"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="995"/>
<source>Encountered errors:
</source>
<translation>Vyskytly se chyby:
</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="986"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="1030"/>
<source>screenshots</source>
<translation>snímky obrazovky</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="992"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="1036"/>
<source>Screenshot %1</source>
<translation>Snímek obrazovky %1</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="280"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="284"/>
<source>Mod is incompatible</source>
<translation>Modifikace není kompatibilní</translation>
</message>
@@ -619,7 +634,7 @@ Nainstalovat úspěšně stažené?</translation>
<context>
<name>CSettingsView</name>
<message>
<location filename="../settingsView/csettingsview_moc.cpp" line="90"/>
<location filename="../settingsView/csettingsview_moc.cpp" line="98"/>
<source>Off</source>
<translation>Vypnuto</translation>
</message>
@@ -713,6 +728,11 @@ Nainstalovat úspěšně stažené?</translation>
<source>xBRZ x4</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.ui" line="1194"/>
<source>Use scalable fonts</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.ui" line="138"/>
<source>Online Lobby address</source>
@@ -879,7 +899,7 @@ Nainstalovat úspěšně stažené?</translation>
<translation>Vykreslovač</translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.cpp" line="88"/>
<location filename="../settingsView/csettingsview_moc.cpp" line="96"/>
<source>On</source>
<translation>Zapnuto</translation>
</message>
@@ -966,31 +986,67 @@ Exkluzivní celá obrazovka - hra zakryje vaši celou obrazovku a použije vybra
<translation>Zobrazit intro</translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.cpp" line="503"/>
<location filename="../settingsView/csettingsview_moc.cpp" line="525"/>
<source>Active</source>
<translation>Aktivní</translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.cpp" line="508"/>
<location filename="../settingsView/csettingsview_moc.cpp" line="530"/>
<source>Disabled</source>
<translation>Zakázáno</translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.cpp" line="509"/>
<location filename="../settingsView/csettingsview_moc.cpp" line="531"/>
<source>Enable</source>
<translation>Povolit</translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.cpp" line="514"/>
<location filename="../settingsView/csettingsview_moc.cpp" line="536"/>
<source>Not Installed</source>
<translation>Nenainstalováno</translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.cpp" line="515"/>
<location filename="../settingsView/csettingsview_moc.cpp" line="537"/>
<source>Install</source>
<translation>Instalovat</translation>
</message>
</context>
<context>
<name>ChroniclesExtractor</name>
<message>
<location filename="../modManager/chroniclesextractor.cpp" line="48"/>
<source>File cannot opened</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/chroniclesextractor.cpp" line="56"/>
<location filename="../modManager/chroniclesextractor.cpp" line="71"/>
<source>Invalid file selected</source>
<translation type="unfinished">Vybrán neplatný soubor</translation>
</message>
<message>
<location filename="../modManager/chroniclesextractor.cpp" line="56"/>
<source>You have to select an gog installer file!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/chroniclesextractor.cpp" line="71"/>
<source>You have to select an chronicle installer file!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/chroniclesextractor.cpp" line="87"/>
<source>Extracting error!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/chroniclesextractor.cpp" line="104"/>
<location filename="../modManager/chroniclesextractor.cpp" line="105"/>
<location filename="../modManager/chroniclesextractor.cpp" line="141"/>
<source>Heroes Chronicles</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>File size</name>
<message>
@@ -1208,112 +1264,101 @@ Offline instalátor obsahuje dvě části, .exe a .bin. Ujistěte se, že stahuj
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="178"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="174"/>
<source>Heroes III installation found!</source>
<translation>Instalace Heroes III nalezena!</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="178"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="174"/>
<source>Copy data to VCMI folder?</source>
<translation>Zkopírovat data do složky VCMI?</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="317"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="313"/>
<source>Select %1 file...</source>
<comment>param is file extension</comment>
<translation>Vyberte soubor %1...</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="318"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="314"/>
<source>You have to select %1 file!</source>
<comment>param is file extension</comment>
<translation>Musíte vybrat soubor %1!</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="320"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="316"/>
<source>GOG file (*.*)</source>
<translation>GOG soubor (*.*)</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="321"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="317"/>
<source>File selection</source>
<translation>Výběr souboru</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="330"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="326"/>
<source>File cannot be opened</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="336"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="332"/>
<source>Invalid file selected</source>
<translation>Vybrán neplatný soubor</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="346"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="342"/>
<source>GOG installer</source>
<translation>Instalátor GOG</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="343"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="339"/>
<source>GOG data</source>
<translation>Data GOG</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="387"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="383"/>
<source>You&apos;ve provided GOG Galaxy installer! This file doesn&apos;t contain the game. Please download the offline backup game installer!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="412"/>
<source>Stream error while extracting files!
error reason: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="425"/>
<source>Not a supported Inno Setup installer!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="436"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="399"/>
<source>Extracting error!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="438"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="401"/>
<source>No Heroes III data!</source>
<translation>Žádná data Heroes III!</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="438"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="401"/>
<source>Selected files do not contain Heroes III data!</source>
<translation>Vybrané soubory neobsahují data Heroes III!</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="485"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="499"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="506"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="511"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="448"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="462"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="469"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="474"/>
<source>Heroes III data not found!</source>
<translation>Data Heroes III nenalezena!</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="482"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="445"/>
<source>Failed to detect valid Heroes III data in chosen directory.
Please select directory with installed Heroes III data.</source>
<translation>Detekce platných dat Heroes III ve vybrané složce selhala.
Prosíme vyberte složku s nainstalovanými daty Heroes III.</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="506"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="469"/>
<source>Heroes III: HD Edition files are not supported by VCMI.
Please select directory with Heroes III: Complete Edition or Heroes III: Shadow of Death.</source>
<translation>Soubory Heroes III HD Edice nejsou podporována ve VCMI.
Prosíme vyberte složku s Heroes III: Complete Edition nebo Heroes III: Shadow of Death.</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="511"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="474"/>
<source>Unknown or unsupported Heroes III version found.
Please select directory with Heroes III: Complete Edition or Heroes III: Shadow of Death.</source>
<translation>Nalezena neznámá nebo nepodporovaná verze Heroes III.
@@ -1328,6 +1373,25 @@ Prosíme vyberte složku s Heroes III: Complete Edition nebo Heroes III: Shadow
<translation>Prohlížeč obrázků</translation>
</message>
</context>
<context>
<name>Innoextract</name>
<message>
<location filename="../innoextract.cpp" line="42"/>
<source>Stream error while extracting files!
error reason: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../innoextract.cpp" line="55"/>
<source>Not a supported Inno Setup installer!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../innoextract.cpp" line="58"/>
<source>VCMI was compiled without innoextract support, which is needed to extract exe files!</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Language</name>
<message>

View File

@@ -233,7 +233,7 @@
</message>
<message>
<location filename="../modManager/cmodlistview_moc.ui" line="163"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="350"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="354"/>
<source>Description</source>
<translation type="unfinished"></translation>
</message>
@@ -293,179 +293,189 @@
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="285"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="289"/>
<source>Mod name</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="286"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="290"/>
<source>Installed version</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="287"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="291"/>
<source>Latest version</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="290"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="294"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="292"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="296"/>
<source>Download size</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="294"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="298"/>
<source>Authors</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="297"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="301"/>
<source>License</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="300"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="304"/>
<source>Contact</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="309"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="313"/>
<source>Compatibility</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="311"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="319"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="315"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="323"/>
<source>Required VCMI version</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="317"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="321"/>
<source>Supported VCMI version</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="317"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="321"/>
<source>please upgrade mod</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="189"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="809"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="193"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="824"/>
<source>mods repository index</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="319"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="323"/>
<source>or newer</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="322"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="326"/>
<source>Supported VCMI versions</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="346"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="350"/>
<source>Languages</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="348"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="352"/>
<source>Required mods</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="349"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="353"/>
<source>Conflicting mods</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="354"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="358"/>
<source>This mod can not be installed or enabled because the following dependencies are not present</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="355"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="359"/>
<source>This mod can not be enabled because the following mods are incompatible with it</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="356"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="360"/>
<source>This mod cannot be disabled because it is required by the following mods</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="357"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="361"/>
<source>This mod cannot be uninstalled or updated because it is required by the following mods</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="358"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="362"/>
<source>This is a submod and it cannot be installed or uninstalled separately from its parent mod</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="373"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="377"/>
<source>Notes</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="643"/>
<source>All supported files</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="644"/>
<source>Maps</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="645"/>
<source>Campaigns</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="646"/>
<source>Configs</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="647"/>
<source>Mods</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="640"/>
<source>Select files (configs, mods, maps, campaigns) to install...</source>
<location filename="../modManager/cmodlistview_moc.cpp" line="648"/>
<source>Gog files</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="665"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="650"/>
<source>All files (*.*)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="652"/>
<source>Select files (configs, mods, maps, campaigns, gog files) to install...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="677"/>
<source>Replace config file?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="665"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="677"/>
<source>Do you want to replace %1?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="708"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="720"/>
<source>Downloading %1. %p% (%v MB out of %m MB) finished</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="733"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="745"/>
<source>Download failed</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="734"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="746"/>
<source>Unable to download all files.
Encountered errors:
@@ -474,40 +484,45 @@ Encountered errors:
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="735"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="747"/>
<source>
Install successfully downloaded?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="881"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="852"/>
<source>Installing chronicles</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="925"/>
<source>Installing mod %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="950"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="994"/>
<source>Operation failed</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="951"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="995"/>
<source>Encountered errors:
</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="986"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="1030"/>
<source>screenshots</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="992"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="1036"/>
<source>Screenshot %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="280"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="284"/>
<source>Mod is incompatible</source>
<translation type="unfinished"></translation>
</message>
@@ -611,7 +626,7 @@ Install successfully downloaded?</source>
<context>
<name>CSettingsView</name>
<message>
<location filename="../settingsView/csettingsview_moc.cpp" line="90"/>
<location filename="../settingsView/csettingsview_moc.cpp" line="98"/>
<source>Off</source>
<translation type="unfinished"></translation>
</message>
@@ -700,6 +715,11 @@ Install successfully downloaded?</source>
<source>xBRZ x4</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.ui" line="1194"/>
<source>Use scalable fonts</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.ui" line="138"/>
<source>Online Lobby address</source>
@@ -871,7 +891,7 @@ Install successfully downloaded?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.cpp" line="88"/>
<location filename="../settingsView/csettingsview_moc.cpp" line="96"/>
<source>On</source>
<translation type="unfinished"></translation>
</message>
@@ -952,31 +972,67 @@ Fullscreen Exclusive Mode - game will cover entirety of your screen and will use
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.cpp" line="503"/>
<location filename="../settingsView/csettingsview_moc.cpp" line="525"/>
<source>Active</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.cpp" line="508"/>
<location filename="../settingsView/csettingsview_moc.cpp" line="530"/>
<source>Disabled</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.cpp" line="509"/>
<location filename="../settingsView/csettingsview_moc.cpp" line="531"/>
<source>Enable</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.cpp" line="514"/>
<location filename="../settingsView/csettingsview_moc.cpp" line="536"/>
<source>Not Installed</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.cpp" line="515"/>
<location filename="../settingsView/csettingsview_moc.cpp" line="537"/>
<source>Install</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ChroniclesExtractor</name>
<message>
<location filename="../modManager/chroniclesextractor.cpp" line="48"/>
<source>File cannot opened</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/chroniclesextractor.cpp" line="56"/>
<location filename="../modManager/chroniclesextractor.cpp" line="71"/>
<source>Invalid file selected</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/chroniclesextractor.cpp" line="56"/>
<source>You have to select an gog installer file!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/chroniclesextractor.cpp" line="71"/>
<source>You have to select an chronicle installer file!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/chroniclesextractor.cpp" line="87"/>
<source>Extracting error!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/chroniclesextractor.cpp" line="104"/>
<location filename="../modManager/chroniclesextractor.cpp" line="105"/>
<location filename="../modManager/chroniclesextractor.cpp" line="141"/>
<source>Heroes Chronicles</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>File size</name>
<message>
@@ -1187,110 +1243,99 @@ Offline installer consists of two parts, .exe and .bin. Make sure you download b
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="178"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="174"/>
<source>Heroes III installation found!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="178"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="174"/>
<source>Copy data to VCMI folder?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="317"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="313"/>
<source>Select %1 file...</source>
<comment>param is file extension</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="318"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="314"/>
<source>You have to select %1 file!</source>
<comment>param is file extension</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="320"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="316"/>
<source>GOG file (*.*)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="321"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="317"/>
<source>File selection</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="330"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="326"/>
<source>File cannot be opened</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="336"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="332"/>
<source>Invalid file selected</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="346"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="342"/>
<source>GOG installer</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="343"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="339"/>
<source>GOG data</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="387"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="383"/>
<source>You&apos;ve provided GOG Galaxy installer! This file doesn&apos;t contain the game. Please download the offline backup game installer!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="412"/>
<source>Stream error while extracting files!
error reason: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="425"/>
<source>Not a supported Inno Setup installer!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="436"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="399"/>
<source>Extracting error!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="438"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="401"/>
<source>No Heroes III data!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="438"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="401"/>
<source>Selected files do not contain Heroes III data!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="485"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="499"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="506"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="511"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="448"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="462"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="469"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="474"/>
<source>Heroes III data not found!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="482"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="445"/>
<source>Failed to detect valid Heroes III data in chosen directory.
Please select directory with installed Heroes III data.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="506"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="469"/>
<source>Heroes III: HD Edition files are not supported by VCMI.
Please select directory with Heroes III: Complete Edition or Heroes III: Shadow of Death.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="511"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="474"/>
<source>Unknown or unsupported Heroes III version found.
Please select directory with Heroes III: Complete Edition or Heroes III: Shadow of Death.</source>
<translation type="unfinished"></translation>
@@ -1304,6 +1349,25 @@ Please select directory with Heroes III: Complete Edition or Heroes III: Shadow
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Innoextract</name>
<message>
<location filename="../innoextract.cpp" line="42"/>
<source>Stream error while extracting files!
error reason: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../innoextract.cpp" line="55"/>
<source>Not a supported Inno Setup installer!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../innoextract.cpp" line="58"/>
<source>VCMI was compiled without innoextract support, which is needed to extract exe files!</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Language</name>
<message>

View File

@@ -238,7 +238,7 @@
</message>
<message>
<location filename="../modManager/cmodlistview_moc.ui" line="163"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="350"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="354"/>
<source>Description</source>
<translation>Description</translation>
</message>
@@ -293,184 +293,194 @@
<translation>Abandonner</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="285"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="289"/>
<source>Mod name</source>
<translation>Nom du mod</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="286"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="290"/>
<source>Installed version</source>
<translation>Version installée</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="287"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="291"/>
<source>Latest version</source>
<translation>Dernière version</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="290"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="294"/>
<source>Size</source>
<translation>Taille</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="292"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="296"/>
<source>Download size</source>
<translation>Taille de téléchargement</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="294"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="298"/>
<source>Authors</source>
<translation>Auteur(s)</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="297"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="301"/>
<source>License</source>
<translation>Licence</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="300"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="304"/>
<source>Contact</source>
<translation>Contact</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="309"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="313"/>
<source>Compatibility</source>
<translation>Compatibilité</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="311"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="319"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="315"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="323"/>
<source>Required VCMI version</source>
<translation>Version requise de VCMI</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="317"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="321"/>
<source>Supported VCMI version</source>
<translation>Version supportée de VCMI</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="317"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="321"/>
<source>please upgrade mod</source>
<translation>veuillez mettre à jour le mod</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="189"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="809"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="193"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="824"/>
<source>mods repository index</source>
<translation>Index du dépôt de mods</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="319"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="323"/>
<source>or newer</source>
<translation>ou plus récente</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="322"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="326"/>
<source>Supported VCMI versions</source>
<translation>Versions supportées de VCMI</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="346"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="350"/>
<source>Languages</source>
<translation>Langues</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="348"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="352"/>
<source>Required mods</source>
<translation>Mods requis</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="349"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="353"/>
<source>Conflicting mods</source>
<translation>Mods en conflit</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="354"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="358"/>
<source>This mod can not be installed or enabled because the following dependencies are not present</source>
<translation>Ce mod ne peut pas être installé ou activé car les dépendances suivantes ne sont pas présents
</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="355"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="359"/>
<source>This mod can not be enabled because the following mods are incompatible with it</source>
<translation>Ce mod ne peut pas être installé ou activé, car les dépendances suivantes sont incompatibles avec lui
</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="356"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="360"/>
<source>This mod cannot be disabled because it is required by the following mods</source>
<translation>Ce mod ne peut pas être désactivé car il est requis pour les dépendances suivantes
</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="357"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="361"/>
<source>This mod cannot be uninstalled or updated because it is required by the following mods</source>
<translation>Ce mod ne peut pas être désinstallé ou mis à jour car il est requis pour les dépendances suivantes
</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="358"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="362"/>
<source>This is a submod and it cannot be installed or uninstalled separately from its parent mod</source>
<translation>Ce sous-mod ne peut pas être installé ou mis à jour séparément du mod parent
</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="373"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="377"/>
<source>Notes</source>
<translation>Notes</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="643"/>
<source>All supported files</source>
<translation>Tous les fichiers supportés</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="644"/>
<source>Maps</source>
<translation>Cartes</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="645"/>
<source>Campaigns</source>
<translation>Campagnes</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="646"/>
<source>Configs</source>
<translation>Configurations</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="647"/>
<source>Mods</source>
<translation>Mods</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="640"/>
<source>Select files (configs, mods, maps, campaigns) to install...</source>
<translation>Sélectionner les fichiers à installer (configurations, mods, cartes, campagnes)...</translation>
<location filename="../modManager/cmodlistview_moc.cpp" line="648"/>
<source>Gog files</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="665"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="650"/>
<source>All files (*.*)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="652"/>
<source>Select files (configs, mods, maps, campaigns, gog files) to install...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="677"/>
<source>Replace config file?</source>
<translation>Remplacer le fichier de configuration ?</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="665"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="677"/>
<source>Do you want to replace %1?</source>
<translation>Voulez vous remplacer %1 ?</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="708"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="720"/>
<source>Downloading %1. %p% (%v MB out of %m MB) finished</source>
<translation>Téléchargement %1. %p% (%v Mo sur %m Mo) terminé</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="733"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="745"/>
<source>Download failed</source>
<translation>Téléchargement échoué</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="734"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="746"/>
<source>Unable to download all files.
Encountered errors:
@@ -483,7 +493,7 @@ Erreur rencontrées:
</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="735"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="747"/>
<source>
Install successfully downloaded?</source>
@@ -492,34 +502,39 @@ Install successfully downloaded?</source>
Installer les téchargements réussis?</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="881"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="852"/>
<source>Installing chronicles</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="925"/>
<source>Installing mod %1</source>
<translation>Installer le mod %1</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="950"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="994"/>
<source>Operation failed</source>
<translation>Opération échouée</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="951"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="995"/>
<source>Encountered errors:
</source>
<translation>Erreurs rencontrées:
</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="986"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="1030"/>
<source>screenshots</source>
<translation>captures d&apos;écran</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="992"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="1036"/>
<source>Screenshot %1</source>
<translation>Impression écran %1</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="280"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="284"/>
<source>Mod is incompatible</source>
<translation>Ce mod est incompatible</translation>
</message>
@@ -624,7 +639,7 @@ Installer les téchargements réussis?</translation>
<context>
<name>CSettingsView</name>
<message>
<location filename="../settingsView/csettingsview_moc.cpp" line="90"/>
<location filename="../settingsView/csettingsview_moc.cpp" line="98"/>
<source>Off</source>
<translation>Désactivé</translation>
</message>
@@ -634,7 +649,7 @@ Installer les téchargements réussis?</translation>
<translation>Intelligence Artificielle</translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.cpp" line="88"/>
<location filename="../settingsView/csettingsview_moc.cpp" line="96"/>
<source>On</source>
<translation>Activé</translation>
</message>
@@ -708,6 +723,11 @@ Installer les téchargements réussis?</translation>
<source>xBRZ x4</source>
<translation>xBRZ x4</translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.ui" line="1194"/>
<source>Use scalable fonts</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.ui" line="138"/>
<source>Online Lobby address</source>
@@ -971,31 +991,67 @@ Mode exclusif plein écran - le jeu couvrira l&quot;intégralité de votre écra
<translation>Montrer l&apos;intro</translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.cpp" line="503"/>
<location filename="../settingsView/csettingsview_moc.cpp" line="525"/>
<source>Active</source>
<translation>Actif</translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.cpp" line="508"/>
<location filename="../settingsView/csettingsview_moc.cpp" line="530"/>
<source>Disabled</source>
<translation>Désactivé</translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.cpp" line="509"/>
<location filename="../settingsView/csettingsview_moc.cpp" line="531"/>
<source>Enable</source>
<translation>Activé</translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.cpp" line="514"/>
<location filename="../settingsView/csettingsview_moc.cpp" line="536"/>
<source>Not Installed</source>
<translation>Pas Installé</translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.cpp" line="515"/>
<location filename="../settingsView/csettingsview_moc.cpp" line="537"/>
<source>Install</source>
<translation>Installer</translation>
</message>
</context>
<context>
<name>ChroniclesExtractor</name>
<message>
<location filename="../modManager/chroniclesextractor.cpp" line="48"/>
<source>File cannot opened</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/chroniclesextractor.cpp" line="56"/>
<location filename="../modManager/chroniclesextractor.cpp" line="71"/>
<source>Invalid file selected</source>
<translation type="unfinished">Fichier sélectionné non valide</translation>
</message>
<message>
<location filename="../modManager/chroniclesextractor.cpp" line="56"/>
<source>You have to select an gog installer file!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/chroniclesextractor.cpp" line="71"/>
<source>You have to select an chronicle installer file!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/chroniclesextractor.cpp" line="87"/>
<source>Extracting error!</source>
<translation type="unfinished">Erreur d&apos;extraction !</translation>
</message>
<message>
<location filename="../modManager/chroniclesextractor.cpp" line="104"/>
<location filename="../modManager/chroniclesextractor.cpp" line="105"/>
<location filename="../modManager/chroniclesextractor.cpp" line="141"/>
<source>Heroes Chronicles</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>File size</name>
<message>
@@ -1213,113 +1269,101 @@ Heroes® of Might and Magic® III HD n&quot;est actuellement pas pris en charge
<translation>Installer une version compatible de &quot;In The Wake of Gods&quot;, une extension Heroes III créée par des fans</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="178"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="174"/>
<source>Heroes III installation found!</source>
<translation>Installation de Heroes III trouvée!</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="178"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="174"/>
<source>Copy data to VCMI folder?</source>
<translation>Copier le dossier data dans le dossier VCMI ?</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="317"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="313"/>
<source>Select %1 file...</source>
<comment>param is file extension</comment>
<translation>Sélectionner le fichier %1...</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="318"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="314"/>
<source>You have to select %1 file!</source>
<comment>param is file extension</comment>
<translation>Vous avez sélectionné le fichier %1 !</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="320"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="316"/>
<source>GOG file (*.*)</source>
<translation>Fichier GOG (*.*)</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="321"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="317"/>
<source>File selection</source>
<translation>Sélection de fichier</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="330"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="326"/>
<source>File cannot be opened</source>
<translation>Le fichier ne peut pas être ouvert</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="336"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="332"/>
<source>Invalid file selected</source>
<translation>Fichier sélectionné non valide</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="346"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="342"/>
<source>GOG installer</source>
<translation>Installateur GOG</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="343"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="339"/>
<source>GOG data</source>
<translation>Données GOG</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="438"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="401"/>
<source>No Heroes III data!</source>
<translation>Pas de données Heroes III!</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="438"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="401"/>
<source>Selected files do not contain Heroes III data!</source>
<translation>Les fichiers sélectionnés ne contiennent pas les données de Heroes III !</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="485"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="499"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="506"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="511"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="448"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="462"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="469"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="474"/>
<source>Heroes III data not found!</source>
<translation>Données Heroes III introuvables !</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="482"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="445"/>
<source>Failed to detect valid Heroes III data in chosen directory.
Please select directory with installed Heroes III data.</source>
<translation>Impossible de détecter des données Heroes III valides dans le répertoire choisi,
Veuillez selectionner un dossier ou les données de Heroes III sont présentes.</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="387"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="383"/>
<source>You&apos;ve provided GOG Galaxy installer! This file doesn&apos;t contain the game. Please download the offline backup game installer!</source>
<translation>Vous avez fourni le programme d&apos;installation de GOG Galaxy ! Ce fichier ne contient pas le jeu. Veuillez télécharger le programme d&apos;installation de sauvegarde hors ligne du jeu !</translation>
<translation>Vous avez fourni le programme d&apos;installation de GOG Galaxy&#xa0;! Ce fichier ne contient pas le jeu. Veuillez télécharger le programme d&apos;installation de sauvegarde hors ligne du jeu&#xa0;!</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="412"/>
<source>Stream error while extracting files!
error reason: </source>
<translation>Erreur de flux lors de l&apos;extraction des fichiers !
Raison de l&apos;erreur : </translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="425"/>
<source>Not a supported Inno Setup installer!</source>
<translation>Programme dinstallation Inno Setup non pris en charge !</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="436"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="399"/>
<source>Extracting error!</source>
<translation>Erreur d&apos;extraction !</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="506"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="469"/>
<source>Heroes III: HD Edition files are not supported by VCMI.
Please select directory with Heroes III: Complete Edition or Heroes III: Shadow of Death.</source>
<translation>Les fichiers de Heroes III HD Edition ne sont pas supportés par VCMI.
Veuillez sélectionner un dossier contenant les données de Heroes III: Complete Edition ou Heroes III: Shadow of Death.</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="511"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="474"/>
<source>Unknown or unsupported Heroes III version found.
Please select directory with Heroes III: Complete Edition or Heroes III: Shadow of Death.</source>
<translation>Version inconnue ou non supportée de Heroes III.
@@ -1334,6 +1378,26 @@ Veuillez sélectionner un dossier contenant les données de Heroes III: Complete
<translation>Afficheur d&apos;Image</translation>
</message>
</context>
<context>
<name>Innoextract</name>
<message>
<location filename="../innoextract.cpp" line="42"/>
<source>Stream error while extracting files!
error reason: </source>
<translation type="unfinished">Erreur de flux lors de l&apos;extraction des fichiers&#xa0;!
Raison de l&apos;erreur&#xa0;: </translation>
</message>
<message>
<location filename="../innoextract.cpp" line="55"/>
<source>Not a supported Inno Setup installer!</source>
<translation type="unfinished">Programme dinstallation Inno Setup non pris en charge&#xa0;!</translation>
</message>
<message>
<location filename="../innoextract.cpp" line="58"/>
<source>VCMI was compiled without innoextract support, which is needed to extract exe files!</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Language</name>
<message>
@@ -1485,7 +1549,7 @@ Veuillez sélectionner un dossier contenant les données de Heroes III: Complete
<source>Failed to start %1
Reason: %2</source>
<translation>Échec de démarrage %1
Raison : %2</translation>
Raison&#xa0;: %2</translation>
</message>
</context>
<context>

View File

@@ -233,7 +233,7 @@
</message>
<message>
<location filename="../modManager/cmodlistview_moc.ui" line="163"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="350"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="354"/>
<source>Description</source>
<translation>Beschreibung</translation>
</message>
@@ -293,179 +293,189 @@
<translation>Abbrechen</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="285"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="289"/>
<source>Mod name</source>
<translation>Mod-Name</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="286"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="290"/>
<source>Installed version</source>
<translation>Installierte Version</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="287"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="291"/>
<source>Latest version</source>
<translation>Letzte Version</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="290"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="294"/>
<source>Size</source>
<translation>Größe</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="292"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="296"/>
<source>Download size</source>
<translation>Downloadgröße</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="294"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="298"/>
<source>Authors</source>
<translation>Autoren</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="297"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="301"/>
<source>License</source>
<translation>Lizenz</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="300"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="304"/>
<source>Contact</source>
<translation>Kontakt</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="309"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="313"/>
<source>Compatibility</source>
<translation>Kompatibilität</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="311"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="319"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="315"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="323"/>
<source>Required VCMI version</source>
<translation>Benötigte VCMI Version</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="317"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="321"/>
<source>Supported VCMI version</source>
<translation>Unterstützte VCMI Version</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="317"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="321"/>
<source>please upgrade mod</source>
<translation>bitte Mod upgraden</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="189"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="809"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="193"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="824"/>
<source>mods repository index</source>
<translation>Mod Verzeichnis Index</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="319"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="323"/>
<source>or newer</source>
<translation>oder neuer</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="322"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="326"/>
<source>Supported VCMI versions</source>
<translation>Unterstützte VCMI Versionen</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="346"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="350"/>
<source>Languages</source>
<translation>Sprachen</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="348"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="352"/>
<source>Required mods</source>
<translation>Benötigte Mods</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="349"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="353"/>
<source>Conflicting mods</source>
<translation>Mods mit Konflikt</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="354"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="358"/>
<source>This mod can not be installed or enabled because the following dependencies are not present</source>
<translation>Diese Mod kann nicht installiert oder aktiviert werden, da die folgenden Abhängigkeiten nicht vorhanden sind</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="355"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="359"/>
<source>This mod can not be enabled because the following mods are incompatible with it</source>
<translation>Diese Mod kann nicht aktiviert werden, da folgende Mods nicht mit dieser Mod kompatibel sind</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="356"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="360"/>
<source>This mod cannot be disabled because it is required by the following mods</source>
<translation>Diese Mod kann nicht deaktiviert werden, da sie zum Ausführen der folgenden Mods erforderlich ist</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="357"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="361"/>
<source>This mod cannot be uninstalled or updated because it is required by the following mods</source>
<translation>Diese Mod kann nicht deinstalliert oder aktualisiert werden, da sie für die folgenden Mods erforderlich ist</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="358"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="362"/>
<source>This is a submod and it cannot be installed or uninstalled separately from its parent mod</source>
<translation>Dies ist eine Submod und kann nicht separat von der Hauptmod installiert oder deinstalliert werden</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="373"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="377"/>
<source>Notes</source>
<translation>Anmerkungen</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="643"/>
<source>All supported files</source>
<translation>Alle unterstützten Dateien</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="644"/>
<source>Maps</source>
<translation>Karten</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="645"/>
<source>Campaigns</source>
<translation>Kampagnen</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="646"/>
<source>Configs</source>
<translation>Konfigurationen</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="647"/>
<source>Mods</source>
<translation>Mods</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="640"/>
<source>Select files (configs, mods, maps, campaigns) to install...</source>
<translation>Wähle Dateien (Konfigurationen, Mods, Karten, Kampagnen) zum installieren...</translation>
<location filename="../modManager/cmodlistview_moc.cpp" line="648"/>
<source>Gog files</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="665"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="650"/>
<source>All files (*.*)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="652"/>
<source>Select files (configs, mods, maps, campaigns, gog files) to install...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="677"/>
<source>Replace config file?</source>
<translation>Konfigurationsdatei ersetzen?</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="665"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="677"/>
<source>Do you want to replace %1?</source>
<translation>Soll %1 ersetzt werden?</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="708"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="720"/>
<source>Downloading %1. %p% (%v MB out of %m MB) finished</source>
<translation>Downloade %1. %p% (%v MB von %m MB) abgeschlossen</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="733"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="745"/>
<source>Download failed</source>
<translation>Download fehlgeschlagen</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="734"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="746"/>
<source>Unable to download all files.
Encountered errors:
@@ -478,7 +488,7 @@ Es sind Fehler aufgetreten:
</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="735"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="747"/>
<source>
Install successfully downloaded?</source>
@@ -487,34 +497,39 @@ Install successfully downloaded?</source>
Installation erfolgreich heruntergeladen?</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="881"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="852"/>
<source>Installing chronicles</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="925"/>
<source>Installing mod %1</source>
<translation>Installation von Mod %1</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="950"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="994"/>
<source>Operation failed</source>
<translation>Operation fehlgeschlagen</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="951"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="995"/>
<source>Encountered errors:
</source>
<translation>Aufgetretene Fehler:
</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="986"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="1030"/>
<source>screenshots</source>
<translation>Screenshots</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="992"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="1036"/>
<source>Screenshot %1</source>
<translation>Screenshot %1</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="280"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="284"/>
<source>Mod is incompatible</source>
<translation>Mod ist inkompatibel</translation>
</message>
@@ -619,7 +634,7 @@ Installation erfolgreich heruntergeladen?</translation>
<context>
<name>CSettingsView</name>
<message>
<location filename="../settingsView/csettingsview_moc.cpp" line="90"/>
<location filename="../settingsView/csettingsview_moc.cpp" line="98"/>
<source>Off</source>
<translation>Aus</translation>
</message>
@@ -713,6 +728,11 @@ Installation erfolgreich heruntergeladen?</translation>
<source>xBRZ x4</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.ui" line="1194"/>
<source>Use scalable fonts</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.ui" line="138"/>
<source>Online Lobby address</source>
@@ -879,7 +899,7 @@ Installation erfolgreich heruntergeladen?</translation>
<translation>Renderer</translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.cpp" line="88"/>
<location filename="../settingsView/csettingsview_moc.cpp" line="96"/>
<source>On</source>
<translation>An</translation>
</message>
@@ -966,31 +986,67 @@ Exklusiver Vollbildmodus - das Spiel bedeckt den gesamten Bildschirm und verwend
<translation>Intro anzeigen</translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.cpp" line="503"/>
<location filename="../settingsView/csettingsview_moc.cpp" line="525"/>
<source>Active</source>
<translation>Aktiv</translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.cpp" line="508"/>
<location filename="../settingsView/csettingsview_moc.cpp" line="530"/>
<source>Disabled</source>
<translation>Deaktiviert</translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.cpp" line="509"/>
<location filename="../settingsView/csettingsview_moc.cpp" line="531"/>
<source>Enable</source>
<translation>Aktivieren</translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.cpp" line="514"/>
<location filename="../settingsView/csettingsview_moc.cpp" line="536"/>
<source>Not Installed</source>
<translation>Nicht installiert</translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.cpp" line="515"/>
<location filename="../settingsView/csettingsview_moc.cpp" line="537"/>
<source>Install</source>
<translation>Installieren</translation>
</message>
</context>
<context>
<name>ChroniclesExtractor</name>
<message>
<location filename="../modManager/chroniclesextractor.cpp" line="48"/>
<source>File cannot opened</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/chroniclesextractor.cpp" line="56"/>
<location filename="../modManager/chroniclesextractor.cpp" line="71"/>
<source>Invalid file selected</source>
<translation type="unfinished">Ungültige Datei ausgewählt</translation>
</message>
<message>
<location filename="../modManager/chroniclesextractor.cpp" line="56"/>
<source>You have to select an gog installer file!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/chroniclesextractor.cpp" line="71"/>
<source>You have to select an chronicle installer file!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/chroniclesextractor.cpp" line="87"/>
<source>Extracting error!</source>
<translation type="unfinished">Fehler beim Extrahieren!</translation>
</message>
<message>
<location filename="../modManager/chroniclesextractor.cpp" line="104"/>
<location filename="../modManager/chroniclesextractor.cpp" line="105"/>
<location filename="../modManager/chroniclesextractor.cpp" line="141"/>
<source>Heroes Chronicles</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>File size</name>
<message>
@@ -1208,113 +1264,101 @@ Der Offline-Installer besteht aus zwei Teilen, .exe und .bin. Stellen Sie sicher
<translation>In The Wake of Gods</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="178"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="174"/>
<source>Heroes III installation found!</source>
<translation>Heroes III-Installation gefunden!</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="178"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="174"/>
<source>Copy data to VCMI folder?</source>
<translation>Daten in den VCMI-Ordner kopieren?</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="317"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="313"/>
<source>Select %1 file...</source>
<comment>param is file extension</comment>
<translation>%1 Datei auswählen...</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="318"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="314"/>
<source>You have to select %1 file!</source>
<comment>param is file extension</comment>
<translation>Sie müssen %1 Datei auswählen!</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="320"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="316"/>
<source>GOG file (*.*)</source>
<translation>GOG Datei (*.*)</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="321"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="317"/>
<source>File selection</source>
<translation>Dateiauswahl</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="330"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="326"/>
<source>File cannot be opened</source>
<translation>Datei kann nicht geöffnet werden</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="336"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="332"/>
<source>Invalid file selected</source>
<translation>Ungültige Datei ausgewählt</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="346"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="342"/>
<source>GOG installer</source>
<translation>GOG-Installationsprogramm</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="343"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="339"/>
<source>GOG data</source>
<translation>GOG-Datendatei</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="438"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="401"/>
<source>No Heroes III data!</source>
<translation>Keine Heroes III-Daten!</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="438"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="401"/>
<source>Selected files do not contain Heroes III data!</source>
<translation>Die ausgewählten Dateien enthalten keine Heroes III-Daten!</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="485"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="499"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="506"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="511"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="448"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="462"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="469"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="474"/>
<source>Heroes III data not found!</source>
<translation>Heroes III Daten nicht gefunden!</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="482"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="445"/>
<source>Failed to detect valid Heroes III data in chosen directory.
Please select directory with installed Heroes III data.</source>
<translation>Es konnten keine gültigen Heroes III-Daten im gewählten Verzeichnis gefunden werden.
Bitte wählen Sie ein Verzeichnis mit installierten Heroes III-Daten.</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="387"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="383"/>
<source>You&apos;ve provided GOG Galaxy installer! This file doesn&apos;t contain the game. Please download the offline backup game installer!</source>
<translation>Es wurde der GOG Galaxy-Installer ausgewählt! Das Spiel ist in dieser Datei nicht enthalten. Lade den Offline-Backup-Installer für das Spiel herunter!</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="412"/>
<source>Stream error while extracting files!
error reason: </source>
<translation>Stream-Fehler beim Extrahieren von Dateien!
Fehlerursache: </translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="425"/>
<source>Not a supported Inno Setup installer!</source>
<translation>Kein unterstütztes Inno Setup Installationsprogramm!</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="436"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="399"/>
<source>Extracting error!</source>
<translation>Fehler beim Extrahieren!</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="506"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="469"/>
<source>Heroes III: HD Edition files are not supported by VCMI.
Please select directory with Heroes III: Complete Edition or Heroes III: Shadow of Death.</source>
<translation>Heroes III: HD Edition Dateien werden von VCMI nicht unterstützt.
Bitte wählen Sie ein Verzeichnis mit Heroes III: Complete Edition oder Heroes III: Shadow of Death.</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="511"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="474"/>
<source>Unknown or unsupported Heroes III version found.
Please select directory with Heroes III: Complete Edition or Heroes III: Shadow of Death.</source>
<translation>Unbekannte oder nicht unterstützte Heroes III-Version gefunden.
@@ -1329,6 +1373,26 @@ Bitte wählen Sie ein Verzeichnis mit Heroes III: Complete Edition oder Heroes I
<translation>Bildbetrachter</translation>
</message>
</context>
<context>
<name>Innoextract</name>
<message>
<location filename="../innoextract.cpp" line="42"/>
<source>Stream error while extracting files!
error reason: </source>
<translation type="unfinished">Stream-Fehler beim Extrahieren von Dateien!
Fehlerursache: </translation>
</message>
<message>
<location filename="../innoextract.cpp" line="55"/>
<source>Not a supported Inno Setup installer!</source>
<translation type="unfinished">Kein unterstütztes Inno Setup Installationsprogramm!</translation>
</message>
<message>
<location filename="../innoextract.cpp" line="58"/>
<source>VCMI was compiled without innoextract support, which is needed to extract exe files!</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Language</name>
<message>

View File

@@ -233,7 +233,7 @@
</message>
<message>
<location filename="../modManager/cmodlistview_moc.ui" line="163"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="350"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="354"/>
<source>Description</source>
<translation>Opis</translation>
</message>
@@ -293,179 +293,189 @@
<translation>Przerwij</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="285"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="289"/>
<source>Mod name</source>
<translation>Nazwa moda</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="286"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="290"/>
<source>Installed version</source>
<translation>Zainstalowana wersja</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="287"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="291"/>
<source>Latest version</source>
<translation>Najnowsza wersja</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="290"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="294"/>
<source>Size</source>
<translation>Rozmiar</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="292"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="296"/>
<source>Download size</source>
<translation>Rozmiar pobierania</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="294"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="298"/>
<source>Authors</source>
<translation>Autorzy</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="297"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="301"/>
<source>License</source>
<translation>Licencja</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="300"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="304"/>
<source>Contact</source>
<translation>Kontakt</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="309"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="313"/>
<source>Compatibility</source>
<translation>Kompatybilność</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="311"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="319"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="315"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="323"/>
<source>Required VCMI version</source>
<translation>Wymagana wersja VCMI</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="317"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="321"/>
<source>Supported VCMI version</source>
<translation>Wspierana wersja VCMI</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="317"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="321"/>
<source>please upgrade mod</source>
<translation>proszę zaktualizować moda</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="189"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="809"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="193"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="824"/>
<source>mods repository index</source>
<translation>indeks repozytorium modów</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="319"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="323"/>
<source>or newer</source>
<translation>lub nowsze</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="322"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="326"/>
<source>Supported VCMI versions</source>
<translation>Wspierane wersje VCMI</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="346"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="350"/>
<source>Languages</source>
<translation>Języki</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="348"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="352"/>
<source>Required mods</source>
<translation>Wymagane mody</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="349"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="353"/>
<source>Conflicting mods</source>
<translation>Konfliktujące mody</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="354"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="358"/>
<source>This mod can not be installed or enabled because the following dependencies are not present</source>
<translation>Ten mod nie może zostać zainstalowany lub włączony ponieważ następujące zależności nie zostały spełnione</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="355"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="359"/>
<source>This mod can not be enabled because the following mods are incompatible with it</source>
<translation>Ten mod nie może zostać włączony ponieważ następujące mody z nim niekompatybilne</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="356"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="360"/>
<source>This mod cannot be disabled because it is required by the following mods</source>
<translation>Ten mod nie może zostać wyłączony ponieważ jest wymagany do uruchomienia następujących modów</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="357"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="361"/>
<source>This mod cannot be uninstalled or updated because it is required by the following mods</source>
<translation>Ten mod nie może zostać odinstalowany lub zaktualizowany ponieważ jest wymagany do uruchomienia następujących modów</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="358"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="362"/>
<source>This is a submod and it cannot be installed or uninstalled separately from its parent mod</source>
<translation>To jest moduł składowy innego moda i nie może być zainstalowany lub odinstalowany oddzielnie od moda nadrzędnego</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="373"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="377"/>
<source>Notes</source>
<translation>Uwagi</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="643"/>
<source>All supported files</source>
<translation>Wszystkie wspierane pliki</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="644"/>
<source>Maps</source>
<translation>Mapy</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="645"/>
<source>Campaigns</source>
<translation>Kampanie</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="646"/>
<source>Configs</source>
<translation>Konfiguracje</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="647"/>
<source>Mods</source>
<translation>Mody</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="640"/>
<source>Select files (configs, mods, maps, campaigns) to install...</source>
<translation>Wybierz pliki (konfiguracyjne, mody, mapy, kampanie) do zainstalowania...</translation>
<location filename="../modManager/cmodlistview_moc.cpp" line="648"/>
<source>Gog files</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="665"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="650"/>
<source>All files (*.*)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="652"/>
<source>Select files (configs, mods, maps, campaigns, gog files) to install...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="677"/>
<source>Replace config file?</source>
<translation>Zastąpić plik konfiguracji?</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="665"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="677"/>
<source>Do you want to replace %1?</source>
<translation>Czy chcesz zastąpić %1?</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="708"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="720"/>
<source>Downloading %1. %p% (%v MB out of %m MB) finished</source>
<translation>Pobieranie %1. %p% (%v MB z %m MB) ukończono</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="733"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="745"/>
<source>Download failed</source>
<translation>Pobieranie nieudane</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="734"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="746"/>
<source>Unable to download all files.
Encountered errors:
@@ -478,7 +488,7 @@ Napotkane błędy:
</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="735"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="747"/>
<source>
Install successfully downloaded?</source>
@@ -487,34 +497,39 @@ Install successfully downloaded?</source>
Zainstalować pomyślnie pobrane?</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="881"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="852"/>
<source>Installing chronicles</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="925"/>
<source>Installing mod %1</source>
<translation>Instalowanie modyfikacji %1</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="950"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="994"/>
<source>Operation failed</source>
<translation>Operacja nieudana</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="951"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="995"/>
<source>Encountered errors:
</source>
<translation>Napotkane błędy:
</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="986"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="1030"/>
<source>screenshots</source>
<translation>zrzuty ekranu</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="992"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="1036"/>
<source>Screenshot %1</source>
<translation>Zrzut ekranu %1</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="280"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="284"/>
<source>Mod is incompatible</source>
<translation>Mod jest niekompatybilny</translation>
</message>
@@ -619,7 +634,7 @@ Zainstalować pomyślnie pobrane?</translation>
<context>
<name>CSettingsView</name>
<message>
<location filename="../settingsView/csettingsview_moc.cpp" line="90"/>
<location filename="../settingsView/csettingsview_moc.cpp" line="98"/>
<source>Off</source>
<translation>Wyłączony</translation>
</message>
@@ -713,6 +728,11 @@ Zainstalować pomyślnie pobrane?</translation>
<source>xBRZ x4</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.ui" line="1194"/>
<source>Use scalable fonts</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.ui" line="138"/>
<source>Online Lobby address</source>
@@ -879,7 +899,7 @@ Zainstalować pomyślnie pobrane?</translation>
<translation>Renderer</translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.cpp" line="88"/>
<location filename="../settingsView/csettingsview_moc.cpp" line="96"/>
<source>On</source>
<translation>Włączony</translation>
</message>
@@ -966,31 +986,67 @@ Pełny ekran klasyczny - gra przysłoni cały ekran uruchamiając się w wybrane
<translation>Pokaż intro</translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.cpp" line="503"/>
<location filename="../settingsView/csettingsview_moc.cpp" line="525"/>
<source>Active</source>
<translation>Aktywny</translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.cpp" line="508"/>
<location filename="../settingsView/csettingsview_moc.cpp" line="530"/>
<source>Disabled</source>
<translation>Wyłączone</translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.cpp" line="509"/>
<location filename="../settingsView/csettingsview_moc.cpp" line="531"/>
<source>Enable</source>
<translation>Włącz</translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.cpp" line="514"/>
<location filename="../settingsView/csettingsview_moc.cpp" line="536"/>
<source>Not Installed</source>
<translation>Nie zainstalowano</translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.cpp" line="515"/>
<location filename="../settingsView/csettingsview_moc.cpp" line="537"/>
<source>Install</source>
<translation>Zainstaluj</translation>
</message>
</context>
<context>
<name>ChroniclesExtractor</name>
<message>
<location filename="../modManager/chroniclesextractor.cpp" line="48"/>
<source>File cannot opened</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/chroniclesextractor.cpp" line="56"/>
<location filename="../modManager/chroniclesextractor.cpp" line="71"/>
<source>Invalid file selected</source>
<translation type="unfinished">Wybrano nieprawidłowy plik</translation>
</message>
<message>
<location filename="../modManager/chroniclesextractor.cpp" line="56"/>
<source>You have to select an gog installer file!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/chroniclesextractor.cpp" line="71"/>
<source>You have to select an chronicle installer file!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/chroniclesextractor.cpp" line="87"/>
<source>Extracting error!</source>
<translation type="unfinished">Błąd wypakowywania!</translation>
</message>
<message>
<location filename="../modManager/chroniclesextractor.cpp" line="104"/>
<location filename="../modManager/chroniclesextractor.cpp" line="105"/>
<location filename="../modManager/chroniclesextractor.cpp" line="141"/>
<source>Heroes Chronicles</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>File size</name>
<message>
@@ -1208,113 +1264,101 @@ Instalator offline składa się z dwóch części, .exe i .bin. Upewnij się, ż
<translation>In The Wake of Gods</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="178"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="174"/>
<source>Heroes III installation found!</source>
<translation>Znaleziono zainstalowane Heroes III!</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="178"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="174"/>
<source>Copy data to VCMI folder?</source>
<translation>Skopiować dane do folderu VCMI?</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="317"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="313"/>
<source>Select %1 file...</source>
<comment>param is file extension</comment>
<translation>Wybierz plik %1...</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="318"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="314"/>
<source>You have to select %1 file!</source>
<comment>param is file extension</comment>
<translation>Musisz wybrać plik %1!</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="320"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="316"/>
<source>GOG file (*.*)</source>
<translation>Instalator GOG (*.*)</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="321"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="317"/>
<source>File selection</source>
<translation>Wybór pliku</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="330"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="326"/>
<source>File cannot be opened</source>
<translation>Nieudane otwarcie pliku</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="336"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="332"/>
<source>Invalid file selected</source>
<translation>Wybrano nieprawidłowy plik</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="346"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="342"/>
<source>GOG installer</source>
<translation>Instalator GOG</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="343"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="339"/>
<source>GOG data</source>
<translation>Dane GOG</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="438"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="401"/>
<source>No Heroes III data!</source>
<translation>Brak danych Heroes III!</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="438"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="401"/>
<source>Selected files do not contain Heroes III data!</source>
<translation>Wybrane pliki nie zawierają danych Heroes III!</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="485"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="499"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="506"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="511"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="448"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="462"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="469"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="474"/>
<source>Heroes III data not found!</source>
<translation>Dane Heroes III nie znalezione!</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="482"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="445"/>
<source>Failed to detect valid Heroes III data in chosen directory.
Please select directory with installed Heroes III data.</source>
<translation>Nieudane znalezienie poprawnych plików Heroes III w podanej lokalizacji.
Proszę wybrać folder z zainstalowanymi danymi Heroes III.</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="387"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="383"/>
<source>You&apos;ve provided GOG Galaxy installer! This file doesn&apos;t contain the game. Please download the offline backup game installer!</source>
<translation>Podany plik jest instalatorem GOG Galaxy! Ten plik nie zawiera gry. Proszę pobrać zapasowy instalator offline gry!</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="412"/>
<source>Stream error while extracting files!
error reason: </source>
<translation>Błąd strumienia podczas rozpakowywania plików!
powód błędu: </translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="425"/>
<source>Not a supported Inno Setup installer!</source>
<translation>To nie jest wspierany instalator Inno Setup!</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="436"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="399"/>
<source>Extracting error!</source>
<translation>Błąd wypakowywania!</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="506"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="469"/>
<source>Heroes III: HD Edition files are not supported by VCMI.
Please select directory with Heroes III: Complete Edition or Heroes III: Shadow of Death.</source>
<translation>Pliki Heroes III HD Edition nie wspierane przez VCMI.
Proszę wybrać folder z Heroes III: Complete Edition lub Heroes III: Shadow of Death.</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="511"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="474"/>
<source>Unknown or unsupported Heroes III version found.
Please select directory with Heroes III: Complete Edition or Heroes III: Shadow of Death.</source>
<translation>Znaleziono nieznaną lub niewspieraną wersję Heroes III.
@@ -1329,6 +1373,26 @@ Proszę wybrać folder z Heroes III: Complete Edition lub Heroes III: Shadow of
<translation>Wyświetlacz obrazków</translation>
</message>
</context>
<context>
<name>Innoextract</name>
<message>
<location filename="../innoextract.cpp" line="42"/>
<source>Stream error while extracting files!
error reason: </source>
<translation type="unfinished">Błąd strumienia podczas rozpakowywania plików!
powód błędu: </translation>
</message>
<message>
<location filename="../innoextract.cpp" line="55"/>
<source>Not a supported Inno Setup installer!</source>
<translation type="unfinished">To nie jest wspierany instalator Inno Setup!</translation>
</message>
<message>
<location filename="../innoextract.cpp" line="58"/>
<source>VCMI was compiled without innoextract support, which is needed to extract exe files!</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Language</name>
<message>

View File

@@ -233,7 +233,7 @@
</message>
<message>
<location filename="../modManager/cmodlistview_moc.ui" line="163"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="350"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="354"/>
<source>Description</source>
<translation>Descrição</translation>
</message>
@@ -293,179 +293,189 @@
<translation>Cancelar</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="285"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="289"/>
<source>Mod name</source>
<translation>Nome do mod</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="286"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="290"/>
<source>Installed version</source>
<translation>Versão instalada</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="287"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="291"/>
<source>Latest version</source>
<translation>Última versão</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="290"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="294"/>
<source>Size</source>
<translation>Tamanho</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="292"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="296"/>
<source>Download size</source>
<translation>Tamanho do download</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="294"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="298"/>
<source>Authors</source>
<translation>Autores</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="297"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="301"/>
<source>License</source>
<translation>Licença</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="300"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="304"/>
<source>Contact</source>
<translation>Contato</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="309"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="313"/>
<source>Compatibility</source>
<translation>Compatibilidade</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="311"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="319"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="315"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="323"/>
<source>Required VCMI version</source>
<translation>Versão do VCMI necessária</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="317"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="321"/>
<source>Supported VCMI version</source>
<translation>Versão do VCMI suportada</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="317"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="321"/>
<source>please upgrade mod</source>
<translation>por favor, atualize o mod</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="189"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="809"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="193"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="824"/>
<source>mods repository index</source>
<translation>índice do repositório de mods</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="319"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="323"/>
<source>or newer</source>
<translation>ou mais recente</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="322"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="326"/>
<source>Supported VCMI versions</source>
<translation>Versões do VCMI suportadas</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="346"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="350"/>
<source>Languages</source>
<translation>Idiomas</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="348"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="352"/>
<source>Required mods</source>
<translation>Mods requeridos</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="349"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="353"/>
<source>Conflicting mods</source>
<translation>Mods conflitantes</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="354"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="358"/>
<source>This mod can not be installed or enabled because the following dependencies are not present</source>
<translation>Este mod não pode ser instalado ou ativado porque as seguintes dependências não estão presentes</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="355"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="359"/>
<source>This mod can not be enabled because the following mods are incompatible with it</source>
<translation>Este mod não pode ser ativado porque os seguintes mods são incompatíveis com ele</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="356"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="360"/>
<source>This mod cannot be disabled because it is required by the following mods</source>
<translation>Este mod não pode ser desativado porque é necessário pelos seguintes mods</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="357"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="361"/>
<source>This mod cannot be uninstalled or updated because it is required by the following mods</source>
<translation>Este mod não pode ser desinstalado ou atualizado porque é necessário pelos seguintes mods</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="358"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="362"/>
<source>This is a submod and it cannot be installed or uninstalled separately from its parent mod</source>
<translation>Este é um submod e não pode ser instalado ou desinstalado separadamente do seu mod principal</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="373"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="377"/>
<source>Notes</source>
<translation>Notas</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="643"/>
<source>All supported files</source>
<translation>Todos os arquivos suportados</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="644"/>
<source>Maps</source>
<translation>Mapas</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="645"/>
<source>Campaigns</source>
<translation>Campanhas</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="646"/>
<source>Configs</source>
<translation>Configurações</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="647"/>
<source>Mods</source>
<translation>Mods</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="640"/>
<source>Select files (configs, mods, maps, campaigns) to install...</source>
<translation>Selecione arquivos (configurações, mods, mapas, campanhas) para instalar...</translation>
<location filename="../modManager/cmodlistview_moc.cpp" line="648"/>
<source>Gog files</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="665"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="650"/>
<source>All files (*.*)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="652"/>
<source>Select files (configs, mods, maps, campaigns, gog files) to install...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="677"/>
<source>Replace config file?</source>
<translation>Substituir arquivo de configuração?</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="665"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="677"/>
<source>Do you want to replace %1?</source>
<translation>Você deseja substituir %1?</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="708"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="720"/>
<source>Downloading %1. %p% (%v MB out of %m MB) finished</source>
<translation>Baixando %1. %p% (%v MB de %m MB) concluído</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="733"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="745"/>
<source>Download failed</source>
<translation>Falha no download</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="734"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="746"/>
<source>Unable to download all files.
Encountered errors:
@@ -478,7 +488,7 @@ Encontrados os seguintes erros:
</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="735"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="747"/>
<source>
Install successfully downloaded?</source>
@@ -487,34 +497,39 @@ Install successfully downloaded?</source>
Instalar o download realizado com sucesso?</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="881"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="852"/>
<source>Installing chronicles</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="925"/>
<source>Installing mod %1</source>
<translation>Instalando mod %1</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="950"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="994"/>
<source>Operation failed</source>
<translation>Falha na operação</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="951"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="995"/>
<source>Encountered errors:
</source>
<translation>Erros encontrados:
</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="986"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="1030"/>
<source>screenshots</source>
<translation>capturas de tela</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="992"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="1036"/>
<source>Screenshot %1</source>
<translation>Captura de tela %1</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="280"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="284"/>
<source>Mod is incompatible</source>
<translation>O mod é incompatível</translation>
</message>
@@ -619,7 +634,7 @@ Instalar o download realizado com sucesso?</translation>
<context>
<name>CSettingsView</name>
<message>
<location filename="../settingsView/csettingsview_moc.cpp" line="90"/>
<location filename="../settingsView/csettingsview_moc.cpp" line="98"/>
<source>Off</source>
<translation>Desativado</translation>
</message>
@@ -841,7 +856,7 @@ Instalar o download realizado com sucesso?</translation>
<message>
<location filename="../settingsView/csettingsview_moc.ui" line="893"/>
<source>Downscaling Filter</source>
<translation>Filtro de Redução de Escala</translation>
<translation>Filtro de Redução de Escala</translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.ui" line="1030"/>
@@ -884,12 +899,12 @@ Instalar o download realizado com sucesso?</translation>
<translation>Renderizador</translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.cpp" line="88"/>
<location filename="../settingsView/csettingsview_moc.cpp" line="96"/>
<source>On</source>
<translation>Ativado</translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.ui" line="391"/>
<location filename="../settingsView/csettingsview_moc.ui" line="389"/>
<source>Select display mode for game
Windowed - game will run inside a window that covers part of your screen
@@ -971,31 +986,67 @@ Modo de tela cheia exclusivo - o jogo cobrirá toda a sua tela e usará a resolu
<translation>Mostrar introdução</translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.cpp" line="503"/>
<location filename="../settingsView/csettingsview_moc.cpp" line="525"/>
<source>Active</source>
<translation>Ativo</translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.cpp" line="508"/>
<location filename="../settingsView/csettingsview_moc.cpp" line="530"/>
<source>Disabled</source>
<translation>Desativado</translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.cpp" line="509"/>
<location filename="../settingsView/csettingsview_moc.cpp" line="531"/>
<source>Enable</source>
<translation>Ativar</translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.cpp" line="514"/>
<location filename="../settingsView/csettingsview_moc.cpp" line="536"/>
<source>Not Installed</source>
<translation>Não Instalado</translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.cpp" line="515"/>
<location filename="../settingsView/csettingsview_moc.cpp" line="537"/>
<source>Install</source>
<translation>Instalar</translation>
</message>
</context>
<context>
<name>ChroniclesExtractor</name>
<message>
<location filename="../modManager/chroniclesextractor.cpp" line="48"/>
<source>File cannot opened</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/chroniclesextractor.cpp" line="56"/>
<location filename="../modManager/chroniclesextractor.cpp" line="71"/>
<source>Invalid file selected</source>
<translation type="unfinished">Arquivo selecionado inválido</translation>
</message>
<message>
<location filename="../modManager/chroniclesextractor.cpp" line="56"/>
<source>You have to select an gog installer file!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/chroniclesextractor.cpp" line="71"/>
<source>You have to select an chronicle installer file!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/chroniclesextractor.cpp" line="87"/>
<source>Extracting error!</source>
<translation type="unfinished">Erro ao extrair!</translation>
</message>
<message>
<location filename="../modManager/chroniclesextractor.cpp" line="104"/>
<location filename="../modManager/chroniclesextractor.cpp" line="105"/>
<location filename="../modManager/chroniclesextractor.cpp" line="141"/>
<source>Heroes Chronicles</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>File size</name>
<message>
@@ -1178,7 +1229,7 @@ O instalador offline consiste em duas partes, .exe e .bin. Certifique-se de baix
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="441"/>
<source>Heroes III data files</source>
<source>Heroes III data files</source>
<translation>Arquivos de dados do Heroes III</translation>
</message>
<message>
@@ -1213,113 +1264,101 @@ O instalador offline consiste em duas partes, .exe e .bin. Certifique-se de baix
<translation>In The Wake of Gods</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="178"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="174"/>
<source>Heroes III installation found!</source>
<translation>Instalação do Heroes III encontrada!</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="178"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="174"/>
<source>Copy data to VCMI folder?</source>
<translation>Copiar dados para a pasta do VCMI?</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="317"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="313"/>
<source>Select %1 file...</source>
<comment>param is file extension</comment>
<translation>Selecionar arquivo %1...</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="318"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="314"/>
<source>You have to select %1 file!</source>
<comment>param is file extension</comment>
<translation>Você precisa selecionar o arquivo %1!</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="320"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="316"/>
<source>GOG file (*.*)</source>
<translation>Arquivo GOG (*.*)</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="321"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="317"/>
<source>File selection</source>
<translation>Seleção de arquivo</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="330"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="326"/>
<source>File cannot be opened</source>
<translation>O arquivo não pode ser aberto</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="336"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="332"/>
<source>Invalid file selected</source>
<translation>Arquivo selecionado inválido</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="346"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="342"/>
<source>GOG installer</source>
<translation>Instalador GOG</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="343"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="339"/>
<source>GOG data</source>
<translation>Dados do GOG</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="387"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="383"/>
<source>You&apos;ve provided GOG Galaxy installer! This file doesn&apos;t contain the game. Please download the offline backup game installer!</source>
<translation>Você forneceu o instalador do GOG Galaxy! Este arquivo não contém o jogo. Por favor, faça o download do instalador offline de backup do jogo!</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="412"/>
<source>Stream error while extracting files!
error reason: </source>
<translation>Erro de fluxo ao extrair arquivos!
Motivo do erro: </translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="425"/>
<source>Not a supported Inno Setup installer!</source>
<translation>Instalador Inno Setup não suportado!</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="436"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="399"/>
<source>Extracting error!</source>
<translation>Erro ao extrair!</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="438"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="401"/>
<source>No Heroes III data!</source>
<translation>Nenhum dado do Heroes III!</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="438"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="401"/>
<source>Selected files do not contain Heroes III data!</source>
<translation>Os arquivos selecionados não contêm dados do Heroes III!</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="485"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="499"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="506"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="511"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="448"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="462"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="469"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="474"/>
<source>Heroes III data not found!</source>
<translation>Dados do Heroes III não encontrados!</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="482"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="445"/>
<source>Failed to detect valid Heroes III data in chosen directory.
Please select directory with installed Heroes III data.</source>
<translation>Falha ao detectar dados válidos do Heroes III no diretório escolhido.
Por favor, selecione o diretório com os dados do Heroes III instalados.</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="506"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="469"/>
<source>Heroes III: HD Edition files are not supported by VCMI.
Please select directory with Heroes III: Complete Edition or Heroes III: Shadow of Death.</source>
<translation>Arquivos do Heroes III: HD Edition não são suportados pelo VCMI.
Por favor, selecione o diretório com Heroes III: Complete Edition ou Heroes III: Shadow of Death.</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="511"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="474"/>
<source>Unknown or unsupported Heroes III version found.
Please select directory with Heroes III: Complete Edition or Heroes III: Shadow of Death.</source>
<translation>Versão desconhecida ou não suportada do Heroes III encontrada.
@@ -1334,6 +1373,26 @@ Por favor, selecione o diretório com Heroes III: Complete Edition ou Heroes III
<translation>Visualizador de Imagens</translation>
</message>
</context>
<context>
<name>Innoextract</name>
<message>
<location filename="../innoextract.cpp" line="42"/>
<source>Stream error while extracting files!
error reason: </source>
<translation type="unfinished">Erro de fluxo ao extrair arquivos!
Motivo do erro: </translation>
</message>
<message>
<location filename="../innoextract.cpp" line="55"/>
<source>Not a supported Inno Setup installer!</source>
<translation type="unfinished">Instalador Inno Setup não suportado!</translation>
</message>
<message>
<location filename="../innoextract.cpp" line="58"/>
<source>VCMI was compiled without innoextract support, which is needed to extract exe files!</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Language</name>
<message>

View File

@@ -233,7 +233,7 @@
</message>
<message>
<location filename="../modManager/cmodlistview_moc.ui" line="163"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="350"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="354"/>
<source>Description</source>
<translation>Описание</translation>
</message>
@@ -293,179 +293,189 @@
<translation>Отмена</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="285"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="289"/>
<source>Mod name</source>
<translation>Название мода</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="286"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="290"/>
<source>Installed version</source>
<translation>Установленная версия</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="287"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="291"/>
<source>Latest version</source>
<translation>Последняя версия</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="290"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="294"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="292"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="296"/>
<source>Download size</source>
<translation>Размер загрузки</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="294"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="298"/>
<source>Authors</source>
<translation>Авторы</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="297"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="301"/>
<source>License</source>
<translation>Лицензия</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="300"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="304"/>
<source>Contact</source>
<translation>Контакты</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="309"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="313"/>
<source>Compatibility</source>
<translation>Совместимость</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="311"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="319"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="315"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="323"/>
<source>Required VCMI version</source>
<translation>Требуемая версия VCMI</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="317"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="321"/>
<source>Supported VCMI version</source>
<translation>Поддерживаемая версия VCMI</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="317"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="321"/>
<source>please upgrade mod</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="189"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="809"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="193"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="824"/>
<source>mods repository index</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="319"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="323"/>
<source>or newer</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="322"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="326"/>
<source>Supported VCMI versions</source>
<translation>Поддерживаемые версии VCMI</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="346"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="350"/>
<source>Languages</source>
<translation>Языки</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="348"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="352"/>
<source>Required mods</source>
<translation>Зависимости</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="349"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="353"/>
<source>Conflicting mods</source>
<translation>Конфликтующие моды</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="354"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="358"/>
<source>This mod can not be installed or enabled because the following dependencies are not present</source>
<translation>Этот мод не может быть установлен или активирован, так как отсутствуют следующие зависимости</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="355"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="359"/>
<source>This mod can not be enabled because the following mods are incompatible with it</source>
<translation>Этот мод не может быть установлен или активирован, так как следующие моды несовместимы с этим</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="356"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="360"/>
<source>This mod cannot be disabled because it is required by the following mods</source>
<translation>Этот мод не может быть выключен, так как он является зависимостью для следующих</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="357"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="361"/>
<source>This mod cannot be uninstalled or updated because it is required by the following mods</source>
<translation>Этот мод не может быть удален или обновлен, так как является зависимостью для следующих модов</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="358"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="362"/>
<source>This is a submod and it cannot be installed or uninstalled separately from its parent mod</source>
<translation>Это вложенный мод, он не может быть установлен или удален отдельно от родительского</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="373"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="377"/>
<source>Notes</source>
<translation>Замечания</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="643"/>
<source>All supported files</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="644"/>
<source>Maps</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="645"/>
<source>Campaigns</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="646"/>
<source>Configs</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="647"/>
<source>Mods</source>
<translation type="unfinished">Моды</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="640"/>
<source>Select files (configs, mods, maps, campaigns) to install...</source>
<location filename="../modManager/cmodlistview_moc.cpp" line="648"/>
<source>Gog files</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="665"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="650"/>
<source>All files (*.*)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="652"/>
<source>Select files (configs, mods, maps, campaigns, gog files) to install...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="677"/>
<source>Replace config file?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="665"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="677"/>
<source>Do you want to replace %1?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="708"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="720"/>
<source>Downloading %1. %p% (%v MB out of %m MB) finished</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="733"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="745"/>
<source>Download failed</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="734"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="746"/>
<source>Unable to download all files.
Encountered errors:
@@ -474,40 +484,45 @@ Encountered errors:
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="735"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="747"/>
<source>
Install successfully downloaded?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="881"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="852"/>
<source>Installing chronicles</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="925"/>
<source>Installing mod %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="950"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="994"/>
<source>Operation failed</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="951"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="995"/>
<source>Encountered errors:
</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="986"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="1030"/>
<source>screenshots</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="992"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="1036"/>
<source>Screenshot %1</source>
<translation>Скриншот %1</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="280"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="284"/>
<source>Mod is incompatible</source>
<translation>Мод несовместим</translation>
</message>
@@ -616,12 +631,12 @@ Install successfully downloaded?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.cpp" line="90"/>
<location filename="../settingsView/csettingsview_moc.cpp" line="98"/>
<source>Off</source>
<translation>Отключено</translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.cpp" line="88"/>
<location filename="../settingsView/csettingsview_moc.cpp" line="96"/>
<source>On</source>
<translation>Включено</translation>
</message>
@@ -735,6 +750,11 @@ Install successfully downloaded?</source>
<source>xBRZ x4</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.ui" line="1194"/>
<source>Use scalable fonts</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.ui" line="138"/>
<source>Online Lobby address</source>
@@ -952,31 +972,67 @@ Fullscreen Exclusive Mode - game will cover entirety of your screen and will use
<translation>Вступление</translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.cpp" line="503"/>
<location filename="../settingsView/csettingsview_moc.cpp" line="525"/>
<source>Active</source>
<translation>Активен</translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.cpp" line="508"/>
<location filename="../settingsView/csettingsview_moc.cpp" line="530"/>
<source>Disabled</source>
<translation>Отключен</translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.cpp" line="509"/>
<location filename="../settingsView/csettingsview_moc.cpp" line="531"/>
<source>Enable</source>
<translation>Включить</translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.cpp" line="514"/>
<location filename="../settingsView/csettingsview_moc.cpp" line="536"/>
<source>Not Installed</source>
<translation>Не установлен</translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.cpp" line="515"/>
<location filename="../settingsView/csettingsview_moc.cpp" line="537"/>
<source>Install</source>
<translation>Установить</translation>
</message>
</context>
<context>
<name>ChroniclesExtractor</name>
<message>
<location filename="../modManager/chroniclesextractor.cpp" line="48"/>
<source>File cannot opened</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/chroniclesextractor.cpp" line="56"/>
<location filename="../modManager/chroniclesextractor.cpp" line="71"/>
<source>Invalid file selected</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/chroniclesextractor.cpp" line="56"/>
<source>You have to select an gog installer file!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/chroniclesextractor.cpp" line="71"/>
<source>You have to select an chronicle installer file!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/chroniclesextractor.cpp" line="87"/>
<source>Extracting error!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/chroniclesextractor.cpp" line="104"/>
<location filename="../modManager/chroniclesextractor.cpp" line="105"/>
<location filename="../modManager/chroniclesextractor.cpp" line="141"/>
<source>Heroes Chronicles</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>File size</name>
<message>
@@ -1193,110 +1249,99 @@ Offline installer consists of two parts, .exe and .bin. Make sure you download b
<translation></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="178"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="174"/>
<source>Heroes III installation found!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="178"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="174"/>
<source>Copy data to VCMI folder?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="317"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="313"/>
<source>Select %1 file...</source>
<comment>param is file extension</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="318"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="314"/>
<source>You have to select %1 file!</source>
<comment>param is file extension</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="320"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="316"/>
<source>GOG file (*.*)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="321"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="317"/>
<source>File selection</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="330"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="326"/>
<source>File cannot be opened</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="336"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="332"/>
<source>Invalid file selected</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="346"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="342"/>
<source>GOG installer</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="343"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="339"/>
<source>GOG data</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="387"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="383"/>
<source>You&apos;ve provided GOG Galaxy installer! This file doesn&apos;t contain the game. Please download the offline backup game installer!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="412"/>
<source>Stream error while extracting files!
error reason: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="425"/>
<source>Not a supported Inno Setup installer!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="436"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="399"/>
<source>Extracting error!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="438"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="401"/>
<source>No Heroes III data!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="438"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="401"/>
<source>Selected files do not contain Heroes III data!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="485"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="499"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="506"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="511"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="448"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="462"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="469"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="474"/>
<source>Heroes III data not found!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="482"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="445"/>
<source>Failed to detect valid Heroes III data in chosen directory.
Please select directory with installed Heroes III data.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="506"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="469"/>
<source>Heroes III: HD Edition files are not supported by VCMI.
Please select directory with Heroes III: Complete Edition or Heroes III: Shadow of Death.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="511"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="474"/>
<source>Unknown or unsupported Heroes III version found.
Please select directory with Heroes III: Complete Edition or Heroes III: Shadow of Death.</source>
<translation type="unfinished"></translation>
@@ -1310,6 +1355,25 @@ Please select directory with Heroes III: Complete Edition or Heroes III: Shadow
<translation>Просмотр изображений</translation>
</message>
</context>
<context>
<name>Innoextract</name>
<message>
<location filename="../innoextract.cpp" line="42"/>
<source>Stream error while extracting files!
error reason: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../innoextract.cpp" line="55"/>
<source>Not a supported Inno Setup installer!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../innoextract.cpp" line="58"/>
<source>VCMI was compiled without innoextract support, which is needed to extract exe files!</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Language</name>
<message>

View File

@@ -233,7 +233,7 @@
</message>
<message>
<location filename="../modManager/cmodlistview_moc.ui" line="163"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="350"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="354"/>
<source>Description</source>
<translation>Descripción</translation>
</message>
@@ -293,179 +293,189 @@
<translation>Cancelar</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="285"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="289"/>
<source>Mod name</source>
<translation>Nombre del mod</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="286"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="290"/>
<source>Installed version</source>
<translation>Versión instalada</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="287"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="291"/>
<source>Latest version</source>
<translation>Última versión</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="290"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="294"/>
<source>Size</source>
<translation>Tamaño</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="292"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="296"/>
<source>Download size</source>
<translation>Tamaño de descarga</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="294"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="298"/>
<source>Authors</source>
<translation>Autores</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="297"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="301"/>
<source>License</source>
<translation>Licencia</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="300"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="304"/>
<source>Contact</source>
<translation>Contacto</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="309"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="313"/>
<source>Compatibility</source>
<translation>Compatibilidad</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="311"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="319"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="315"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="323"/>
<source>Required VCMI version</source>
<translation>Versión de VCMI requerida</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="317"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="321"/>
<source>Supported VCMI version</source>
<translation>Versión de VCMI compatible</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="317"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="321"/>
<source>please upgrade mod</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="189"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="809"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="193"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="824"/>
<source>mods repository index</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="319"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="323"/>
<source>or newer</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="322"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="326"/>
<source>Supported VCMI versions</source>
<translation>Versiones de VCMI compatibles</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="346"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="350"/>
<source>Languages</source>
<translation>Idiomas</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="348"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="352"/>
<source>Required mods</source>
<translation>Mods requeridos</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="349"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="353"/>
<source>Conflicting mods</source>
<translation>Mods conflictivos</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="354"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="358"/>
<source>This mod can not be installed or enabled because the following dependencies are not present</source>
<translation>Este mod no se puede instalar o habilitar porque no están presentes las siguientes dependencias</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="355"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="359"/>
<source>This mod can not be enabled because the following mods are incompatible with it</source>
<translation>Este mod no se puede habilitar porque los siguientes mods son incompatibles con él</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="356"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="360"/>
<source>This mod cannot be disabled because it is required by the following mods</source>
<translation>No se puede desactivar este mod porque es necesario para ejecutar los siguientes mods</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="357"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="361"/>
<source>This mod cannot be uninstalled or updated because it is required by the following mods</source>
<translation>No se puede desinstalar o actualizar este mod porque es necesario para ejecutar los siguientes mods</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="358"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="362"/>
<source>This is a submod and it cannot be installed or uninstalled separately from its parent mod</source>
<translation>Este es un submod y no se puede instalar o desinstalar por separado del mod principal</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="373"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="377"/>
<source>Notes</source>
<translation>Notas</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="643"/>
<source>All supported files</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="644"/>
<source>Maps</source>
<translation type="unfinished">Mapas</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="645"/>
<source>Campaigns</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="646"/>
<source>Configs</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="647"/>
<source>Mods</source>
<translation type="unfinished">Mods</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="640"/>
<source>Select files (configs, mods, maps, campaigns) to install...</source>
<location filename="../modManager/cmodlistview_moc.cpp" line="648"/>
<source>Gog files</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="665"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="650"/>
<source>All files (*.*)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="652"/>
<source>Select files (configs, mods, maps, campaigns, gog files) to install...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="677"/>
<source>Replace config file?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="665"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="677"/>
<source>Do you want to replace %1?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="708"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="720"/>
<source>Downloading %1. %p% (%v MB out of %m MB) finished</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="733"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="745"/>
<source>Download failed</source>
<translation>Descarga fallida</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="734"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="746"/>
<source>Unable to download all files.
Encountered errors:
@@ -478,7 +488,7 @@ Errores encontrados:
</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="735"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="747"/>
<source>
Install successfully downloaded?</source>
@@ -487,34 +497,39 @@ Install successfully downloaded?</source>
Instalar lo correctamente descargado?</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="881"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="852"/>
<source>Installing chronicles</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="925"/>
<source>Installing mod %1</source>
<translation>Instalando mod %1</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="950"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="994"/>
<source>Operation failed</source>
<translation>Operación fallida</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="951"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="995"/>
<source>Encountered errors:
</source>
<translation>Errores encontrados:
</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="986"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="1030"/>
<source>screenshots</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="992"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="1036"/>
<source>Screenshot %1</source>
<translation>Captura de pantalla %1</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="280"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="284"/>
<source>Mod is incompatible</source>
<translation>El mod es incompatible</translation>
</message>
@@ -618,7 +633,7 @@ Instalar lo correctamente descargado?</translation>
<context>
<name>CSettingsView</name>
<message>
<location filename="../settingsView/csettingsview_moc.cpp" line="90"/>
<location filename="../settingsView/csettingsview_moc.cpp" line="98"/>
<source>Off</source>
<translation>Desactivado</translation>
</message>
@@ -712,6 +727,11 @@ Instalar lo correctamente descargado?</translation>
<source>xBRZ x4</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.ui" line="1194"/>
<source>Use scalable fonts</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.ui" line="138"/>
<source>Online Lobby address</source>
@@ -878,7 +898,7 @@ Instalar lo correctamente descargado?</translation>
<translation>Render</translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.cpp" line="88"/>
<location filename="../settingsView/csettingsview_moc.cpp" line="96"/>
<source>On</source>
<translation>Activado</translation>
</message>
@@ -965,31 +985,67 @@ Pantalla completa - el juego cubrirá la totalidad de la pantalla y utilizará l
<translation>Comprovar al inicio</translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.cpp" line="503"/>
<location filename="../settingsView/csettingsview_moc.cpp" line="525"/>
<source>Active</source>
<translation>Activado</translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.cpp" line="508"/>
<location filename="../settingsView/csettingsview_moc.cpp" line="530"/>
<source>Disabled</source>
<translation>Desactivado</translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.cpp" line="509"/>
<location filename="../settingsView/csettingsview_moc.cpp" line="531"/>
<source>Enable</source>
<translation>Activar</translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.cpp" line="514"/>
<location filename="../settingsView/csettingsview_moc.cpp" line="536"/>
<source>Not Installed</source>
<translation>No Instalado</translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.cpp" line="515"/>
<location filename="../settingsView/csettingsview_moc.cpp" line="537"/>
<source>Install</source>
<translation>Instalar</translation>
</message>
</context>
<context>
<name>ChroniclesExtractor</name>
<message>
<location filename="../modManager/chroniclesextractor.cpp" line="48"/>
<source>File cannot opened</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/chroniclesextractor.cpp" line="56"/>
<location filename="../modManager/chroniclesextractor.cpp" line="71"/>
<source>Invalid file selected</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/chroniclesextractor.cpp" line="56"/>
<source>You have to select an gog installer file!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/chroniclesextractor.cpp" line="71"/>
<source>You have to select an chronicle installer file!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/chroniclesextractor.cpp" line="87"/>
<source>Extracting error!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/chroniclesextractor.cpp" line="104"/>
<location filename="../modManager/chroniclesextractor.cpp" line="105"/>
<location filename="../modManager/chroniclesextractor.cpp" line="141"/>
<source>Heroes Chronicles</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>File size</name>
<message>
@@ -1206,110 +1262,99 @@ Offline installer consists of two parts, .exe and .bin. Make sure you download b
<translation>Finalizar</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="178"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="174"/>
<source>Heroes III installation found!</source>
<translation>Instalación de Heroes III encontrada!</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="178"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="174"/>
<source>Copy data to VCMI folder?</source>
<translation>Copiar datos a la carpeta VCMI?</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="317"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="313"/>
<source>Select %1 file...</source>
<comment>param is file extension</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="318"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="314"/>
<source>You have to select %1 file!</source>
<comment>param is file extension</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="320"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="316"/>
<source>GOG file (*.*)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="321"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="317"/>
<source>File selection</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="330"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="326"/>
<source>File cannot be opened</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="336"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="332"/>
<source>Invalid file selected</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="346"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="342"/>
<source>GOG installer</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="343"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="339"/>
<source>GOG data</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="387"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="383"/>
<source>You&apos;ve provided GOG Galaxy installer! This file doesn&apos;t contain the game. Please download the offline backup game installer!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="412"/>
<source>Stream error while extracting files!
error reason: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="425"/>
<source>Not a supported Inno Setup installer!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="436"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="399"/>
<source>Extracting error!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="438"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="401"/>
<source>No Heroes III data!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="438"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="401"/>
<source>Selected files do not contain Heroes III data!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="485"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="499"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="506"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="511"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="448"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="462"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="469"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="474"/>
<source>Heroes III data not found!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="482"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="445"/>
<source>Failed to detect valid Heroes III data in chosen directory.
Please select directory with installed Heroes III data.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="506"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="469"/>
<source>Heroes III: HD Edition files are not supported by VCMI.
Please select directory with Heroes III: Complete Edition or Heroes III: Shadow of Death.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="511"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="474"/>
<source>Unknown or unsupported Heroes III version found.
Please select directory with Heroes III: Complete Edition or Heroes III: Shadow of Death.</source>
<translation type="unfinished"></translation>
@@ -1323,6 +1368,25 @@ Please select directory with Heroes III: Complete Edition or Heroes III: Shadow
<translation>Visor de imágenes</translation>
</message>
</context>
<context>
<name>Innoextract</name>
<message>
<location filename="../innoextract.cpp" line="42"/>
<source>Stream error while extracting files!
error reason: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../innoextract.cpp" line="55"/>
<source>Not a supported Inno Setup installer!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../innoextract.cpp" line="58"/>
<source>VCMI was compiled without innoextract support, which is needed to extract exe files!</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Language</name>
<message>

View File

@@ -102,7 +102,7 @@
<message>
<location filename="../modManager/cmodlistmodel_moc.cpp" line="44"/>
<source>Test</source>
<translation>Testa</translation>
<translation>Test</translation>
</message>
<message>
<location filename="../modManager/cmodlistmodel_moc.cpp" line="45"/>
@@ -224,7 +224,7 @@
<message>
<location filename="../modManager/cmodlistview_moc.ui" line="86"/>
<source>Active</source>
<translation>Tillgångar</translation>
<translation>Aktiv</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.ui" line="91"/>
@@ -238,7 +238,7 @@
</message>
<message>
<location filename="../modManager/cmodlistview_moc.ui" line="163"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="350"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="354"/>
<source>Description</source>
<translation>Beskrivning</translation>
</message>
@@ -290,182 +290,192 @@
<message>
<location filename="../modManager/cmodlistview_moc.ui" line="340"/>
<source>Abort</source>
<translation>Ge upp</translation>
<translation>Avbryt</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="285"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="289"/>
<source>Mod name</source>
<translation>Modd-namn</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="286"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="290"/>
<source>Installed version</source>
<translation>Installerad version</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="287"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="291"/>
<source>Latest version</source>
<translation>Senaste version</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="290"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="294"/>
<source>Size</source>
<translation>Storlek</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="292"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="296"/>
<source>Download size</source>
<translation>Nedladdningsstorlek</translation>
<translation>Nedladdnings-storlek</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="294"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="298"/>
<source>Authors</source>
<translation>Författare</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="297"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="301"/>
<source>License</source>
<translation>Licens</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="300"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="304"/>
<source>Contact</source>
<translation>Kontakt</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="309"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="313"/>
<source>Compatibility</source>
<translation>Kompatibilitet</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="311"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="319"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="315"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="323"/>
<source>Required VCMI version</source>
<translation>VCMI-version som krävs</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="317"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="321"/>
<source>Supported VCMI version</source>
<translation>Stödd VCMI-version</translation>
<translation>VCMI-version som stöds</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="317"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="321"/>
<source>please upgrade mod</source>
<translation>vänligen uppdatera modd</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="189"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="809"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="193"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="824"/>
<source>mods repository index</source>
<translation>Modd-repositorie index</translation>
<translation>Modd-repositorie-index</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="319"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="323"/>
<source>or newer</source>
<translation>eller nyare</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="322"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="326"/>
<source>Supported VCMI versions</source>
<translation>VCMI-versioner som stöds</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="346"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="350"/>
<source>Languages</source>
<translation>Språk</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="348"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="352"/>
<source>Required mods</source>
<translation>Moddar som krävs</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="349"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="353"/>
<source>Conflicting mods</source>
<translation>Modd-konflikter</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="354"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="358"/>
<source>This mod can not be installed or enabled because the following dependencies are not present</source>
<translation>Denna modd kan inte installeras eller aktiveras eftersom följande beroenden inte finns</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="355"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="359"/>
<source>This mod can not be enabled because the following mods are incompatible with it</source>
<translation>Denna modd kan inte aktiveras eftersom följande beroenden är inkompatibla med den</translation>
<translation>Denna modd kan inte aktiveras eftersom följande moddar är inkompatibla med den</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="356"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="360"/>
<source>This mod cannot be disabled because it is required by the following mods</source>
<translation>Denna modd kan inte inaktiveras eftersom den krävs för följande beroenden</translation>
<translation>Denna modd kan inte inaktiveras eftersom den krävs för följande modd</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="357"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="361"/>
<source>This mod cannot be uninstalled or updated because it is required by the following mods</source>
<translation>Denna modd kan inte avinstalleras eller uppdateras eftersom den krävs för följande beroenden</translation>
<translation>Denna modd kan inte avinstalleras eller uppdateras eftersom den krävs för följande modd</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="358"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="362"/>
<source>This is a submod and it cannot be installed or uninstalled separately from its parent mod</source>
<translation>Denna undermodd/submodd kan inte installeras eller uppdateras separat från huvud-modden</translation>
<translation>Detta är en undermodd/submodd och den kan inte installeras eller avinstalleras separat från huvud-modden</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="373"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="377"/>
<source>Notes</source>
<translation>Anteckningar</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="643"/>
<source>All supported files</source>
<translation>Alla filer som stöds</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="644"/>
<source>Maps</source>
<translation>Kartor</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="645"/>
<source>Campaigns</source>
<translation>Kampanjer</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="646"/>
<source>Configs</source>
<translation>Konfigurationer</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="647"/>
<source>Mods</source>
<translation>Moddar</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="640"/>
<source>Select files (configs, mods, maps, campaigns) to install...</source>
<translation>Välj filer att installera (konfigurationer, moddar, kartor, kampanjer)...</translation>
<location filename="../modManager/cmodlistview_moc.cpp" line="648"/>
<source>Gog files</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="665"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="650"/>
<source>All files (*.*)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="652"/>
<source>Select files (configs, mods, maps, campaigns, gog files) to install...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="677"/>
<source>Replace config file?</source>
<translation>Byt ut konfigurationsfilen?</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="665"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="677"/>
<source>Do you want to replace %1?</source>
<translation>Vill du ersätta %1?</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="708"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="720"/>
<source>Downloading %1. %p% (%v MB out of %m MB) finished</source>
<translation>Ladda ner %1. %p% (%v MB av %m MB) slutfört</translation>
<translation>Laddar ner %1. %p% (%v MB av %m MB) slutfört</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="733"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="745"/>
<source>Download failed</source>
<translation>Nedladdning misslyckades</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="734"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="746"/>
<source>Unable to download all files.
Encountered errors:
@@ -478,43 +488,48 @@ Fel påträffat:
</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="735"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="747"/>
<source>
Install successfully downloaded?</source>
<translation>
Installera lyckade nedladdningar?</translation>
Installation framgångsrikt nedladdad?</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="881"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="852"/>
<source>Installing chronicles</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="925"/>
<source>Installing mod %1</source>
<translation>Installera mod %1</translation>
<translation>Installera modd %1</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="950"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="994"/>
<source>Operation failed</source>
<translation>Åtgärden misslyckades</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="951"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="995"/>
<source>Encountered errors:
</source>
<translation>Fel påträffades:
</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="986"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="1030"/>
<source>screenshots</source>
<translation>skärmdumpar</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="992"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="1036"/>
<source>Screenshot %1</source>
<translation>Skriv ut skärm %1</translation>
<translation>Skärmbild %1</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="280"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="284"/>
<source>Mod is incompatible</source>
<translation>Denna modd är inkompatibel</translation>
</message>
@@ -555,7 +570,7 @@ Installera lyckade nedladdningar?</translation>
<message>
<location filename="../modManager/cmodmanager.cpp" line="200"/>
<source>Mod is not compatible, please update VCMI and checkout latest mod revisions</source>
<translation>Modden är inte kompatibel. Vänligen uppdatera VCMI och kontrollera att du har den senaste versionen av modden</translation>
<translation>Modden är inte kompatibel. Vänligen uppdatera VCMI och kontrollera att du har den senaste kompatibla versionen av modden</translation>
</message>
<message>
<location filename="../modManager/cmodmanager.cpp" line="205"/>
@@ -565,7 +580,7 @@ Installera lyckade nedladdningar?</translation>
<message>
<location filename="../modManager/cmodmanager.cpp" line="210"/>
<source>Required mod %1 is not enabled</source>
<translation>Den obligatorisk modden %1 är inte aktiverad</translation>
<translation>Den obligatoriska modden %1 är inte aktiverad</translation>
</message>
<message>
<location filename="../modManager/cmodmanager.cpp" line="219"/>
@@ -601,7 +616,7 @@ Installera lyckade nedladdningar?</translation>
<message>
<location filename="../modManager/cmodmanager.cpp" line="322"/>
<source>Failed to extract mod data</source>
<translation>Det gick inte att extrahera data från modd</translation>
<translation>Misslyckades att extrahera data från modd</translation>
</message>
<message>
<location filename="../modManager/cmodmanager.cpp" line="350"/>
@@ -619,7 +634,7 @@ Installera lyckade nedladdningar?</translation>
<context>
<name>CSettingsView</name>
<message>
<location filename="../settingsView/csettingsview_moc.cpp" line="90"/>
<location filename="../settingsView/csettingsview_moc.cpp" line="98"/>
<source>Off</source>
<translation>Inaktiverad</translation>
</message>
@@ -629,7 +644,7 @@ Installera lyckade nedladdningar?</translation>
<translation>Artificiell intelligens</translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.cpp" line="88"/>
<location filename="../settingsView/csettingsview_moc.cpp" line="96"/>
<source>On</source>
<translation>Aktiverad</translation>
</message>
@@ -646,7 +661,7 @@ Installera lyckade nedladdningar?</translation>
<message>
<location filename="../settingsView/csettingsview_moc.ui" line="593"/>
<source>VSync</source>
<translation>Vertikal synkronisering</translation>
<translation>Vertikal-synkronisering (VSync)</translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.ui" line="490"/>
@@ -676,7 +691,7 @@ Installera lyckade nedladdningar?</translation>
<message>
<location filename="../settingsView/csettingsview_moc.ui" line="835"/>
<source>Software Cursor</source>
<translation>Programvarumarkör (muspekare)</translation>
<translation>Programvarustyrd muspekare</translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.ui" line="1166"/>
@@ -703,6 +718,11 @@ Installera lyckade nedladdningar?</translation>
<source>xBRZ x4</source>
<translation>xBRZ x4</translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.ui" line="1194"/>
<source>Use scalable fonts</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.ui" line="138"/>
<source>Online Lobby address</source>
@@ -711,7 +731,7 @@ Installera lyckade nedladdningar?</translation>
<message>
<location filename="../settingsView/csettingsview_moc.ui" line="1158"/>
<source>Upscaling Filter</source>
<translation>Förstoringsfilter</translation>
<translation>Uppskalnings-filter</translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.ui" line="317"/>
@@ -746,7 +766,7 @@ Installera lyckade nedladdningar?</translation>
<message>
<location filename="../settingsView/csettingsview_moc.ui" line="1144"/>
<source>Show Tutorial again</source>
<translation>Visa övningsgenomgången igen</translation>
<translation>Visa handledningen/övningsgenomgången igen</translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.ui" line="1151"/>
@@ -833,7 +853,7 @@ Exklusivt helskärmsläge - spelet kommer att täcka hela skärmen och använda
<message>
<location filename="../settingsView/csettingsview_moc.ui" line="407"/>
<source>Borderless fullscreen</source>
<translation>Kantlöst fönsterläge</translation>
<translation>Kantlös helskärm</translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.ui" line="412"/>
@@ -903,7 +923,7 @@ Exklusivt helskärmsläge - spelet kommer att täcka hela skärmen och använda
<message>
<location filename="../settingsView/csettingsview_moc.ui" line="646"/>
<source>Check on startup</source>
<translation>Kontrollera vid start</translation>
<translation>Kontrollera vid uppstart</translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.ui" line="828"/>
@@ -966,31 +986,67 @@ Exklusivt helskärmsläge - spelet kommer att täcka hela skärmen och använda
<translation>Visa intro</translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.cpp" line="503"/>
<location filename="../settingsView/csettingsview_moc.cpp" line="525"/>
<source>Active</source>
<translation>Aktiv</translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.cpp" line="508"/>
<location filename="../settingsView/csettingsview_moc.cpp" line="530"/>
<source>Disabled</source>
<translation>Inaktiverad</translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.cpp" line="509"/>
<location filename="../settingsView/csettingsview_moc.cpp" line="531"/>
<source>Enable</source>
<translation>Aktivera</translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.cpp" line="514"/>
<location filename="../settingsView/csettingsview_moc.cpp" line="536"/>
<source>Not Installed</source>
<translation>Inte installerad</translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.cpp" line="515"/>
<location filename="../settingsView/csettingsview_moc.cpp" line="537"/>
<source>Install</source>
<translation>Installera</translation>
</message>
</context>
<context>
<name>ChroniclesExtractor</name>
<message>
<location filename="../modManager/chroniclesextractor.cpp" line="48"/>
<source>File cannot opened</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/chroniclesextractor.cpp" line="56"/>
<location filename="../modManager/chroniclesextractor.cpp" line="71"/>
<source>Invalid file selected</source>
<translation type="unfinished">Ogiltig fil vald</translation>
</message>
<message>
<location filename="../modManager/chroniclesextractor.cpp" line="56"/>
<source>You have to select an gog installer file!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/chroniclesextractor.cpp" line="71"/>
<source>You have to select an chronicle installer file!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/chroniclesextractor.cpp" line="87"/>
<source>Extracting error!</source>
<translation type="unfinished">Extraktionsfel!</translation>
</message>
<message>
<location filename="../modManager/chroniclesextractor.cpp" line="104"/>
<location filename="../modManager/chroniclesextractor.cpp" line="105"/>
<location filename="../modManager/chroniclesextractor.cpp" line="141"/>
<source>Heroes Chronicles</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>File size</name>
<message>
@@ -1059,7 +1115,7 @@ Exklusivt helskärmsläge - spelet kommer att täcka hela skärmen och använda
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="310"/>
<source>You can manually copy directories Maps, Data and Mp3 from the original game directory to VCMI data directory that you can see on top of this page</source>
<translation>Du kan manuellt kopiera mapparna 'Maps', 'Data' och 'Mp3' från den ursprungliga spel-mappen till VCMI-datamappen som du kan se överst den här sidan</translation>
<translation>Du kan manuellt kopiera mapparna &apos;Maps&apos;, &apos;Data&apos; och &apos;Mp3&apos; från den ursprungliga spel-mappen till VCMI-datamappen som du kan se överst den här sidan</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="329"/>
@@ -1095,12 +1151,12 @@ Exklusivt helskärmsläge - spelet kommer att täcka hela skärmen och använda
<location filename="../firstLaunch/firstlaunch_moc.ui" line="504"/>
<source>If you own Heroes III on gog.com you can download backup offline installer from gog.com, and VCMI will import Heroes III data using offline installer.
Offline installer consists of two parts, .exe and .bin. Make sure you download both of them.</source>
<translation>Om du äger Heroes III från GOG.com kan du ladda ner backup offline-installationsprogrammet från GOG.com - VCMI kommer att importera Heroes III-data med hjälp av offline-installationsprogrammet. Offline-installationsprogrammet består av två delar, en .exe och en .bin. Se till att ladda ner båda.</translation>
<translation>Om du äger Heroes III från GOG.com kan du ladda ner backup offline-installationsprogrammet från 'GOG.com'. VCMI kommer att importera Heroes III-data med hjälp av offline-installationsprogrammet. Offline-installationsprogrammet består av två delar, en '.exe'- och en '.bin'fil. Se till att ladda ner båda.</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="622"/>
<source>Install a translation of Heroes III in your preferred language</source>
<translation>Installera en översättning av Heroes III ditt föredragna språk</translation>
<translation>Installera en översättning av Heroes III det språk du föredrar</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="867"/>
@@ -1110,12 +1166,12 @@ Offline installer consists of two parts, .exe and .bin. Make sure you download b
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="155"/>
<source>VCMI on Github</source>
<translation>VCMI Github</translation>
<translation>VCMI 'Github'</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="162"/>
<source>VCMI on Discord</source>
<translation>VCMI Discord</translation>
<translation>VCMI 'Discord'</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="178"/>
@@ -1189,7 +1245,7 @@ Heroes® of Might and Magic® III HD stöds för närvarande inte!</translation>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="689"/>
<source>Optionally, you can install additional mods either now, or at any point later, using the VCMI Launcher</source>
<translation>Valfritt kan du installera ytterligare moddar antingen nu eller när som helst senare med hjälp av 'VCMI Launcher'</translation>
<translation>Du kan välja att installera ytterligare moddar, antingen nu eller vid ett senare tillfälle med hjälp av 'VCMI Launchern'</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.ui" line="788"/>
@@ -1207,112 +1263,100 @@ Heroes® of Might and Magic® III HD stöds för närvarande inte!</translation>
<translation>Installera en kompatibel version av &quot;In The Wake of Gods&quot; (en fantillverkad Heroes III-expansion)</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="178"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="174"/>
<source>Heroes III installation found!</source>
<translation>Heroes III-installationen hittades!</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="178"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="174"/>
<source>Copy data to VCMI folder?</source>
<translation>Kopiera data till VCMI-mappen?</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="317"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="313"/>
<source>Select %1 file...</source>
<comment>param is file extension</comment>
<translation>Välj filen %1...</translation>
<translation>Välj filen %1 ...</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="318"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="314"/>
<source>You have to select %1 file!</source>
<comment>param is file extension</comment>
<translation>Du behöver välja filen %1!</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="320"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="316"/>
<source>GOG file (*.*)</source>
<translation>GOG-fil (*.*)</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="321"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="317"/>
<source>File selection</source>
<translation>Filval</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="330"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="326"/>
<source>File cannot be opened</source>
<translation>Filen kan inte öppnas</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="336"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="332"/>
<source>Invalid file selected</source>
<translation>Ogiltig fil vald</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="346"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="342"/>
<source>GOG installer</source>
<translation>GOG installationsprogram</translation>
<translation>GOG-Installationsprogram</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="343"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="339"/>
<source>GOG data</source>
<translation>GOG-data</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="438"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="401"/>
<source>No Heroes III data!</source>
<translation>Inga Heroes III-data!</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="438"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="401"/>
<source>Selected files do not contain Heroes III data!</source>
<translation>De valda filerna innehåller inte Heroes III-data!</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="485"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="499"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="506"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="511"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="448"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="462"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="469"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="474"/>
<source>Heroes III data not found!</source>
<translation>Heroes III-data hittades inte!</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="482"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="445"/>
<source>Failed to detect valid Heroes III data in chosen directory.
Please select directory with installed Heroes III data.</source>
<translation>Det går inte att upptäcka giltiga Heroes III-data i den valda katalogen. Välj en mapp där Heroes III-data finns.</translation>
<translation>Misslyckades med att upptäcka giltiga Heroes III-data i den valda mappen. nligen lj en mapp där Heroes III-data finns installerat.</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="387"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="383"/>
<source>You&apos;ve provided GOG Galaxy installer! This file doesn&apos;t contain the game. Please download the offline backup game installer!</source>
<translation>Du har tillhandahållit installationsprogrammet för GOG Galaxy! Den här filen innehåller inte spelet. Ladda ner offline-installationsprogrammet för spelet!</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="412"/>
<source>Stream error while extracting files!
error reason: </source>
<translation>Strömningsfel vid extrahering av filer!
Orsak till fel: </translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="425"/>
<source>Not a supported Inno Setup installer!</source>
<translation>Inno Setup-installationsprogrammet stöds inte!</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="436"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="399"/>
<source>Extracting error!</source>
<translation>Extraktionsfel!</translation>
<translation>Fel vid extrahering!</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="506"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="469"/>
<source>Heroes III: HD Edition files are not supported by VCMI.
Please select directory with Heroes III: Complete Edition or Heroes III: Shadow of Death.</source>
<translation>Heroes III HD Edition-filer stöds inte av VCMI.
Välj en mapp som innehåller data från Heroes III: Complete Edition eller Heroes III: Shadow of Death.</translation>
nligen lj en mapp som innehåller data från Heroes III: Complete Edition eller Heroes III: Shadow of Death.</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="511"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="474"/>
<source>Unknown or unsupported Heroes III version found.
Please select directory with Heroes III: Complete Edition or Heroes III: Shadow of Death.</source>
<translation>Okänd eller ostödd version av Heroes III.
@@ -1327,6 +1371,26 @@ Vänligen välj en mapp som innehåller data från Heroes III: Complete Edition
<translation>Bildvisare</translation>
</message>
</context>
<context>
<name>Innoextract</name>
<message>
<location filename="../innoextract.cpp" line="42"/>
<source>Stream error while extracting files!
error reason: </source>
<translation type="unfinished">Strömningsfel vid extrahering av filer!
Orsak till fel: </translation>
</message>
<message>
<location filename="../innoextract.cpp" line="55"/>
<source>Not a supported Inno Setup installer!</source>
<translation type="unfinished">Inno Setup-installationsprogrammet stöds inte!</translation>
</message>
<message>
<location filename="../innoextract.cpp" line="58"/>
<source>VCMI was compiled without innoextract support, which is needed to extract exe files!</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Language</name>
<message>
@@ -1425,7 +1489,7 @@ Vänligen välj en mapp som innehåller data från Heroes III: Complete Edition
<message>
<location filename="../mainwindow_moc.ui" line="20"/>
<source>VCMI Launcher</source>
<translation>VCMI Launcher</translation>
<translation>VCMI-startprogram (VCMI Launcher)</translation>
</message>
<message>
<location filename="../mainwindow_moc.ui" line="53"/>
@@ -1450,7 +1514,7 @@ Vänligen välj en mapp som innehåller data från Heroes III: Complete Edition
<message>
<location filename="../mainwindow_moc.ui" line="259"/>
<source>Start game</source>
<translation>Starta ett spel</translation>
<translation>Starta spelet</translation>
</message>
</context>
<context>

View File

@@ -233,7 +233,7 @@
</message>
<message>
<location filename="../modManager/cmodlistview_moc.ui" line="163"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="350"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="354"/>
<source>Description</source>
<translation>Опис</translation>
</message>
@@ -293,179 +293,189 @@
<translation>Відмінити</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="285"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="289"/>
<source>Mod name</source>
<translation>Назва модифікації</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="286"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="290"/>
<source>Installed version</source>
<translation>Встановлена версія</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="287"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="291"/>
<source>Latest version</source>
<translation>Найновіша версія</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="290"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="294"/>
<source>Size</source>
<translation>Розмір</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="292"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="296"/>
<source>Download size</source>
<translation>Розмір для завантаження</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="294"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="298"/>
<source>Authors</source>
<translation>Автори</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="297"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="301"/>
<source>License</source>
<translation>Ліцензія</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="300"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="304"/>
<source>Contact</source>
<translation>Контакти</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="309"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="313"/>
<source>Compatibility</source>
<translation>Сумісність</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="311"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="319"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="315"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="323"/>
<source>Required VCMI version</source>
<translation>Необхідна версія VCMI</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="317"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="321"/>
<source>Supported VCMI version</source>
<translation>Підтримувана версія VCMI</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="317"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="321"/>
<source>please upgrade mod</source>
<translation>будь ласка, оновіть модифікацію</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="189"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="809"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="193"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="824"/>
<source>mods repository index</source>
<translation>каталог модифікацій</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="319"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="323"/>
<source>or newer</source>
<translation>або новіше</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="322"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="326"/>
<source>Supported VCMI versions</source>
<translation>Підтримувані версії VCMI</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="346"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="350"/>
<source>Languages</source>
<translation>Мови</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="348"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="352"/>
<source>Required mods</source>
<translation>Необхідні модифікації</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="349"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="353"/>
<source>Conflicting mods</source>
<translation>Конфліктуючі модифікації</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="354"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="358"/>
<source>This mod can not be installed or enabled because the following dependencies are not present</source>
<translation>Цю модифікацію не можна встановити чи активувати, оскільки відсутні наступні залежності</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="355"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="359"/>
<source>This mod can not be enabled because the following mods are incompatible with it</source>
<translation>Цю модифікацію не можна ввімкнути, оскільки наступні модифікації несумісні з цією модифікацією</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="356"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="360"/>
<source>This mod cannot be disabled because it is required by the following mods</source>
<translation>Цю модифікацію не можна відключити, оскільки вона необхідна для запуску наступних модифікацій</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="357"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="361"/>
<source>This mod cannot be uninstalled or updated because it is required by the following mods</source>
<translation>Цю модифікацію не можна видалити або оновити, оскільки вона необхідна для запуску наступних модифікацій</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="358"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="362"/>
<source>This is a submod and it cannot be installed or uninstalled separately from its parent mod</source>
<translation>Це вкладена модифікація, і її не можна встановити або видалити окремо від батьківської модифікації</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="373"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="377"/>
<source>Notes</source>
<translation>Примітки</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="643"/>
<source>All supported files</source>
<translation>Усі підтримувані файли</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="644"/>
<source>Maps</source>
<translation>Мапи</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="645"/>
<source>Campaigns</source>
<translation>Кампанії</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="646"/>
<source>Configs</source>
<translation>Налаштування</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="647"/>
<source>Mods</source>
<translation>Модифікації</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="640"/>
<source>Select files (configs, mods, maps, campaigns) to install...</source>
<translation>Виберіть файли ( налаштування, моди, мапи, кампанії) для встановлення...</translation>
<location filename="../modManager/cmodlistview_moc.cpp" line="648"/>
<source>Gog files</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="665"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="650"/>
<source>All files (*.*)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="652"/>
<source>Select files (configs, mods, maps, campaigns, gog files) to install...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="677"/>
<source>Replace config file?</source>
<translation>Замінити файл налаштувань?</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="665"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="677"/>
<source>Do you want to replace %1?</source>
<translation>Ви дійсно хочете замінити %1?</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="708"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="720"/>
<source>Downloading %1. %p% (%v MB out of %m MB) finished</source>
<translation>Завантажується %1. %p% (%v MB з %m MB) завершено</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="733"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="745"/>
<source>Download failed</source>
<translation>Помилка завантаження</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="734"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="746"/>
<source>Unable to download all files.
Encountered errors:
@@ -478,7 +488,7 @@ Encountered errors:
</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="735"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="747"/>
<source>
Install successfully downloaded?</source>
@@ -487,34 +497,39 @@ Install successfully downloaded?</source>
Встановити успішно завантажені?</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="881"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="852"/>
<source>Installing chronicles</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="925"/>
<source>Installing mod %1</source>
<translation>Встановлення модифікації %1</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="950"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="994"/>
<source>Operation failed</source>
<translation>Операція завершилася невдало</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="951"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="995"/>
<source>Encountered errors:
</source>
<translation>Виникли помилки:
</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="986"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="1030"/>
<source>screenshots</source>
<translation>знімки екрану</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="992"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="1036"/>
<source>Screenshot %1</source>
<translation>Знімок екрану %1</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="280"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="284"/>
<source>Mod is incompatible</source>
<translation>Модифікація несумісна</translation>
</message>
@@ -619,7 +634,7 @@ Install successfully downloaded?</source>
<context>
<name>CSettingsView</name>
<message>
<location filename="../settingsView/csettingsview_moc.cpp" line="90"/>
<location filename="../settingsView/csettingsview_moc.cpp" line="98"/>
<source>Off</source>
<translation>Ні</translation>
</message>
@@ -713,6 +728,11 @@ Install successfully downloaded?</source>
<source>xBRZ x4</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.ui" line="1194"/>
<source>Use scalable fonts</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.ui" line="138"/>
<source>Online Lobby address</source>
@@ -879,7 +899,7 @@ Install successfully downloaded?</source>
<translation>Рендерер</translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.cpp" line="88"/>
<location filename="../settingsView/csettingsview_moc.cpp" line="96"/>
<source>On</source>
<translation>Так</translation>
</message>
@@ -966,31 +986,67 @@ Fullscreen Exclusive Mode - game will cover entirety of your screen and will use
<translation>Вступні відео</translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.cpp" line="503"/>
<location filename="../settingsView/csettingsview_moc.cpp" line="525"/>
<source>Active</source>
<translation>Активні</translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.cpp" line="508"/>
<location filename="../settingsView/csettingsview_moc.cpp" line="530"/>
<source>Disabled</source>
<translation>Деактивований</translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.cpp" line="509"/>
<location filename="../settingsView/csettingsview_moc.cpp" line="531"/>
<source>Enable</source>
<translation>Активувати</translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.cpp" line="514"/>
<location filename="../settingsView/csettingsview_moc.cpp" line="536"/>
<source>Not Installed</source>
<translation>Не встановлено</translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.cpp" line="515"/>
<location filename="../settingsView/csettingsview_moc.cpp" line="537"/>
<source>Install</source>
<translation>Встановити</translation>
</message>
</context>
<context>
<name>ChroniclesExtractor</name>
<message>
<location filename="../modManager/chroniclesextractor.cpp" line="48"/>
<source>File cannot opened</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/chroniclesextractor.cpp" line="56"/>
<location filename="../modManager/chroniclesextractor.cpp" line="71"/>
<source>Invalid file selected</source>
<translation type="unfinished">Обрано невірний файл</translation>
</message>
<message>
<location filename="../modManager/chroniclesextractor.cpp" line="56"/>
<source>You have to select an gog installer file!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/chroniclesextractor.cpp" line="71"/>
<source>You have to select an chronicle installer file!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/chroniclesextractor.cpp" line="87"/>
<source>Extracting error!</source>
<translation type="unfinished">Помилка видобування!</translation>
</message>
<message>
<location filename="../modManager/chroniclesextractor.cpp" line="104"/>
<location filename="../modManager/chroniclesextractor.cpp" line="105"/>
<location filename="../modManager/chroniclesextractor.cpp" line="141"/>
<source>Heroes Chronicles</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>File size</name>
<message>
@@ -1208,113 +1264,101 @@ Offline installer consists of two parts, .exe and .bin. Make sure you download b
<translation>In The Wake of Gods</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="178"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="174"/>
<source>Heroes III installation found!</source>
<translation>Інсталяцію Heroes III знайдено!</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="178"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="174"/>
<source>Copy data to VCMI folder?</source>
<translation>Скопіювати дані до теки VCMI?</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="317"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="313"/>
<source>Select %1 file...</source>
<comment>param is file extension</comment>
<translation>Оберіть файл %1...</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="318"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="314"/>
<source>You have to select %1 file!</source>
<comment>param is file extension</comment>
<translation>Ви повинні обрати файл %1!</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="320"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="316"/>
<source>GOG file (*.*)</source>
<translation>Файл GOG (*.*)</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="321"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="317"/>
<source>File selection</source>
<translation>Вибір файлу</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="330"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="326"/>
<source>File cannot be opened</source>
<translation>Не вдається відкрити файл</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="336"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="332"/>
<source>Invalid file selected</source>
<translation>Обрано невірний файл</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="346"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="342"/>
<source>GOG installer</source>
<translation>Інсталятор GOG</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="343"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="339"/>
<source>GOG data</source>
<translation>Дані GOG</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="438"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="401"/>
<source>No Heroes III data!</source>
<translation>Немає файлів даних Heroes III!</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="438"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="401"/>
<source>Selected files do not contain Heroes III data!</source>
<translation>Обрані файли не містять файлів з грою Heroes III!</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="485"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="499"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="506"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="511"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="448"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="462"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="469"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="474"/>
<source>Heroes III data not found!</source>
<translation>Файли даних Heroes III не знайдено!</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="482"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="445"/>
<source>Failed to detect valid Heroes III data in chosen directory.
Please select directory with installed Heroes III data.</source>
<translation>Не вдалося виявити файли Heroes III у вибраному каталозі.
Будь ласка, виберіть теку зі встановленими даними Heroes III.</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="387"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="383"/>
<source>You&apos;ve provided GOG Galaxy installer! This file doesn&apos;t contain the game. Please download the offline backup game installer!</source>
<translation>Ви надали інсталятор GOG Galaxy! Цей файл не містить гри. Будь ласка, завантажте резервну копію інсталятора гри!</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="412"/>
<source>Stream error while extracting files!
error reason: </source>
<translation>Помилка потоку під час розпакування файлів!
причина помилки: </translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="425"/>
<source>Not a supported Inno Setup installer!</source>
<translation>Не підтримуваний інсталятор Inno Setup!</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="436"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="399"/>
<source>Extracting error!</source>
<translation>Помилка видобування!</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="506"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="469"/>
<source>Heroes III: HD Edition files are not supported by VCMI.
Please select directory with Heroes III: Complete Edition or Heroes III: Shadow of Death.</source>
<translation>Файли Heroes III: HD Edition не підтримуються VCMI.
Будь ласка, виберіть теку з Heroes III: Complete Edition або Heroes III: Shadow of Death.</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="511"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="474"/>
<source>Unknown or unsupported Heroes III version found.
Please select directory with Heroes III: Complete Edition or Heroes III: Shadow of Death.</source>
<translation>Знайдено невідому або не підтримувану версію Heroes III.
@@ -1329,6 +1373,26 @@ Please select directory with Heroes III: Complete Edition or Heroes III: Shadow
<translation>Перегляд зображень</translation>
</message>
</context>
<context>
<name>Innoextract</name>
<message>
<location filename="../innoextract.cpp" line="42"/>
<source>Stream error while extracting files!
error reason: </source>
<translation type="unfinished">Помилка потоку під час розпакування файлів!
причина помилки: </translation>
</message>
<message>
<location filename="../innoextract.cpp" line="55"/>
<source>Not a supported Inno Setup installer!</source>
<translation type="unfinished">Не підтримуваний інсталятор Inno Setup!</translation>
</message>
<message>
<location filename="../innoextract.cpp" line="58"/>
<source>VCMI was compiled without innoextract support, which is needed to extract exe files!</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Language</name>
<message>

View File

@@ -233,7 +233,7 @@
</message>
<message>
<location filename="../modManager/cmodlistview_moc.ui" line="163"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="350"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="354"/>
<source>Description</source>
<translation> tả</translation>
</message>
@@ -293,179 +293,189 @@
<translation>Hủy</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="285"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="289"/>
<source>Mod name</source>
<translation>Tên bản sửa đi</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="286"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="290"/>
<source>Installed version</source>
<translation>Phiên bản cài đt</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="287"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="291"/>
<source>Latest version</source>
<translation>Phiên bản mới nhất</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="290"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="294"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="292"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="296"/>
<source>Download size</source>
<translation>Kích thước tải về</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="294"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="298"/>
<source>Authors</source>
<translation>Tác giả</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="297"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="301"/>
<source>License</source>
<translation>Giấy phép</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="300"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="304"/>
<source>Contact</source>
<translation>Liên hệ</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="309"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="313"/>
<source>Compatibility</source>
<translation>Tương thích</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="311"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="319"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="315"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="323"/>
<source>Required VCMI version</source>
<translation>Cần phiên bản VCMI</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="317"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="321"/>
<source>Supported VCMI version</source>
<translation>Hỗ trợ phiên bản VCMI</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="317"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="321"/>
<source>please upgrade mod</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="189"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="809"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="193"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="824"/>
<source>mods repository index</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="319"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="323"/>
<source>or newer</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="322"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="326"/>
<source>Supported VCMI versions</source>
<translation>Phiên bản VCMI hỗ trợ</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="346"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="350"/>
<source>Languages</source>
<translation>Ngôn ngữ</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="348"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="352"/>
<source>Required mods</source>
<translation>Cần các bản sửa đi</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="349"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="353"/>
<source>Conflicting mods</source>
<translation>Bản sửa đi không tương thích</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="354"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="358"/>
<source>This mod can not be installed or enabled because the following dependencies are not present</source>
<translation>Bản sửa đi này không thể cài đt hoặc kích hoạt do thiếu các bản sửa đi sau</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="355"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="359"/>
<source>This mod can not be enabled because the following mods are incompatible with it</source>
<translation>Bản sửa đi này không thể kích hoạt do không tương thích các bản sửa đi sau</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="356"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="360"/>
<source>This mod cannot be disabled because it is required by the following mods</source>
<translation>Bản sửa đi này không thể tắt do cần thiết cho các bản sửa đi sau</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="357"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="361"/>
<source>This mod cannot be uninstalled or updated because it is required by the following mods</source>
<translation>Bản sửa đi này không thể gỡ bỏ hoặc nâng cấp do cần thiết cho các bản sửa đi sau</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="358"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="362"/>
<source>This is a submod and it cannot be installed or uninstalled separately from its parent mod</source>
<translation>Đây bản con, không thể cài đt hoặc gỡ bỏ tách biệt với bản cha</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="373"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="377"/>
<source>Notes</source>
<translation>Ghi chú</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="643"/>
<source>All supported files</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="644"/>
<source>Maps</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="645"/>
<source>Campaigns</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="646"/>
<source>Configs</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="639"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="647"/>
<source>Mods</source>
<translation type="unfinished">Bản sửa đi</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="640"/>
<source>Select files (configs, mods, maps, campaigns) to install...</source>
<location filename="../modManager/cmodlistview_moc.cpp" line="648"/>
<source>Gog files</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="665"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="650"/>
<source>All files (*.*)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="652"/>
<source>Select files (configs, mods, maps, campaigns, gog files) to install...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="677"/>
<source>Replace config file?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="665"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="677"/>
<source>Do you want to replace %1?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="708"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="720"/>
<source>Downloading %1. %p% (%v MB out of %m MB) finished</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="733"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="745"/>
<source>Download failed</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="734"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="746"/>
<source>Unable to download all files.
Encountered errors:
@@ -474,40 +484,45 @@ Encountered errors:
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="735"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="747"/>
<source>
Install successfully downloaded?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="881"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="852"/>
<source>Installing chronicles</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="925"/>
<source>Installing mod %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="950"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="994"/>
<source>Operation failed</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="951"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="995"/>
<source>Encountered errors:
</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="986"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="1030"/>
<source>screenshots</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="992"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="1036"/>
<source>Screenshot %1</source>
<translation>Hình nh %1</translation>
</message>
<message>
<location filename="../modManager/cmodlistview_moc.cpp" line="280"/>
<location filename="../modManager/cmodlistview_moc.cpp" line="284"/>
<source>Mod is incompatible</source>
<translation>Bản sửa đi này không tương thích</translation>
</message>
@@ -611,7 +626,7 @@ Install successfully downloaded?</source>
<context>
<name>CSettingsView</name>
<message>
<location filename="../settingsView/csettingsview_moc.cpp" line="90"/>
<location filename="../settingsView/csettingsview_moc.cpp" line="98"/>
<source>Off</source>
<translation>Tắt</translation>
</message>
@@ -705,6 +720,11 @@ Install successfully downloaded?</source>
<source>xBRZ x4</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.ui" line="1194"/>
<source>Use scalable fonts</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.ui" line="138"/>
<source>Online Lobby address</source>
@@ -871,7 +891,7 @@ Install successfully downloaded?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.cpp" line="88"/>
<location filename="../settingsView/csettingsview_moc.cpp" line="96"/>
<source>On</source>
<translation>Bật</translation>
</message>
@@ -958,31 +978,67 @@ Toàn màn hình riêng biệt - Trò chơi chạy toàn màn hình và dùng đ
<translation>Hiện thị giới thiệu</translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.cpp" line="503"/>
<location filename="../settingsView/csettingsview_moc.cpp" line="525"/>
<source>Active</source>
<translation>Bật</translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.cpp" line="508"/>
<location filename="../settingsView/csettingsview_moc.cpp" line="530"/>
<source>Disabled</source>
<translation>Tắt</translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.cpp" line="509"/>
<location filename="../settingsView/csettingsview_moc.cpp" line="531"/>
<source>Enable</source>
<translation>Bật</translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.cpp" line="514"/>
<location filename="../settingsView/csettingsview_moc.cpp" line="536"/>
<source>Not Installed</source>
<translation>Chưa cài đt</translation>
</message>
<message>
<location filename="../settingsView/csettingsview_moc.cpp" line="515"/>
<location filename="../settingsView/csettingsview_moc.cpp" line="537"/>
<source>Install</source>
<translation>Cài đt</translation>
</message>
</context>
<context>
<name>ChroniclesExtractor</name>
<message>
<location filename="../modManager/chroniclesextractor.cpp" line="48"/>
<source>File cannot opened</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/chroniclesextractor.cpp" line="56"/>
<location filename="../modManager/chroniclesextractor.cpp" line="71"/>
<source>Invalid file selected</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/chroniclesextractor.cpp" line="56"/>
<source>You have to select an gog installer file!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/chroniclesextractor.cpp" line="71"/>
<source>You have to select an chronicle installer file!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/chroniclesextractor.cpp" line="87"/>
<source>Extracting error!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../modManager/chroniclesextractor.cpp" line="104"/>
<location filename="../modManager/chroniclesextractor.cpp" line="105"/>
<location filename="../modManager/chroniclesextractor.cpp" line="141"/>
<source>Heroes Chronicles</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>File size</name>
<message>
@@ -1199,110 +1255,99 @@ Offline installer consists of two parts, .exe and .bin. Make sure you download b
<translation>In The Wake of Gods</translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="178"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="174"/>
<source>Heroes III installation found!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="178"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="174"/>
<source>Copy data to VCMI folder?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="317"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="313"/>
<source>Select %1 file...</source>
<comment>param is file extension</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="318"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="314"/>
<source>You have to select %1 file!</source>
<comment>param is file extension</comment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="320"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="316"/>
<source>GOG file (*.*)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="321"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="317"/>
<source>File selection</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="330"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="326"/>
<source>File cannot be opened</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="336"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="332"/>
<source>Invalid file selected</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="346"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="342"/>
<source>GOG installer</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="343"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="339"/>
<source>GOG data</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="387"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="383"/>
<source>You&apos;ve provided GOG Galaxy installer! This file doesn&apos;t contain the game. Please download the offline backup game installer!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="412"/>
<source>Stream error while extracting files!
error reason: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="425"/>
<source>Not a supported Inno Setup installer!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="436"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="399"/>
<source>Extracting error!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="438"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="401"/>
<source>No Heroes III data!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="438"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="401"/>
<source>Selected files do not contain Heroes III data!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="485"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="499"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="506"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="511"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="448"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="462"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="469"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="474"/>
<source>Heroes III data not found!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="482"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="445"/>
<source>Failed to detect valid Heroes III data in chosen directory.
Please select directory with installed Heroes III data.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="506"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="469"/>
<source>Heroes III: HD Edition files are not supported by VCMI.
Please select directory with Heroes III: Complete Edition or Heroes III: Shadow of Death.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="511"/>
<location filename="../firstLaunch/firstlaunch_moc.cpp" line="474"/>
<source>Unknown or unsupported Heroes III version found.
Please select directory with Heroes III: Complete Edition or Heroes III: Shadow of Death.</source>
<translation type="unfinished"></translation>
@@ -1316,6 +1361,25 @@ Please select directory with Heroes III: Complete Edition or Heroes III: Shadow
<translation>Trình xem nh</translation>
</message>
</context>
<context>
<name>Innoextract</name>
<message>
<location filename="../innoextract.cpp" line="42"/>
<source>Stream error while extracting files!
error reason: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../innoextract.cpp" line="55"/>
<source>Not a supported Inno Setup installer!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../innoextract.cpp" line="58"/>
<source>VCMI was compiled without innoextract support, which is needed to extract exe files!</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Language</name>
<message>

View File

@@ -40,6 +40,7 @@ const std::vector<GameSettings::SettingOption> GameSettings::settingProperties =
{EGameSettings::BANKS_SHOW_GUARDS_COMPOSITION, "banks", "showGuardsComposition" },
{EGameSettings::BONUSES_GLOBAL, "bonuses", "global" },
{EGameSettings::BONUSES_PER_HERO, "bonuses", "perHero" },
{EGameSettings::COMBAT_AREA_SHOT_CAN_TARGET_EMPTY_HEX, "combat", "areaShotCanTargetEmptyHex" },
{EGameSettings::COMBAT_ATTACK_POINT_DAMAGE_FACTOR, "combat", "attackPointDamageFactor" },
{EGameSettings::COMBAT_ATTACK_POINT_DAMAGE_FACTOR_CAP, "combat", "attackPointDamageFactorCap" },
{EGameSettings::COMBAT_BAD_LUCK_DICE, "combat", "badLuckDice" },

View File

@@ -18,6 +18,7 @@ enum class EGameSettings
BANKS_SHOW_GUARDS_COMPOSITION,
BONUSES_GLOBAL,
BONUSES_PER_HERO,
COMBAT_AREA_SHOT_CAN_TARGET_EMPTY_HEX,
COMBAT_ATTACK_POINT_DAMAGE_FACTOR,
COMBAT_ATTACK_POINT_DAMAGE_FACTOR_CAP,
COMBAT_BAD_LUCK_DICE,

View File

@@ -17,6 +17,7 @@
#include "BattleInfo.h"
#include "CObstacleInstance.h"
#include "DamageCalculator.h"
#include "IGameSettings.h"
#include "PossiblePlayerBattleAction.h"
#include "../entities/building/TownFortifications.h"
#include "../spells/ObstacleCasterProxy.h"
@@ -725,18 +726,49 @@ bool CBattleInfoCallback::battleCanShoot(const battle::Unit * attacker) const
|| attacker->hasBonusOfType(BonusType::FREE_SHOOTING));
}
bool CBattleInfoCallback::battleCanTargetEmptyHex(const battle::Unit * attacker) const
{
RETURN_IF_NOT_BATTLE(false);
if(!VLC->engineSettings()->getBoolean(EGameSettings::COMBAT_AREA_SHOT_CAN_TARGET_EMPTY_HEX))
return false;
if(attacker->hasBonusOfType(BonusType::SPELL_LIKE_ATTACK))
{
auto bonus = attacker->getBonus(Selector::type()(BonusType::SPELL_LIKE_ATTACK));
const CSpell * spell = bonus->subtype.as<SpellID>().toSpell();
spells::BattleCast cast(this, attacker, spells::Mode::SPELL_LIKE_ATTACK, spell);
BattleHex dummySpellTarget = BattleHex(50); //check arbitrary hex for general spell range since currently there is no general way to access amount of hexes
if(spell->battleMechanics(&cast)->rangeInHexes(dummySpellTarget).size() > 1)
{
return true;
}
}
return false;
}
bool CBattleInfoCallback::battleCanShoot(const battle::Unit * attacker, BattleHex dest) const
{
RETURN_IF_NOT_BATTLE(false);
const battle::Unit * defender = battleGetUnitByPos(dest);
if(!attacker || !defender)
if(!attacker)
return false;
if(defender->hasBonusOfType(BonusType::INVINCIBLE))
return false;
bool emptyHexAreaAttack = battleCanTargetEmptyHex(attacker);
if(battleMatchOwner(attacker, defender) && defender->alive())
if(!emptyHexAreaAttack)
{
if(!defender)
return false;
if(defender->hasBonusOfType(BonusType::INVINCIBLE))
return false;
}
if(emptyHexAreaAttack || (battleMatchOwner(attacker, defender) && defender->alive()))
{
if(battleCanShoot(attacker))
{
@@ -747,7 +779,11 @@ bool CBattleInfoCallback::battleCanShoot(const battle::Unit * attacker, BattleHe
}
int shootingRange = limitedRangeBonus->val;
return isEnemyUnitWithinSpecifiedRange(attacker->getPosition(), defender, shootingRange);
if(defender)
return isEnemyUnitWithinSpecifiedRange(attacker->getPosition(), defender, shootingRange);
else
return isHexWithinSpecifiedRange(attacker->getPosition(), dest, shootingRange);
}
}
@@ -794,7 +830,7 @@ DamageEstimation CBattleInfoCallback::battleEstimateDamage(const BattleAttackInf
if (!bai.defender->ableToRetaliate())
return ret;
if (bai.attacker->hasBonusOfType(BonusType::BLOCKS_RETALIATION))
if (bai.attacker->hasBonusOfType(BonusType::BLOCKS_RETALIATION) || bai.attacker->hasBonusOfType(BonusType::INVINCIBLE))
return ret;
//TODO: rewrite using boost::numeric::interval
@@ -1593,6 +1629,14 @@ bool CBattleInfoCallback::isEnemyUnitWithinSpecifiedRange(BattleHex attackerPosi
return false;
}
bool CBattleInfoCallback::isHexWithinSpecifiedRange(BattleHex attackerPosition, BattleHex targetPosition, unsigned int range) const
{
if(BattleHex::getDistance(attackerPosition, targetPosition) <= range)
return true;
return false;
}
BattleHex CBattleInfoCallback::wallPartToBattleHex(EWallPart part) const
{
RETURN_IF_NOT_BATTLE(BattleHex::INVALID);

View File

@@ -86,9 +86,11 @@ public:
ReachabilityInfo::TDistances battleGetDistances(const battle::Unit * unit, BattleHex assumedPosition) const;
std::set<BattleHex> battleGetAttackedHexes(const battle::Unit * attacker, BattleHex destinationTile, BattleHex attackerPos = BattleHex::INVALID) const;
bool isEnemyUnitWithinSpecifiedRange(BattleHex attackerPosition, const battle::Unit * defenderUnit, unsigned int range) const;
bool isHexWithinSpecifiedRange(BattleHex attackerPosition, BattleHex targetPosition, unsigned int range) const;
std::pair< std::vector<BattleHex>, int > getPath(BattleHex start, BattleHex dest, const battle::Unit * stack) const;
bool battleCanTargetEmptyHex(const battle::Unit * attacker) const; //determines of stack with given ID can target empty hex to attack - currently used only for SPELL_LIKE_ATTACK shooting
bool battleCanAttack(const battle::Unit * stack, const battle::Unit * target, BattleHex dest) const; //determines if stack with given ID can attack target at the selected destination
bool battleCanShoot(const battle::Unit * attacker, BattleHex dest) const; //determines if stack with given ID shoot at the selected destination
bool battleCanShoot(const battle::Unit * attacker) const; //determines if stack with given ID shoot in principle

View File

@@ -37,8 +37,11 @@ CampaignRegions::RegionDescription CampaignRegions::RegionDescription::fromJson(
{
CampaignRegions::RegionDescription rd;
rd.infix = node["infix"].String();
rd.xpos = static_cast<int>(node["x"].Float());
rd.ypos = static_cast<int>(node["y"].Float());
rd.pos = Point(static_cast<int>(node["x"].Float()), static_cast<int>(node["y"].Float()));
if(!node["labelPos"].isNull())
rd.labelPos = Point(static_cast<int>(node["labelPos"]["x"].Float()), static_cast<int>(node["labelPos"]["y"].Float()));
else
rd.labelPos = std::nullopt;
return rd;
}
@@ -80,7 +83,13 @@ ImagePath CampaignRegions::getBackgroundName() const
Point CampaignRegions::getPosition(CampaignScenarioID which) const
{
auto const & region = regions[which.getNum()];
return Point(region.xpos, region.ypos);
return region.pos;
}
std::optional<Point> CampaignRegions::getLabelPosition(CampaignScenarioID which) const
{
auto const & region = regions[which.getNum()];
return region.labelPos;
}
ImagePath CampaignRegions::getNameFor(CampaignScenarioID which, int colorIndex, std::string type) const

View File

@@ -16,6 +16,7 @@
#include "CampaignConstants.h"
#include "CampaignScenarioPrologEpilog.h"
#include "../gameState/HighScore.h"
#include "../Point.h"
VCMI_LIB_NAMESPACE_BEGIN
@@ -27,7 +28,6 @@ class CMap;
class CMapHeader;
class CMapInfo;
class JsonNode;
class Point;
class IGameCallback;
class DLL_LINKAGE CampaignRegions
@@ -40,14 +40,22 @@ class DLL_LINKAGE CampaignRegions
struct DLL_LINKAGE RegionDescription
{
std::string infix;
int xpos;
int ypos;
Point pos;
std::optional<Point> labelPos;
template <typename Handler> void serialize(Handler &h)
{
h & infix;
h & xpos;
h & ypos;
if (h.version >= Handler::Version::REGION_LABEL)
{
h & pos;
h & labelPos;
}
else
{
h & pos.x;
h & pos.y;
}
}
static CampaignRegions::RegionDescription fromJson(const JsonNode & node);
@@ -60,6 +68,7 @@ class DLL_LINKAGE CampaignRegions
public:
ImagePath getBackgroundName() const;
Point getPosition(CampaignScenarioID which) const;
std::optional<Point> getLabelPosition(CampaignScenarioID which) const;
ImagePath getAvailableName(CampaignScenarioID which, int color) const;
ImagePath getSelectedName(CampaignScenarioID which, int color) const;
ImagePath getConqueredName(CampaignScenarioID which, int color) const;

View File

@@ -60,6 +60,7 @@ enum class ESerializationVersion : int32_t
PER_MAP_GAME_SETTINGS, // 861 - game settings are now stored per-map
CAMPAIGN_OUTRO_SUPPORT, // 862 - support for campaign outro video
REWARDABLE_BANKS, // 863 - team state contains list of scouted objects, coast visitable rewardable objects
REGION_LABEL, // 864 - labels for campaign regions
CURRENT = REWARDABLE_BANKS
CURRENT = REGION_LABEL
};

View File

@@ -231,7 +231,7 @@ bool BattleSpellMechanics::canBeCastAt(const Target & target, Problem & problem)
if(mainTarget && mainTarget == caster)
return false; // can't cast on self
if(mainTarget && mainTarget->hasBonusOfType(BonusType::INVINCIBLE))
if(mainTarget && mainTarget->hasBonusOfType(BonusType::INVINCIBLE) && !getSpell()->getPositiveness())
return false;
}

View File

@@ -164,10 +164,9 @@ EffectTarget UnitEffect::transformTargetByRange(const Mechanics * m, const Targe
if(m->alwaysHitFirstTarget())
{
//TODO: examine if adjustments needed related to INVINCIBLE bonus
if(!aimPoint.empty() && aimPoint.front().unitValue)
targets.insert(aimPoint.front().unitValue);
else
logGlobal->error("Spell-like attack with no primary target.");
}
EffectTarget effectTarget;

View File

@@ -42,7 +42,7 @@
<translation></translation>
</message>
<message>
<location filename="../mapsettings/eventsettings.cpp" line="118"/>
<location filename="../mapsettings/eventsettings.cpp" line="123"/>
<source>New event</source>
<translation></translation>
</message>
@@ -359,7 +359,7 @@
</message>
<message>
<location filename="../mainwindow.ui" line="1051"/>
<location filename="../mainwindow.cpp" line="822"/>
<location filename="../mainwindow.cpp" line="834"/>
<source>View underground</source>
<translation></translation>
</message>
@@ -441,9 +441,9 @@
</message>
<message>
<location filename="../mainwindow.ui" line="1205"/>
<location filename="../mainwindow.cpp" line="1093"/>
<location filename="../mainwindow.cpp" line="1097"/>
<location filename="../mainwindow.cpp" line="1154"/>
<location filename="../mainwindow.cpp" line="1105"/>
<location filename="../mainwindow.cpp" line="1109"/>
<location filename="../mainwindow.cpp" line="1166"/>
<source>Update appearance</source>
<translation></translation>
</message>
@@ -594,72 +594,72 @@
<translation>(*.vmap *.h3m);;VCMI地图(*.vmap);;3(*.h3m)</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="475"/>
<location filename="../mainwindow.cpp" line="487"/>
<source>Save map</source>
<translation></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="475"/>
<location filename="../mainwindow.cpp" line="487"/>
<source>VCMI maps (*.vmap)</source>
<translation>VCMI地图(*.vmap)</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="664"/>
<location filename="../mainwindow.cpp" line="676"/>
<source>Type</source>
<translation></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="826"/>
<location filename="../mainwindow.cpp" line="838"/>
<source>View surface</source>
<translation></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1093"/>
<location filename="../mainwindow.cpp" line="1105"/>
<source>No objects selected</source>
<translation></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1097"/>
<location filename="../mainwindow.cpp" line="1109"/>
<source>This operation is irreversible. Do you want to continue?</source>
<translation></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1154"/>
<location filename="../mainwindow.cpp" line="1166"/>
<source>Errors occurred. %1 objects were not updated</source>
<translation>%1 </translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1194"/>
<location filename="../mainwindow.cpp" line="1206"/>
<source>Save to image</source>
<translation></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1213"/>
<location filename="../mainwindow.cpp" line="1225"/>
<source>Select maps to convert</source>
<translation></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1215"/>
<location filename="../mainwindow.cpp" line="1227"/>
<source>HoMM3 maps(*.h3m)</source>
<translation>3(*.h3m)</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1219"/>
<location filename="../mainwindow.cpp" line="1231"/>
<source>Choose directory to save converted maps</source>
<translation></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1232"/>
<location filename="../mainwindow.cpp" line="1244"/>
<source>Operation completed</source>
<translation></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1232"/>
<location filename="../mainwindow.cpp" line="1244"/>
<source>Successfully converted %1 maps</source>
<translation> %1 </translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1236"/>
<location filename="../mainwindow.cpp" line="1248"/>
<source>Failed to convert the map. Abort operation</source>
<translation></translation>
</message>
@@ -1574,12 +1574,12 @@
<translation></translation>
</message>
<message>
<location filename="../inspector/towneventdialog.cpp" line="163"/>
<location filename="../inspector/towneventdialog.cpp" line="170"/>
<source>Creature level %1 / Creature level %1 Upgrade</source>
<translation>%1 / %1</translation>
</message>
<message>
<location filename="../inspector/towneventdialog.cpp" line="205"/>
<location filename="../inspector/towneventdialog.cpp" line="212"/>
<source>Day %1 - %2</source>
<translation>%1 - %2 </translation>
</message>
@@ -1951,7 +1951,7 @@
<translation></translation>
</message>
<message>
<location filename="../windownewmap.ui" line="751"/>
<location filename="../windownewmap.ui" line="858"/>
<source>0</source>
<translation>0</translation>
</message>
@@ -2050,42 +2050,62 @@
<translation>屿</translation>
</message>
<message>
<location filename="../windownewmap.ui" line="716"/>
<location filename="../windownewmap.ui" line="713"/>
<source>Roads</source>
<translation></translation>
</message>
<message>
<location filename="../windownewmap.ui" line="728"/>
<source>Dirt</source>
<translation></translation>
</message>
<message>
<location filename="../windownewmap.ui" line="748"/>
<source>Gravel</source>
<translation></translation>
</message>
<message>
<location filename="../windownewmap.ui" line="768"/>
<source>Cobblestone</source>
<translation></translation>
</message>
<message>
<location filename="../windownewmap.ui" line="813"/>
<source>Template</source>
<translation></translation>
</message>
<message>
<location filename="../windownewmap.ui" line="764"/>
<location filename="../windownewmap.ui" line="845"/>
<source>Custom seed</source>
<translation></translation>
</message>
<message>
<location filename="../windownewmap.ui" line="778"/>
<location filename="../windownewmap.ui" line="875"/>
<source>Generate random map</source>
<translation></translation>
</message>
<message>
<location filename="../windownewmap.ui" line="812"/>
<location filename="../windownewmap.ui" line="909"/>
<source>Ok</source>
<translation></translation>
</message>
<message>
<location filename="../windownewmap.ui" line="831"/>
<location filename="../windownewmap.ui" line="928"/>
<source>Cancel</source>
<translation></translation>
</message>
<message>
<location filename="../windownewmap.cpp" line="248"/>
<location filename="../windownewmap.cpp" line="256"/>
<source>No template</source>
<translation></translation>
</message>
<message>
<location filename="../windownewmap.cpp" line="248"/>
<location filename="../windownewmap.cpp" line="256"/>
<source>No template for parameters specified. Random map cannot be generated.</source>
<translation></translation>
</message>
<message>
<location filename="../windownewmap.cpp" line="268"/>
<location filename="../windownewmap.cpp" line="276"/>
<source>RMG failure</source>
<translation></translation>
</message>

View File

@@ -42,7 +42,7 @@
<translation>Odebrat</translation>
</message>
<message>
<location filename="../mapsettings/eventsettings.cpp" line="118"/>
<location filename="../mapsettings/eventsettings.cpp" line="123"/>
<source>New event</source>
<translation>Nová událost</translation>
</message>
@@ -359,7 +359,7 @@
</message>
<message>
<location filename="../mainwindow.ui" line="1051"/>
<location filename="../mainwindow.cpp" line="822"/>
<location filename="../mainwindow.cpp" line="834"/>
<source>View underground</source>
<translation>Zobrazit podzemí</translation>
</message>
@@ -441,9 +441,9 @@
</message>
<message>
<location filename="../mainwindow.ui" line="1205"/>
<location filename="../mainwindow.cpp" line="1093"/>
<location filename="../mainwindow.cpp" line="1097"/>
<location filename="../mainwindow.cpp" line="1154"/>
<location filename="../mainwindow.cpp" line="1105"/>
<location filename="../mainwindow.cpp" line="1109"/>
<location filename="../mainwindow.cpp" line="1166"/>
<source>Update appearance</source>
<translation>Aktualizovat vzhled</translation>
</message>
@@ -594,72 +594,72 @@
<translation>Všechny podporované mapy (*.vmap *.h3m);; Mapy VCMI(*.vmap);;Mapy HoMM3(*.h3m)</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="475"/>
<location filename="../mainwindow.cpp" line="487"/>
<source>Save map</source>
<translation>Uložit mapu</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="475"/>
<location filename="../mainwindow.cpp" line="487"/>
<source>VCMI maps (*.vmap)</source>
<translation>Mapy VCMI (*.vmap)</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="664"/>
<location filename="../mainwindow.cpp" line="676"/>
<source>Type</source>
<translation>Druh</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="826"/>
<location filename="../mainwindow.cpp" line="838"/>
<source>View surface</source>
<translation>Zobrazit povrch</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1093"/>
<location filename="../mainwindow.cpp" line="1105"/>
<source>No objects selected</source>
<translation>Nejsou vybrány žádné objekty</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1097"/>
<location filename="../mainwindow.cpp" line="1109"/>
<source>This operation is irreversible. Do you want to continue?</source>
<translation>Tento úkon je nezvratný. Chcete pokračovat?</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1154"/>
<location filename="../mainwindow.cpp" line="1166"/>
<source>Errors occurred. %1 objects were not updated</source>
<translation>Nastaly chyby. Nebylo aktualizováno %1 objektů</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1194"/>
<location filename="../mainwindow.cpp" line="1206"/>
<source>Save to image</source>
<translation>Uložit do obrázku</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1213"/>
<location filename="../mainwindow.cpp" line="1225"/>
<source>Select maps to convert</source>
<translation>Vyberte mapy pro převod</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1215"/>
<location filename="../mainwindow.cpp" line="1227"/>
<source>HoMM3 maps(*.h3m)</source>
<translation>Mapy HoMM3 (*.h3m)</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1219"/>
<location filename="../mainwindow.cpp" line="1231"/>
<source>Choose directory to save converted maps</source>
<translation>Vyberte složku pro uložení převedených map</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1232"/>
<location filename="../mainwindow.cpp" line="1244"/>
<source>Operation completed</source>
<translation>Operace dokončena</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1232"/>
<location filename="../mainwindow.cpp" line="1244"/>
<source>Successfully converted %1 maps</source>
<translation>Úspěšně převedeno %1 map</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1236"/>
<location filename="../mainwindow.cpp" line="1248"/>
<source>Failed to convert the map. Abort operation</source>
<translation>Převod map selhal. Úkon zrušen</translation>
</message>
@@ -1574,12 +1574,12 @@
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../inspector/towneventdialog.cpp" line="163"/>
<location filename="../inspector/towneventdialog.cpp" line="170"/>
<source>Creature level %1 / Creature level %1 Upgrade</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../inspector/towneventdialog.cpp" line="205"/>
<location filename="../inspector/towneventdialog.cpp" line="212"/>
<source>Day %1 - %2</source>
<translation type="unfinished"></translation>
</message>
@@ -1951,7 +1951,7 @@
<translation>Hráči</translation>
</message>
<message>
<location filename="../windownewmap.ui" line="751"/>
<location filename="../windownewmap.ui" line="858"/>
<source>0</source>
<translation>0</translation>
</message>
@@ -2050,42 +2050,62 @@
<translation>Ostrovy</translation>
</message>
<message>
<location filename="../windownewmap.ui" line="716"/>
<location filename="../windownewmap.ui" line="713"/>
<source>Roads</source>
<translation type="unfinished">Cesty</translation>
</message>
<message>
<location filename="../windownewmap.ui" line="728"/>
<source>Dirt</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../windownewmap.ui" line="748"/>
<source>Gravel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../windownewmap.ui" line="768"/>
<source>Cobblestone</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../windownewmap.ui" line="813"/>
<source>Template</source>
<translation>Šablona</translation>
</message>
<message>
<location filename="../windownewmap.ui" line="764"/>
<location filename="../windownewmap.ui" line="845"/>
<source>Custom seed</source>
<translation>Vlastní semínko</translation>
</message>
<message>
<location filename="../windownewmap.ui" line="778"/>
<location filename="../windownewmap.ui" line="875"/>
<source>Generate random map</source>
<translation>Vygenerovat náhodnou mapu</translation>
</message>
<message>
<location filename="../windownewmap.ui" line="812"/>
<location filename="../windownewmap.ui" line="909"/>
<source>Ok</source>
<translation>Dobře</translation>
</message>
<message>
<location filename="../windownewmap.ui" line="831"/>
<location filename="../windownewmap.ui" line="928"/>
<source>Cancel</source>
<translation>Zrušit</translation>
</message>
<message>
<location filename="../windownewmap.cpp" line="248"/>
<location filename="../windownewmap.cpp" line="256"/>
<source>No template</source>
<translation>Bez šablony</translation>
</message>
<message>
<location filename="../windownewmap.cpp" line="248"/>
<location filename="../windownewmap.cpp" line="256"/>
<source>No template for parameters specified. Random map cannot be generated.</source>
<translation>Žádná šablona pro vybrané parametry. Náhodná mapa nemůže být vygenerována.</translation>
</message>
<message>
<location filename="../windownewmap.cpp" line="268"/>
<location filename="../windownewmap.cpp" line="276"/>
<source>RMG failure</source>
<translation>Chyba RMG</translation>
</message>

View File

@@ -42,7 +42,7 @@
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mapsettings/eventsettings.cpp" line="118"/>
<location filename="../mapsettings/eventsettings.cpp" line="123"/>
<source>New event</source>
<translation type="unfinished"></translation>
</message>
@@ -359,7 +359,7 @@
</message>
<message>
<location filename="../mainwindow.ui" line="1051"/>
<location filename="../mainwindow.cpp" line="822"/>
<location filename="../mainwindow.cpp" line="834"/>
<source>View underground</source>
<translation type="unfinished"></translation>
</message>
@@ -441,9 +441,9 @@
</message>
<message>
<location filename="../mainwindow.ui" line="1205"/>
<location filename="../mainwindow.cpp" line="1093"/>
<location filename="../mainwindow.cpp" line="1097"/>
<location filename="../mainwindow.cpp" line="1154"/>
<location filename="../mainwindow.cpp" line="1105"/>
<location filename="../mainwindow.cpp" line="1109"/>
<location filename="../mainwindow.cpp" line="1166"/>
<source>Update appearance</source>
<translation type="unfinished"></translation>
</message>
@@ -594,72 +594,72 @@
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="475"/>
<location filename="../mainwindow.cpp" line="487"/>
<source>Save map</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="475"/>
<location filename="../mainwindow.cpp" line="487"/>
<source>VCMI maps (*.vmap)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="664"/>
<location filename="../mainwindow.cpp" line="676"/>
<source>Type</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="826"/>
<location filename="../mainwindow.cpp" line="838"/>
<source>View surface</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1093"/>
<location filename="../mainwindow.cpp" line="1105"/>
<source>No objects selected</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1097"/>
<location filename="../mainwindow.cpp" line="1109"/>
<source>This operation is irreversible. Do you want to continue?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1154"/>
<location filename="../mainwindow.cpp" line="1166"/>
<source>Errors occurred. %1 objects were not updated</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1194"/>
<location filename="../mainwindow.cpp" line="1206"/>
<source>Save to image</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1213"/>
<location filename="../mainwindow.cpp" line="1225"/>
<source>Select maps to convert</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1215"/>
<location filename="../mainwindow.cpp" line="1227"/>
<source>HoMM3 maps(*.h3m)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1219"/>
<location filename="../mainwindow.cpp" line="1231"/>
<source>Choose directory to save converted maps</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1232"/>
<location filename="../mainwindow.cpp" line="1244"/>
<source>Operation completed</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1232"/>
<location filename="../mainwindow.cpp" line="1244"/>
<source>Successfully converted %1 maps</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1236"/>
<location filename="../mainwindow.cpp" line="1248"/>
<source>Failed to convert the map. Abort operation</source>
<translation type="unfinished"></translation>
</message>
@@ -1574,12 +1574,12 @@
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../inspector/towneventdialog.cpp" line="163"/>
<location filename="../inspector/towneventdialog.cpp" line="170"/>
<source>Creature level %1 / Creature level %1 Upgrade</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../inspector/towneventdialog.cpp" line="205"/>
<location filename="../inspector/towneventdialog.cpp" line="212"/>
<source>Day %1 - %2</source>
<translation type="unfinished"></translation>
</message>
@@ -1951,7 +1951,7 @@
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../windownewmap.ui" line="751"/>
<location filename="../windownewmap.ui" line="858"/>
<source>0</source>
<translation type="unfinished"></translation>
</message>
@@ -2050,42 +2050,62 @@
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../windownewmap.ui" line="716"/>
<location filename="../windownewmap.ui" line="713"/>
<source>Roads</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../windownewmap.ui" line="728"/>
<source>Dirt</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../windownewmap.ui" line="748"/>
<source>Gravel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../windownewmap.ui" line="768"/>
<source>Cobblestone</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../windownewmap.ui" line="813"/>
<source>Template</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../windownewmap.ui" line="764"/>
<location filename="../windownewmap.ui" line="845"/>
<source>Custom seed</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../windownewmap.ui" line="778"/>
<location filename="../windownewmap.ui" line="875"/>
<source>Generate random map</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../windownewmap.ui" line="812"/>
<location filename="../windownewmap.ui" line="909"/>
<source>Ok</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../windownewmap.ui" line="831"/>
<location filename="../windownewmap.ui" line="928"/>
<source>Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../windownewmap.cpp" line="248"/>
<location filename="../windownewmap.cpp" line="256"/>
<source>No template</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../windownewmap.cpp" line="248"/>
<location filename="../windownewmap.cpp" line="256"/>
<source>No template for parameters specified. Random map cannot be generated.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../windownewmap.cpp" line="268"/>
<location filename="../windownewmap.cpp" line="276"/>
<source>RMG failure</source>
<translation type="unfinished"></translation>
</message>

View File

@@ -42,7 +42,7 @@
<translation>Supprimer</translation>
</message>
<message>
<location filename="../mapsettings/eventsettings.cpp" line="118"/>
<location filename="../mapsettings/eventsettings.cpp" line="123"/>
<source>New event</source>
<translation>Nouvel évènement</translation>
</message>
@@ -359,7 +359,7 @@
</message>
<message>
<location filename="../mainwindow.ui" line="1051"/>
<location filename="../mainwindow.cpp" line="822"/>
<location filename="../mainwindow.cpp" line="834"/>
<source>View underground</source>
<translation>Voir le sous-sol</translation>
</message>
@@ -441,9 +441,9 @@
</message>
<message>
<location filename="../mainwindow.ui" line="1205"/>
<location filename="../mainwindow.cpp" line="1093"/>
<location filename="../mainwindow.cpp" line="1097"/>
<location filename="../mainwindow.cpp" line="1154"/>
<location filename="../mainwindow.cpp" line="1105"/>
<location filename="../mainwindow.cpp" line="1109"/>
<location filename="../mainwindow.cpp" line="1166"/>
<source>Update appearance</source>
<translation>Mettre à jour l&apos;apparence</translation>
</message>
@@ -594,72 +594,72 @@
<translation>Toutes les cartes prises en charge (*.vmap *.h3m);;Cartes VCMI (*.vmap);;Cartes HoMM3 (*.h3m)</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="475"/>
<location filename="../mainwindow.cpp" line="487"/>
<source>Save map</source>
<translation>Enregistrer la carte</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="475"/>
<location filename="../mainwindow.cpp" line="487"/>
<source>VCMI maps (*.vmap)</source>
<translation>Cartes VCMI (*.vmap)</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="664"/>
<location filename="../mainwindow.cpp" line="676"/>
<source>Type</source>
<translation>Type</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="826"/>
<location filename="../mainwindow.cpp" line="838"/>
<source>View surface</source>
<translation>Afficher la surface</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1093"/>
<location filename="../mainwindow.cpp" line="1105"/>
<source>No objects selected</source>
<translation>Pas d&apos;objets sélectionnés</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1097"/>
<location filename="../mainwindow.cpp" line="1109"/>
<source>This operation is irreversible. Do you want to continue?</source>
<translation>Cette opération est irreversible. Voulez-vous continuer ?</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1154"/>
<location filename="../mainwindow.cpp" line="1166"/>
<source>Errors occurred. %1 objects were not updated</source>
<translation>Erreur rencontrée. %1 objets n&apos;ont pas étés mis à jour</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1194"/>
<location filename="../mainwindow.cpp" line="1206"/>
<source>Save to image</source>
<translation>Sauvegarder en tant qu&apos;image</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1213"/>
<location filename="../mainwindow.cpp" line="1225"/>
<source>Select maps to convert</source>
<translation>Sélectionner les cartes à convertir</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1215"/>
<location filename="../mainwindow.cpp" line="1227"/>
<source>HoMM3 maps(*.h3m)</source>
<translation>Cartes HoMM3(*.h3m)</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1219"/>
<location filename="../mainwindow.cpp" line="1231"/>
<source>Choose directory to save converted maps</source>
<translation>Sélectionner le dossier ou sauvegarder les cartes converties</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1232"/>
<location filename="../mainwindow.cpp" line="1244"/>
<source>Operation completed</source>
<translation>Opération terminée</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1232"/>
<location filename="../mainwindow.cpp" line="1244"/>
<source>Successfully converted %1 maps</source>
<translation>Conversion éffectuée avec succès des %1 cartes</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1236"/>
<location filename="../mainwindow.cpp" line="1248"/>
<source>Failed to convert the map. Abort operation</source>
<translation>Erreur de conversion de carte. Opération annulée</translation>
</message>
@@ -1574,12 +1574,12 @@
<translation>OK</translation>
</message>
<message>
<location filename="../inspector/towneventdialog.cpp" line="163"/>
<location filename="../inspector/towneventdialog.cpp" line="170"/>
<source>Creature level %1 / Creature level %1 Upgrade</source>
<translation>Créature niveau %1 / Créature niveau %1 Augmenté</translation>
</message>
<message>
<location filename="../inspector/towneventdialog.cpp" line="205"/>
<location filename="../inspector/towneventdialog.cpp" line="212"/>
<source>Day %1 - %2</source>
<translation>Jour %1 - %2</translation>
</message>
@@ -1649,8 +1649,8 @@
<location filename="../inspector/townspellswidget.ui" line="192"/>
<location filename="../inspector/townspellswidget.ui" line="238"/>
<location filename="../inspector/townspellswidget.ui" line="284"/>
<source>Sort qui doit apparaitre dans la Guilde des Mages</source>
<translation></translation>
<source>Spell that must appear in mage guild</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../inspector/townspellswidget.ui" line="122"/>
@@ -1951,7 +1951,7 @@
<translation>Joueurs</translation>
</message>
<message>
<location filename="../windownewmap.ui" line="751"/>
<location filename="../windownewmap.ui" line="858"/>
<source>0</source>
<translation>0</translation>
</message>
@@ -2050,42 +2050,62 @@
<translation>Îles</translation>
</message>
<message>
<location filename="../windownewmap.ui" line="716"/>
<location filename="../windownewmap.ui" line="713"/>
<source>Roads</source>
<translation type="unfinished">Routes</translation>
</message>
<message>
<location filename="../windownewmap.ui" line="728"/>
<source>Dirt</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../windownewmap.ui" line="748"/>
<source>Gravel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../windownewmap.ui" line="768"/>
<source>Cobblestone</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../windownewmap.ui" line="813"/>
<source>Template</source>
<translation>Modèle</translation>
</message>
<message>
<location filename="../windownewmap.ui" line="764"/>
<location filename="../windownewmap.ui" line="845"/>
<source>Custom seed</source>
<translation>Graine personnalisée</translation>
</message>
<message>
<location filename="../windownewmap.ui" line="778"/>
<location filename="../windownewmap.ui" line="875"/>
<source>Generate random map</source>
<translation>Générer une carte aléatoire</translation>
</message>
<message>
<location filename="../windownewmap.ui" line="812"/>
<location filename="../windownewmap.ui" line="909"/>
<source>Ok</source>
<translation>OK</translation>
</message>
<message>
<location filename="../windownewmap.ui" line="831"/>
<location filename="../windownewmap.ui" line="928"/>
<source>Cancel</source>
<translation>Annuler</translation>
</message>
<message>
<location filename="../windownewmap.cpp" line="248"/>
<location filename="../windownewmap.cpp" line="256"/>
<source>No template</source>
<translation>Pas de modèle</translation>
</message>
<message>
<location filename="../windownewmap.cpp" line="248"/>
<location filename="../windownewmap.cpp" line="256"/>
<source>No template for parameters specified. Random map cannot be generated.</source>
<translation>Pas de modèles pour les paramètres spécifiés. La carte aléatoire ne peut pas être générée.</translation>
</message>
<message>
<location filename="../windownewmap.cpp" line="268"/>
<location filename="../windownewmap.cpp" line="276"/>
<source>RMG failure</source>
<translation>Echec de RMG</translation>
</message>

View File

@@ -42,7 +42,7 @@
<translation>Entfernen</translation>
</message>
<message>
<location filename="../mapsettings/eventsettings.cpp" line="118"/>
<location filename="../mapsettings/eventsettings.cpp" line="123"/>
<source>New event</source>
<translation>Neues Ereignis</translation>
</message>
@@ -359,7 +359,7 @@
</message>
<message>
<location filename="../mainwindow.ui" line="1051"/>
<location filename="../mainwindow.cpp" line="822"/>
<location filename="../mainwindow.cpp" line="834"/>
<source>View underground</source>
<translation>Ansicht Untergrund</translation>
</message>
@@ -441,9 +441,9 @@
</message>
<message>
<location filename="../mainwindow.ui" line="1205"/>
<location filename="../mainwindow.cpp" line="1093"/>
<location filename="../mainwindow.cpp" line="1097"/>
<location filename="../mainwindow.cpp" line="1154"/>
<location filename="../mainwindow.cpp" line="1105"/>
<location filename="../mainwindow.cpp" line="1109"/>
<location filename="../mainwindow.cpp" line="1166"/>
<source>Update appearance</source>
<translation>Aussehen aktualisieren</translation>
</message>
@@ -594,72 +594,72 @@
<translation>Alle unterstützten Karten (*.vmap *.h3m);;VCMI-Karten (*.vmap);;HoMM3-Karten (*.h3m)</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="475"/>
<location filename="../mainwindow.cpp" line="487"/>
<source>Save map</source>
<translation>Karte speichern</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="475"/>
<location filename="../mainwindow.cpp" line="487"/>
<source>VCMI maps (*.vmap)</source>
<translation>VCMI-Karten (*.vmap)</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="664"/>
<location filename="../mainwindow.cpp" line="676"/>
<source>Type</source>
<translation>Typ</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="826"/>
<location filename="../mainwindow.cpp" line="838"/>
<source>View surface</source>
<translation>Oberfläche anzeigen</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1093"/>
<location filename="../mainwindow.cpp" line="1105"/>
<source>No objects selected</source>
<translation>Keine Objekte selektiert</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1097"/>
<location filename="../mainwindow.cpp" line="1109"/>
<source>This operation is irreversible. Do you want to continue?</source>
<translation>Diese Operation ist unumkehrbar. Möchten sie fortsetzen?</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1154"/>
<location filename="../mainwindow.cpp" line="1166"/>
<source>Errors occurred. %1 objects were not updated</source>
<translation>Fehler sind aufgetreten. %1 Objekte konnten nicht aktualisiert werden</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1194"/>
<location filename="../mainwindow.cpp" line="1206"/>
<source>Save to image</source>
<translation>Als Bild speichern</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1213"/>
<location filename="../mainwindow.cpp" line="1225"/>
<source>Select maps to convert</source>
<translation>Zu konvertierende Karten auswählen</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1215"/>
<location filename="../mainwindow.cpp" line="1227"/>
<source>HoMM3 maps(*.h3m)</source>
<translation>HoMM3-Karten (*.h3m)</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1219"/>
<location filename="../mainwindow.cpp" line="1231"/>
<source>Choose directory to save converted maps</source>
<translation>Verzeichnis zum Speichern der konvertierten Karten wählen</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1232"/>
<location filename="../mainwindow.cpp" line="1244"/>
<source>Operation completed</source>
<translation>Vorgang abgeschlossen</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1232"/>
<location filename="../mainwindow.cpp" line="1244"/>
<source>Successfully converted %1 maps</source>
<translation>Erfolgreiche Konvertierung von %1 Karten</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1236"/>
<location filename="../mainwindow.cpp" line="1248"/>
<source>Failed to convert the map. Abort operation</source>
<translation>Die Karte konnte nicht konvertiert werden. Vorgang abgebrochen</translation>
</message>
@@ -1574,12 +1574,12 @@
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../inspector/towneventdialog.cpp" line="163"/>
<location filename="../inspector/towneventdialog.cpp" line="170"/>
<source>Creature level %1 / Creature level %1 Upgrade</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../inspector/towneventdialog.cpp" line="205"/>
<location filename="../inspector/towneventdialog.cpp" line="212"/>
<source>Day %1 - %2</source>
<translation type="unfinished"></translation>
</message>
@@ -1951,7 +1951,7 @@
<translation>Spieler</translation>
</message>
<message>
<location filename="../windownewmap.ui" line="751"/>
<location filename="../windownewmap.ui" line="858"/>
<source>0</source>
<translation>0</translation>
</message>
@@ -2050,42 +2050,62 @@
<translation>Inseln</translation>
</message>
<message>
<location filename="../windownewmap.ui" line="716"/>
<location filename="../windownewmap.ui" line="713"/>
<source>Roads</source>
<translation type="unfinished">Straßen</translation>
</message>
<message>
<location filename="../windownewmap.ui" line="728"/>
<source>Dirt</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../windownewmap.ui" line="748"/>
<source>Gravel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../windownewmap.ui" line="768"/>
<source>Cobblestone</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../windownewmap.ui" line="813"/>
<source>Template</source>
<translation>Vorlage</translation>
</message>
<message>
<location filename="../windownewmap.ui" line="764"/>
<location filename="../windownewmap.ui" line="845"/>
<source>Custom seed</source>
<translation>Benutzerdefiniertes Seed</translation>
</message>
<message>
<location filename="../windownewmap.ui" line="778"/>
<location filename="../windownewmap.ui" line="875"/>
<source>Generate random map</source>
<translation>Zufällige Karte generieren</translation>
</message>
<message>
<location filename="../windownewmap.ui" line="812"/>
<location filename="../windownewmap.ui" line="909"/>
<source>Ok</source>
<translation>Ok</translation>
</message>
<message>
<location filename="../windownewmap.ui" line="831"/>
<location filename="../windownewmap.ui" line="928"/>
<source>Cancel</source>
<translation>Abbrechen</translation>
</message>
<message>
<location filename="../windownewmap.cpp" line="248"/>
<location filename="../windownewmap.cpp" line="256"/>
<source>No template</source>
<translation>Kein Template</translation>
</message>
<message>
<location filename="../windownewmap.cpp" line="248"/>
<location filename="../windownewmap.cpp" line="256"/>
<source>No template for parameters specified. Random map cannot be generated.</source>
<translation>Es wurde kein Template für Parameter erstellt. Zufällige Karte kann nicht generiert werden.</translation>
</message>
<message>
<location filename="../windownewmap.cpp" line="268"/>
<location filename="../windownewmap.cpp" line="276"/>
<source>RMG failure</source>
<translation>RMG-Fehler</translation>
</message>

View File

@@ -42,7 +42,7 @@
<translation>Usuń</translation>
</message>
<message>
<location filename="../mapsettings/eventsettings.cpp" line="118"/>
<location filename="../mapsettings/eventsettings.cpp" line="123"/>
<source>New event</source>
<translation>Nowe zdarzenie</translation>
</message>
@@ -359,7 +359,7 @@
</message>
<message>
<location filename="../mainwindow.ui" line="1051"/>
<location filename="../mainwindow.cpp" line="822"/>
<location filename="../mainwindow.cpp" line="834"/>
<source>View underground</source>
<translation>Pokaż podziemia</translation>
</message>
@@ -441,9 +441,9 @@
</message>
<message>
<location filename="../mainwindow.ui" line="1205"/>
<location filename="../mainwindow.cpp" line="1093"/>
<location filename="../mainwindow.cpp" line="1097"/>
<location filename="../mainwindow.cpp" line="1154"/>
<location filename="../mainwindow.cpp" line="1105"/>
<location filename="../mainwindow.cpp" line="1109"/>
<location filename="../mainwindow.cpp" line="1166"/>
<source>Update appearance</source>
<translation>Aktualizuj wygląd</translation>
</message>
@@ -594,72 +594,72 @@
<translation>Wszystkie wspierane mapy (*.vmap *.h3m);;Mapy VCMI(*.vmap);;Mapy HoMM3(*.h3m)</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="475"/>
<location filename="../mainwindow.cpp" line="487"/>
<source>Save map</source>
<translation>Zapisz mapę</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="475"/>
<location filename="../mainwindow.cpp" line="487"/>
<source>VCMI maps (*.vmap)</source>
<translation>Mapy VCMI (*.vmap)</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="664"/>
<location filename="../mainwindow.cpp" line="676"/>
<source>Type</source>
<translation>Typ</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="826"/>
<location filename="../mainwindow.cpp" line="838"/>
<source>View surface</source>
<translation>Pokaż powierzchnię</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1093"/>
<location filename="../mainwindow.cpp" line="1105"/>
<source>No objects selected</source>
<translation>Brak wybranych obiektów</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1097"/>
<location filename="../mainwindow.cpp" line="1109"/>
<source>This operation is irreversible. Do you want to continue?</source>
<translation>Ta operacja jest nieodwracalna. Czy chcesz kontynuować?</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1154"/>
<location filename="../mainwindow.cpp" line="1166"/>
<source>Errors occurred. %1 objects were not updated</source>
<translation>Wystąpiły błędy. %1 obiektów nie zostało zaktualizowanych</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1194"/>
<location filename="../mainwindow.cpp" line="1206"/>
<source>Save to image</source>
<translation>Zapisz jako obraz</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1213"/>
<location filename="../mainwindow.cpp" line="1225"/>
<source>Select maps to convert</source>
<translation>Wybierz mapy do konwersji</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1215"/>
<location filename="../mainwindow.cpp" line="1227"/>
<source>HoMM3 maps(*.h3m)</source>
<translation>Mapy HoMM3(*.h3m)</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1219"/>
<location filename="../mainwindow.cpp" line="1231"/>
<source>Choose directory to save converted maps</source>
<translation>Wybierz folder zapisu skonwertowanych map</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1232"/>
<location filename="../mainwindow.cpp" line="1244"/>
<source>Operation completed</source>
<translation>Operacja zakończona</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1232"/>
<location filename="../mainwindow.cpp" line="1244"/>
<source>Successfully converted %1 maps</source>
<translation>Pomyślnie skonwertowano %1 map</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1236"/>
<location filename="../mainwindow.cpp" line="1248"/>
<source>Failed to convert the map. Abort operation</source>
<translation>Nieudana konwersja mapy. Przerywanie operacji</translation>
</message>
@@ -1574,12 +1574,12 @@
<translation>OK</translation>
</message>
<message>
<location filename="../inspector/towneventdialog.cpp" line="163"/>
<location filename="../inspector/towneventdialog.cpp" line="170"/>
<source>Creature level %1 / Creature level %1 Upgrade</source>
<translation>Stworzenie poziomu %1 / Ulepszone stworzenie poziomu %1</translation>
</message>
<message>
<location filename="../inspector/towneventdialog.cpp" line="205"/>
<location filename="../inspector/towneventdialog.cpp" line="212"/>
<source>Day %1 - %2</source>
<translation>Dzień %1 - %2</translation>
</message>
@@ -1951,7 +1951,7 @@
<translation>Gracze</translation>
</message>
<message>
<location filename="../windownewmap.ui" line="751"/>
<location filename="../windownewmap.ui" line="858"/>
<source>0</source>
<translation>0</translation>
</message>
@@ -2050,42 +2050,62 @@
<translation>Wyspy</translation>
</message>
<message>
<location filename="../windownewmap.ui" line="716"/>
<location filename="../windownewmap.ui" line="713"/>
<source>Roads</source>
<translation type="unfinished">Drogi</translation>
</message>
<message>
<location filename="../windownewmap.ui" line="728"/>
<source>Dirt</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../windownewmap.ui" line="748"/>
<source>Gravel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../windownewmap.ui" line="768"/>
<source>Cobblestone</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../windownewmap.ui" line="813"/>
<source>Template</source>
<translation>Szablon</translation>
</message>
<message>
<location filename="../windownewmap.ui" line="764"/>
<location filename="../windownewmap.ui" line="845"/>
<source>Custom seed</source>
<translation>Własny seed</translation>
</message>
<message>
<location filename="../windownewmap.ui" line="778"/>
<location filename="../windownewmap.ui" line="875"/>
<source>Generate random map</source>
<translation>Generuj mapę losową</translation>
</message>
<message>
<location filename="../windownewmap.ui" line="812"/>
<location filename="../windownewmap.ui" line="909"/>
<source>Ok</source>
<translation>Ok</translation>
</message>
<message>
<location filename="../windownewmap.ui" line="831"/>
<location filename="../windownewmap.ui" line="928"/>
<source>Cancel</source>
<translation>Anuluj</translation>
</message>
<message>
<location filename="../windownewmap.cpp" line="248"/>
<location filename="../windownewmap.cpp" line="256"/>
<source>No template</source>
<translation>Brak szablonu</translation>
</message>
<message>
<location filename="../windownewmap.cpp" line="248"/>
<location filename="../windownewmap.cpp" line="256"/>
<source>No template for parameters specified. Random map cannot be generated.</source>
<translation>Brak szablonu dla wybranych parametrów. Mapa losowa nie może zostać wygenerowana.</translation>
</message>
<message>
<location filename="../windownewmap.cpp" line="268"/>
<location filename="../windownewmap.cpp" line="276"/>
<source>RMG failure</source>
<translation>Niepowodzenie generatora map losowych</translation>
</message>

View File

@@ -42,7 +42,7 @@
<translation>Remover</translation>
</message>
<message>
<location filename="../mapsettings/eventsettings.cpp" line="118"/>
<location filename="../mapsettings/eventsettings.cpp" line="123"/>
<source>New event</source>
<translation>Novo evento</translation>
</message>
@@ -359,7 +359,7 @@
</message>
<message>
<location filename="../mainwindow.ui" line="1051"/>
<location filename="../mainwindow.cpp" line="822"/>
<location filename="../mainwindow.cpp" line="834"/>
<source>View underground</source>
<translation>Visualizar subterrâneo</translation>
</message>
@@ -441,9 +441,9 @@
</message>
<message>
<location filename="../mainwindow.ui" line="1205"/>
<location filename="../mainwindow.cpp" line="1093"/>
<location filename="../mainwindow.cpp" line="1097"/>
<location filename="../mainwindow.cpp" line="1154"/>
<location filename="../mainwindow.cpp" line="1105"/>
<location filename="../mainwindow.cpp" line="1109"/>
<location filename="../mainwindow.cpp" line="1166"/>
<source>Update appearance</source>
<translation>Atualizar aparência</translation>
</message>
@@ -594,72 +594,72 @@
<translation>Todos os mapas suportados (*.vmap *.h3m);;Mapas do VCMI (*.vmap);;Mapas do HoMM3 (*.h3m)</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="475"/>
<location filename="../mainwindow.cpp" line="487"/>
<source>Save map</source>
<translation>Salvar mapa</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="475"/>
<location filename="../mainwindow.cpp" line="487"/>
<source>VCMI maps (*.vmap)</source>
<translation>Mapas do VCMI (*.vmap)</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="664"/>
<location filename="../mainwindow.cpp" line="676"/>
<source>Type</source>
<translation>Tipo</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="826"/>
<location filename="../mainwindow.cpp" line="838"/>
<source>View surface</source>
<translation>Visualizar superfície</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1093"/>
<location filename="../mainwindow.cpp" line="1105"/>
<source>No objects selected</source>
<translation>Nenhum objeto selecionado</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1097"/>
<location filename="../mainwindow.cpp" line="1109"/>
<source>This operation is irreversible. Do you want to continue?</source>
<translation>Esta operação é irreversível. Deseja continuar?</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1154"/>
<location filename="../mainwindow.cpp" line="1166"/>
<source>Errors occurred. %1 objects were not updated</source>
<translation>Ocorreram erros. %1 objetos não foram atualizados</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1194"/>
<location filename="../mainwindow.cpp" line="1206"/>
<source>Save to image</source>
<translation>Salvar como imagem</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1213"/>
<location filename="../mainwindow.cpp" line="1225"/>
<source>Select maps to convert</source>
<translation>Selecionar mapas para converter</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1215"/>
<location filename="../mainwindow.cpp" line="1227"/>
<source>HoMM3 maps(*.h3m)</source>
<translation>Mapas do HoMM3 (*.h3m)</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1219"/>
<location filename="../mainwindow.cpp" line="1231"/>
<source>Choose directory to save converted maps</source>
<translation>Escolher diretório para salvar mapas convertidos</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1232"/>
<location filename="../mainwindow.cpp" line="1244"/>
<source>Operation completed</source>
<translation>Operação concluída</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1232"/>
<location filename="../mainwindow.cpp" line="1244"/>
<source>Successfully converted %1 maps</source>
<translation>%1 mapas foram convertidos com sucesso</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1236"/>
<location filename="../mainwindow.cpp" line="1248"/>
<source>Failed to convert the map. Abort operation</source>
<translation>Falha ao converter o mapa. Abortar operação</translation>
</message>
@@ -1574,12 +1574,12 @@
<translation>OK</translation>
</message>
<message>
<location filename="../inspector/towneventdialog.cpp" line="163"/>
<location filename="../inspector/towneventdialog.cpp" line="170"/>
<source>Creature level %1 / Creature level %1 Upgrade</source>
<translation>Nível da criatura %1 / Nível da criatura %1 - Atualização</translation>
</message>
<message>
<location filename="../inspector/towneventdialog.cpp" line="205"/>
<location filename="../inspector/towneventdialog.cpp" line="212"/>
<source>Day %1 - %2</source>
<translation>Dia %1 - %2</translation>
</message>
@@ -1951,7 +1951,7 @@
<translation>Jogadores</translation>
</message>
<message>
<location filename="../windownewmap.ui" line="751"/>
<location filename="../windownewmap.ui" line="858"/>
<source>0</source>
<translation>0</translation>
</message>
@@ -2050,42 +2050,62 @@
<translation>Ilhas</translation>
</message>
<message>
<location filename="../windownewmap.ui" line="716"/>
<location filename="../windownewmap.ui" line="713"/>
<source>Roads</source>
<translation type="unfinished">Estradas</translation>
</message>
<message>
<location filename="../windownewmap.ui" line="728"/>
<source>Dirt</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../windownewmap.ui" line="748"/>
<source>Gravel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../windownewmap.ui" line="768"/>
<source>Cobblestone</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../windownewmap.ui" line="813"/>
<source>Template</source>
<translation>Modelo</translation>
</message>
<message>
<location filename="../windownewmap.ui" line="764"/>
<location filename="../windownewmap.ui" line="845"/>
<source>Custom seed</source>
<translation>Semente personalizada</translation>
</message>
<message>
<location filename="../windownewmap.ui" line="778"/>
<location filename="../windownewmap.ui" line="875"/>
<source>Generate random map</source>
<translation>Gerar mapa aleatório</translation>
</message>
<message>
<location filename="../windownewmap.ui" line="812"/>
<location filename="../windownewmap.ui" line="909"/>
<source>Ok</source>
<translation>Ok</translation>
</message>
<message>
<location filename="../windownewmap.ui" line="831"/>
<location filename="../windownewmap.ui" line="928"/>
<source>Cancel</source>
<translation>Cancelar</translation>
</message>
<message>
<location filename="../windownewmap.cpp" line="248"/>
<location filename="../windownewmap.cpp" line="256"/>
<source>No template</source>
<translation>Sem modelo</translation>
</message>
<message>
<location filename="../windownewmap.cpp" line="248"/>
<location filename="../windownewmap.cpp" line="256"/>
<source>No template for parameters specified. Random map cannot be generated.</source>
<translation>Sem modelo para os parâmetros especificados. O mapa aleatório não pode set gerado.</translation>
</message>
<message>
<location filename="../windownewmap.cpp" line="268"/>
<location filename="../windownewmap.cpp" line="276"/>
<source>RMG failure</source>
<translation>Falha do GMA</translation>
</message>

View File

@@ -42,7 +42,7 @@
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mapsettings/eventsettings.cpp" line="118"/>
<location filename="../mapsettings/eventsettings.cpp" line="123"/>
<source>New event</source>
<translation type="unfinished"></translation>
</message>
@@ -359,7 +359,7 @@
</message>
<message>
<location filename="../mainwindow.ui" line="1051"/>
<location filename="../mainwindow.cpp" line="822"/>
<location filename="../mainwindow.cpp" line="834"/>
<source>View underground</source>
<translation>Вид на подземелье</translation>
</message>
@@ -441,9 +441,9 @@
</message>
<message>
<location filename="../mainwindow.ui" line="1205"/>
<location filename="../mainwindow.cpp" line="1093"/>
<location filename="../mainwindow.cpp" line="1097"/>
<location filename="../mainwindow.cpp" line="1154"/>
<location filename="../mainwindow.cpp" line="1105"/>
<location filename="../mainwindow.cpp" line="1109"/>
<location filename="../mainwindow.cpp" line="1166"/>
<source>Update appearance</source>
<translation>Обновить вид</translation>
</message>
@@ -594,72 +594,72 @@
<translation>Все поддерживаемые карты (*.vmap *.h3m);;Карты VCMI (*.vmap);;Карты Героев III (*.h3m)</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="475"/>
<location filename="../mainwindow.cpp" line="487"/>
<source>Save map</source>
<translation>Сохранить карту</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="475"/>
<location filename="../mainwindow.cpp" line="487"/>
<source>VCMI maps (*.vmap)</source>
<translation>Карты VCMI (*.vmap)</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="664"/>
<location filename="../mainwindow.cpp" line="676"/>
<source>Type</source>
<translation>Тип</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="826"/>
<location filename="../mainwindow.cpp" line="838"/>
<source>View surface</source>
<translation>Вид на поверхность</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1093"/>
<location filename="../mainwindow.cpp" line="1105"/>
<source>No objects selected</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1097"/>
<location filename="../mainwindow.cpp" line="1109"/>
<source>This operation is irreversible. Do you want to continue?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1154"/>
<location filename="../mainwindow.cpp" line="1166"/>
<source>Errors occurred. %1 objects were not updated</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1194"/>
<location filename="../mainwindow.cpp" line="1206"/>
<source>Save to image</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1213"/>
<location filename="../mainwindow.cpp" line="1225"/>
<source>Select maps to convert</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1215"/>
<location filename="../mainwindow.cpp" line="1227"/>
<source>HoMM3 maps(*.h3m)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1219"/>
<location filename="../mainwindow.cpp" line="1231"/>
<source>Choose directory to save converted maps</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1232"/>
<location filename="../mainwindow.cpp" line="1244"/>
<source>Operation completed</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1232"/>
<location filename="../mainwindow.cpp" line="1244"/>
<source>Successfully converted %1 maps</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1236"/>
<location filename="../mainwindow.cpp" line="1248"/>
<source>Failed to convert the map. Abort operation</source>
<translation type="unfinished"></translation>
</message>
@@ -1574,12 +1574,12 @@
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../inspector/towneventdialog.cpp" line="163"/>
<location filename="../inspector/towneventdialog.cpp" line="170"/>
<source>Creature level %1 / Creature level %1 Upgrade</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../inspector/towneventdialog.cpp" line="205"/>
<location filename="../inspector/towneventdialog.cpp" line="212"/>
<source>Day %1 - %2</source>
<translation type="unfinished"></translation>
</message>
@@ -1951,7 +1951,7 @@
<translation>Игроки</translation>
</message>
<message>
<location filename="../windownewmap.ui" line="751"/>
<location filename="../windownewmap.ui" line="858"/>
<source>0</source>
<translation>0</translation>
</message>
@@ -2050,42 +2050,62 @@
<translation>Острова</translation>
</message>
<message>
<location filename="../windownewmap.ui" line="716"/>
<location filename="../windownewmap.ui" line="713"/>
<source>Roads</source>
<translation type="unfinished">Дороги</translation>
</message>
<message>
<location filename="../windownewmap.ui" line="728"/>
<source>Dirt</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../windownewmap.ui" line="748"/>
<source>Gravel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../windownewmap.ui" line="768"/>
<source>Cobblestone</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../windownewmap.ui" line="813"/>
<source>Template</source>
<translation>Шаблон</translation>
</message>
<message>
<location filename="../windownewmap.ui" line="764"/>
<location filename="../windownewmap.ui" line="845"/>
<source>Custom seed</source>
<translation>Пользовательское зерно</translation>
</message>
<message>
<location filename="../windownewmap.ui" line="778"/>
<location filename="../windownewmap.ui" line="875"/>
<source>Generate random map</source>
<translation>Сгенерировать случайную карту</translation>
</message>
<message>
<location filename="../windownewmap.ui" line="812"/>
<location filename="../windownewmap.ui" line="909"/>
<source>Ok</source>
<translation>ОК</translation>
</message>
<message>
<location filename="../windownewmap.ui" line="831"/>
<location filename="../windownewmap.ui" line="928"/>
<source>Cancel</source>
<translation>Отмена</translation>
</message>
<message>
<location filename="../windownewmap.cpp" line="248"/>
<location filename="../windownewmap.cpp" line="256"/>
<source>No template</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../windownewmap.cpp" line="248"/>
<location filename="../windownewmap.cpp" line="256"/>
<source>No template for parameters specified. Random map cannot be generated.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../windownewmap.cpp" line="268"/>
<location filename="../windownewmap.cpp" line="276"/>
<source>RMG failure</source>
<translation type="unfinished"></translation>
</message>

View File

@@ -42,7 +42,7 @@
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mapsettings/eventsettings.cpp" line="118"/>
<location filename="../mapsettings/eventsettings.cpp" line="123"/>
<source>New event</source>
<translation type="unfinished"></translation>
</message>
@@ -359,7 +359,7 @@
</message>
<message>
<location filename="../mainwindow.ui" line="1051"/>
<location filename="../mainwindow.cpp" line="822"/>
<location filename="../mainwindow.cpp" line="834"/>
<source>View underground</source>
<translation>Ver subterráneo</translation>
</message>
@@ -441,9 +441,9 @@
</message>
<message>
<location filename="../mainwindow.ui" line="1205"/>
<location filename="../mainwindow.cpp" line="1093"/>
<location filename="../mainwindow.cpp" line="1097"/>
<location filename="../mainwindow.cpp" line="1154"/>
<location filename="../mainwindow.cpp" line="1105"/>
<location filename="../mainwindow.cpp" line="1109"/>
<location filename="../mainwindow.cpp" line="1166"/>
<source>Update appearance</source>
<translation>Actualizar apariencia</translation>
</message>
@@ -594,72 +594,72 @@
<translation>Todos los mapas soportados (*.vmap *.h3m);;Mapas VCMI (*.vmap);;Mapas HoMM3 (*.h3m)</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="475"/>
<location filename="../mainwindow.cpp" line="487"/>
<source>Save map</source>
<translation>Guardar mapa</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="475"/>
<location filename="../mainwindow.cpp" line="487"/>
<source>VCMI maps (*.vmap)</source>
<translation>Mapas VCMI (*.vmap)</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="664"/>
<location filename="../mainwindow.cpp" line="676"/>
<source>Type</source>
<translation>Tipo</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="826"/>
<location filename="../mainwindow.cpp" line="838"/>
<source>View surface</source>
<translation>Ver superficie</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1093"/>
<location filename="../mainwindow.cpp" line="1105"/>
<source>No objects selected</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1097"/>
<location filename="../mainwindow.cpp" line="1109"/>
<source>This operation is irreversible. Do you want to continue?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1154"/>
<location filename="../mainwindow.cpp" line="1166"/>
<source>Errors occurred. %1 objects were not updated</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1194"/>
<location filename="../mainwindow.cpp" line="1206"/>
<source>Save to image</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1213"/>
<location filename="../mainwindow.cpp" line="1225"/>
<source>Select maps to convert</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1215"/>
<location filename="../mainwindow.cpp" line="1227"/>
<source>HoMM3 maps(*.h3m)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1219"/>
<location filename="../mainwindow.cpp" line="1231"/>
<source>Choose directory to save converted maps</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1232"/>
<location filename="../mainwindow.cpp" line="1244"/>
<source>Operation completed</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1232"/>
<location filename="../mainwindow.cpp" line="1244"/>
<source>Successfully converted %1 maps</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1236"/>
<location filename="../mainwindow.cpp" line="1248"/>
<source>Failed to convert the map. Abort operation</source>
<translation type="unfinished"></translation>
</message>
@@ -1574,12 +1574,12 @@
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../inspector/towneventdialog.cpp" line="163"/>
<location filename="../inspector/towneventdialog.cpp" line="170"/>
<source>Creature level %1 / Creature level %1 Upgrade</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../inspector/towneventdialog.cpp" line="205"/>
<location filename="../inspector/towneventdialog.cpp" line="212"/>
<source>Day %1 - %2</source>
<translation type="unfinished"></translation>
</message>
@@ -1951,7 +1951,7 @@
<translation>Jugadores</translation>
</message>
<message>
<location filename="../windownewmap.ui" line="751"/>
<location filename="../windownewmap.ui" line="858"/>
<source>0</source>
<translation>0</translation>
</message>
@@ -2050,42 +2050,62 @@
<translation>Islas</translation>
</message>
<message>
<location filename="../windownewmap.ui" line="716"/>
<location filename="../windownewmap.ui" line="713"/>
<source>Roads</source>
<translation type="unfinished">Caminos</translation>
</message>
<message>
<location filename="../windownewmap.ui" line="728"/>
<source>Dirt</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../windownewmap.ui" line="748"/>
<source>Gravel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../windownewmap.ui" line="768"/>
<source>Cobblestone</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../windownewmap.ui" line="813"/>
<source>Template</source>
<translation>Plantilla</translation>
</message>
<message>
<location filename="../windownewmap.ui" line="764"/>
<location filename="../windownewmap.ui" line="845"/>
<source>Custom seed</source>
<translation>Semilla personalizada</translation>
</message>
<message>
<location filename="../windownewmap.ui" line="778"/>
<location filename="../windownewmap.ui" line="875"/>
<source>Generate random map</source>
<translation>Generar un mapa aleatorio</translation>
</message>
<message>
<location filename="../windownewmap.ui" line="812"/>
<location filename="../windownewmap.ui" line="909"/>
<source>Ok</source>
<translation>Aceptar</translation>
</message>
<message>
<location filename="../windownewmap.ui" line="831"/>
<location filename="../windownewmap.ui" line="928"/>
<source>Cancel</source>
<translation>Cancelar</translation>
</message>
<message>
<location filename="../windownewmap.cpp" line="248"/>
<location filename="../windownewmap.cpp" line="256"/>
<source>No template</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../windownewmap.cpp" line="248"/>
<location filename="../windownewmap.cpp" line="256"/>
<source>No template for parameters specified. Random map cannot be generated.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../windownewmap.cpp" line="268"/>
<location filename="../windownewmap.cpp" line="276"/>
<source>RMG failure</source>
<translation type="unfinished"></translation>
</message>

View File

@@ -42,7 +42,7 @@
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mapsettings/eventsettings.cpp" line="118"/>
<location filename="../mapsettings/eventsettings.cpp" line="123"/>
<source>New event</source>
<translation type="unfinished"></translation>
</message>
@@ -359,7 +359,7 @@
</message>
<message>
<location filename="../mainwindow.ui" line="1051"/>
<location filename="../mainwindow.cpp" line="822"/>
<location filename="../mainwindow.cpp" line="834"/>
<source>View underground</source>
<translation>Дивитись підземелля</translation>
</message>
@@ -441,9 +441,9 @@
</message>
<message>
<location filename="../mainwindow.ui" line="1205"/>
<location filename="../mainwindow.cpp" line="1093"/>
<location filename="../mainwindow.cpp" line="1097"/>
<location filename="../mainwindow.cpp" line="1154"/>
<location filename="../mainwindow.cpp" line="1105"/>
<location filename="../mainwindow.cpp" line="1109"/>
<location filename="../mainwindow.cpp" line="1166"/>
<source>Update appearance</source>
<translation>Оновити вигляд</translation>
</message>
@@ -594,72 +594,72 @@
<translation>Всі підтримувані мапи (*.vmap *.h3m);;Мапи VCMI (*.vmap);;Мапи HoMM3 (*.h3m)</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="475"/>
<location filename="../mainwindow.cpp" line="487"/>
<source>Save map</source>
<translation>Зберегти мапу</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="475"/>
<location filename="../mainwindow.cpp" line="487"/>
<source>VCMI maps (*.vmap)</source>
<translation>Мапи VCMI</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="664"/>
<location filename="../mainwindow.cpp" line="676"/>
<source>Type</source>
<translation>Тип</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="826"/>
<location filename="../mainwindow.cpp" line="838"/>
<source>View surface</source>
<translation>Дивитись поверхню</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1093"/>
<location filename="../mainwindow.cpp" line="1105"/>
<source>No objects selected</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1097"/>
<location filename="../mainwindow.cpp" line="1109"/>
<source>This operation is irreversible. Do you want to continue?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1154"/>
<location filename="../mainwindow.cpp" line="1166"/>
<source>Errors occurred. %1 objects were not updated</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1194"/>
<location filename="../mainwindow.cpp" line="1206"/>
<source>Save to image</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1213"/>
<location filename="../mainwindow.cpp" line="1225"/>
<source>Select maps to convert</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1215"/>
<location filename="../mainwindow.cpp" line="1227"/>
<source>HoMM3 maps(*.h3m)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1219"/>
<location filename="../mainwindow.cpp" line="1231"/>
<source>Choose directory to save converted maps</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1232"/>
<location filename="../mainwindow.cpp" line="1244"/>
<source>Operation completed</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1232"/>
<location filename="../mainwindow.cpp" line="1244"/>
<source>Successfully converted %1 maps</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1236"/>
<location filename="../mainwindow.cpp" line="1248"/>
<source>Failed to convert the map. Abort operation</source>
<translation type="unfinished"></translation>
</message>
@@ -1574,12 +1574,12 @@
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../inspector/towneventdialog.cpp" line="163"/>
<location filename="../inspector/towneventdialog.cpp" line="170"/>
<source>Creature level %1 / Creature level %1 Upgrade</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../inspector/towneventdialog.cpp" line="205"/>
<location filename="../inspector/towneventdialog.cpp" line="212"/>
<source>Day %1 - %2</source>
<translation type="unfinished"></translation>
</message>
@@ -1951,7 +1951,7 @@
<translation>Гравців</translation>
</message>
<message>
<location filename="../windownewmap.ui" line="751"/>
<location filename="../windownewmap.ui" line="858"/>
<source>0</source>
<translation>0</translation>
</message>
@@ -2050,42 +2050,62 @@
<translation>Острови</translation>
</message>
<message>
<location filename="../windownewmap.ui" line="716"/>
<location filename="../windownewmap.ui" line="713"/>
<source>Roads</source>
<translation type="unfinished">Шляхи</translation>
</message>
<message>
<location filename="../windownewmap.ui" line="728"/>
<source>Dirt</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../windownewmap.ui" line="748"/>
<source>Gravel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../windownewmap.ui" line="768"/>
<source>Cobblestone</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../windownewmap.ui" line="813"/>
<source>Template</source>
<translation>Шаблон</translation>
</message>
<message>
<location filename="../windownewmap.ui" line="764"/>
<location filename="../windownewmap.ui" line="845"/>
<source>Custom seed</source>
<translation>Користувацьке зерно</translation>
</message>
<message>
<location filename="../windownewmap.ui" line="778"/>
<location filename="../windownewmap.ui" line="875"/>
<source>Generate random map</source>
<translation>Згенерувати випадкову карту</translation>
</message>
<message>
<location filename="../windownewmap.ui" line="812"/>
<location filename="../windownewmap.ui" line="909"/>
<source>Ok</source>
<translation>Підтвердити</translation>
</message>
<message>
<location filename="../windownewmap.ui" line="831"/>
<location filename="../windownewmap.ui" line="928"/>
<source>Cancel</source>
<translation>Скасувати</translation>
</message>
<message>
<location filename="../windownewmap.cpp" line="248"/>
<location filename="../windownewmap.cpp" line="256"/>
<source>No template</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../windownewmap.cpp" line="248"/>
<location filename="../windownewmap.cpp" line="256"/>
<source>No template for parameters specified. Random map cannot be generated.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../windownewmap.cpp" line="268"/>
<location filename="../windownewmap.cpp" line="276"/>
<source>RMG failure</source>
<translation type="unfinished"></translation>
</message>

View File

@@ -42,7 +42,7 @@
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mapsettings/eventsettings.cpp" line="118"/>
<location filename="../mapsettings/eventsettings.cpp" line="123"/>
<source>New event</source>
<translation type="unfinished"></translation>
</message>
@@ -359,7 +359,7 @@
</message>
<message>
<location filename="../mainwindow.ui" line="1051"/>
<location filename="../mainwindow.cpp" line="822"/>
<location filename="../mainwindow.cpp" line="834"/>
<source>View underground</source>
<translation>Xem hang ngầm</translation>
</message>
@@ -441,9 +441,9 @@
</message>
<message>
<location filename="../mainwindow.ui" line="1205"/>
<location filename="../mainwindow.cpp" line="1093"/>
<location filename="../mainwindow.cpp" line="1097"/>
<location filename="../mainwindow.cpp" line="1154"/>
<location filename="../mainwindow.cpp" line="1105"/>
<location filename="../mainwindow.cpp" line="1109"/>
<location filename="../mainwindow.cpp" line="1166"/>
<source>Update appearance</source>
<translation>Cập nhật hiện thị</translation>
</message>
@@ -594,72 +594,72 @@
<translation>Tất cả bản đ hỗ trợ (*.vmap *.h3m);;Bản đ VCMI (*.vmap);;Bản đ HoMM3 (*.h3m)</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="475"/>
<location filename="../mainwindow.cpp" line="487"/>
<source>Save map</source>
<translation>Lưu bản đ</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="475"/>
<location filename="../mainwindow.cpp" line="487"/>
<source>VCMI maps (*.vmap)</source>
<translation>Bản đ VCMI (*.vmap)</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="664"/>
<location filename="../mainwindow.cpp" line="676"/>
<source>Type</source>
<translation>Loại</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="826"/>
<location filename="../mainwindow.cpp" line="838"/>
<source>View surface</source>
<translation>Xem bề mặt</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1093"/>
<location filename="../mainwindow.cpp" line="1105"/>
<source>No objects selected</source>
<translation>Không mục tiêu đưc chọn</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1097"/>
<location filename="../mainwindow.cpp" line="1109"/>
<source>This operation is irreversible. Do you want to continue?</source>
<translation>Thao tác này không thể đo ngược. Bạn muốn tiếp tục?</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1154"/>
<location filename="../mainwindow.cpp" line="1166"/>
<source>Errors occurred. %1 objects were not updated</source>
<translation>Xảy ra lỗi. %1 mục tiêu không đưc cập nhật</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1194"/>
<location filename="../mainwindow.cpp" line="1206"/>
<source>Save to image</source>
<translation>Lưu thành nh</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1213"/>
<location filename="../mainwindow.cpp" line="1225"/>
<source>Select maps to convert</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1215"/>
<location filename="../mainwindow.cpp" line="1227"/>
<source>HoMM3 maps(*.h3m)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1219"/>
<location filename="../mainwindow.cpp" line="1231"/>
<source>Choose directory to save converted maps</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1232"/>
<location filename="../mainwindow.cpp" line="1244"/>
<source>Operation completed</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1232"/>
<location filename="../mainwindow.cpp" line="1244"/>
<source>Successfully converted %1 maps</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="1236"/>
<location filename="../mainwindow.cpp" line="1248"/>
<source>Failed to convert the map. Abort operation</source>
<translation type="unfinished"></translation>
</message>
@@ -1574,12 +1574,12 @@
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../inspector/towneventdialog.cpp" line="163"/>
<location filename="../inspector/towneventdialog.cpp" line="170"/>
<source>Creature level %1 / Creature level %1 Upgrade</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../inspector/towneventdialog.cpp" line="205"/>
<location filename="../inspector/towneventdialog.cpp" line="212"/>
<source>Day %1 - %2</source>
<translation type="unfinished"></translation>
</message>
@@ -1951,7 +1951,7 @@
<translation>Người chơi</translation>
</message>
<message>
<location filename="../windownewmap.ui" line="751"/>
<location filename="../windownewmap.ui" line="858"/>
<source>0</source>
<translation>0</translation>
</message>
@@ -2050,42 +2050,62 @@
<translation>Các đo</translation>
</message>
<message>
<location filename="../windownewmap.ui" line="716"/>
<location filename="../windownewmap.ui" line="713"/>
<source>Roads</source>
<translation type="unfinished">Đưng</translation>
</message>
<message>
<location filename="../windownewmap.ui" line="728"/>
<source>Dirt</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../windownewmap.ui" line="748"/>
<source>Gravel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../windownewmap.ui" line="768"/>
<source>Cobblestone</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../windownewmap.ui" line="813"/>
<source>Template</source>
<translation>Mẫu</translation>
</message>
<message>
<location filename="../windownewmap.ui" line="764"/>
<location filename="../windownewmap.ui" line="845"/>
<source>Custom seed</source>
<translation>Tùy chỉnh ban đu</translation>
</message>
<message>
<location filename="../windownewmap.ui" line="778"/>
<location filename="../windownewmap.ui" line="875"/>
<source>Generate random map</source>
<translation>Tạo bản đ ngẫu nhiên</translation>
</message>
<message>
<location filename="../windownewmap.ui" line="812"/>
<location filename="../windownewmap.ui" line="909"/>
<source>Ok</source>
<translation>Đng ý</translation>
</message>
<message>
<location filename="../windownewmap.ui" line="831"/>
<location filename="../windownewmap.ui" line="928"/>
<source>Cancel</source>
<translation>Hủy</translation>
</message>
<message>
<location filename="../windownewmap.cpp" line="248"/>
<location filename="../windownewmap.cpp" line="256"/>
<source>No template</source>
<translation>Không dùng mẫu</translation>
</message>
<message>
<location filename="../windownewmap.cpp" line="248"/>
<location filename="../windownewmap.cpp" line="256"/>
<source>No template for parameters specified. Random map cannot be generated.</source>
<translation>Không mẫu cho tham số chỉ đnh. Bản đ ngẫu nhiên không thể tạo</translation>
</message>
<message>
<location filename="../windownewmap.cpp" line="268"/>
<location filename="../windownewmap.cpp" line="276"/>
<source>RMG failure</source>
<translation>Tạo bản đ ngẫu nhiên thất bại</translation>
</message>

View File

@@ -276,7 +276,7 @@ bool BattleActionProcessor::doAttackAction(const CBattleInfoCallback & battle, c
for (int i = 0; i < totalAttacks; ++i)
{
//first strike
if(i == 0 && firstStrike && retaliation && !stack->hasBonusOfType(BonusType::BLOCKS_RETALIATION))
if(i == 0 && firstStrike && retaliation && !stack->hasBonusOfType(BonusType::BLOCKS_RETALIATION) && !stack->hasBonusOfType(BonusType::INVINCIBLE))
{
makeAttack(battle, destinationStack, stack, 0, stack->getPosition(), true, false, true);
}
@@ -303,6 +303,7 @@ bool BattleActionProcessor::doAttackAction(const CBattleInfoCallback & battle, c
//we check retaliation twice, so if it unblocked during attack it will work only on next attack
if(stack->alive()
&& !stack->hasBonusOfType(BonusType::BLOCKS_RETALIATION)
&& !stack->hasBonusOfType(BonusType::INVINCIBLE)
&& (i == 0 && !firstStrike)
&& retaliation && destinationStack->ableToRetaliate())
{
@@ -347,20 +348,27 @@ bool BattleActionProcessor::doShootAction(const CBattleInfoCallback & battle, co
return false;
}
if (!destinationStack)
const bool emptyTileAreaAttack = battle.battleCanTargetEmptyHex(stack);
if (!destinationStack && !emptyTileAreaAttack)
{
gameHandler->complain("No target to shoot!");
return false;
}
static const auto firstStrikeSelector = Selector::typeSubtype(BonusType::FIRST_STRIKE, BonusCustomSubtype::damageTypeAll).Or(Selector::typeSubtype(BonusType::FIRST_STRIKE, BonusCustomSubtype::damageTypeRanged));
const bool firstStrike = destinationStack->hasBonus(firstStrikeSelector);
bool firstStrike = false;
if(!emptyTileAreaAttack)
{
static const auto firstStrikeSelector = Selector::typeSubtype(BonusType::FIRST_STRIKE, BonusCustomSubtype::damageTypeAll).Or(Selector::typeSubtype(BonusType::FIRST_STRIKE, BonusCustomSubtype::damageTypeRanged));
firstStrike = destinationStack->hasBonus(firstStrikeSelector);
}
if (!firstStrike)
makeAttack(battle, stack, destinationStack, 0, destination, true, true, false);
//ranged counterattack
if (destinationStack->hasBonusOfType(BonusType::RANGED_RETALIATION)
if (!emptyTileAreaAttack
&& destinationStack->hasBonusOfType(BonusType::RANGED_RETALIATION)
&& !stack->hasBonusOfType(BonusType::BLOCKS_RANGED_RETALIATION)
&& destinationStack->ableToRetaliate()
&& battle.battleCanShoot(destinationStack, stack->getPosition())
@@ -381,11 +389,9 @@ bool BattleActionProcessor::doShootAction(const CBattleInfoCallback & battle, co
for(int i = firstStrike ? 0:1; i < totalRangedAttacks; ++i)
{
if(
stack->alive()
&& destinationStack->alive()
&& stack->shots.canUse()
)
if(stack->alive()
&& (emptyTileAreaAttack || destinationStack->alive())
&& stack->shots.canUse())
{
makeAttack(battle, stack, destinationStack, 0, destination, false, true, false);
}
@@ -907,7 +913,7 @@ int BattleActionProcessor::moveStack(const CBattleInfoCallback & battle, int sta
void BattleActionProcessor::makeAttack(const CBattleInfoCallback & battle, const CStack * attacker, const CStack * defender, int distance, BattleHex targetHex, bool first, bool ranged, bool counter)
{
if(first && !counter)
if(defender && first && !counter)
handleAttackBeforeCasting(battle, ranged, attacker, defender);
FireShieldInfo fireShield;
@@ -962,7 +968,7 @@ void BattleActionProcessor::makeAttack(const CBattleInfoCallback & battle, const
battle::HealInfo healInfo;
// only primary target
if(defender->alive())
if(defender && defender->alive())
applyBattleEffects(battle, bat, attackerState, fireShield, defender, healInfo, distance, false);
//multiple-hex normal attack
@@ -1044,7 +1050,8 @@ void BattleActionProcessor::makeAttack(const CBattleInfoCallback & battle, const
addGenericDamageLog(blm, attackerState, totalDamage);
addGenericKilledLog(blm, defender, totalKills, multipleTargets);
if(defender)
addGenericKilledLog(blm, defender, totalKills, multipleTargets);
}
// drain life effect (as well as log entry) must be applied after the attack
@@ -1110,7 +1117,8 @@ void BattleActionProcessor::makeAttack(const CBattleInfoCallback & battle, const
gameHandler->sendAndApply(&blm);
handleAfterAttackCasting(battle, ranged, attacker, defender);
if(defender)
handleAfterAttackCasting(battle, ranged, attacker, defender);
}
void BattleActionProcessor::attackCasting(const CBattleInfoCallback & battle, bool ranged, BonusType attackMode, const battle::Unit * attacker, const CStack * defender)