Load languages from the player's own folders and add the new strings

Translations also come from folders of the player's, the old starter's
lang-XX.txt and the simulator's XX.po. Strings for the commits that follow in five
languages, shorter where they had grown.
This commit is contained in:
maj00r
2026-11-01 16:06:15 +01:00
parent 07987a60a9
commit b6735fe345
7 changed files with 2041 additions and 252 deletions

View File

@@ -7,7 +7,6 @@
<String key="NavScenarios">Scenarios</String>
<String key="NavDepot">Depot</String>
<String key="NavSettings">Settings</String>
<String key="NavDeveloper">Developer</String>
<String key="NavControls">Controls</String>
<String key="Help">Help</String>
<String key="HelpWiki">MaSzyna wiki</String>
@@ -82,10 +81,47 @@
<String key="TexAuthor">Author</String>
<String key="TexPhoto">Photos</String>
<String key="ShowLatestLogTooltip">Open latest simulation log</String>
<String key="HaslerTapes">Hasler tapes</String>
<String key="HaslerTapesTooltip">Read Hasler speed recorder tapes</String>
<String key="HaslerByDistance">by distance</String>
<String key="HaslerByTime">by time</String>
<String key="HaslerFeed">Tape feed</String>
<String key="HaslerScale">Scale</String>
<String key="HaslerLive">Live</String>
<String key="HaslerOpenFolder">Open folder</String>
<String key="HaslerNoTapes">No tapes in {0}.</String>
<String key="HaslerRecordingOff">Tape recording is off.</String>
<String key="HaslerRecordingEnable">Turn on recording</String>
<String key="HaslerLiveTip">Shows the tape of the vehicle you are driving.</String>
<String key="HaslerRoleDriven">Driven</String>
<String key="HaslerRoleConsist">Your consist</String>
<String key="HaslerClockUnknown">hour unknown, time counted from the start of the simulation</String>
<String key="HaslerUnreadable">Could not read the tape {0}.</String>
<String key="HaslerSummary">{0} · recorded {1} (running {2}, standing {3}) · distance {4:0.00} km · Vmax {5:0} km/h · running average {6:0} km/h · average with stops {7:0} km/h</String>
<String key="HaslerCursor">{0} · {1:0.0} km · {2:0} km/h · cylinders {3:0.0} bar · current {4}</String>
<String key="HaslerTrackCylinders">Cylinders</String>
<String key="HaslerTrackPipe">BP</String>
<String key="HaslerTrackBrake">Braking</String>
<String key="HaslerTrackCurrent">Current</String>
<String key="HaslerTrackShp">Vigilance</String>
<String key="HaslerRecorderElectronic">electronic</String>
<String key="HaslerRecorderHasler">Hasler RT9</String>
<String key="HaslerRecorder">Recorder</String>
<String key="HaslerNo">no</String>
<String key="HaslerYes">yes</String>
<String key="ElectronicCursor">{0} · {1:0.000} km · {2:0.0} km/h · BP {3:0.00} bar · cylinders {4:0.00} bar · current {5} · vigilance {6}</String>
<String key="HaslerStartClock">Start</String>
<String key="HaslerStartClockTip">Time the scenery starts at (hh:mm). Type it in for older tapes.</String>
<String key="HaslerExportPng">Export PNG</String>
<String key="HaslerExportFailed">Could not save {0}.</String>
<!-- Depot / consist creation -->
<String key="VehicleDatabase">Vehicle database</String>
<String key="TextureBaseTitle">Rolling stock database</String>
<String key="TextureBaseCount">Showing {0} of {1}</String>
<String key="TextureBaseNoMatch">No vehicle matches these filters.</String>
<String key="TextureBasePick">Pick a vehicle from the list. A double-click replaces the one selected in the consist.</String>
<String key="ClearFilters">Clear filters</String>
<String key="OpenTextureBase">Stock database…</String>
<String key="Search">Search...</String>
<String key="LoadFromScenery">Load consist from scenery</String>
@@ -259,6 +295,7 @@
<String key="ExeLaunchFailed">Could not start the simulator</String>
<String key="ExeNotFound">The simulator executable was not found.</String>
<String key="ExeNotExecutable">The file is not marked as executable (chmod +x).</String>
<String key="ExeNotAProgram">This is not a program: there is no binary or script inside.</String>
<String key="ExeWrongPlatform">This binary is built for a different operating system. On Linux a Windows build can still run through Wine or Proton - if you use them, this is not an error.</String>
<String key="SimExitTitle">The simulator ended unexpectedly</String>
<String key="SimExitCode">Exit code: {0}</String>
@@ -303,7 +340,6 @@
<String key="PresetSave">Save consist</String>
<String key="PresetLoad">Load consist from warehouse</String>
<String key="PresetEmpty">(warehouse empty)</String>
<String key="PresetDelete">Remove from warehouse</String>
<String key="PresetNamePrompt">Consist name</String>
<String key="ConsistCopy">Copy consist to clipboard</String>
<String key="ConsistPaste">Paste consist from clipboard</String>
@@ -318,6 +354,8 @@
<String key="General">General</String>
<String key="Language">Language</String>
<String key="LanguageDesc">Also the simulator's language. Saved as soon as it is picked.</String>
<String key="LanguageSimMissing">The simulator has no translation for this language and will run in English.</String>
<String key="Fullscreen">Fullscreen</String>
<String key="PauseSimInactive">Pause simulation when window is inactive</String>
<String key="PauseSimStart">Pause on start</String>
@@ -345,7 +383,13 @@
<String key="UartSection">UART configuration</String>
<String key="UartEnable">Enable UART communication</String>
<String key="UartPort">Serial port</String>
<String key="UartTune">Tuning parameter</String>
<String key="UartTune">Calibration</String>
<String key="UartBaud">Speed (baud)</String>
<String key="UartEvery">Send every (s)</String>
<String key="UartPortNone">e.g. /dev/ttyUSB0 or COM3</String>
<String key="UartPortMissing">Without a port UART stays off.</String>
<String key="UartTunePlaceholder">empty = simulator defaults</String>
<String key="UartTuneInvalid">Not {0} numbers: the calibration is not saved.</String>
<String key="UartDebug">Print debug data to the console</String>
<String key="UartMain">Master controller</String>
<String key="UartScnd">Secondary/shunting controller</String>
@@ -366,29 +410,42 @@
<String key="VirtualShuntingDesc">Enables an AI assistant for coupling, uncoupling and simple shunting moves while the vehicle is stopped.</String>
<String key="LogMissingVehicleFiles">Log missing vehicle files during export</String>
<String key="LogMissingVehicleFilesDesc">Writes vehicles the starter could not find into the log.</String>
<String key="DeveloperTools">Show the package author's tab</String>
<String key="DeveloperToolsDesc">Adds a tab with the state of the vehicle database, for preparing rolling stock packages.</String>
<String key="Graphic">Graphics</String>
<String key="RenderEngine">Render engine</String>
<String key="RenderEngineDesc">OpenGL rendering path. 'Simplified' and 'Old' use the legacy renderer.</String>
<String key="RenderEngineDesc">Full: OpenGL 3.3 with shadows and reflections. Old and Simplified: for weak cards. Experimental: Vulkan, Direct3D 12, in development.</String>
<String key="REFull">Full</String>
<String key="REOld">Old</String>
<String key="RESimpShader">Simplified (legacy)</String>
<String key="RESimp">Simplified</String>
<String key="REOff">Disable visual layer</String>
<String key="REExperimental">Experimental</String>
<String key="REExperimentalWarning">Note: the experimental renderer is still being developed. It may be unstable, miss parts of the scene or not start on some graphics cards. If the simulator does not start or looks wrong, go back to the “Full” renderer.</String>
<String key="GpuChoice">Graphics card (Linux)</String>
<String key="GpuDiscrete">Faster (discrete)</String>
<String key="GpuSystem">As the system decides</String>
<String key="GpuNoteTarget">Found: {0}. The simulator will run on: {1}.</String>
<String key="GpuNoteNone">Found: {0}. The screen is already driven by the right card – the starter changes nothing.</String>
<String key="GpuNoteSystem">Found: {0}. The system picks the card, usually the integrated one.</String>
<String key="GpuNotePlayer">Found: {0}. Environment variables ({1}) choose the card; the starter leaves them alone.</String>
<String key="GpuNoteOne">One card: {0} – nothing to choose between.</String>
<String key="GpuNoteUnread">Could not read the graphics cards from /sys/class/drm.</String>
<String key="IdleWindowsBuildOnly">Only the Windows build of the simulator uses this.</String>
<String key="IdleLegacyRendererOnly">Only the legacy renderer reads this, and another one is chosen.</String>
<String key="IdleNeedsFrameRateTarget">Only works with a target frame rate (targetfps).</String>
<String key="IdleOpenGlRenderersOnly">The experimental renderer does not read this.</String>
<String key="IdleModernRendererOnly">Only the full renderer reads this, and another one is chosen.</String>
<String key="IdleNeedsNetworkServer">The pause in the background needs a network server (network.server).</String>
<String key="Resolution">Resolution</String>
<String key="ResolutionOnMonitor">{0} (monitor)</String>
<String key="IdleMonitorMode">Has no effect with automatic resolution.</String>
<String key="BufforResolution">Buffer resolution</String>
<String key="BufforResolutionDesc">Scales the internal render buffer relative to the window resolution.</String>
<String key="MaxTexResolution">Maximum texture resolution</String>
<String key="MaxTexCabResolution">Maximum cabin texture resolution</String>
<String key="TexFilteringQuality">Texture filtering quality</String>
<String key="TexFilteringQualityDesc">Anisotropic texture filtering level.</String>
<String key="TexFilteringQualityDesc">Sharpness of textures seen at an angle, such as tracks. Even x16 costs little.</String>
<String key="Multisampling">Multisampling</String>
<String key="MultisamplingDesc">Anti-aliasing of object edges. Higher settings cost more GPU time.</String>
<String key="MultisamplingDesc">Smooths edges. Every step costs noticeable frames.</String>
<String key="QualityVeryLow">Very low</String>
<String key="QualityLow">Low</String>
<String key="QualityNormal">Normal</String>
@@ -399,7 +456,6 @@
<String key="QualityStandard">Standard</String>
<String key="RangeVeryLow">Very low</String>
<String key="RangeLow">Low</String>
<String key="RangeNormal">Normal</String>
<String key="RangeModerate">Moderate</String>
<String key="RangeStandard">Standard</String>
<String key="RangeHigh">High</String>
@@ -407,12 +463,13 @@
<String key="RangeDisabled">Disabled</String>
<String key="DynamicLights">Dynamic light sources</String>
<String key="DynamicLightsDesc">Maximum number of simultaneous dynamic light sources.</String>
<String key="RenderRange">Rendering range</String>
<String key="RenderRangeDesc">Maximum draw-distance multiplier; the engine lowers it automatically when the FPS drops.</String>
<String key="FpsLimitEnable">Limit frame rate</String>
<String key="RenderRange">Draw distance stretch (max)</String>
<String key="RenderRangeDesc">How many times the simulator may stretch the range when frames are to spare. Squared in the full renderer: ×3 means up to ×9.</String>
<String key="FpsLimitOff">No limit</String>
<String key="FpsLimit">Frame rate limit</String>
<String key="FpsLimitDesc">Fewer frames: a cooler, quieter computer. With V-Sync a limit above the refresh rate does nothing.</String>
<String key="ShadowAngleLimit">Shadow length limit</String>
<String key="ShadowAngleLimitDesc">Shortens the long shadows cast by a low sun. Higher values cut them sooner.</String>
<String key="ShadowLimitNone">No limit</String>
<String key="ShadowLimitShort">Shortened</String>
<String key="FullscreenWindowed">Automatic resolution (borderless fullscreen)</String>
<String key="RenderAngleVulkan">Use ANGLE Vulkan renderer</String>
@@ -433,8 +490,13 @@
<String key="RenderVBODesc">Keeps geometry in GPU buffers (faster). Disable only if you have problems with an old GPU.</String>
<String key="RenderShadows">Render shadows</String>
<String key="ReflectionsFramerate">Reflections refresh rate</String>
<String key="ReflectionsFramerateDesc">How often reflections refresh. Less often means more frames.</String>
<String key="EveryMinutes">every {0} min</String>
<String key="EverySeconds">every {0} s</String>
<String key="TimesPerSecond">{0}× a second</String>
<String key="ShadowsResolution">Shadows resolution</String>
<String key="ShaderRange">Shadow range</String>
<String key="ShaderRangeDesc">How far shadows reach; the further, the softer. After the arrow: the real reach.</String>
<String key="CabShadowsRange">Cabin shadow sources range</String>
<String key="CabShadowsRangeDesc">Distance at which light sources still cast shadows inside the cab. Zero turns cab shadows off.</String>
@@ -451,7 +513,7 @@
<String key="RDTerrainModelsVehicles">Terrain geometry, static models and vehicles</String>
<String key="FieldOfView">View angle</String>
<String key="FieldOfViewDesc">Vertical camera field of view in degrees (15–75).</String>
<String key="FieldOfViewDesc">Vertical camera field of view in degrees (10–75).</String>
<String key="RenderScreens">Render onboard computer screens</String>
<String key="RenderScreensDesc">Enables cab screens driven by Python scripts.</String>
<String key="RenderScreensThread">Render screens in a separate thread</String>
@@ -493,13 +555,19 @@
<String key="Advanced">Advanced</String>
<String key="CompressTextures">Compress TGA textures</String>
<String key="ScaleSpeculars">Scale specular highlights (old-model compatibility)</String>
<String key="ScaleSpecularsDesc">Tones down the shine of models made for older renderers.</String>
<String key="UseGLES">Use OpenGL ES</String>
<String key="UseGLESDesc">OpenGL ES instead of OpenGL. Does not work with the legacy renderer.</String>
<String key="ShaderGamma">Gamma correction in shaders</String>
<String key="ShaderGammaDesc">Gamma in the shaders instead of sRGB. For when a driver gives too bright or dark a picture.</String>
<String key="ScreenMipmaps">Generate mipmaps for in-cab (Python) screen textures</String>
<String key="ScreenMipmapsDesc">Cab screens smoother from afar and at an angle, at a cost on each refresh.</String>
<String key="ExtendedModelConversion">Extended E3D model conversion (experimental)</String>
<String key="ExtendedModelConversionDesc">Saves text models as binary E3D: faster loading, more files in the game folder.</String>
<String key="GfxResourceMove">Conservative texture memory management</String>
<String key="GfxResourceSweep">Purge unused textures from GPU memory</String>
<String key="TrainPhysicsThreads">Vehicle physics threads (0 = main thread)</String>
<String key="TrainPhysicsThreadsDesc">Threads for vehicle physics; 0 is the main thread. More helps with many consists.</String>
<String key="IgnoreIrrelevantTrains">Skip decorative consists when starting</String>
<String key="Starter">Starter</String>
@@ -523,7 +591,6 @@
<String key="KbShift">With Shift</String>
<String key="KbCtrl">With Ctrl</String>
<String key="KbShiftCtrl">With Ctrl + Shift</String>
<String key="KbReserved">Reserved by the simulator</String>
<String key="BindKeyTitle">Key:</String>
<String key="BindKeyHint">Assign a command to each modifier combination for this key.</String>
<String key="BindNone">— none —</String>
@@ -536,6 +603,7 @@
<String key="Save">Save</String>
<String key="Reset">Reset</String>
<String key="SettingsSaved">Settings saved</String>
<String key="SettingsNotSaved">Could not save the settings</String>
<String key="UnsavedChanges">Unsaved changes</String>
<!-- Errors / diagnostics -->
@@ -563,6 +631,10 @@
<String key="AboutNoChangelog">No changelog file found.</String>
<String key="About">About</String>
<String key="Close">Close</String>
<String key="CpuNoAvx2Title">Processor without AVX2</String>
<String key="CpuNoAvx2">This processor has no AVX2 and the official simulator needs it: it will not start.&#10;&#10;You can build the simulator without AVX2 (CMake -DENABLE_AVX2=OFF). Instructions:&#10;{0}</String>
<String key="CpuNoAvx2Open">Open the instructions</String>
<String key="DontShowAgain">Don't show again</String>
<String key="SettingsPath">Settings loaded from:</String>
<!-- Vehicle info -->
@@ -580,7 +652,6 @@
<String key="WarehouseConsists">Consists in the warehouse</String>
<String key="AddToWarehouse">Add to warehouse</String>
<String key="RemoveFromWarehouse">Remove from warehouse</String>
<String key="WarehouseApply">Replace with warehouse consist</String>
<String key="WarehouseImportNothing">No consists found to import.</String>
<String key="AboutTexture">About texture</String>
<String key="NoTextureInfo">No texture information.</String>
@@ -592,11 +663,15 @@
<String key="TipAutoCoupler">Pick couplings automatically for the whole consist</String>
<String key="CouplingLastVehicle">Rear coupler of the train — no vehicle behind it.</String>
<String key="ChangeName">Rename...</String>
<String key="LoadCopyToAll">Apply this load to every following vehicle that accepts it</String>
<String key="LoadCopyToAll">Same load for the following vehicles</String>
<String key="WarehouseAppend">Append warehouse consist</String>
<String key="WarehouseImportFile">Add consists from file...</String>
<String key="StartWithoutSaving">Start without saving settings</String>
<String key="StartMore">More ways to start</String>
<String key="StartFreeFly">Start with no vehicle</String>
<String key="StartEditorShort">Scenery editor</String>
<String key="StartEditorWizard">Create a new scenery</String>
<String key="StartEditorWizardTip">The new scenery wizard in the simulator's editor. Only some builds have the editor.</String>
<String key="StartEditor">Open the scenery editor</String>
<String key="StartEditorWarning">Only some simulator builds have the scenery editor (eu07 -edit). If the selected simulator does not, the editor will not open. It works on {0} itself, not on the starter's copy, so what you save goes into the scenery. Start it?</String>
<String key="DebugLogVisible">Show log in console</String>
@@ -626,21 +701,21 @@
<String key="RuleNew">— new rule —</String>
<String key="RuleRemove">Remove from rule</String>
<String key="CatAll">All</String>
<String key="GfxColResolution">Resolution and textures</String>
<String key="GfxColRendering">Rendering</String>
<String key="GfxColResolution">Picture</String>
<String key="GfxColRendering">Renderer</String>
<String key="GfxColShadows">Shadows</String>
<String key="GfxColReflections">Reflections and view</String>
<String key="GfxColScripts">Python scripts</String>
<String key="UartHint">Port name / leave alone / data send rate</String>
<String key="UartFeature">UARTfeature:</String>
<String key="UartSaveClose">Save and close</String>
<String key="GfxColEffects">Effects</String>
<String key="GfxColTextures">Textures and anti-aliasing</String>
<String key="GfxColDrawRange">Draw distance</String>
<String key="GfxColSmoothness">Smoothness</String>
<String key="GfxColReflections">Reflections</String>
<String key="GfxColScripts">Cab screens</String>
<String key="UartFeature">Controls over UART</String>
<String key="PickCategoryFirst">Pick a vehicle category or class first.</String>
<String key="HideArchivalSceneries">Hide archived scenarios</String>
<String key="Tools">Tools</String>
<String key="AdvancedSettings">Advanced settings</String>
<String key="AdvLogPage">Event log</String>
<String key="AdvClearLog">Clear log</String>
<String key="ConsistSchedule">Composition</String>
<!-- Keyboard shortcuts -->
<String key="ShortcutsTitle">Keyboard shortcuts</String>
@@ -657,18 +732,369 @@
<String key="ShortcutCardMenu">Open the vehicle menu</String>
<!-- Package author's tab -->
<String key="DevDatabase">Vehicle database</String>
<String key="DevVehicles">Vehicle folders</String>
<String key="DevLiveries">Liveries</String>
<String key="DevWrecks">wrecks</String>
<String key="DevGroups">Groups</String>
<String key="DevSets">Fixed sets</String>
<String key="DevFiles">textures.txt files</String>
<String key="DevSource">Read from</String>
<String key="DevSourceCopy">the starter's copy</String>
<String key="DevSourceTextures">textures.txt files</String>
<String key="DevWritten">Copy written</String>
<String key="DevLocation">Copy folder</String>
<String key="DevRebuild">Rebuild copy</String>
<String key="DevRebuilt">Rebuilt</String>
<!-- Key binding descriptions, by eu07_input-keyboard.ini command. Polish takes them
from the bundled key file; a language without its own falls back to these. -->
<String key="AdvancedResources">Resources and compatibility</String>
<String key="AdvancedLogTools">Log and tools</String>
<String key="LogAndTools">Event log and tools</String>
<String key="OpenLogTools">Open the log and tools…</String>
<String key="IniDefault">default</String>
<String key="IniSectionInterface">Simulator interface</String>
<String key="IniSectionRanges">Ranges and rendering details</String>
<String key="IniSectionAudio">Audio engine</String>
<String key="IniSectionPhysics">More simulation options</String>
<String key="IniSectionConsole">Console</String>
<String key="ReplaceVehicle">Replace</String>
<String key="TipReplaceVehicle">Replace the vehicle in the consist with this one (double-click)</String>
<String key="ReplaceWithBrowser">Replace with the browser's pick</String>
<String key="ConsistUndo">Undo the last change to the consist (Ctrl+Z)</String>
<String key="ConsistRedo">Redo the undone change (Ctrl+Y)</String>
<String key="WarehouseEditHint">Edit it in the consist strip below. Changes save themselves.</String>
<String key="WarehousePickHint">Pick a warehouse consist to edit it.</String>
<String key="ConsistPickHint">Pick a consist from the list to edit it.</String>
<String key="WarehouseOverwriteConfirm">The warehouse already has a consist called "{0}". Replace it?</String>
<String key="WarehouseRemoveConfirm">Remove the consist "{0}" from the warehouse?</String>
<String key="ReloadSceneriesConfirm">Consists have unsaved changes. Reloading the sceneries drops them. Continue?</String>
<String key="ConsistFromWarehouse">Warehouse: {0}</String>
<String key="SaveToScenery">Save to the scenery file</String>
<String key="RevertFromScenery">Revert to the scenery file</String>
<String key="SaveToSceneryConfirm">The consist goes for good into {0}.&#10;&#10;Copy of the original: {1}.</String>
<String key="SaveToSceneryNotFound">This consist is not in {0}: the file has changed. Reload the sceneries and make your changes again.</String>
<String key="SceneryFileChangedTitle">Scenery file changed</String>
<String key="SceneryFileChangedConfirm">{0} changed outside the starter. Unsaved changes in: {1}. Read the file and drop them? Without reading it they cannot be saved.</String>
<String key="ConsistUnsaved">Changed - not saved in the scenery file (Ctrl+S saves)</String>
<String key="ConsistReversed">Reversed</String>
<String key="ConsistReversedTip">The scenery turns this consist round (reversed). The starter does not change that.</String>
<String key="SyntaxTab">Syntax errors ({0})</String>
<String key="SyntaxIntro">The simulator may read these places differently from what the author meant.</String>
<String key="SyntaxTreeTip">Syntax errors in the scenery's files: {0}</String>
<String key="SyntaxMore">… and {0} more</String>
<String key="SyntaxUnclosedComment">Comment /* is never closed – the simulator skips the rest of the file</String>
<String key="SyntaxTrainsetNotClosed">Trainset {0} does not end with endtrainset</String>
<String key="SyntaxTrainsetHeaderRepeated">Header of trainset {0} repeated</String>
<String key="SyntaxTrainsetIncomplete">Incomplete header of trainset {0} (trainset name track offset speed)</String>
<String key="SyntaxStrayEndTrainset">endtrainset with no trainset begun</String>
<String key="SyntaxReversedMisplaced">reversed outside a trainset's header – it has to come before the first vehicle</String>
<String key="SyntaxVehicleNotClosed">Vehicle {0} without enddynamic</String>
<String key="SyntaxVehicleIncomplete">Incomplete entry of vehicle {0}</String>
<String key="SyntaxLoadCountMissing">Vehicle {0}: no load count before enddynamic (0 at least)</String>
<String key="SyntaxLoadTypeMissing">Vehicle {0}: load {1} without its type</String>
<String key="SyntaxWordBeforeEnd">Vehicle {0}: stray “{1}” before enddynamic</String>
<String key="SyntaxLost">The simulator skips because of it: {0}</String>
<String key="SyntaxUnmade">Because of it these trainsets are not made: {0}</String>
<String key="SyntaxTrackNameSplit">Trainset {0}: space in track name “{1}”</String>
<String key="SyntaxVehicleOutsideTrainset">Vehicle {0} stands outside a trainset: header missing?</String>
<String key="SyntaxNotANumber">{0}: “{1}” instead of a number</String>
<String key="SyntaxMissingInclude">File {1} not found (include)</String>
<String key="SyntaxIncludeLetterCase">File {1} is on disk as {0}: the Linux eu07 will not load it</String>
<String key="SyntaxIncludeNotClosed">include {1} without end</String>
<String key="SyntaxTrainsetUnreadable">Trainset {0} could not be read</String>
<String key="SyntaxVehicleUnreadable">Vehicle {0} could not be read</String>
<String key="WarehouseUseInScenery">Put into the selected scenery consist</String>
<String key="WarehouseAppendToScenery">Append to the selected scenery consist</String>
<String key="ShortcutUndo">Undo a change to the consist</String>
<String key="ShortcutRedo">Redo a change to the consist</String>
<String key="AddToWarehouseNamed">Add to warehouse as…</String>
<String key="Ini.ui.scale">Simulator UI scale</String>
<String key="Ini.ui.fontsize">UI font size</String>
<String key="Ini.ui.bg.opacity">Window background opacity</String>
<String key="Ini.gui.defaultwindows">Show the driving aid and scenario windows on start</String>
<String key="Ini.gui.trainingdefault">Open the map, training card and vehicle list on start</String>
<String key="Ini.gui.showtranscripts">Transcripts window (radio and voice messages)</String>
<String key="Ini.loadinglog">Show the log while loading</String>
<String key="Ini.captureonstart">Mouse turns the camera on start</String>
<String key="Ini.mousecontrol">Click cab controls with the mouse</String>
<String key="Ini.fullscreenmonitor">Full-screen monitor</String>
<String key="Ini.screenshotsdir">Screenshots folder</String>
<String key="Ini.basedrawrange">Base draw range</String>
<String key="Ini.targetfps">Target frame rate</String>
<String key="Ini.sleeperdistance">Sleeper draw distance</String>
<String key="Ini.gfx.reflections.range_instances">Object reflection range</String>
<String key="Ini.gfx.reflections.range_vehicles">Vehicle reflection range</String>
<String key="Ini.gfx.textures.streaming">Stream textures in the background</String>
<String key="Ini.gfx.textures.releasedistance">Release textures of distant vehicles</String>
<String key="Ini.skyenabled">Draw the sky</String>
<String key="Ini.rendercab">Draw the cab</String>
<String key="Ini.gfx.postfx.motionblur.shutter">Motion blur shutter time</String>
<String key="Ini.python.vsync">Vertical sync for screen windows</String>
<String key="Ini.python.displaywindows">Cab screens in separate windows</String>
<String key="Ini.newaircouplers">Draw air hoses by how the vehicles are coupled</String>
<String key="Ini.smoothtraction">Smooth overhead wires (classic renderer)</String>
<String key="Ini.sound.maxsources">Maximum sound sources</String>
<String key="Ini.sound.asyncload">Decode sounds in the background</String>
<String key="Ini.loadtraction">Load overhead wires</String>
<String key="Ini.rollfix">Recalculate track cant</String>
<String key="Ini.shakefactor">Camera shake</String>
<String key="Ini.map.manualswitchcontrol">Throw switches from the map</String>
<String key="Ini.map.highlightdistance">Route highlight on the map</String>
<String key="Ini.showsystemconsole">Console window with the log (Windows)</String>
<String key="OpenLogToolsDesc">The starter's messages and bulk depot tools.</String>
<String key="CompressTexturesDesc">Less graphics memory, longer loading.</String>
<String key="GfxResourceSweepDesc">Best left off when the graphics card has memory to spare.</String>
<String key="GfxResourceMoveDesc">May cause trouble on some graphics cards.</String>
<String key="IgnoreIrrelevantTrainsDesc">Leaves out consists the scenery marks as decoration.</String>
<String key="Ini.ui.scale.Desc">Enlarges the simulator's windows and buttons.</String>
<String key="Ini.ui.fontsize.Desc">Size of the text in the simulator's windows.</String>
<String key="Ini.ui.bg.opacity.Desc">1 is solid; lower values let the view show through.</String>
<String key="Ini.captureonstart.Desc">Unticked, it starts with a pointer in the cab.</String>
<String key="Ini.mousecontrol.Desc">Off, the pointer mode is unavailable and the mouse only turns the camera.</String>
<String key="Ini.fullscreenmonitor.Desc">Empty: the primary monitor.</String>
<String key="Ini.screenshotsdir.Desc">Relative to the game folder, with no spaces in the path.</String>
<String key="Ini.basedrawrange.Desc">How far the scenery is drawn; a target FPS may change it.</String>
<String key="Ini.targetfps.Desc">Below this the simulator shortens the draw range, above it lengthens it.</String>
<String key="Ini.gfx.textures.streaming.Desc">DDS textures are read in the background: the scenery loads faster. It does not raise FPS.</String>
<String key="Ini.gfx.textures.releasedistance.Desc">Multiple of the draw range beyond which vehicle textures leave the graphics card.</String>
<String key="Ini.rendercab.Desc">Off hides the cab model; for testing.</String>
<String key="Ini.gfx.postfx.motionblur.shutter.Desc">A longer time blurs more.</String>
<String key="Ini.python.displaywindows.Desc">Useful with several monitors or a desk with its own displays.</String>
<String key="Ini.sound.maxsources.Desc">How many sounds may play at once.</String>
<String key="Ini.sound.asyncload.Desc">Sound files are decoded by worker threads, for faster loading.</String>
<String key="Ini.loadtraction.Desc">Without wires pantographs never break and electric locomotives always have power.</String>
<String key="Ini.shakefactor.Desc">Multiplier of the cab view's sway on every axis; 0 means none.</String>
<String key="Ini.map.highlightdistance.Desc">How far ahead of and behind the vehicle the map highlights the track.</String>
<String key="Cmd.aidriverenable">engage the AI driver</String>
<String key="Cmd.aidriverdisable">disengage the AI driver</String>
<String key="Cmd.mastercontrollerincrease">master controller up</String>
<String key="Cmd.mastercontrollerincreasefast">master controller up, fast</String>
<String key="Cmd.mastercontrollerdecrease">master controller down</String>
<String key="Cmd.mastercontrollerdecreasefast">master controller down, fast</String>
<String key="Cmd.secondcontrollerincrease">shunt controller up</String>
<String key="Cmd.secondcontrollerincreasefast">shunt controller up, fast</String>
<String key="Cmd.secondcontrollerdecrease">shunt controller down</String>
<String key="Cmd.secondcontrollerdecreasefast">shunt controller down, fast</String>
<String key="Cmd.mucurrentindicatorothersourceactivate">switch the current gauge to the other unit</String>
<String key="Cmd.independentbrakeincrease">apply more locomotive brake</String>
<String key="Cmd.independentbrakeincreasefast">apply more locomotive brake, fast</String>
<String key="Cmd.independentbrakedecrease">release locomotive brake</String>
<String key="Cmd.independentbrakedecreasefast">release locomotive brake, fast</String>
<String key="Cmd.independentbrakebailoff">bail off the locomotive brake</String>
<String key="Cmd.trainbrakeincrease">train brake valve: more braking</String>
<String key="Cmd.trainbrakedecrease">train brake valve: less braking</String>
<String key="Cmd.trainbrakecharging">train brake valve: overcharge the brake pipe</String>
<String key="Cmd.trainbrakerelease">train brake valve: running position</String>
<String key="Cmd.trainbrakefirstservice">train brake valve: first braking step</String>
<String key="Cmd.trainbrakeservice">train brake valve: full service</String>
<String key="Cmd.trainbrakefullservice">train brake valve: supplementary braking</String>
<String key="Cmd.trainbrakehandleoff">train brake valve: lap position</String>
<String key="Cmd.trainbrakeemergency">emergency braking</String>
<String key="Cmd.trainbrakebasepressureincrease">raise the brake pipe pressure level</String>
<String key="Cmd.trainbrakebasepressuredecrease">lower the brake pipe pressure level</String>
<String key="Cmd.trainbrakebasepressurereset">default brake pipe pressure level</String>
<String key="Cmd.trainbrakeoperationtoggle">toggle the vehicle's brake</String>
<String key="Cmd.manualbrakeincrease">apply more hand brake</String>
<String key="Cmd.manualbrakedecrease">release hand brake</String>
<String key="Cmd.alarmchaintoggle">toggle the emergency brake</String>
<String key="Cmd.wheelspinbrakeactivate">anti-slip brake</String>
<String key="Cmd.sandboxactivate">sander</String>
<String key="Cmd.reverserincrease">reverser up</String>
<String key="Cmd.reverserdecrease">reverser down</String>
<String key="Cmd.reverserforwardhigh">reverser: forward II</String>
<String key="Cmd.reverserforward">reverser: forward</String>
<String key="Cmd.reverserneutral">reverser: neutral</String>
<String key="Cmd.reverserbackward">reverser: backward</String>
<String key="Cmd.waterpumpbreakertoggle">toggle the water pump circuit breaker</String>
<String key="Cmd.waterpumptoggle">toggle the water pump</String>
<String key="Cmd.waterheaterbreakertoggle">toggle the water heater circuit breaker</String>
<String key="Cmd.waterheatertoggle">toggle the water heater</String>
<String key="Cmd.watercircuitslinktoggle">toggle the link between the water circuits</String>
<String key="Cmd.fuelpumptoggle">toggle the fuel pump</String>
<String key="Cmd.oilpumptoggle">toggle the oil pump</String>
<String key="Cmd.linebreakertoggle">toggle the line breaker</String>
<String key="Cmd.convertertoggle">toggle the converter</String>
<String key="Cmd.convertertogglelocal">toggle the converter in the occupied unit</String>
<String key="Cmd.converteroverloadrelayreset">reset the converter overload relay</String>
<String key="Cmd.compressortoggle">toggle the compressor</String>
<String key="Cmd.compressortogglelocal">toggle the compressor in the occupied unit</String>
<String key="Cmd.motoroverloadrelaythresholdtoggle">switch between low and high starting current</String>
<String key="Cmd.motoroverloadrelayreset">reset the traction motor overload relay</String>
<String key="Cmd.notchingrelaytoggle">toggle the automatic notching relay</String>
<String key="Cmd.epbrakecontroltoggle">toggle the electro-pneumatic brake</String>
<String key="Cmd.trainbrakeoperationmodeincrease">brake operation mode: more effective</String>
<String key="Cmd.trainbrakeoperationmodedecrease">brake operation mode: simpler</String>
<String key="Cmd.brakeactingspeedincrease">faster train brake acting speed</String>
<String key="Cmd.brakeactingspeeddecrease">slower train brake acting speed</String>
<String key="Cmd.brakeactingspeedsetcargo">brake acting speed for a freight train</String>
<String key="Cmd.brakeactingspeedsetpassenger">brake acting speed for a passenger train</String>
<String key="Cmd.brakeactingspeedsetrapid">brake acting speed for an express train</String>
<String key="Cmd.brakeloadcompensationincrease">higher brake load setting</String>
<String key="Cmd.brakeloadcompensationdecrease">lower brake load setting</String>
<String key="Cmd.mubrakingindicatortoggle">toggle the EMU unit braking indicator</String>
<String key="Cmd.alerteracknowledge">acknowledge the vigilance device and cab signalling</String>
<String key="Cmd.cabsignalacknowledge">acknowledge the cab signalling</String>
<String key="Cmd.hornlowactivate">low-tone horn</String>
<String key="Cmd.hornhighactivate">high-tone horn</String>
<String key="Cmd.whistleactivate">whistle</String>
<String key="Cmd.radiotoggle">toggle the radio</String>
<String key="Cmd.radiochannelincrease">next radio channel</String>
<String key="Cmd.radiochanneldecrease">previous radio channel</String>
<String key="Cmd.radiostopsend">send radio-stop</String>
<String key="Cmd.radiostoptest">local radio-stop test</String>
<String key="Cmd.radiocall3send">send the call-3 signal</String>
<String key="Cmd.radiovolumeincrease">radio volume up</String>
<String key="Cmd.radiovolumedecrease">radio volume down</String>
<String key="Cmd.cabchangeforward">move to the next compartment towards the front</String>
<String key="Cmd.cabchangebackward">move to the next compartment towards the rear</String>
<String key="Cmd.nearestcarcouplingincrease">couple</String>
<String key="Cmd.nearestcarcouplingdisconnect">uncouple</String>
<String key="Cmd.nearestcarcoupleradapterattach">attach the coupler adapter</String>
<String key="Cmd.nearestcarcoupleradapterremove">remove the coupler adapter</String>
<String key="Cmd.occupiedcarcouplingdisconnect">uncouple at the occupied cab's end</String>
<String key="Cmd.doortoggleleft">toggle the left doors</String>
<String key="Cmd.doortoggleright">toggle the right doors</String>
<String key="Cmd.doorpermitleft">permit opening the left doors</String>
<String key="Cmd.doorpermitright">permit opening the right doors</String>
<String key="Cmd.doorpermitpresetactivatenext">next door permit preset</String>
<String key="Cmd.doorpermitpresetactivateprevious">previous door permit preset</String>
<String key="Cmd.dooropenall">open the permitted doors</String>
<String key="Cmd.doorcloseleft">close the left doors</String>
<String key="Cmd.doorcloseright">close the right doors</String>
<String key="Cmd.doorcloseall">close all doors</String>
<String key="Cmd.doorsteptoggle">toggle the door steps</String>
<String key="Cmd.doormodetoggle">toggle the door operation mode</String>
<String key="Cmd.departureannounce">departure signal</String>
<String key="Cmd.doorlocktoggle">toggle the door lock</String>
<String key="Cmd.pantographcompressorvalvetoggle">toggle the three-way pantograph valve</String>
<String key="Cmd.pantographcompressoractivate">auxiliary pantograph compressor</String>
<String key="Cmd.pantographtogglefront">toggle the front pantograph</String>
<String key="Cmd.pantographtogglerear">toggle the rear pantograph</String>
<String key="Cmd.pantographlowerall">lower all pantographs</String>
<String key="Cmd.pantographselectnext">next pantograph selection preset</String>
<String key="Cmd.pantographselectprevious">previous pantograph selection preset</String>
<String key="Cmd.pantographtoggleselected">toggle the selected pantographs</String>
<String key="Cmd.heatingtoggle">toggle train heating</String>
<String key="Cmd.lightspresetactivatenext">next headlight preset</String>
<String key="Cmd.lightspresetactivateprevious">previous headlight preset</String>
<String key="Cmd.headlighttoggleleft">toggle the left headlight</String>
<String key="Cmd.headlighttoggleright">toggle the right headlight</String>
<String key="Cmd.headlighttoggleupper">toggle the upper headlight</String>
<String key="Cmd.redmarkertoggleleft">toggle the left red marker</String>
<String key="Cmd.redmarkertoggleright">toggle the right red marker</String>
<String key="Cmd.headlighttogglerearleft">toggle the rear left headlight</String>
<String key="Cmd.headlighttogglerearright">toggle the rear right headlight</String>
<String key="Cmd.headlighttogglerearupper">toggle the rear upper headlight</String>
<String key="Cmd.redmarkertogglerearleft">toggle the rear left red marker</String>
<String key="Cmd.redmarkertogglerearright">toggle the rear right red marker</String>
<String key="Cmd.redmarkerstoggle">toggle the end-of-train lights</String>
<String key="Cmd.endsignalstoggle">toggle the end-of-train plates</String>
<String key="Cmd.headlightsdimtoggle">toggle headlight dimming</String>
<String key="Cmd.motorconnectorsopen">open the line contactors</String>
<String key="Cmd.motorconnectorsclose">close the line contactors</String>
<String key="Cmd.motordisconnect">cut out the damaged motors</String>
<String key="Cmd.interiorlighttoggle">toggle the cab light</String>
<String key="Cmd.interiorlightdimtoggle">toggle cab light dimming</String>
<String key="Cmd.compartmentlightstoggle">toggle the compartment lights</String>
<String key="Cmd.instrumentlighttoggle">toggle the instrument lights</String>
<String key="Cmd.dashboardlighttoggle">toggle the desk lights</String>
<String key="Cmd.timetablelighttoggle">toggle the timetable light</String>
<String key="Cmd.generictoggle0">generic switch 0</String>
<String key="Cmd.generictoggle1">generic switch 1</String>
<String key="Cmd.generictoggle2">generic switch 2</String>
<String key="Cmd.generictoggle3">generic switch 3</String>
<String key="Cmd.generictoggle4">generic switch 4</String>
<String key="Cmd.generictoggle5">generic switch 5</String>
<String key="Cmd.generictoggle6">generic switch 6</String>
<String key="Cmd.generictoggle7">generic switch 7</String>
<String key="Cmd.generictoggle8">generic switch 8</String>
<String key="Cmd.generictoggle9">generic switch 9</String>
<String key="Cmd.batterytoggle">toggle the batteries</String>
<String key="Cmd.cabactivationtoggle">toggle cab activation</String>
<String key="Cmd.motorblowerstogglefront">toggle the front traction motor blowers</String>
<String key="Cmd.motorblowerstogglerear">toggle the rear traction motor blowers</String>
<String key="Cmd.motorblowersdisableall">switch off all traction motor blowers</String>
<String key="Cmd.coolingfanstoggle">toggle the starting resistor fans</String>
<String key="Cmd.tempomattoggle">toggle the cruise control</String>
<String key="Cmd.springbraketoggle">toggle the spring brake</String>
<String key="Cmd.springbrakeshutofftoggle">toggle the spring brake shut-off cock</String>
<String key="Cmd.springbrakerelease">release the spring brake</String>
<String key="Cmd.distancecounteractivate">start the distance counter</String>
<String key="Cmd.speedcontrolincrease">cruise control speed up</String>
<String key="Cmd.speedcontroldecrease">cruise control speed down</String>
<String key="Cmd.speedcontrolpowerincrease">more power for the cruise control</String>
<String key="Cmd.speedcontrolpowerdecrease">less power for the cruise control</String>
<String key="Cmd.speedcontrolbutton0">cruise control preset speed 0</String>
<String key="Cmd.speedcontrolbutton1">cruise control preset speed 1</String>
<String key="Cmd.speedcontrolbutton2">cruise control preset speed 2</String>
<String key="Cmd.speedcontrolbutton3">cruise control preset speed 3</String>
<String key="Cmd.speedcontrolbutton4">cruise control preset speed 4</String>
<String key="Cmd.speedcontrolbutton5">cruise control preset speed 5</String>
<String key="Cmd.speedcontrolbutton6">cruise control preset speed 6</String>
<String key="Cmd.speedcontrolbutton7">cruise control preset speed 7</String>
<String key="Cmd.speedcontrolbutton8">cruise control preset speed 8</String>
<String key="Cmd.speedcontrolbutton9">cruise control preset speed 9</String>
<String key="Cmd.universalbrakebutton1">universal brake button 1</String>
<String key="Cmd.universalbrakebutton2">universal brake button 2</String>
<String key="Cmd.universalbrakebutton3">universal brake button 3</String>
<String key="Cmd.universalrelayreset1">reset the defined relays, set 1</String>
<String key="Cmd.universalrelayreset2">reset the defined relays, set 2</String>
<String key="Cmd.universalrelayreset3">reset the defined relays, set 3</String>
<String key="SectionDefaults">Defaults</String>
<String key="IniChangesButton">Changes to the file…</String>
<String key="IniChangesTitle">What saving changes in eu07.ini</String>
<String key="IniChangesChanged">Changed</String>
<String key="IniChangesAdded">Added (missing from the file)</String>
<String key="IniChangesRemoved">Commented out</String>
<String key="IniChangesNone">Saving would change nothing in eu07.ini.</String>
<String key="IniChangesKeyboard">Changed key bindings go to eu07_input-keyboard.ini.</String>
<String key="GfxColPresets">Graphics quality</String>
<String key="PresetMinimal">Minimal</String>
<String key="PresetLow">Low</String>
<String key="PresetMedium">Medium</String>
<String key="PresetHigh">High</String>
<String key="PresetCustom">Custom</String>
<String key="MonitorRate">Screen: {0} Hz</String>
<String key="MonitorRateNamed">Screen {0}: up to {1} Hz</String>
<String key="MonitorRateUse">Set {0} FPS</String>
<String key="GfxPresetDesc">Hover over a level to see its values.</String>
<String key="TextureBaseDateHint">YYYY-MM-DD</String>
<String key="LanguageStarterMissing">No starter translation: it stays in English. The simulator gets this language.</String>
<String key="ProfileNone">No profiles</String>
<String key="ProfilePick">Pick a profile</String>
<String key="ProfileSaved">Profile {0} saved</String>
<String key="ProfileNotSaved">Could not save profile {0}</String>
<String key="ProfileApplied">Profile {0} applied</String>
<String key="ProfileNotApplied">Could not read profile {0}. The settings are unchanged.</String>
<String key="ProfileOverwrite">Profile {0} already exists. Replace it?</String>
<String key="BindingsNumpadNote">On the numeric keypad: {0}. Without one they will not work; give them other keys.</String>
<String key="BindingsNumpadShow">Show them</String>
<String key="KbModifier">A modifier: it goes with other keys.</String>
<String key="KbAlt">Taken by the simulator (mouse picking).</String>
<String key="KbNotInSimulator">The simulator does not know this key. It cannot be bound.</String>
<String key="KbSimBlocks">{0}: taken by the simulator ({1}). A binding here would not work.</String>
<String key="KbSimReplaces">{0}: the simulator uses this for: {1}. A binding replaces that.</String>
<String key="KbTaken">Taken: {0}. Press another</String>
<String key="KbUseMap">map</String>
<String key="KbUseConsist">consist info</String>
<String key="KbUseTimetable">timetable</String>
<String key="KbUseScenario">scenario panel</String>
<String key="KbUseLog">log window</String>
<String key="KbUseQuit">quitting the simulator</String>
<String key="KbUseDebugPanel">debug panel</String>
<String key="KbUseCab">leaving the cab and outside views</String>
<String key="KbUseVehicle">changing vehicle</String>
<String key="KbUseDebug">debug mode functions</String>
<String key="KbUseEditor">editor</String>
<String key="KbUseSceneryEvent">scenery events</String>
<String key="KbUseCamera">stored cameras</String>
<String key="Ini.heightbase">Distance factor</String>
<String key="Ini.heightbase.Desc">Shortens or lengthens how far the scenery is drawn. A target FPS overrides it.</String>
<String key="PresetVeryHigh">Very high</String>
<String key="PresetUltra">Ultra</String>
<String key="PresetUltraNote">Everything at maximum. It may be too much even for a strong card.</String>
<String key="Ini.python.fpslimit">Screen window frame limit</String>
<String key="Ini.python.fpslimit.Desc">Works only with screens in separate windows; without them it changes nothing.</String>
<String key="ShadowLimitNone">Longest</String>
<String key="HaslerScenario">scenario {0}</String>
<String key="HaslerTrain">train {0}</String>
<String key="HaslerRoleDrivenEarlier">Driven earlier</String>
<String key="HaslerLiveIdle">Works while a session started from the starter runs.</String>
<String key="HaslerLogOff">The simulator's log is off: the starter does not see changes of vehicle.</String>
<String key="HaslerLogEnable">Turn the log on</String>
<String key="HaslerRoleStartedIn">Vehicle at the start</String>
<String key="HaslerSession">Session</String>
<String key="HaslerSessionTapes">tapes: {0}</String>
<String key="HaslerSessionRunning">running</String>
<String key="WarehouseSaved">In the warehouse: {0}</String>
<String key="WarehouseNothingToAdd">Pick a consist with vehicles</String>
<String key="GfxGroupLevelTip">Level for this part of the graphics only</String>
</Language>