Merge branch 'l10n' into 'master'

Dehardcode non-game-specific localization GMSTs

See merge request OpenMW/openmw!2855
depth-refraction
uramer 2 years ago
commit ee1551f02c

@ -679,7 +679,7 @@ namespace MWGui
void Console::updateConsoleTitle()
{
std::string title = "#{sConsoleTitle}";
std::string title = "#{OMWEngine:ConsoleWindow}";
if (!mConsoleMode.empty())
title = mConsoleMode + " " + title;
if (!mPtr.isEmpty())

@ -467,7 +467,7 @@ namespace MWGui
void HUD::unsetSelectedSpell()
{
std::string_view spellName = "#{sNone}";
std::string_view spellName = "#{Interface:None}";
if (spellName != mSpellName && mSpellVisible)
{
mWeaponSpellTimer = 5.0f;

@ -126,7 +126,7 @@ namespace MWGui
}
std::vector<std::string> buttons;
buttons.emplace_back("#{sOk}");
buttons.emplace_back("#{Interface:OK}");
MWBase::Environment::get().getWindowManager()->interactiveMessageBox(message, buttons);
}
}

@ -107,7 +107,7 @@ namespace MWGui
else
{
ConfirmationDialog* dialog = winMgr->getConfirmationDialog();
dialog->askForConfirmation("#{sMessage2}");
dialog->askForConfirmation("#{OMWEngine:QuitGameConfirmation}");
dialog->eventOkClicked.clear();
dialog->eventOkClicked += MyGUI::newDelegate(this, &MainMenu::onExitConfirmed);
dialog->eventCancelClicked.clear();
@ -120,7 +120,7 @@ namespace MWGui
else
{
ConfirmationDialog* dialog = winMgr->getConfirmationDialog();
dialog->askForConfirmation("#{sNotifyMessage54}");
dialog->askForConfirmation("#{OMWEngine:NewGameConfirmation}");
dialog->eventOkClicked.clear();
dialog->eventOkClicked += MyGUI::newDelegate(this, &MainMenu::onNewGameConfirmed);
dialog->eventCancelClicked.clear();

@ -316,7 +316,7 @@ namespace MWGui
std::string_view version = technique->getVersion().empty() ? NA : technique->getVersion();
std::string_view description = technique->getDescription().empty() ? NA : technique->getDescription();
auto serializeBool = [](bool value) { return value ? "#{sYes}" : "#{sNo}"; };
auto serializeBool = [](bool value) { return value ? "#{Interface:Yes}" : "#{Interface:No}"; };
const auto flags = technique->getFlags();

@ -85,7 +85,7 @@ namespace MWGui
void SaveGameDialog::confirmDeleteSave()
{
ConfirmationDialog* dialog = MWBase::Environment::get().getWindowManager()->getConfirmationDialog();
dialog->askForConfirmation("#{sMessage3}");
dialog->askForConfirmation("#{OMWEngine:DeleteGameConfirmation}");
dialog->eventOkClicked.clear();
dialog->eventOkClicked += MyGUI::newDelegate(this, &SaveGameDialog::onDeleteSlotConfirmed);
dialog->eventCancelClicked.clear();
@ -268,7 +268,7 @@ namespace MWGui
if (mCurrentSlot != nullptr && !reallySure)
{
ConfirmationDialog* dialog = MWBase::Environment::get().getWindowManager()->getConfirmationDialog();
dialog->askForConfirmation("#{sMessage4}");
dialog->askForConfirmation("#{OMWEngine:OverwriteGameConfirmation}");
dialog->eventOkClicked.clear();
dialog->eventOkClicked += MyGUI::newDelegate(this, &SaveGameDialog::onConfirmationGiven);
dialog->eventCancelClicked.clear();
@ -277,7 +277,7 @@ namespace MWGui
}
if (mSaveNameEdit->getCaption().empty())
{
MWBase::Environment::get().getWindowManager()->messageBox("#{sNotifyMessage65}");
MWBase::Environment::get().getWindowManager()->messageBox("#{OMWEngine:EmptySaveNameError}");
return;
}
}
@ -289,7 +289,7 @@ namespace MWGui
if (state == MWBase::StateManager::State_Running && !reallySure)
{
ConfirmationDialog* dialog = MWBase::Environment::get().getWindowManager()->getConfirmationDialog();
dialog->askForConfirmation("#{sMessage1}");
dialog->askForConfirmation("#{OMWEngine:LoadGameConfirmation}");
dialog->eventOkClicked.clear();
dialog->eventOkClicked += MyGUI::newDelegate(this, &SaveGameDialog::onConfirmationGiven);
dialog->eventCancelClicked.clear();
@ -425,7 +425,7 @@ namespace MWGui
text << mCurrentSlot->mProfile.mInGameTime.mDay << " "
<< MWBase::Environment::get().getWorld()->getMonthName(mCurrentSlot->mProfile.mInGameTime.mMonth) << " "
<< hour << " " << (pm ? "#{sSaveMenuHelp05}" : "#{sSaveMenuHelp04}");
<< hour << " " << (pm ? "#{Calendar:pm}" : "#{Calendar:am}");
if (Settings::Manager::getBool("timeplayed", "Saves"))
{

@ -163,9 +163,9 @@ namespace MWGui
hour = 12;
ESM::EpochTimeStamp currentDate = MWBase::Environment::get().getWorld()->getEpochTimeStamp();
std::string daysPassed
= Misc::StringUtils::format("(#{sDay} %i)", MWBase::Environment::get().getWorld()->getTimeStamp().getDay());
std::string_view formattedHour(pm ? "#{sSaveMenuHelp05}" : "#{sSaveMenuHelp04}");
std::string daysPassed = Misc::StringUtils::format(
"(#{Calendar:day} %i)", MWBase::Environment::get().getWorld()->getTimeStamp().getDay());
std::string_view formattedHour(pm ? "#{Calendar:pm}" : "#{Calendar:am}");
std::string dateTimeText
= Misc::StringUtils::format("%i %s %s %i %s", currentDate.mDay, month, daysPassed, hour, formattedHour);
mDateTimeText->setCaptionWithReplacing(dateTimeText);

@ -1408,7 +1408,7 @@ namespace MWGui
if (player->getDrawState() == MWMechanics::DrawState::Spell)
player->setDrawState(MWMechanics::DrawState::Nothing);
mSpellWindow->setTitle("#{sNone}");
mSpellWindow->setTitle("#{Interface:None}");
}
void WindowManager::unsetSelectedWeapon()

@ -473,7 +473,7 @@ namespace MWInput
case A_CycleWeaponRight:
return "#{sNextWeapon}";
case A_Console:
return "#{sConsoleTitle}";
return "#{OMWEngine:ConsoleWindow}";
case A_Run:
return "#{sRun}";
case A_Sneak:
@ -528,7 +528,7 @@ namespace MWInput
std::string BindingsManager::getActionKeyBindingName(int action)
{
if (mInputBinder->getChannel(action)->getControlsCount() == 0)
return "#{sNone}";
return "#{Interface:None}";
ICS::Control* c = mInputBinder->getChannel(action)->getAttachedControls().front().control;
@ -551,16 +551,16 @@ namespace MWInput
case ICS::InputControlSystem::MouseWheelClick::LEFT:
return "Mouse Wheel Left";
default:
return "#{sNone}";
return "#{Interface:None}";
}
else
return "#{sNone}";
return "#{Interface:None}";
}
std::string BindingsManager::getActionControllerBindingName(int action)
{
if (mInputBinder->getChannel(action)->getControlsCount() == 0)
return "#{sNone}";
return "#{Interface:None}";
ICS::Control* c = mInputBinder->getChannel(action)->getAttachedControls().front().control;
@ -573,7 +573,7 @@ namespace MWInput
return SDLUtil::sdlControllerButtonToString(
mInputBinder->getJoystickButtonBinding(c, sFakeDeviceId, ICS::Control::INCREASE));
else
return "#{sNone}";
return "#{Interface:None}";
}
const std::initializer_list<int>& BindingsManager::getActionKeySorting()

@ -10,6 +10,8 @@
#include <components/esm3/loadcell.hpp>
#include <components/esm3/loadclas.hpp>
#include <components/l10n/manager.hpp>
#include <components/loadinglistener/loadinglistener.hpp>
#include <components/files/conversion.hpp>
@ -124,11 +126,11 @@ void MWState::StateManager::askLoadRecent()
{
MWState::Slot lastSave = *character->begin();
std::vector<std::string> buttons;
buttons.emplace_back("#{sYes}");
buttons.emplace_back("#{sNo}");
buttons.emplace_back("#{Interface:Yes}");
buttons.emplace_back("#{Interface:No}");
std::string message
= MWBase::Environment::get().getL10nManager()->getMessage("OMWEngine", "AskLoadLastSave");
std::string_view tag = "%s";
std::string message{ MWBase::Environment::get().getWindowManager()->getGameSettingString(
"sLoadLastSaveMsg", tag) };
size_t pos = message.find(tag);
message.replace(pos, tag.length(), lastSave.mProfile.mDescription);
MWBase::Environment::get().getWindowManager()->interactiveMessageBox(message, buttons);
@ -172,7 +174,7 @@ void MWState::StateManager::newGame(bool bypass)
MWBase::Environment::get().getWindowManager()->pushGuiMode(MWGui::GM_MainMenu);
std::vector<std::string> buttons;
buttons.emplace_back("#{sOk}");
buttons.emplace_back("#{Interface:OK}");
MWBase::Environment::get().getWindowManager()->interactiveMessageBox(error.str(), buttons);
}
}
@ -274,7 +276,7 @@ void MWState::StateManager::saveGame(const std::string& description, const Slot*
Loading::Listener& listener = *MWBase::Environment::get().getWindowManager()->getLoadingScreen();
// Using only Cells for progress information, since they typically have the largest records by far
listener.setProgressRange(MWBase::Environment::get().getWorld()->countSavedGameCells());
listener.setLabel("#{sNotifyMessage4}", true);
listener.setLabel("#{OMWEngine:SavingInProgress}", true);
Loading::ScopedLoad load(&listener);
@ -327,7 +329,7 @@ void MWState::StateManager::saveGame(const std::string& description, const Slot*
Log(Debug::Error) << error.str();
std::vector<std::string> buttons;
buttons.emplace_back("#{sOk}");
buttons.emplace_back("#{Interface:OK}");
MWBase::Environment::get().getWindowManager()->interactiveMessageBox(error.str(), buttons);
// If no file was written, clean up the slot
@ -346,7 +348,7 @@ void MWState::StateManager::quickSave(std::string name)
&& MWBase::Environment::get().getWindowManager()->isSavingAllowed()))
{
// You can not save your game right now
MWBase::Environment::get().getWindowManager()->messageBox("#{sSaveGameDenied}");
MWBase::Environment::get().getWindowManager()->messageBox("#{OMWEngine:SaveGameDenied}");
return;
}
@ -389,6 +391,11 @@ void MWState::StateManager::loadGame(const std::filesystem::path& filepath)
loadGame(character, filepath);
}
struct VersionMismatchError : public std::runtime_error
{
using std::runtime_error::runtime_error;
};
void MWState::StateManager::loadGame(const Character* character, const std::filesystem::path& filepath)
{
try
@ -401,7 +408,7 @@ void MWState::StateManager::loadGame(const Character* character, const std::file
reader.open(filepath);
if (reader.getFormatVersion() > ESM::CurrentSaveGameFormatVersion)
throw std::runtime_error(
throw VersionMismatchError(
"This save file was created using a newer version of OpenMW and is thus not supported. Please upgrade "
"to the newest OpenMW version to load this file.");
@ -411,7 +418,7 @@ void MWState::StateManager::loadGame(const Character* character, const std::file
Loading::Listener& listener = *MWBase::Environment::get().getWindowManager()->getLoadingScreen();
listener.setProgressRange(100);
listener.setLabel("#{sLoadingMessage14}");
listener.setLabel("#{OMWEngine:LoadingInProgress}");
Loading::ScopedLoad load(&listener);
@ -584,17 +591,22 @@ void MWState::StateManager::loadGame(const Character* character, const std::file
}
catch (const std::exception& e)
{
std::stringstream error;
error << "Failed to load saved game: " << e.what();
Log(Debug::Error) << "Failed to load saved game: " << e.what();
Log(Debug::Error) << error.str();
cleanup(true);
MWBase::Environment::get().getWindowManager()->pushGuiMode(MWGui::GM_MainMenu);
std::vector<std::string> buttons;
buttons.emplace_back("#{sOk}");
MWBase::Environment::get().getWindowManager()->interactiveMessageBox(error.str(), buttons);
buttons.emplace_back("#{Interface:OK}");
std::string error;
if (typeid(e) == typeid(VersionMismatchError))
error = "#{OMWEngine:LoadingFailed}: #{OMWEngine:LoadingRequiresNewVersionError}";
else
error = "#{OMWEngine:LoadingFailed}: " + std::string(e.what());
MWBase::Environment::get().getWindowManager()->interactiveMessageBox(error, buttons);
}
}
@ -669,9 +681,10 @@ bool MWState::StateManager::verifyProfile(const ESM::SavedGame& profile) const
if (notFound)
{
std::vector<std::string> buttons;
buttons.emplace_back("#{sYes}");
buttons.emplace_back("#{sNo}");
MWBase::Environment::get().getWindowManager()->interactiveMessageBox("#{sMissingMastersMsg}", buttons, true);
buttons.emplace_back("#{Interface:Yes}");
buttons.emplace_back("#{Interface:No}");
MWBase::Environment::get().getWindowManager()->interactiveMessageBox(
"#{OMWEngine:MissingContentFilesConfirmation}", buttons, true);
int selectedButton = MWBase::Environment::get().getWindowManager()->readPressedButton();
if (selectedButton == 1 || selectedButton == -1)
return false;

@ -1,5 +1,7 @@
#include "datetimemanager.hpp"
#include <components/l10n/manager.hpp>
#include "../mwbase/environment.hpp"
#include "../mwbase/world.hpp"
@ -152,22 +154,28 @@ namespace MWWorld
globalVariables[Globals::sYear].setInteger(mYear);
}
static std::vector<std::string> getMonthNames()
{
auto calendarL10n = MWBase::Environment::get().getL10nManager()->getContext("Calendar");
std::string prefix = "month";
std::vector<std::string> months;
int count = 12;
months.reserve(count);
for (int i = 1; i <= count; ++i)
months.push_back(calendarL10n->formatMessage(prefix + std::to_string(i), {}, {}));
return months;
}
std::string_view DateTimeManager::getMonthName(int month) const
{
static std::vector<std::string> months = getMonthNames();
if (month == -1)
month = mMonth;
const int months = 12;
if (month < 0 || month >= months)
if (month < 0 || month >= static_cast<int>(months.size()))
return {};
static const std::string_view monthNames[months] = { "sMonthMorningstar", "sMonthSunsdawn", "sMonthFirstseed",
"sMonthRainshand", "sMonthSecondseed", "sMonthMidyear", "sMonthSunsheight", "sMonthLastseed",
"sMonthHeartfire", "sMonthFrostfall", "sMonthSunsdusk", "sMonthEveningstar" };
const ESM::GameSetting* setting
= MWBase::Environment::get().getWorld()->getStore().get<ESM::GameSetting>().find(monthNames[month]);
return setting->mValue.getString();
else
return months[month];
}
bool DateTimeManager::updateGlobalFloat(GlobalVariableName name, float value)

@ -592,8 +592,7 @@ namespace MWWorld
Loading::Listener* loadingListener = MWBase::Environment::get().getWindowManager()->getLoadingScreen();
Loading::ScopedLoad load(loadingListener);
std::string loadingExteriorText = "#{sLoadingMessage3}";
loadingListener->setLabel(loadingExteriorText);
loadingListener->setLabel("#{OMWEngine:LoadingExterior}");
loadingListener->setProgressRange(refsToLoad);
const auto getDistanceToPlayerCell = [&](const std::pair<int, int>& cellPosition) {
@ -862,8 +861,7 @@ namespace MWWorld
MWBase::Environment::get().getWindowManager()->fadeScreenOut(0.5);
Loading::Listener* loadingListener = MWBase::Environment::get().getWindowManager()->getLoadingScreen();
std::string loadingInteriorText = "#{sLoadingMessage2}";
loadingListener->setLabel(loadingInteriorText);
loadingListener->setLabel("#{OMWEngine:LoadingInterior}");
Loading::ScopedLoad load(loadingListener);
if (mCurrentCell != nullptr && *mCurrentCell == *cell)
@ -1222,7 +1220,7 @@ namespace MWWorld
Loading::Listener* loadingListener = MWBase::Environment::get().getWindowManager()->getLoadingScreen();
Loading::ScopedLoad load(loadingListener);
loadingListener->setLabel("#{sLoadingMessage4}");
loadingListener->setLabel("#{OMWEngine:InitializingData}");
while (!mPreloader->syncTerrainLoad(vec, mRendering.getReferenceTime(), *loadingListener))
{

@ -33,7 +33,7 @@ namespace fx
if (!uniform)
return;
mCheckbutton->setCaptionWithReplacing(value ? "#{sOn}" : "#{sOff}");
mCheckbutton->setCaptionWithReplacing(value ? "#{Interface:On}" : "#{Interface:Off}");
mFill->setVisible(value);
uniform->setValue<bool>(value);

@ -29,6 +29,11 @@ namespace l10n
std::shared_ptr<const MessageBundles> getContext(
const std::string& contextName, const std::string& fallbackLocale = "en");
std::string getMessage(const std::string& contextName, std::string_view key)
{
return getContext(contextName)->formatMessage(key, {}, {});
}
private:
void readLangData(const std::string& name, MessageBundles& ctx, const icu::Locale& lang);
void updateContext(const std::string& name, MessageBundles& ctx);

@ -6,6 +6,7 @@ set(BUILTIN_DATA_MW_FILES
# Month names and date formatting
l10n/Calendar/de.yaml
l10n/Calendar/en.yaml
l10n/Calendar/gmst.yaml
l10n/Calendar/ru.yaml
l10n/Calendar/sv.yaml
l10n/Calendar/fr.yaml
@ -15,6 +16,9 @@ set(BUILTIN_DATA_MW_FILES
# L10n for OpenMW menus and non-game-specific messages
l10n/OMWEngine/gmst.yaml
# Game-specific settings for calendar.lua
openmw_aux/calendarconfig.lua
)
foreach (f ${BUILTIN_DATA_MW_FILES})

@ -28,7 +28,7 @@ monthInGenitive10: "Eisherbst"
monthInGenitive11: "Abenddämmerung"
monthInGenitive12: "Abendstern"
dateFormat: "tag {day} im {monthInGenitive} {year}"
dateFormat: "tag {day} im {monthInGenitive} {year, number, :: group-off}"
weekday1: "Sundas"
weekday2: "Morndas"

@ -28,7 +28,7 @@ monthInGenitive10: "Frostfall"
monthInGenitive11: "Sun's Dusk"
monthInGenitive12: "Evening Star"
dateFormat: "day {day} of {monthInGenitive} {year}"
dateFormat: "day {day} of {monthInGenitive} {year, number, :: group-off}"
weekday1: "Sundas"
weekday2: "Morndas"

@ -31,7 +31,7 @@ monthInGenitive10: "Soufflegivre"
monthInGenitive11: "Sombreciel"
monthInGenitive12: "Soirétoile"
dateFormat: "Le {day} du {monthInGenitive} {year}"
dateFormat: "Le {day} du {monthInGenitive} {year, number, :: group-off}"
weekday1: "Sundas"
weekday2: "Morndas"

@ -0,0 +1,16 @@
month1: "sMonthMorningstar"
month2: "sMonthSunsdawn"
month3: "sMonthFirstseed"
month4: "sMonthRainshand"
month5: "sMonthSecondseed"
month6: "sMonthMidyear"
month7: "sMonthSunsheight"
month8: "sMonthLastseed"
month9: "sMonthHeartfire"
month10: "sMonthFrostfall"
month11: "sMonthSunsdusk"
month12: "sMonthEveningstar"
am: "sSaveMenuHelp04"
pm: "sSaveMenuHelp05"
day: "sDay"

@ -29,7 +29,7 @@ monthInGenitive10: "Мороза"
monthInGenitive11: "Заката"
monthInGenitive12: "Вечерней Звезды"
dateFormat: "день {day} {monthInGenitive} {year}"
dateFormat: "день {day} {monthInGenitive} {year, number, :: group-off}"
weekday1: "Сандас"
weekday2: "Морндас"

@ -4,4 +4,4 @@
# En: No use translating names on months and weekdays to Swedish when the game's content isn't in Swedish. It will probably just confuse people. Therefore, only dateFormat is present in this file.
dateFormat: "dag {day} av {monthInGenitive} år {year}"
dateFormat: "dag {day} av {monthInGenitive} år {year, number, :: group-off}"

@ -1,6 +1,9 @@
On: "sOn"
Off: "sOff"
Cancel: "sCancel"
Close: "sClose"
No: "sNo"
None: "sNone"
OK: "sOK"
Off: "sOff"
On: "sOn"
Yes: "sYes"
No: "sNo"

@ -1,4 +1,56 @@
AskLoadLastSave: "sLoadLastSaveMsg"
AudioEffects: "sEffects"
AudioFootsteps: "sFootsteps"
AudioMaster: "sMaster"
AudioMusic: "sMusic"
Audio: "sAudio"
AudioVoice: "sVoice"
ConfirmResetBindings: "sNotifyMessage66"
ConfirmResolution: "sNotifyMessage67"
ConsoleWindow: "sConsoleTitle"
Controls: "sControls"
DelayHigh: "sSlow"
DelayLow: "sFast"
DeleteGameConfirmation: "sMessage3"
DeleteGame: "sDeleteGame"
DetailLevel: "sDetail_Level"
DifficultyEasy: "sEasy"
DifficultyHard: "sHard"
Difficulty: "sDifficulty"
DistanceHigh: "sFar"
DistanceLow: "sNear"
EmptySaveNameError: "sNotifyMessage65"
EnableController: "sEnableJoystick"
FieldOfViewHigh: "sHigh"
FieldOfViewLow: "sLow"
GammaCorrection: "sGamma_Correction"
GammaDark: "sDark_Gamma"
GammaLight: "sLight_Gamma"
InitializingData: "sLoadingMessage4"
InvertYAxis: "sMouseFlip"
LoadGameConfirmation: "sMessage1"
LoadingExterior: "sLoadingMessage3"
LoadingInProgress: "sLoadingMessage12"
LoadingInterior: "sLoadingMessage2"
MenuHelpDelay: "sMenu_Help_Delay"
MenuTransparency: "sTransparency_Menu"
MissingContentFilesConfirmation: "sMissingMastersMsg"
NewGameConfirmation: "sNotifyMessage54"
OverwriteGameConfirmation: "sMessage4"
Preferences: "sPrefs"
QualityHigh: "sHigh"
QualityLow: "sLow"
QualityMedium: "sMedium"
QuitGameConfirmation: "sMessage2"
RebindAction: "sControlsMenu3"
ResetControls: "sControlsMenu1"
SaveGameDenied: "sSaveGameDenied"
SavingInProgress: "sNotifyMessage4"
SensitivityHigh: "sHigh"
SensitivityLow: "sLow"
SettingsWindow: "sOptions"
Subtitles: "sSubtitles"
TransparencyFull: "sFull"
TransparencyNone: "sNone"
Video: "sVideo"
ViewDistance: "sRender_Distance"

@ -0,0 +1,7 @@
return {
monthsDuration = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31},
daysInWeek = 7,
startingYear = 427,
startingYearDay = 227,
startingWeekDay = 1,
}

@ -47,7 +47,7 @@ set(BUILTIN_DATA_FILES
l10n/OMWEngine/ru.yaml
l10n/OMWEngine/sv.yaml
l10n/OMWEngine/fr.yaml
# L10n for post-processing HUD and built-in shaders
l10n/OMWShaders/de.yaml
l10n/OMWShaders/en.yaml
@ -58,6 +58,7 @@ set(BUILTIN_DATA_FILES
openmw_aux/util.lua
openmw_aux/time.lua
openmw_aux/calendar.lua
openmw_aux/calendarconfig.lua
openmw_aux/ui.lua
builtin.omwscripts

@ -26,7 +26,7 @@ monthInGenitive10: "October"
monthInGenitive11: "November"
monthInGenitive12: "December"
dateFormat: "day {day} of {monthInGenitive} {year}"
dateFormat: "{day} {monthInGenitive} {year, number, :: group-off}"
weekday1: "Sunday"
weekday2: "Monday"
@ -35,3 +35,7 @@ weekday4: "Wednesday"
weekday5: "Thursday"
weekday6: "Friday"
weekday7: "Saturday"
am: "am"
pm: "pm"
day: "day"

@ -2,3 +2,26 @@ No: "Nein"
NotAvailableShort: "N/A"
Reset: "Zurücksetzen"
Yes: "Ja"
# To be translated:
#DurationDay: "{days} d "
#DurationHour: "{hours} h "
#DurationMinute: "{minutes} min "
#DurationMonth: |-
# {months, plural,
# one{{months} mo }
# other{{months} mos }
# }
#DurationSecond: "{seconds} s "
#DurationYear: |-
# {years, plural,
# one{{years} yr }
# other{{years} yrs }
# }
#Cancel: "Cancel"
#Close: "Close"
#None: "None"
#OK: "OK"
#Off: "Off"
#On: "On"

@ -20,4 +20,5 @@ On: "On"
Off: "Off"
None: "None"
OK: "OK"
Cancel: "Cancel"
Close: "Close"

@ -16,3 +16,12 @@ No: "Non"
NotAvailableShort: "N/A"
Reset: "Réinitialiser"
Yes: "Oui"
# To be translated:
#Cancel: "Cancel"
#Close: "Close"
#None: "None"
#OK: "OK"
#Off: "Off"
#On: "On"

@ -1,3 +1,5 @@
Cancel: "Отмена"
Close: "Закрыть"
DurationDay: "{days} д "
DurationHour: "{hours} ч "
DurationMinute: "{minutes} мин "
@ -11,5 +13,9 @@ DurationYear: |-
}
No: "Нет"
NotAvailableShort: "Н/Д"
Reset: "Обнулить"
None: "Нет"
OK: "OK"
Off: "Выкл"
On: "Вкл"
Reset: "Сбросить"
Yes: "Да"

@ -8,3 +8,12 @@ No: "Nej"
NotAvailableShort: "N/A"
Reset: "Återställ"
Yes: "Ja"
# To be translated:
#Cancel: "Cancel"
#Close: "Close"
#None: "None"
#OK: "OK"
#Off: "Off"
#On: "On"

@ -1,3 +1,8 @@
# Console
#-- To be translated
#ConsoleWindow: "Console"
# Debug window
DebugWindow: "Debug"
@ -10,12 +15,38 @@ PhysicsProfiler: "Physik-Profiler"
BuildingNavigationMesh: "Baue Navigationsgitter"
#-- To be translated
#AskLoadLastSave: "The most recent save is '%s'. Do you want to load it?"
#InitializingData: "Initializing Data..."
#LoadingExterior: "Loading Area"
#LoadingFailed: "Failed to load saved game"
#LoadingInterior: "Loading Area"
#LoadingInProgress: "Loading Save Game"
#LoadingRequiresNewVersionError: |-
# This save file was created using a newer version of OpenMW and is thus not supported.
# Please upgrade to the newest OpenMW version to load this file.
#NewGameConfirmation: "Do you want to start a new game and lose the current one?"
#SaveGameDenied: "The game cannot be saved right now."
#SavingInProgress: "Saving..."
#QuitGameConfirmation: "Quit the game?"
# Save game menu
SelectCharacter: "Charakterauswahl..."
TimePlayed: "Spielzeit"
#-- To be translated
#DeleteGame: "Delete Game"
#DeleteGameConfirmation: "Are you sure you want to delete this saved game?"
#EmptySaveNameError: "Game can not be saved without a name!"
#LoadGameConfirmation: "Do you want to load a saved game and lose the current one?"
#MissingContentFilesConfirmation: |
# The currently selected content files do not match the ones used by this save game.
# Errors may occur during load or game play.
# Do you wish to continue?
#OverwriteGameConfirmation: "Are you sure you want to overwrite this saved game?"
# Settings menu
@ -84,3 +115,45 @@ WindowMode: "Fenstermodus"
WindowModeFullscreen: "Vollbild"
WindowModeWindowed: "Fenster"
WindowModeWindowedFullscreen: "Fenster Vollbild"
#-- To be translated
#Audio: "Audio"
#AudioMaster: "Master"
#AudioVoice: "Voice"
#AudioEffects: "Effects"
#AudioFootsteps: "Footsteps"
#AudioMusic: "Music"
#ConfirmResetBindings: "Reset all controls to the default?"
#ConfirmResolution: "New resolution will be applied immediately. Do you want to continue?"
#Controls: "Controls"
#DelayLow: "Fast"
#DelayHigh: "Slow"
#DetailLevel: "Detail Level"
#Difficulty: "Difficulty"
#DifficultyEasy: "Easy"
#DifficultyHard: "Hard"
#DistanceHigh: "Far"
#DistanceLow: "Near"
#EnableController: "Enable Controller"
#FieldOfViewLow: "Low"
#FieldOfViewHigh: "High"
#GammaCorrection: "Gamma Correction"
#GammaDark: "Dark"
#GammaLight: "Light"
#InvertYAxis: "Invert Y Axis"
#MenuHelpDelay: "Menu Help Delay"
#MenuTransparency: "Menu Transparency"
#Preferences: "Prefs"
#QualityHigh: "High"
#QualityLow: "Low"
#QualityMedium: "Medium"
#RebindAction: "Press a key or button to rebind this control."
#ResetControls: "Reset Controls"
#SensitivityHigh: "High"
#SensitivityLow: "Low"
#SettingsWindow: "Options"
#Subtitles: "Subtitles"
#TransparencyFull: "Full"
#TransparencyNone: "None"
#Video: "Video"
#ViewDistance: "View Distance"

@ -1,3 +1,7 @@
# Console
ConsoleWindow: "Console"
# Debug window
DebugWindow: "Debug"
@ -8,11 +12,33 @@ PhysicsProfiler: "Physics Profiler"
# Messages
AskLoadLastSave: "The most recent save is '%s'. Do you want to load it?"
BuildingNavigationMesh: "Building navigation mesh"
InitializingData: "Initializing Data..."
LoadingExterior: "Loading Area"
LoadingFailed: "Failed to load saved game"
LoadingInterior: "Loading Area"
LoadingInProgress: "Loading Save Game"
LoadingRequiresNewVersionError: |-
This save file was created using a newer version of OpenMW and is thus not supported.
Please upgrade to the newest OpenMW version to load this file.
NewGameConfirmation: "Do you want to start a new game and lose the current one?"
SaveGameDenied: "The game cannot be saved right now."
SavingInProgress: "Saving..."
QuitGameConfirmation: "Quit the game?"
# Save game menu
DeleteGame: "Delete Game"
DeleteGameConfirmation: "Are you sure you want to delete this saved game?"
EmptySaveNameError: "Game can not be saved without a name!"
LoadGameConfirmation: "Do you want to load a saved game and lose the current one?"
MissingContentFilesConfirmation: |
The currently selected content files do not match the ones used by this save game.
Errors may occur during load or game play.
Do you wish to continue?
OverwriteGameConfirmation: "Are you sure you want to overwrite this saved game?"
SelectCharacter: "Select Character..."
TimePlayed: "Time played"
@ -21,6 +47,12 @@ TimePlayed: "Time played"
ActorsProcessingRange: "Actors Processing Range"
Anisotropy: "Anisotropy"
Audio: "Audio"
AudioEffects: "Effects"
AudioFootsteps: "Footsteps"
AudioMaster: "Master"
AudioMusic: "Music"
AudioVoice: "Voice"
CameraSensitivity: "Camera Sensitivity"
CameraZoomIn: "Zoom Camera In"
CameraZoomOut: "Zoom Camera Out"
@ -28,9 +60,25 @@ ChangeRequiresRestart: "This change requires a restart to take effect."
ConfirmResetBindings: "Reset all controls to the default?"
ConfirmResolution: "New resolution will be applied immediately. Do you want to continue?"
Controller: "Controller"
Controls: "Controls"
DelayLow: "Fast"
DelayHigh: "Slow"
DetailLevel: "Detail Level"
Difficulty: "Difficulty"
DifficultyEasy: "Easy"
DifficultyHard: "Hard"
DistanceHigh: "Far"
DistanceLow: "Near"
EnableController: "Enable Controller"
FieldOfView: "Field of View"
FieldOfViewHigh: "High"
FieldOfViewLow: "Low"
FrameRateHint: "Hint: press F3 to show\nthe current frame rate."
GammaCorrection: "Gamma Correction"
GammaDark: "Dark"
GammaLight: "Light"
InvertXAxis: "Invert X Axis"
InvertYAxis: "Invert Y Axis"
Language: "Language"
LanguageNote: "Note: these settings do not affect strings from ESM files."
LightingMethod: "Lighting Method"
@ -49,11 +97,17 @@ LightsMinimumInteriorBrightness: "Minimum Interior Brightness"
LightsMinimumInteriorBrightnessTooltip: "Default: 0.08\nMinimum ambient interior brightness.\n\nIncrease this if you feel interiors are too dark."
MaxLights: "Max Lights"
MaxLightsTooltip: "Default: 8\nMaximum number of lights per object.\n\nA low number near default will cause light popping similar to what you would see with legacy lighting."
MenuHelpDelay: "Menu Help Delay"
MenuTransparency: "Menu Transparency"
MouseAndKeyboard: "Mouse/Keyboard"
PostProcessing: "Post Processing"
PostProcessingTooltip: "Tweaked via Post Processor HUD, see input bindings."
Preferences: "Prefs"
PrimaryLanguage: "Primary Language"
PrimaryLanguageTooltip: "Localization files for this language have the highest priority."
QualityHigh: "High"
QualityLow: "Low"
QualityMedium: "Medium"
RainRippleDetail: "Rain ripple detail"
RainRippleDetailDense: "Dense"
RainRippleDetailSimple: "Simple"
@ -67,12 +121,16 @@ ReflectionShaderDetailSky: "Sky"
ReflectionShaderDetailTerrain: "Terrain"
ReflectionShaderDetailWorld: "World"
Refraction: "Refraction"
ResetControls: "Reset Controls"
Screenshot: "Screenshot"
Scripts: "Scripts"
ScriptsDisabled: "Load a game to access script settings."
SecondaryLanguage: "Secondary Language"
SecondaryLanguageTooltip: "Localization files for this language may be used if the primary language files lack the necessary lines."
SensitivityHigh: "High"
SensitivityLow: "Low"
SettingsWindow: "Options"
Subtitles: "Subtitles"
TextureFiltering: "Texture Filtering"
TextureFilteringBilinear: "Bilinear"
TextureFilteringDisabled: "None"
@ -80,6 +138,10 @@ TextureFilteringOther: "Other"
TextureFilteringTrilinear: "Trilinear"
ToggleHUD: "Toggle HUD"
TogglePostProcessorHUD: "Toggle Post Processor HUD"
TransparencyFull: "Full"
TransparencyNone: "None"
Video: "Video"
ViewDistance: "View Distance"
VSync: "VSync"
VSyncAdaptive: "Adaptive"
Water: "Water"

@ -1,3 +1,9 @@
# Console
#-- To be translated
#ConsoleWindow: "Console"
# Debug window
DebugWindow: "Fenêtre de débogage"
@ -9,12 +15,38 @@ PhysicsProfiler: "Profileur des performances de la physique"
BuildingNavigationMesh: "Construction du mesh de navigation"
#-- To be translated
#AskLoadLastSave: "The most recent save is '%s'. Do you want to load it?"
#InitializingData: "Initializing Data..."
#LoadingExterior: "Loading Area"
#LoadingFailed: "Failed to load saved game"
#LoadingInterior: "Loading Area"
#LoadingInProgress: "Loading Save Game"
#LoadingRequiresNewVersionError: |-
# This save file was created using a newer version of OpenMW and is thus not supported.
# Please upgrade to the newest OpenMW version to load this file.
#NewGameConfirmation: "Do you want to start a new game and lose the current one?"
#SaveGameDenied: "The game cannot be saved right now."
#SavingInProgress: "Saving..."
#QuitGameConfirmation: "Quit the game?"
# Save game menu
SelectCharacter: "Sélection du personnage..."
TimePlayed: "Temps de jeu"
#-- To be translated
#DeleteGame: "Delete Game"
#DeleteGameConfirmation: "Are you sure you want to delete this saved game?"
#EmptySaveNameError: "Game can not be saved without a name!"
#LoadGameConfirmation: "Do you want to load a saved game and lose the current one?"
#MissingContentFilesConfirmation: |
# The currently selected content files do not match the ones used by this save game.
# Errors may occur during load or game play.
# Do you wish to continue?
#OverwriteGameConfirmation: "Are you sure you want to overwrite this saved game?"
# Settings menu
@ -84,3 +116,45 @@ WindowMode: "Mode d'affichage"
WindowModeFullscreen: "Plein écran"
WindowModeWindowed: "Fenêtré"
WindowModeWindowedFullscreen: "Fenêtré plein écran"
#-- To be translated
#Audio: "Audio"
#AudioMaster: "Master"
#AudioVoice: "Voice"
#AudioEffects: "Effects"
#AudioFootsteps: "Footsteps"
#AudioMusic: "Music"
#ConfirmResetBindings: "Reset all controls to the default?"
#ConfirmResolution: "New resolution will be applied immediately. Do you want to continue?"
#Controls: "Controls"
#DelayLow: "Fast"
#DelayHigh: "Slow"
#DetailLevel: "Detail Level"
#Difficulty: "Difficulty"
#DifficultyEasy: "Easy"
#DifficultyHard: "Hard"
#DistanceHigh: "Far"
#DistanceLow: "Near"
#EnableController: "Enable Controller"
#FieldOfViewLow: "Low"
#FieldOfViewHigh: "High"
#GammaCorrection: "Gamma Correction"
#GammaDark: "Dark"
#GammaLight: "Light"
#InvertYAxis: "Invert Y Axis"
#MenuHelpDelay: "Menu Help Delay"
#MenuTransparency: "Menu Transparency"
#Preferences: "Prefs"
#QualityHigh: "High"
#QualityLow: "Low"
#QualityMedium: "Medium"
#RebindAction: "Press a key or button to rebind this control."
#ResetControls: "Reset Controls"
#SensitivityHigh: "High"
#SensitivityLow: "Low"
#SettingsWindow: "Options"
#Subtitles: "Subtitles"
#TransparencyFull: "Full"
#TransparencyNone: "None"
#Video: "Video"
#ViewDistance: "View Distance"

@ -1,3 +1,7 @@
# Console
ConsoleWindow: "Консоль"
# Debug window
DebugWindow: "Меню отладки"
@ -8,11 +12,33 @@ PhysicsProfiler: "Профилировщик физики"
# Messages
AskLoadLastSave: "Последнее сохранение - '%s'. Загрузить?"
BuildingNavigationMesh: "Построение навигационной сетки"
InitializingData: "Загрузка..."
LoadingExterior: "Загрузка области"
LoadingFailed: "Не удалось загрузить сохраненную игру"
LoadingInterior: "Загрузка области"
LoadingInProgress: "Загрузка сохранения"
LoadingRequiresNewVersionError: |-
Это сохранение создано более новой версией OpenMW и поэтому не может быть загружено.
Обновите OpenMW до последней версии, чтобы загрузить этот файл.
NewGameConfirmation: "Вы хотите начать новую игру? Текущая игра будет потеряна."
SaveGameDenied: "В данный момент игру нельзя сохранить."
SavingInProgress: "Сохранение..."
QuitGameConfirmation: "Выйти из игры?"
# Save game menu
DeleteGame: "Удалить игру"
DeleteGameConfirmation: "Вы уверены, что хотите удалить это сохранение?"
EmptySaveNameError: "Имя сохранения не может быть пустым!"
LoadGameConfirmation: "Вы хотите загрузить сохранение? Текущая игра будет потеряна."
MissingContentFilesConfirmation: |
Выбранные ESM/ESP файлы не соответствуют тем, которые использовались для этого сохранения.
Во время загрузки или в процессе игры могут возникнуть ошибки.
Вы хотите продолжить?
OverwriteGameConfirmation: "Вы уверены, что хотите перезаписать это сохранение?"
SelectCharacter: "Выберите персонажа..."
TimePlayed: "Время в игре"
@ -21,14 +47,38 @@ TimePlayed: "Время в игре"
ActorsProcessingRange: "Дальность обработки персонажей"
Anisotropy: "Анизотропная фильтрация"
Audio: "Звук"
AudioEffects: "Эффекты"
AudioFootsteps: "Шаги"
AudioMaster: "Общая громкость"
AudioMusic: "Музыка"
AudioVoice: "Голос"
CameraSensitivity: "Чувствительность камеры"
CameraZoomIn: "Приблизить камеру"
CameraZoomOut: "Отдалить камеру"
ChangeRequiresRestart: "Чтобы это изменение вступило в силу, нужно перезапустить приложение."
ConfirmResetBindings: "Сбросить все настройки управления?"
ConfirmResolution: "Разрешение будет изменено немедленно. Продолжить?"
Controller: "Геймпад"
Controls: "Управление"
DelayLow: "Маленькая"
DelayHigh: "Большая"
DetailLevel: "Уровень детализации"
Difficulty: "Сложность"
DifficultyEasy: "Легко"
DifficultyHard: "Сложно"
DistanceHigh: "Далеко"
DistanceLow: "Близко"
EnableController: "Геймпад"
FieldOfView: "Поле зрения"
FieldOfViewLow: "Маленькое"
FieldOfViewHigh: "Большое"
FrameRateHint: "Подсказка: нажмите F3, чтобы показать\nтекущую частоту смены кадров."
GammaCorrection: "Гамма-коррекция"
GammaDark: "Темно"
GammaLight: "Светло"
InvertXAxis: "Инвертировать ось X"
InvertYAxis: "Инвертировать ось Y"
Language: "Язык"
LanguageNote: "Примечание: эти настройки не затрагивают строки из ESM-файлов."
LightingMethod: "Способ освещения"
@ -47,11 +97,17 @@ LightsMinimumInteriorBrightness: "Минимальный уровень осве
LightsMinimumInteriorBrightnessTooltip: "Значение по умолчанию: 0.08\nМинимальный уровень фонового освещения в помещениях.\n\nУвеличьте значение, если помещения в игре кажутся слишком темными."
MaxLights: "Макс. кол-во источников света"
MaxLightsTooltip: "Значение по умолчанию: 8\nМаксимальное количество источников света для каждого объекта.\n\nНизкие числа (близкие к значению по умолчанию) приводят к резким перепадам освещения, как при устаревшем методе освещения."
MenuHelpDelay: "Задержка всплывающих подсказок"
MenuTransparency: "Прозрачность меню"
MouseAndKeyboard: "Мышь/Клавиатура"
PostProcessing: "Постобработка"
PostProcessingTooltip: "Настраивается через меню настроек постобработки, см. привязки клавиш."
Preferences: "Настройки"
PrimaryLanguage: "Основной язык"
PrimaryLanguageTooltip: "Язык, строки на котором будут использоваться в первую очередь."
QualityHigh: "Высокое"
QualityLow: "Низкое"
QualityMedium: "Среднее"
RainRippleDetail: "Капли дождя на воде"
RainRippleDetailDense: "Плотные"
RainRippleDetailSimple: "Упрощенные"
@ -64,18 +120,28 @@ ReflectionShaderDetailSky: "Небо"
ReflectionShaderDetailTerrain: "Ландшафт"
ReflectionShaderDetailWorld: "Мир"
Refraction: "Рефракция"
RebindAction: "Нажмите клавишу, которую нужно назначить на это действие."
ResetControls: "Сбросить"
Screenshot: "Снимок экрана"
Scripts: "Скрипты"
ScriptsDisabled: "Загрузите игру, чтобы получить доступ к настройкам скриптов."
SecondaryLanguage: "Дополнительный язык"
SecondaryLanguageTooltip: "Язык, строки на котором будут использоваться, если соответствующие строки на основном языке не найдены."
SensitivityHigh: "Высокая"
SensitivityLow: "Низкая"
SettingsWindow: "Настройки"
Subtitles: "Субтитры"
TextureFiltering: "Фильтрация текстур"
TextureFilteringBilinear: "Билинейная"
TextureFilteringDisabled: "Отключена"
TextureFilteringOther: "Другая"
TextureFilteringTrilinear: "Трилинейная"
TransparencyFull: "Прозрачное"
TransparencyNone: "Непрозрачное"
ToggleHUD: "Переключить HUD"
TogglePostProcessorHUD: "Меню настроек постобработки"
ViewDistance: "Дальность обзора"
Video: "Видео"
VSync: "Вертикальная синхронизация"
VSyncAdaptive: "Адаптивная"
Water: "Вода"

@ -1,3 +1,9 @@
# Console
#-- To be translated
#ConsoleWindow: "Console"
# Debug window
DebugWindow: "Felsökning"
@ -9,6 +15,21 @@ PhysicsProfiler: "Fysikprofilerare"
BuildingNavigationMesh: "Bygger navigeringsmesh"
#-- To be translated
#AskLoadLastSave: "The most recent save is '%s'. Do you want to load it?"
#InitializingData: "Initializing Data..."
#LoadingExterior: "Loading Area"
#LoadingFailed: "Failed to load saved game"
#LoadingInterior: "Loading Area"
#LoadingInProgress: "Loading Save Game"
#LoadingRequiresNewVersionError: |-
# This save file was created using a newer version of OpenMW and is thus not supported.
# Please upgrade to the newest OpenMW version to load this file.
#NewGameConfirmation: "Do you want to start a new game and lose the current one?"
#SaveGameDenied: "The game cannot be saved right now."
#SavingInProgress: "Saving..."
#QuitGameConfirmation: "Quit the game?"
# Save game menu
@ -16,6 +37,18 @@ SelectCharacter: "Välj spelfigur..."
TimePlayed: "Speltid"
#-- To be translated
#DeleteGame: "Delete Game"
#DeleteGameConfirmation: "Are you sure you want to delete this saved game?"
#EmptySaveNameError: "Game can not be saved without a name!"
#LoadGameConfirmation: "Do you want to load a saved game and lose the current one?"
#MissingContentFilesConfirmation: |
# The currently selected content files do not match the ones used by this save game.
# Errors may occur during load or game play.
# Do you wish to continue?
#OverwriteGameConfirmation: "Are you sure you want to overwrite this saved game?"
# Settings menu
ActorsProcessingRange: "Processavstånd för figurer"
@ -86,3 +119,44 @@ WindowModeHint: "Notera: Fullskärm i fönsterläge\nanvänder alltid skärmens
WindowModeWindowed: "Fönster"
WindowModeWindowedFullscreen: "Fullskärm i fönsterläge"
#-- To be translated
#Audio: "Audio"
#AudioMaster: "Master"
#AudioVoice: "Voice"
#AudioEffects: "Effects"
#AudioFootsteps: "Footsteps"
#AudioMusic: "Music"
#ConfirmResetBindings: "Reset all controls to the default?"
#ConfirmResolution: "New resolution will be applied immediately. Do you want to continue?"
#Controls: "Controls"
#DelayLow: "Fast"
#DelayHigh: "Slow"
#DetailLevel: "Detail Level"
#Difficulty: "Difficulty"
#DifficultyEasy: "Easy"
#DifficultyHard: "Hard"
#DistanceHigh: "Far"
#DistanceLow: "Near"
#EnableController: "Enable Controller"
#FieldOfViewLow: "Low"
#FieldOfViewHigh: "High"
#GammaCorrection: "Gamma Correction"
#GammaDark: "Dark"
#GammaLight: "Light"
#InvertYAxis: "Invert Y Axis"
#MenuHelpDelay: "Menu Help Delay"
#MenuTransparency: "Menu Transparency"
#Preferences: "Prefs"
#QualityHigh: "High"
#QualityLow: "Low"
#QualityMedium: "Medium"
#RebindAction: "Press a key or button to rebind this control."
#ResetControls: "Reset Controls"
#SensitivityHigh: "High"
#SensitivityLow: "Low"
#SettingsWindow: "Options"
#Subtitles: "Subtitles"
#TransparencyFull: "Full"
#TransparencyNone: "None"
#Video: "Video"
#ViewDistance: "View Distance"

@ -110,7 +110,7 @@
</Widget>
<Widget type="AutoSizedButton" skin="MW_Button" name="CancelButton">
<Property key="Caption" value="#{sCancel}"/>
<Property key="Caption" value="#{Interface:Cancel}"/>
</Widget>
</Widget>

@ -22,7 +22,7 @@
<Property key="Caption" value="#{sBack}"/>
</Widget>
<Widget type="AutoSizedButton" skin="MW_Button" name="OKButton">
<Property key="Caption" value="#{sOk}"/>
<Property key="Caption" value="#{Interface:OK}"/>
</Widget>
</Widget>

@ -79,7 +79,7 @@
<Property key="Caption" value="#{sBack}"/>
</Widget>
<Widget type="AutoSizedButton" skin="MW_Button" name="OKButton">
<Property key="Caption" value="#{sOK}"/>
<Property key="Caption" value="#{Interface:OK}"/>
</Widget>
</Widget>

@ -83,7 +83,7 @@
<Property key="Caption" value="#{sBack}"/>
</Widget>
<Widget type="AutoSizedButton" skin="MW_Button" name="OKButton">
<Property key="Caption" value="#{sOK}"/>
<Property key="Caption" value="#{Interface:OK}"/>
</Widget>
</Widget>

@ -29,7 +29,7 @@
<Property key="Caption" value="#{sBack}"/>
</Widget>
<Widget type="AutoSizedButton" skin="MW_Button" name="OKButton">
<Property key="Caption" value="#{sOK}"/>
<Property key="Caption" value="#{Interface:OK}"/>
</Widget>
</Widget>
</Widget>

@ -82,7 +82,7 @@
<Property key="Caption" value="#{sBack}"/>
</Widget>
<Widget type="AutoSizedButton" skin="MW_Button" position="532 397 42 23" name="OKButton">
<Property key="Caption" value="#{sOK}"/>
<Property key="Caption" value="#{Interface:OK}"/>
</Widget>
</Widget>
</Widget>

@ -117,7 +117,7 @@
<Property key="Caption" value="#{sBack}"/>
</Widget>
<Widget type="AutoSizedButton" skin="MW_Button" name="OKButton">
<Property key="Caption" value="#{sOK}"/>
<Property key="Caption" value="#{Interface:OK}"/>
</Widget>
</Widget>
</Widget>

@ -24,7 +24,7 @@
<Widget type="Spacer" />
<Widget type="AutoSizedButton" skin="MW_Button" align="Right Bottom" name="CancelButton">
<Property key="ExpandDirection" value="Left Up"/>
<Property key="Caption" value="#{sCancel}"/>
<Property key="Caption" value="#{Interface:Cancel}"/>
</Widget>
</Widget>

@ -59,7 +59,7 @@
<Widget type="Spacer" />
<Widget type="AutoSizedButton" skin="MW_Button" align="Right Bottom" name="CancelButton">
<Property key="ExpandDirection" value="Left Up"/>
<Property key="Caption" value="#{sCancel}"/>
<Property key="Caption" value="#{Interface:Cancel}"/>
</Widget>
</Widget>

@ -26,7 +26,7 @@
<Widget type="Spacer" />
<Widget type="AutoSizedButton" skin="MW_Button" align="Right Bottom" name="CancelButton">
<Property key="ExpandDirection" value="Left Up"/>
<Property key="Caption" value="#{sCancel}"/>
<Property key="Caption" value="#{Interface:Cancel}"/>
</Widget>
</Widget>

@ -22,7 +22,7 @@
<Widget type="AutoSizedTextBox" skin="SandText" name="ProfitLabel">
</Widget>
<Widget type="AutoSizedButton" skin="MW_Button" name="CloseButton">
<Property key="Caption" value="#{sClose}"/>
<Property key="Caption" value="#{Interface:Close}"/>
</Widget>
</Widget>

@ -18,10 +18,10 @@
<Property key="Spacing" value="8"/>
<Widget type="AutoSizedButton" skin="MW_Button" name="OkButton" align="Center Bottom">
<Property key="Caption" value="#{sYes}"/>
<Property key="Caption" value="#{Interface:Yes}"/>
</Widget>
<Widget type="AutoSizedButton" skin="MW_Button" name="CancelButton" align="Center Bottom">
<Property key="Caption" value="#{sNo}"/>
<Property key="Caption" value="#{Interface:No}"/>
</Widget>
</Widget>

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<MyGUI type="Layout">
<Widget type="Window" skin="MW_Window" position="0 0 400 400" layer="Console" name="_Main">
<Property key="Caption" value="#{sConsoleTitle}"/>
<Property key="Caption" value="#{OMWEngine:ConsoleWindow}"/>
<Property key="MinSize" value="40 40"/>
<Property key="Visible" value="false"/>

@ -19,7 +19,7 @@
<Property key="Caption" value="#{sTakeAll}"/>
</Widget>
<Widget type="AutoSizedButton" skin="MW_Button" name="CloseButton" align="Right Bottom">
<Property key="Caption" value="#{sClose}"/>
<Property key="Caption" value="#{Interface:Close}"/>
</Widget>
</Widget>

@ -19,10 +19,10 @@
<Widget type="HBox" skin="" position="0 91 592 28" align="Center Bottom HStretch">
<Widget type="Spacer" />
<Widget type="AutoSizedButton" skin="MW_Button" position="0 0 53 28" align="Left Top" name="OkButton">
<Property key="Caption" value="#{sOk}"/>
<Property key="Caption" value="#{Interface:OK}"/>
</Widget>
<Widget type="AutoSizedButton" skin="MW_Button" position="0 0 86 28" align="Right Top" name="CancelButton">
<Property key="Caption" value="#{sCancel}"/>
<Property key="Caption" value="#{Interface:Cancel}"/>
</Widget>
<Widget type="Spacer" />
</Widget>

@ -109,11 +109,11 @@
</Widget>
<Widget type="AutoSizedButton" skin="MW_Button" name="OkButton">
<Property key="Caption" value="#{sOk}"/>
<Property key="Caption" value="#{Interface:OK}"/>
</Widget>
<Widget type="AutoSizedButton" skin="MW_Button" name="CancelButton">
<Property key="Caption" value="#{sCancel}"/>
<Property key="Caption" value="#{Interface:Cancel}"/>
</Widget>
</Widget>

@ -21,10 +21,10 @@
<Property key="Caption" value="#{sDelete}"/>
</Widget>
<Widget type="AutoSizedButton" skin="MW_Button" name="OkButton">
<Property key="Caption" value="#{sOk}"/>
<Property key="Caption" value="#{Interface:OK}"/>
</Widget>
<Widget type="AutoSizedButton" skin="MW_Button" name="CancelButton">
<Property key="Caption" value="#{sCancel}"/>
<Property key="Caption" value="#{Interface:Cancel}"/>
</Widget>
</Widget>

@ -156,7 +156,7 @@
</Widget>
<Widget type="AutoSizedButton" skin="MW_Button" name="CancelButton">
<Property key="Caption" value="#{sCancel}"/>
<Property key="Caption" value="#{Interface:Cancel}"/>
</Widget>
</Widget>

@ -9,7 +9,7 @@
<Widget type="AutoSizedButton" skin="MW_Button" position="340 240 24 24" name="CancelButton">
<Property key="ExpandDirection" value="Left"/>
<Property key="Caption" value="#{sCancel}"/>
<Property key="Caption" value="#{Interface:Cancel}"/>
</Widget>

@ -158,7 +158,7 @@
<UserString key="HStretch" value="true"/>
<Widget type="Spacer"/>
<Widget type="AutoSizedButton" skin="MW_Button" position="0 0 0 24" name="OkButton">
<Property key="Caption" value="#{sOk}"/>
<Property key="Caption" value="#{Interface:OK}"/>
</Widget>
</Widget>

@ -11,7 +11,7 @@
<Widget type="AutoSizedButton" skin="MW_Button" name="CancelButton" position="284 330 32 24" align="Right Bottom">
<Property key="ExpandDirection" value="Left"/>
<Property key="Caption" value="#{sCancel}"/>
<Property key="Caption" value="#{Interface:Cancel}"/>
</Widget>
</Widget>

@ -24,7 +24,7 @@
</Widget>
<Widget type="AutoSizedButton" skin="MW_Button" position="343 209 56 24" name="OkButton" align="Right Top">
<Property key="ExpandDirection" value="Left"/>
<Property key="Caption" value="#{sOK}"/>
<Property key="Caption" value="#{Interface:OK}"/>
</Widget>
</Widget>

@ -41,7 +41,7 @@
<Widget type="AutoSizedButton" skin="MW_Button" position="204 154 0 24" align="Right Bottom" name="CancelButton">
<Property key="ExpandDirection" value="Left"/>
<Property key="Caption" value="#{sCancel}"/>
<Property key="Caption" value="#{Interface:Cancel}"/>
</Widget>
</Widget>

@ -45,7 +45,7 @@
<UserString key="HStretch" value="true"/>
<UserString key="VStretch" value="true"/>
<Property key="TextAlign" value="Center"/>
<Property key="Caption" value="#{sOn}"/>
<Property key="Caption" value="#{Interface:On}"/>
</Widget>
</Widget>
</Widget>

@ -32,7 +32,7 @@
<Widget type="AutoSizedButton" skin="MW_Button" name="OKButton" position="315 190 32 24" align="Right Bottom">
<Property key="ExpandDirection" value="Left"/>
<Property key="Caption" value="#{sOK}"/>
<Property key="Caption" value="#{Interface:OK}"/>
</Widget>
</Widget>

@ -21,7 +21,7 @@
<Widget type="Button" skin="MW_Button" position="8 112 0 24" name="CancelButton">
<Property key="Caption" value="#{sCancel}"/>
<Property key="Caption" value="#{Interface:Cancel}"/>
</Widget>
</Widget>

@ -30,7 +30,7 @@
<Widget type="Spacer"/>
<Widget type="AutoSizedButton" skin="MW_Button" name="CancelButton">
<Property key="Caption" value="#{sCancel}"/>
<Property key="Caption" value="#{Interface:Cancel}"/>
</Widget>
</Widget>
</Widget>

@ -37,7 +37,7 @@
<Widget type="Spacer"/>
<Widget type="AutoSizedButton" skin="MW_Button" name="CancelButton">
<Property key="Caption" value="#{sCancel}"/>
<Property key="Caption" value="#{Interface:Cancel}"/>
</Widget>
</Widget>
</Widget>

@ -54,7 +54,7 @@
<UserString key="HStretch" value="true"/>
<Widget type="AutoSizedButton" skin="MW_Button" name="DeleteButton">
<Property key="Caption" value="#{sDeleteGame}"/>
<Property key="Caption" value="#{OMWEngine:DeleteGame}"/>
</Widget>
<Widget type="EditBox" skin="MW_TextEdit" name="SaveNameEdit">
@ -63,10 +63,10 @@
</Widget>
<Widget type="AutoSizedButton" skin="MW_Button" name="OkButton">
<Property key="Caption" value="#{sOk}"/>
<Property key="Caption" value="#{Interface:OK}"/>
</Widget>
<Widget type="AutoSizedButton" skin="MW_Button" name="CancelButton">
<Property key="Caption" value="#{sCancel}"/>
<Property key="Caption" value="#{Interface:Cancel}"/>
</Widget>
</Widget>

@ -5,10 +5,10 @@
<Widget type="TabControl" skin="TabControl" position="8 8 368 405" align="Stretch" name="SettingsTab">
<Property key="ButtonAutoWidth" value="true"/>
<Widget type="TabItem">
<Property key="Caption" value=" #{sPrefs} "/>
<Property key="Caption" value=" #{OMWEngine:Preferences} "/>
<Widget type="Widget" position="4 4 352 54" align="Left Top HStretch">
<Widget type="TextBox" skin="NormalText" position="0 0 352 16" align="Left Top">
<Property key="Caption" value="#{sTransparency_Menu}"/>
<Property key="Caption" value="#{OMWEngine:MenuTransparency}"/>
</Widget>
<Widget type="ScrollBar" skin="MW_HScroll" position="0 20 352 14" align="Left Top HStretch">
<Property key="Range" value="10000"/>
@ -19,17 +19,17 @@
<UserString key="SettingValueType" value="Float"/>
</Widget>
<Widget type="TextBox" skin="SandText" position="0 38 352 16" align="Left Top">
<Property key="Caption" value="#{sFull}"/>
<Property key="Caption" value="#{OMWEngine:TransparencyFull}"/>
<Property key="TextAlign" value="Left"/>
</Widget>
<Widget type="TextBox" skin="SandText" position="0 38 352 16" align="Right Top">
<Property key="Caption" value="#{sNone}"/>
<Property key="Caption" value="#{OMWEngine:TransparencyNone}"/>
<Property key="TextAlign" value="Right"/>
</Widget>
</Widget>
<Widget type="Widget" position="4 64 352 54" align="Left Top HStretch">
<Widget type="TextBox" skin="NormalText" position="0 0 352 16" align="Left Top">
<Property key="Caption" value="#{sMenu_Help_Delay}"/>
<Property key="Caption" value="#{OMWEngine:MenuHelpDelay}"/>
</Widget>
<Widget type="ScrollBar" skin="MW_HScroll" position="0 20 352 14" align="Left Top HStretch">
<Property key="Range" value="10000"/>
@ -40,17 +40,17 @@
<UserString key="SettingValueType" value="Float"/>
</Widget>
<Widget type="TextBox" skin="SandText" position="0 38 352 16" align="Left Top">
<Property key="Caption" value="#{sFast}"/>
<Property key="Caption" value="#{OMWEngine:DelayLow}"/>
<Property key="TextAlign" value="Left"/>
</Widget>
<Widget type="TextBox" skin="SandText" position="0 38 352 16" align="Right Top">
<Property key="Caption" value="#{sSlow}"/>
<Property key="Caption" value="#{OMWEngine:DelayHigh}"/>
<Property key="TextAlign" value="Right"/>
</Widget>
</Widget>
<Widget type="Widget" position="4 124 352 54" align="Left Top HStretch">
<Widget type="TextBox" skin="NormalText" position="0 0 352 16" align="Left Top" name="DifficultyText">
<Property key="Caption" value="#{sDifficulty}"/>
<Property key="Caption" value="#{OMWEngine:Difficulty}"/>
</Widget>
<Widget type="ScrollBar" skin="MW_HScroll" position="0 20 352 14" align="Left Top HStretch">
<Property key="Range" value="201"/>
@ -62,14 +62,14 @@
<UserString key="SettingMin" value="-100"/>
<UserString key="SettingMax" value="100"/>
<UserString key="SettingLabelWidget" value="DifficultyText"/>
<UserString key="SettingLabelCaption" value="#{sDifficulty} (%s)"/>
<UserString key="SettingLabelCaption" value="#{OMWEngine:Difficulty} (%s)"/>
</Widget>
<Widget type="TextBox" skin="SandText" position="0 38 352 16" align="Left Top">
<Property key="Caption" value="#{sEasy}"/>
<Property key="Caption" value="#{OMWEngine:DifficultyEasy}"/>
<Property key="TextAlign" value="Left"/>
</Widget>
<Widget type="TextBox" skin="SandText" position="0 38 352 16" align="Right Top">
<Property key="Caption" value="#{sHard}"/>
<Property key="Caption" value="#{OMWEngine:DifficultyHard}"/>
<Property key="TextAlign" value="Right"/>
</Widget>
</Widget>
@ -90,11 +90,11 @@
<UserString key="SettingLabelCaption" value="#{OMWEngine:ActorsProcessingRange} (%s)"/>
</Widget>
<Widget type="TextBox" skin="SandText" position="0 38 352 16" align="Left Top">
<Property key="Caption" value="#{sLow}"/>
<Property key="Caption" value="#{OMWEngine:DistanceLow}"/>
<Property key="TextAlign" value="Left"/>
</Widget>
<Widget type="TextBox" skin="SandText" position="0 38 352 16" align="Right Top">
<Property key="Caption" value="#{sHigh}"/>
<Property key="Caption" value="#{OMWEngine:DistanceHigh}"/>
<Property key="TextAlign" value="Right"/>
</Widget>
</Widget>
@ -125,7 +125,7 @@
<UserString key="SettingType" value="CheckButton"/>
</Widget>
<Widget type="AutoSizedTextBox" skin="SandText" position="28 4 71 16" align="Left Top">
<Property key="Caption" value="#{sSubtitles}"/>
<Property key="Caption" value="#{OMWEngine:Subtitles}"/>
</Widget>
</Widget>
<Widget type="HBox" position="4 340 260 28">
@ -140,9 +140,9 @@
</Widget>
</Widget>
<Widget type="TabItem">
<Property key="Caption" value=" #{sAudio} "/>
<Property key="Caption" value=" #{OMWEngine:Audio} "/>
<Widget type="TextBox" skin="NormalText" position="4 4 352 18" align="Left Top">
<Property key="Caption" value="#{sMaster}"/>
<Property key="Caption" value="#{OMWEngine:AudioMaster}"/>
</Widget>
<Widget type="ScrollBar" skin="MW_HScroll" position="4 28 352 18" align="HStretch Top">
<Property key="Range" value="10000"/>
@ -153,7 +153,7 @@
<UserString key="SettingValueType" value="Float"/>
</Widget>
<Widget type="TextBox" skin="NormalText" position="4 54 352 18" align="Left Top">
<Property key="Caption" value="#{sVoice}"/>
<Property key="Caption" value="#{OMWEngine:AudioVoice}"/>
</Widget>
<Widget type="ScrollBar" skin="MW_HScroll" position="4 78 352 18" align="HStretch Top">
<Property key="Range" value="10000"/>
@ -164,7 +164,7 @@
<UserString key="SettingValueType" value="Float"/>
</Widget>
<Widget type="TextBox" skin="NormalText" position="4 104 352 18" align="Left Top">
<Property key="Caption" value="#{sEffects}"/>
<Property key="Caption" value="#{OMWEngine:AudioEffects}"/>
</Widget>
<Widget type="ScrollBar" skin="MW_HScroll" position="4 128 352 18" align="HStretch Top">
<Property key="Range" value="10000"/>
@ -175,7 +175,7 @@
<UserString key="SettingValueType" value="Float"/>
</Widget>
<Widget type="TextBox" skin="NormalText" position="4 154 352 18" align="Left Top">
<Property key="Caption" value="#{sFootsteps}"/>
<Property key="Caption" value="#{OMWEngine:AudioFootsteps}"/>
</Widget>
<Widget type="ScrollBar" skin="MW_HScroll" position="4 178 352 18" align="HStretch Top">
<Property key="Range" value="10000"/>
@ -186,7 +186,7 @@
<UserString key="SettingValueType" value="Float"/>
</Widget>
<Widget type="TextBox" skin="NormalText" position="4 204 352 18" align="Left Top">
<Property key="Caption" value="#{sMusic}"/>
<Property key="Caption" value="#{OMWEngine:AudioMusic}"/>
</Widget>
<Widget type="ScrollBar" skin="MW_HScroll" position="4 228 352 18" align="HStretch Top">
<Property key="Range" value="10000"/>
@ -198,7 +198,7 @@
</Widget>
</Widget>
<Widget type="TabItem">
<Property key="Caption" value=" #{sControls} "/>
<Property key="Caption" value=" #{OMWEngine:Controls} "/>
<Widget type="HBox" position="4 4 360 28">
<Property key="Padding" value="0"/>
@ -217,7 +217,7 @@
</Widget>
</Widget>
<Widget type="AutoSizedButton" skin="MW_Button" position="4 198 137 24" align="Left Bottom" name="ResetControlsButton">
<Property key="Caption" value="#{sControlsMenu1}"/>
<Property key="Caption" value="#{OMWEngine:ResetControls}"/>
</Widget>
<Widget type="HBox" position="4 228 600 28" align="Left Bottom">
<Widget type="AutoSizedButton" skin="MW_Button">
@ -234,7 +234,7 @@
<UserString key="SettingType" value="CheckButton"/>
</Widget>
<Widget type="AutoSizedTextBox" skin="SandText" position="56 4 78 16" align="Left Bottom">
<Property key="Caption" value="#{sMouseFlip}"/>
<Property key="Caption" value="#{OMWEngine:InvertYAxis}"/>
</Widget>
</Widget>
<Widget type="TextBox" skin="NormalText" position="4 258 352 18" align="Left Bottom">
@ -251,11 +251,11 @@
<UserString key="SettingMax" value="5.0"/>
</Widget>
<Widget type="TextBox" skin="SandText" position="4 306 352 18" align="Left Bottom">
<Property key="Caption" value="#{sLow}"/>
<Property key="Caption" value="#{OMWEngine:SensitivityLow}"/>
<Property key="TextAlign" value="Left"/>
</Widget>
<Widget type="TextBox" skin="SandText" position="4 306 352 18" align="Right Bottom">
<Property key="Caption" value="#{sHigh}"/>
<Property key="Caption" value="#{OMWEngine:SensitivityHigh}"/>
<Property key="TextAlign" value="Right"/>
</Widget>
<Widget type="HBox" position="4 328 352 28" align="Left Bottom">
@ -265,16 +265,16 @@
<UserString key="SettingType" value="CheckButton"/>
</Widget>
<Widget type="AutoSizedTextBox" skin="SandText" position="28 4 78 16" align="Left Bottom">
<Property key="Caption" value="#{sEnableJoystick}"/>
<Property key="Caption" value="#{OMWEngine:EnableController}"/>
</Widget>
</Widget>
</Widget>
<Widget type="TabItem">
<Property key="Caption" value=" #{sVideo} "/>
<Property key="Caption" value=" #{OMWEngine:Video} "/>
<Widget type="TabControl" skin="TabControlInner" position="4 4 352 390" align="Stretch">
<Property key="ButtonAutoWidth" value="true"/>
<Widget type="TabItem">
<Property key="Caption" value=" #{sVideo} "/>
<Property key="Caption" value=" #{OMWEngine:Video} "/>
<Widget type="ListBox" skin="MW_List" position="0 4 195 225" align="Left Top" name="ResolutionList"/>
<Widget type="TextBox" skin="NormalText" position="207 4 250 18" align="Left Top">
<Property key="Caption" value="#{OMWEngine:WindowMode}"/>
@ -291,8 +291,8 @@
</Widget>
<Widget type="HBox" position="207 74 400 28">
<Widget type="ComboBox" skin="MW_ComboBox" position="0 0 200 24" align="Left Top" name="VSyncModeList">
<Property key="AddItem" value="#{sOff}"/>
<Property key="AddItem" value="#{sOn}"/>
<Property key="AddItem" value="#{Interface:Off}"/>
<Property key="AddItem" value="#{Interface:On}"/>
<Property key="AddItem" value="#{OMWEngine:VSyncAdaptive}"/>
</Widget>
</Widget>
@ -342,15 +342,15 @@
<UserString key="SettingLabelCaption" value="#{OMWEngine:FieldOfView} (%s)"/>
</Widget>
<Widget type="TextBox" skin="SandText" position="0 286 352 18" align="Left Top">
<Property key="Caption" value="#{sLow}"/>
<Property key="Caption" value="#{OMWEngine:FieldOfViewLow}"/>
<Property key="TextAlign" value="Left"/>
</Widget>
<Widget type="TextBox" skin="SandText" position="0 286 352 18" align="Right Top">
<Property key="Caption" value="#{sHigh}"/>
<Property key="Caption" value="#{OMWEngine:FieldOfViewHigh}"/>
<Property key="TextAlign" value="Right"/>
</Widget>
<Widget type="TextBox" skin="NormalText" position="0 308 352 18" align="Left Top" name="GammaText">
<Property key="Caption" value="#{sGamma_Correction}"/>
<Property key="Caption" value="#{OMWEngine:GammaCorrection}"/>
</Widget>
<Widget type="ScrollBar" skin="MW_HScroll" position="0 332 352 18" align="HStretch Top" name="GammaSlider">
<Property key="Range" value="10000"/>
@ -363,16 +363,16 @@
<UserString key="SettingMax" value="3.0"/>
</Widget>
<Widget type="TextBox" skin="SandText" position="0 356 352 18" align="Left Top" name="GammaTextDark">
<Property key="Caption" value="#{sDark_Gamma}"/>
<Property key="Caption" value="#{OMWEngine:GammaDark}"/>
<Property key="TextAlign" value="Left"/>
</Widget>
<Widget type="TextBox" skin="SandText" position="0 356 352 18" align="Right Top" name="GammaTextLight">
<Property key="Caption" value="#{sLight_Gamma}"/>
<Property key="Caption" value="#{OMWEngine:GammaLight}"/>
<Property key="TextAlign" value="Right"/>
</Widget>
</Widget>
<Widget type="TabItem">
<Property key="Caption" value=" #{sDetail_Level} "/>
<Property key="Caption" value=" #{OMWEngine:DetailLevel} "/>
<Widget type="AutoSizedTextBox" skin="NormalText" align="Left Top">
<Property key="Caption" value="#{OMWEngine:TextureFiltering}"/>
@ -398,7 +398,7 @@
</Widget>
<Widget type="AutoSizedTextBox" skin="NormalText" position="0 104 0 18" align="Left Top" name="RenderDistanceLabel">
<Property key="Caption" value="#{sRender_Distance}"/>
<Property key="Caption" value="#{OMWEngine:ViewDistance}"/>
</Widget>
<Widget type="ScrollBar" skin="MW_HScroll" position="0 126 352 18" align="HStretch Top" name="RenderingDistanceSlider">
<Property key="Range" value="4669"/>
@ -410,7 +410,7 @@
<UserString key="SettingMin" value="2500"/>
<UserString key="SettingMax" value="7168"/>
<UserString key="SettingLabelWidget" value="RenderDistanceLabel"/>
<UserString key="SettingLabelCaption" value="#{sRender_Distance} (%s)"/>
<UserString key="SettingLabelCaption" value="#{OMWEngine:ViewDistance} (%s)"/>
</Widget>
<Widget type="ScrollBar" skin="MW_HScroll" position="0 126 352 18" align="HStretch Top" name="LargeRenderingDistanceSlider">
<Property key="Range" value="79421"/>
@ -422,14 +422,14 @@
<UserString key="SettingMin" value="2500"/>
<UserString key="SettingMax" value="81920"/>
<UserString key="SettingLabelWidget" value="RenderDistanceLabel"/>
<UserString key="SettingLabelCaption" value="#{sRender_Distance} (x%s)"/>
<UserString key="SettingLabelCaption" value="#{OMWEngine:ViewDistance} (x%s)"/>
</Widget>
<Widget type="TextBox" skin="SandText" position="0 148 352 18" align="Left Top">
<Property key="Caption" value="#{sNear}"/>
<Property key="Caption" value="#{OMWEngine:DistanceLow}"/>
<Property key="TextAlign" value="Left"/>
</Widget>
<Widget type="TextBox" skin="SandText" position="0 148 352 18" align="Right Top">
<Property key="Caption" value="#{sFar}"/>
<Property key="Caption" value="#{OMWEngine:DistanceHigh}"/>
<Property key="TextAlign" value="Right"/>
</Widget>
@ -479,9 +479,9 @@
<UserString key="HStretch" value="true"/>
<UserString key="VStretch" value="false"/>
<Widget type="ComboBox" skin="MW_ComboBox" position="0 0 200 24" align="Left Top" name="WaterTextureSize">
<Property key="AddItem" value="#{sLow}"/>
<Property key="AddItem" value="#{sMedium}"/>
<Property key="AddItem" value="#{sHigh}"/>
<Property key="AddItem" value="#{OMWEngine:QualityLow}"/>
<Property key="AddItem" value="#{OMWEngine:QualityMedium}"/>
<Property key="AddItem" value="#{OMWEngine:QualityHigh}"/>
</Widget>
<Widget type="Spacer" />
</Widget>
@ -634,7 +634,7 @@
<UserString key="SettingLabelCaption" value="#{OMWEngine:LightsMinimumInteriorBrightness} (%s)"/>
</Widget>
<Widget type="AutoSizedButton" skin="MW_Button" position="0 290 0 0" align="Top Left" name="LightsResetButton">
<Property key="Caption" value="#{sControlsMenu1}"/>
<Property key="Caption" value="#{Interface:Reset}"/>
</Widget>
</Widget>
</Widget>
@ -705,7 +705,7 @@
</Widget>
<Widget type="AutoSizedButton" skin="MW_Button" position="320 420 56 24" align="Right Bottom" name="OkButton">
<Property key="ExpandDirection" value="Left"/>
<Property key="Caption" value="#{sOK}"/>
<Property key="Caption" value="#{Interface:OK}"/>
</Widget>
</Widget>
<CodeGeneratorSettings/>

@ -24,7 +24,7 @@
</Widget>
<Widget type="AutoSizedButton" skin="MW_Button" position="375 251 60 24" name="CancelButton" align="Right Top">
<Property key="ExpandDirection" value="Left"/>
<Property key="Caption" value="#{sOK}"/>
<Property key="Caption" value="#{Interface:OK}"/>
</Widget>
</Widget>

@ -85,7 +85,7 @@
</Widget>
<Widget type="AutoSizedButton" skin="MW_Button" name="CancelButton">
<Property key="Caption" value="#{sCancel}"/>
<Property key="Caption" value="#{Interface:Cancel}"/>
</Widget>
</Widget>

@ -12,7 +12,7 @@
<!-- Dialog buttons -->
<Widget type="AutoSizedButton" skin="MW_Button" position="264 60 42 23" name="OKButton">
<Property key="ExpandDirection" value="Left"/>
<Property key="Caption" value="#{sOk}"/>
<Property key="Caption" value="#{Interface:OK}"/>
</Widget>
</Widget>
</MyGUI>

@ -76,7 +76,7 @@
<Property key="Caption" value="#{sBarterDialog8}"/>
</Widget>
<Widget type="AutoSizedButton" skin="MW_Button" name="CancelButton">
<Property key="Caption" value="#{sCancel}"/>
<Property key="Caption" value="#{Interface:Cancel}"/>
</Widget>
</Widget>

@ -22,7 +22,7 @@
</Widget>
<Widget type="AutoSizedButton" skin="MW_Button" position="244 161 60 24" name="CancelButton" align="Right Top">
<Property key="ExpandDirection" value="Left"/>
<Property key="Caption" value="#{sCancel}"/>
<Property key="Caption" value="#{Interface:Cancel}"/>
</Widget>
</Widget>

@ -25,7 +25,7 @@
</Widget>
<Widget type="AutoSizedButton" skin="MW_Button" position="425 212 60 24" name="CancelButton" align="Right Top">
<Property key="ExpandDirection" value="Left"/>
<Property key="Caption" value="#{sCancel}"/>
<Property key="Caption" value="#{Interface:Cancel}"/>
</Widget>
</Widget>

@ -35,7 +35,7 @@
<Property key="Caption" value="#{sRest}"/>
</Widget>
<Widget type="AutoSizedButton" skin="MW_Button" name="CancelButton">
<Property key="Caption" value="#{sCancel}"/>
<Property key="Caption" value="#{Interface:Cancel}"/>
</Widget>
</Widget>
</Widget>

@ -6,17 +6,13 @@
local core = require('openmw.core')
local time = require('openmw_aux.time')
local conf = require('openmw_aux.calendarconfig')
local l10n = core.l10n('Calendar')
local monthsDuration = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}
local daysInWeek = 7
local monthsDuration = conf.monthsDuration
local daysInYear = 0
for _, d in ipairs(monthsDuration) do daysInYear = daysInYear + d end
local startingYear = 427
local startingYearDay = 227
local startingWeekDay = 1
local function gameTime(t)
if not t then
return core.getGameTime()
@ -43,10 +39,10 @@ local function formatGameTime(formatStr, timestamp)
timestamp = timestamp or core.getGameTime()
local t = {}
local day = math.floor(timestamp / time.day)
t.year = math.floor(day / daysInYear) + startingYear
t.yday = (day + startingYearDay - 1) % daysInYear + 1
t.wday = (day + startingWeekDay - 1) % daysInWeek + 1
local day = math.floor(timestamp / time.day) + conf.startingYearDay - 1
t.year = math.floor(day / daysInYear) + conf.startingYear
t.yday = day % daysInYear + 1
t.wday = (day + conf.startingWeekDay - conf.startingYearDay) % conf.daysInWeek + 1
timestamp = timestamp % time.day
t.hour = math.floor(timestamp / time.hour)
timestamp = timestamp % time.hour
@ -75,10 +71,10 @@ local function formatGameTime(formatStr, timestamp)
if tag == '%M' then return string.format('%02d', t.min) end
if tag == '%m' then return string.format('%02d', t.month) end
if tag == '%p' then
if t.hour > 0 and t.hour <= 12 then
return 'am'
if t.hour >= 0 and t.hour < 12 then
return l10n('am')
else
return 'pm'
return l10n('pm')
end
end
if tag == '%S' then return string.format('%02d', t.sec) end
@ -122,7 +118,7 @@ return {
--- The number of days in a week
-- @field [parent=#calendar] #number daysInWeek
daysInWeek = daysInWeek,
daysInWeek = conf.daysInWeek,
--- The number of days in a month
-- @function [parent=#calendar] daysInMonth
@ -153,7 +149,7 @@ return {
-- @param dayIndex
-- @return #string
weekdayName = function(d)
return l10n('weekday' .. ((d-1) % daysInWeek + 1))
return l10n('weekday' .. ((d-1) % conf.daysInWeek + 1))
end,
}

@ -0,0 +1,9 @@
return {
monthsDuration = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31},
daysInWeek = 7,
-- It is the day of OpenMW 0.1.0 release, we use it as default starting date
startingYear = 2008,
startingYearDay = 151,
startingWeekDay = 0,
}
Loading…
Cancel
Save