diff --git a/StarterNG.Tests/LocalizationTests.cs b/StarterNG.Tests/LocalizationTests.cs new file mode 100644 index 0000000..a5cc623 --- /dev/null +++ b/StarterNG.Tests/LocalizationTests.cs @@ -0,0 +1,237 @@ +using System.Xml.Linq; +using StarterNG.Infrastructure.Adapters; +using StarterNG.Services; +using StarterNG.Tests.Fakes; + +namespace StarterNG.Tests; + +public class LocalizationTests +{ + private static LocalizationService Build() => + new(TestLog.Over()); + + private static Dictionary Strings(string path) => + XDocument.Load(path).Descendants("String") + .ToDictionary(s => (string)s.Attribute("key")!, s => s.Value); + + public static TheoryData Languages() + { + var data = new TheoryData(); + foreach (var lang in LocalizationService.AvailableLanguages()) + if (lang.Code != "en") + data.Add(lang.Code); + return data; + } + + [Theory] + [MemberData(nameof(Languages))] + public void Every_language_has_every_key_but_the_optional_ones(string code) + { + var all = LocalizationService.AvailableLanguages(); + var english = Strings(all.Single(l => l.Code == "en").Path); + var other = Strings(all.Single(l => l.Code == code).Path); + + var missing = english.Keys + .Where(key => !key.EndsWith("Desc", StringComparison.Ordinal) && + !key.StartsWith("Cmd.", StringComparison.Ordinal)) + .Where(key => !other.ContainsKey(key)); + + Assert.Empty(missing); + } + + [Fact] + public void A_key_description_only_english_has_falls_back_to_english() + { + var loc = Build(); + loc.Load("cz"); + + Assert.Equal(string.Empty, loc.Opt("Cmd.mastercontrollerincrease")); + Assert.Equal("master controller up", loc.OptOrEnglish("Cmd.mastercontrollerincrease")); + } + + [Fact] + public void A_string_the_language_has_is_not_replaced_with_english() + { + var loc = Build(); + loc.Load("pl"); + + Assert.Equal(loc["Language"], loc.OptOrEnglish("Language")); + Assert.NotEqual("Language", loc.OptOrEnglish("Language")); + } + + private const string English = + "Hello"; + + /// A file cut off right after its header: it still looks like a language. + private const string CutShort = ""; + + private static (LocalizationService Loc, FileDiagnosticsLog Log, string Directory) InFolderOf( + params (string File, string Text)[] languages) + { + string directory = Directory.CreateTempSubdirectory("starterng-lang-").FullName; + foreach (var (file, text) in languages) + File.WriteAllText(Path.Combine(directory, file), text); + var log = TestLog.Over(); + return (new LocalizationService(log, directory), log, directory); + } + + [Fact] + public void A_translation_cut_short_counts_as_missing_and_is_logged() + { + var (loc, log, directory) = InFolderOf(("en.xml", English), ("pl.xml", CutShort)); + try + { + Assert.Equal("English", loc.Load("pl")); + + Assert.Equal("en", loc.CurrentLangCode); + Assert.Equal("Hello", loc["Hello"]); + Assert.Contains("lang/pl.xml", log.Text); + } + finally + { + Directory.Delete(directory, recursive: true); + } + } + + [Fact] + public void With_every_translation_cut_short_the_starter_still_starts() + { + var (loc, log, directory) = InFolderOf(("pl.xml", CutShort)); + try + { + Assert.Equal("English", loc.Load("pl")); + + Assert.Equal("en", loc.CurrentLangCode); + Assert.Equal("Hello", loc["Hello"]); + Assert.Contains("lang/pl.xml", log.Text); + } + finally + { + Directory.Delete(directory, recursive: true); + } + } + + [Fact] + public void A_language_cut_short_leaves_english_rather_than_the_one_in_use_before() + { + var (loc, _, directory) = InFolderOf( + ("cz.xml", "Ahoj"), + ("en.xml", English), + ("pl.xml", CutShort)); + try + { + loc.Load("cz"); + Assert.Equal("Ahoj", loc["Hello"]); + + loc.Load("pl"); + + Assert.Equal("en", loc.CurrentLangCode); + Assert.Equal("Hello", loc["Hello"]); + } + finally + { + Directory.Delete(directory, recursive: true); + } + } + + /// A player's folder, the bundled one with English in it, the old starter's and the simulator's. + private sealed class Folders : IDisposable + { + public readonly string Root = Directory.CreateTempSubdirectory("starterng-langs-").FullName; + + public string Own => Sub("own"); + public string Bundled => Sub("bundled"); + public string OldStarter => Sub("starter"); + public string Simulator => Sub("lang"); + + private string Sub(string name) => Directory.CreateDirectory(Path.Combine(Root, name)).FullName; + + public LocalizationService Service() => + new(TestLog.Over(), + Bundled, new LanguageFolders(new[] { Own, Bundled }, OldStarter, Simulator)); + + public void Dispose() => Directory.Delete(Root, recursive: true); + } + + [Fact] + public void A_players_own_translation_wins_over_the_bundled_one() + { + using var folders = new Folders(); + File.WriteAllText(Path.Combine(folders.Bundled, "en.xml"), English); + File.WriteAllText(Path.Combine(folders.Bundled, "pl.xml"), + "Czesc"); + File.WriteAllText(Path.Combine(folders.Own, "moj.xml"), + "Witaj"); + var loc = folders.Service(); + + Assert.Equal("Moj polski", loc.Load("pl")); + Assert.Equal("Witaj", loc["Hello"]); + Assert.True(loc.HasOwnTexts); + Assert.Single(loc.Languages(), lang => lang.Code == "pl"); + } + + [Fact] + public void An_old_starters_language_is_offered_in_english_with_its_key_descriptions() + { + using var folders = new Folders(); + File.WriteAllText(Path.Combine(folders.Bundled, "en.xml"), English); + File.WriteAllText(Path.Combine(folders.OldStarter, "lang-ZH.txt"), + "[Main]\ncbLang.Items.Text=PL|EN\n[labels]\nx=y\n lang.Code == "zh" && lang.Name == "ZH" && lang.Path.Length == 0); + + loc.Load("zh"); + + Assert.Equal("zh", loc.CurrentLangCode); + Assert.False(loc.HasOwnTexts); + Assert.Equal("Hello", loc["Hello"]); + Assert.Equal("gwizd", loc.Opt("Cmd.hornhighactivate")); + Assert.Equal(string.Empty, loc.Opt("Cmd.z")); + } + + [Fact] + public void Of_the_simulators_files_only_a_language_code_counts() + { + using var folders = new Folders(); + File.WriteAllText(Path.Combine(folders.Bundled, "en.xml"), English); + foreach (string file in new[] { "hu.po", "editor_pl.po", "template.po" }) + File.WriteAllText(Path.Combine(folders.Simulator, file), string.Empty); + + var codes = folders.Service().Languages().Select(lang => lang.Code).ToList(); + + Assert.Contains("hu", codes); + Assert.DoesNotContain("editor_pl", codes); + Assert.DoesNotContain("template", codes); + } + + [Fact] + public void A_code_eu07_ini_names_stays_on_the_list_once() + { + using var folders = new Folders(); + File.WriteAllText(Path.Combine(folders.Bundled, "en.xml"), English); + var loc = folders.Service(); + + loc.Keep("sk"); + loc.Keep("SK"); + loc.Keep("en"); + + Assert.Single(loc.Languages(), lang => lang.Code == "sk"); + Assert.Equal(2, loc.Languages().Count); + } + + [Fact] + public void A_key_a_translation_lacks_comes_in_english() + { + using var folders = new Folders(); + File.WriteAllText(Path.Combine(folders.Bundled, "en.xml"), English); + File.WriteAllText(Path.Combine(folders.Own, "sk.xml"), + "Ine"); + var loc = folders.Service(); + + loc.Load("sk"); + + Assert.Equal("Hello", loc["Hello"]); + Assert.Equal("Ine", loc["Other"]); + } +} diff --git a/StarterNG/Services/LocalizationService.cs b/StarterNG/Services/LocalizationService.cs index 8357d95..2f83ce9 100644 --- a/StarterNG/Services/LocalizationService.cs +++ b/StarterNG/Services/LocalizationService.cs @@ -2,11 +2,22 @@ using System; using System.Collections.Generic; using System.ComponentModel; using System.IO; +using System.Linq; +using System.Text; +using System.Text.RegularExpressions; using System.Xml; using StarterNG.Application.Abstractions; namespace StarterNG.Services; +/// +/// Where languages other than the bundled ones come from. +/// +/// Folders of *.xml, the first holding a code winning. +/// Where the old starter kept its lang-XX.txt. +/// The simulator's lang folder, with its XX.po. +public sealed record LanguageFolders(IReadOnlyList Translations, string? OldStarter, string? Simulator); + /// /// Loads the translation table from startercfg/lang/*.xml and exposes it as /// . Stays a change-notifying class because the @@ -18,12 +29,19 @@ public class LocalizationService : INotifyPropertyChanged, ILocalizedStrings Path.Combine(AppContext.BaseDirectory, "startercfg", "lang"); private readonly IDiagnosticsLog _log; + private readonly string _directory; + private readonly LanguageFolders _folders; + + // Codes eu07.ini named that nothing else has, as the old starter added them to its list. + private readonly List _kept = new(); private Dictionary _strings = new(); - public LocalizationService(IDiagnosticsLog log) + public LocalizationService(IDiagnosticsLog log, string? directory = null, LanguageFolders? folders = null) { _log = log; + _directory = directory ?? LangDirectory; + _folders = folders ?? new LanguageFolders(new[] { _directory }, null, null); } public event PropertyChangedEventHandler? PropertyChanged; @@ -34,6 +52,9 @@ public class LocalizationService : INotifyPropertyChanged, ILocalizedStrings public string CurrentLangCode { get; private set; } = "en"; + /// Whether this language has the starter's own texts; without them they are in English. + public bool HasOwnTexts { get; private set; } = true; + private readonly HashSet _reportedMisses = new(StringComparer.Ordinal); /// @@ -58,7 +79,8 @@ public class LocalizationService : INotifyPropertyChanged, ILocalizedStrings if (_reportedMisses.Add(key)) _log.Log($"lang/{CurrentLangCode}: missing key \"{key}\""); - return key; + // A translation someone prepared for an earlier starter lacks the newer texts. + return English().TryGetValue(key, out value) ? value : key; } } @@ -69,15 +91,46 @@ public class LocalizationService : INotifyPropertyChanged, ILocalizedStrings public string Opt(string key) => _strings.TryGetValue(key, out var value) ? value : string.Empty; + private Dictionary? _english; + + /// + /// , falling back to English for text only the English file + /// carries - the key descriptions, which read better in English than in Polish + /// to someone who picked Czech. + /// + public string OptOrEnglish(string key) + { + if (_strings.TryGetValue(key, out var value)) + return value; + + return English().TryGetValue(key, out value) ? value : string.Empty; + } + + private Dictionary English() + { + if (_english is null) + { + _english = new Dictionary(StringComparer.Ordinal); + if (WithCode(AvailableLanguages(_log, _directory), "en") is { } lang) + { + try { _english = ReadStrings(lang.Path); } + catch (Exception ex) { _log.Log($"lang/{Path.GetFileName(lang.Path)}", ex); } + } + } + return _english; + } + + /// The translation, empty for a language known by its code alone. public readonly record struct LanguageInfo(string Code, string Name, string Path); - public static IReadOnlyList AvailableLanguages(IDiagnosticsLog? log = null) + public static IReadOnlyList AvailableLanguages(IDiagnosticsLog? log = null, string? directory = null) { + directory ??= LangDirectory; var list = new List(); - if (!Directory.Exists(LangDirectory)) + if (!Directory.Exists(directory)) return list; - foreach (var path in Directory.EnumerateFiles(LangDirectory, "*.xml")) + foreach (var path in Directory.EnumerateFiles(directory, "*.xml")) { try { @@ -93,41 +146,108 @@ public class LocalizationService : INotifyPropertyChanged, ILocalizedStrings return list; } - public string Load(string codeOrName) + /// + /// Every language there is to pick: the translations, the player's own first, then + /// those only a code is known of - the old starter's lang-XX.txt, the simulator's + /// XX.po and what eu07.ini names. Picked, those leave this starter in English and + /// go to the simulator as they are. + /// + public IReadOnlyList Languages() { - var languages = AvailableLanguages(_log); + var found = new SortedDictionary(StringComparer.OrdinalIgnoreCase); - LanguageInfo? match = null; - foreach (var lang in languages) + foreach (string folder in _folders.Translations) + foreach (var lang in AvailableLanguages(_log, folder)) + found.TryAdd(lang.Code, lang); + + foreach (string code in CodesOnly()) + found.TryAdd(code, new LanguageInfo(code.ToLowerInvariant(), code.ToUpperInvariant(), string.Empty)); + + return found.Values.ToList(); + } + + private IEnumerable CodesOnly() + { + foreach (string name in FileNames(_folders.OldStarter, "lang-*.txt")) + yield return name["lang-".Length..]; + + // lang/ also holds editor_pl.po and template.po. + foreach (string name in FileNames(_folders.Simulator, "*.po")) + if (Regex.IsMatch(name, "^[A-Za-z]{2,3}$")) + yield return name; + + foreach (string code in _kept) + yield return code; + } + + private IEnumerable FileNames(string? folder, string pattern) + { + if (string.IsNullOrEmpty(folder) || !Directory.Exists(folder)) + return Array.Empty(); + + try { + return Directory.GetFiles(folder, pattern).Select(Path.GetFileNameWithoutExtension).ToList()!; + } + catch (Exception ex) + { + _log.Log($"looking through {folder}", ex); + return Array.Empty(); + } + } + + /// A language eu07.ini names stays on the list, known or not. + public void Keep(string? codeOrName) + { + if (string.IsNullOrWhiteSpace(codeOrName)) + return; + + string wanted = codeOrName.Trim(); + if (Find(Languages(), wanted) is null) + _kept.Add(wanted); + } + + private static LanguageInfo? Find(IReadOnlyList languages, string codeOrName) + { + foreach (var lang in languages) if (string.Equals(lang.Code, codeOrName, StringComparison.OrdinalIgnoreCase) || string.Equals(lang.Name, codeOrName, StringComparison.OrdinalIgnoreCase)) - { - match = lang; - break; - } - } + return lang; + return null; + } + private static LanguageInfo? WithCode(IEnumerable languages, string code) + { + foreach (var lang in languages) + if (string.Equals(lang.Code, code, StringComparison.OrdinalIgnoreCase)) + return lang; + return null; + } + + public string Load(string codeOrName) + { + var languages = Languages(); + + LanguageInfo? match = Find(languages, codeOrName); if (match is null) { - foreach (var lang in languages) - if (string.Equals(lang.Code, "en", StringComparison.OrdinalIgnoreCase)) - { - match = lang; - break; - } + match = WithCode(languages, "en"); if (match is null && languages.Count > 0) match = languages[0]; } - if (match is { } info) - LoadFile(info.Path, info.Code, info.Name); - else + HasOwnTexts = true; + if (match is { Path.Length: 0 } codeOnly) { - - _strings = new Dictionary(); - CurrentLangCode = "en"; - CurrentLanguage = "English"; + LoadEnglish(languages); + CurrentLangCode = codeOnly.Code; + CurrentLanguage = codeOnly.Name; + HasOwnTexts = false; + ReadOldKeyDescriptions(codeOnly.Code); + } + else if (match is not { } info || !TryLoadFile(info)) + { + LoadEnglish(languages); } PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("Item[]")); @@ -136,7 +256,79 @@ public class LocalizationService : INotifyPropertyChanged, ILocalizedStrings return CurrentLanguage; } - private void LoadFile(string path, string code, string name) + // Without the language asked for, English; without that, the keys themselves. The + // starter comes up either way. + private void LoadEnglish(IReadOnlyList languages) + { + // Languages() holds one language to a code. + if (WithCode(languages, "en") is { Path.Length: > 0 } english && TryLoadFile(english)) + return; + + _strings = new Dictionary(); + CurrentLangCode = "en"; + CurrentLanguage = "English"; + } + + /// + /// The one part of an old starter's language file this one can use: the rest names + /// that program's controls. Its key descriptions follow a line with the file's name. + /// + private void ReadOldKeyDescriptions(string code) + { + if (string.IsNullOrEmpty(_folders.OldStarter)) + return; + + string path = Path.Combine(_folders.OldStarter, $"lang-{code}.txt"); + try + { + if (!File.Exists(path)) + return; + + bool inDescriptions = false; + foreach (string line in File.ReadLines(path, Encoding.UTF8)) + { + if (line.Contains("A file cut short has a header like any other and fails only here: it counts as missing. + private bool TryLoadFile(LanguageInfo language) + { + try + { + _strings = ReadStrings(language.Path); + } + catch (Exception ex) + { + _log.Log($"lang/{Path.GetFileName(language.Path)}", ex); + return false; + } + + lock (_reportedMisses) + _reportedMisses.Clear(); + CurrentLangCode = language.Code; + CurrentLanguage = language.Name; + return true; + } + + private static Dictionary ReadStrings(string path) { var dict = new Dictionary(StringComparer.Ordinal); @@ -158,11 +350,7 @@ public class LocalizationService : INotifyPropertyChanged, ILocalizedStrings } } - _strings = dict; - lock (_reportedMisses) - _reportedMisses.Clear(); - CurrentLangCode = code; - CurrentLanguage = name; + return dict; } private static (string code, string name) ReadHeader(string path) diff --git a/StarterNG/startercfg/lang/cz.xml b/StarterNG/startercfg/lang/cz.xml index c2dab41..92f7e7a 100644 --- a/StarterNG/startercfg/lang/cz.xml +++ b/StarterNG/startercfg/lang/cz.xml @@ -7,7 +7,6 @@ Scénáře Depo Nastavení - Developer Ovládání Nápověda Wiki MaSzyna @@ -58,7 +57,7 @@ Datum a čas Povětrnostní podmínky Souprava - Start + Spustit Vyberte scenérii Vyberte soupravu Bez osádky / cestujícího @@ -82,10 +81,47 @@ Autor Fotografie Otevřít poslední log simulace + Pásky Hasler + Čtení pásek rychloměru Hasler + podle dráhy + podle času + Posuv pásky + Měřítko + Živě + Otevřít složku + Žádné pásky v {0}. + Záznam pásek je vypnutý. + Zapnout ukládání pásek + Ukazuje pásku vozidla, které řídíte. + Řízené + Vaše souprava + hodina neznámá, čas se počítá od startu simulace + Pásku {0} se nepodařilo přečíst. + {0} · zaznamenáno {1} (jízda {2}, stání {3}) · dráha {4:0.00} km · Vmax {5:0} km/h · průměr za jízdy {6:0} km/h · průměr se zastávkami {7:0} km/h + {0} · {1:0.0} km · {2:0} km/h · válce {3:0.0} bar · proud {4} + Válce + HP + Brzdění + Proud + Bdělost + elektronická + Hasler RT9 + Registrace + ne + ano + {0} · {1:0.000} km · {2:0.0} km/h · HP {3:0.00} bar · válce {4:0.00} bar · proud {5} · bdělost {6} + Start + Čas startu scenérie (hh:mm). U starších pásek zadejte ručně. + Export PNG + {0} se nepodařilo uložit. Databáze vozidel Databáze vozového parku + Zobrazeno {0} z {1} + Těmto filtrům neodpovídá žádné vozidlo. + Vyberte vozidlo ze seznamu. Dvojklik nahradí vozidlo vybrané v soupravě. + Vymazat filtry Databáze vozidel… Hledat... Načíst soupravu ze scenérie @@ -221,14 +257,14 @@ Na následující Maximální Náklad celé soupravy - Consist ready to go - The consist starts prepared: brake pipe charged, driver’s brake valve set, batteries closed. Unchecked it starts cold and braked. - Force the consist state on launch - Overrides the depot’s "consist ready to go" box for every scenario you start. - As authored - Always cold - Always ready - Overridden by "Force the consist state on launch" in Settings. + Souprava připravena k jízdě + Souprava startuje připravená: hlavní potrubí naplněné, brzdič strojvedoucího nastavený, baterie zapnuté. Bez zaškrtnutí startuje studená a zabrzděná. + Vynutit stav soupravy při spuštění + Přepíše volbu „Souprava připravena k jízdě“ z depa u každé spouštěné scenérie. + Podle scenérie + Vždy studená + Vždy připravená + Přepsáno volbou „Vynutit stav soupravy při spuštění“ v Nastavení. Náhodný druh Maximální množství Náhodné množství @@ -259,6 +295,7 @@ Nepodařilo se spustit simulátor Spustitelný soubor simulátoru nebyl nalezen. Soubor není označen jako spustitelný (chmod +x). + Toto není program: uvnitř není spustitelný soubor ani skript. Tento binární soubor je pro jiný operační systém. Na Linuxu může verze pro Windows běžet přes Wine nebo Proton - pokud je používáte, nejde o chybu. Simulátor se neočekávaně ukončil Návratový kód: {0} @@ -303,7 +340,6 @@ Uložit soupravu Načíst soupravu ze skladu (sklad je prázdný) - Odebrat ze skladu Název soupravy Kopírovat soupravu do schránky Vložit soupravu ze schránky @@ -318,6 +354,7 @@ Obecné Jazyk + Simulátor nemá překlad do tohoto jazyka a poběží v angličtině. Celá obrazovka Pozastavit simulaci při neaktivním okně Pozastavit po spuštění @@ -342,7 +379,13 @@ Konfigurace UART Zapnout komunikaci UART Sériový port - Ladicí parametr + Kalibrace + Rychlost (baud) + Odesílat každých (s) + např. /dev/ttyUSB0 nebo COM3 + Bez portu zůstane UART vypnutý. + prázdné = výchozí hodnoty simulátoru + Není to {0} čísel: kalibrace se neuloží. Vypisovat ladicí data do konzole Hlavní kontrolér Pomocný/posunovací kontrolér @@ -360,24 +403,41 @@ Režim ladění (testovací režim) Virtuální posun Zaznamenat chybějící soubory vozidel při exportu - Show the package author's tab Grafika Vykreslovací engine Plný + Plný: OpenGL 3.3 se stíny a odrazy. Starý a Zjednodušený: pro slabé karty. Experimentální: Vulkan, Direct3D 12, ve vývoji. Starý - Zjednodušený shader Zjednodušený - Vypnout vizuální vrstvu Experimentální Upozornění: experimentální renderer je ve vývoji. Může být nestabilní, nezobrazovat části scény nebo se na některých grafických kartách nespustit. Pokud se simulátor nespustí nebo vypadá špatně, vraťte se k rendereru „Plný“. + Grafická karta (Linux) + Výkonnější (dedikovaná) + Podle systému + Nalezeno: {0}. Simulátor poběží na: {1}. + Nalezeno: {0}. Obrazovku už řídí správná karta – starter nic nemění. + Nalezeno: {0}. Kartu vybere systém, obvykle integrovanou. + Nalezeno: {0}. Kartu vybírají proměnné prostředí ({1}); starter je nemění. + Jedna karta: {0} – není mezi čím vybírat. + Grafické karty se nepodařilo načíst z /sys/class/drm. + Funguje jen ve verzi simulátoru pro Windows. + Čte to jen renderer legacy, ale zvolen je jiný. + Funguje jen s cílovým počtem snímků (targetfps). + Experimentální renderer to nečte. + Čte to jen plný renderer, ale zvolen je jiný. + Pauza na pozadí vyžaduje síťový server (network.server). Rozlišení + {0} (monitor) + Při automatickém rozlišení nefunguje. Rozlišení bufferu Maximální rozlišení textur Maximální rozlišení textur kabiny Kvalita filtrování textur + Ostrost textur viděných pod úhlem, např. kolejí. I x16 stojí málo. Multisampling + Vyhlazování hran. Každý stupeň znatelně ubírá snímky. Velmi nízká Nízká Normální @@ -388,17 +448,18 @@ Standartní Velmi nízký Nízký - Normální Mírný Standartní Vysoká Velmi vysoká Vypnuté Dynamické zdroje světla - Dohlednost vykreslování - Omezit snímkovou frekvenci + Prodlužování dohlednosti (max.) + Kolikrát smí simulátor prodloužit dohlednost, když je snímků dost. V plném rendereru na druhou: ×3 znamená až ×9. + Bez limitu + Limit snímků za sekundu + Méně snímků: chladnější a tišší počítač. S V-Sync limit nad obnovovací frekvencí nic nedělá. Omezení délky stínů - Bez omezení Zkrácené Automatické rozlišení (celá obrazovka bez okrajů) Použít renderer ANGLE Vulkan @@ -414,8 +475,13 @@ Vykreslování VBO Vykreslovat stíny Frekvence obnovy odrazů + Jak často obnovovat odrazy. Méně často znamená více snímků. + každých {0} min + každých {0} s + {0}× za s Rozlišení stínů Dosah stínů + Jak daleko sahají stíny; čím dál, tím méně ostré. Za šipkou skutečný dosah. Dosah zdrojů stínů v kabině Zobrazovat stíny @@ -429,6 +495,8 @@ Geometrie terénu, statické modely a vozidla Zorný úhel + + Svislý zorný úhel kamery ve stupních (10–75). Vykreslovat palubní displeje Vykreslovat displeje v samostatném vlákně @@ -458,13 +526,19 @@ Pokročilé Komprimovat textury TGA Škálovat odlesky (kompatibilita starých modelů) + Zeslabuje lesk modelů dělaných pro starší renderery. Použít OpenGL ES + OpenGL ES místo OpenGL. Nefunguje s rendererem legacy. Gama korekce v shaderech + Gama v shaderech místo sRGB. Když ovladač dává příliš světlý nebo tmavý obraz. Generovat mipmapy pro textury displejů v kabině (Python) + Obrazovky v kabině hladší z dálky a pod úhlem, za cenu práce při každé obnově. Rozšířený převod modelů E3D (experimentální) + Ukládá textové modely jako binární E3D: rychlejší načítání, více souborů ve složce hry. Konzervativní správa paměti textur Uvolňovat nepoužívané textury z paměti GPU Vlákna fyziky vozidel (0 = hlavní vlákno) + Vlákna fyziky vozidel; 0 je hlavní vlákno. Více pomáhá u mnoha souprav. Přeskočit dekorační soupravy při startu Starter @@ -488,7 +562,6 @@ Se Shiftem S Ctrl S Ctrl + Shift - Vyhrazeno simulátorem Klávesa: Přiřaďte příkaz ke každé kombinaci modifikátorů této klávesy. — žádný — @@ -501,6 +574,7 @@ Uložit Obnovit Nastavení uloženo + Nastavení se nepodařilo uložit Neuložené změny @@ -528,6 +602,10 @@ Soubor se seznamem změn nebyl nalezen. O programu Zavřít + Procesor bez AVX2 + Tento procesor nemá AVX2 a oficiální simulátor ho vyžaduje: nespustí se. Simulátor lze sestavit bez AVX2 (CMake -DENABLE_AVX2=OFF). Návod: {0} + Otevřít návod + Znovu nezobrazovat Nastavení načteno z: @@ -545,7 +623,6 @@ Soupravy ve skladu Přidat do skladu Odebrat ze skladu - Nahradit soupravou ze skladu Nebyly nalezeny žádné soupravy k importu. O textuře Žádné informace o textuře. @@ -557,11 +634,15 @@ Zvolit spřáhla automaticky pro celou soupravu Spřáhlo na konci soupravy — za ním není vozidlo. Přejmenovat... - Použít tento náklad na všechna následující vozidla, která ho přijmou + Stejný náklad i pro následující vozidla Připojit soupravu ze skladu Přidat soupravy ze souboru... Spustit bez uložení nastavení + Další způsoby spuštění Spustit bez vozidla + Editor scenérie + Vytvořit novou scenérii + Průvodce novou scenérií v editoru simulátoru. Editor mají jen některé verze. Spustit editor scenérie Editor scenérie (eu07 -edit) mají jen některé verze simulátoru. Pokud ho vybraný simulátor nepodporuje, editor se neotevře. Editor pracuje přímo se souborem {0}, ne s kopií od starteru, takže uložené změny se zapíší do scenérie. Spustit? Zobrazovat průběh simulace @@ -590,21 +671,21 @@ — nové pravidlo — Odebrat z pravidla Vše - Rozlišení a textury - Vykreslování + Obraz + Renderer Stíny - Odrazy a pohled - Python skripty - Název portu / neměnit / frekvence odesílání dat - UARTfeature: - Uložit a zavřít + Efekty + Textury a vyhlazování + Dohlednost + Plynulost + Odrazy + Obrazovky v kabině + Ovládání přes UART Nejprve vyberte kategorii nebo třídu vozidel. Skrýt archivní scénáře Nástroje - Pokročilá nastavení Deník událostí Vymazat log - Sestava Klávesové zkratky @@ -621,18 +702,167 @@ Otevřít nabídku vozidla - Vehicle database - Vehicle folders - Liveries - wrecks - Groups - Fixed sets - textures.txt files - Read from - the starter's copy - textures.txt files - Copy written - Copy folder - Rebuild copy - Rebuilt + Prostředky a kompatibilita + Protokol a nástroje + Protokol událostí a nástroje + Otevřít protokol a nástroje… + výchozí + Rozhraní simulátoru + Dosahy a podrobnosti vykreslování + Zvukový engine + Další možnosti simulace + Konzole + Nahradit + Nahradit vozidlo v soupravě tímto (dvojklik) + Nahradit vozidlem vybraným v prohlížeči + Vrátit poslední změnu soupravy (Ctrl+Z) + Znovu provést vrácenou změnu (Ctrl+Y) + Upravujete v sestavě dole. Změny se ukládají samy. + Vyberte soupravu ze skladu, kterou chcete upravit. + Vyberte soupravu ze seznamu, abyste ji mohli upravit. + Sklad už obsahuje soupravu „{0}“. Nahradit ji? + Odstranit soupravu „{0}“ ze skladu? + Soupravy mají neuložené změny. Načtení scenérií je zahodí. Pokračovat? + Sklad: {0} + Uložit do souboru scenérie + Obnovit ze souboru scenérie + Souprava se trvale uloží do souboru {0}. Kopie originálu: {1}. + Tato souprava v souboru {0} není: soubor se změnil. Znovu načtěte scenérie a proveďte změny znovu. + Soubor scenérie změněn + Soubor {0} se změnil mimo starter. Neuložené změny mají: {1}. Načíst soubor a zahodit je? Bez načtení je nelze uložit. + Změněno – neuloženo v souboru scenérie (Ctrl+S uloží) + Otočená + Scenérie tuto soupravu otáčí (reversed). Starter to nemění. + Chyby syntaxe ({0}) + Simulátor může tato místa načíst jinak, než autor zamýšlel. + Chyby syntaxe v souborech scenérie: {0} + … a dalších {0} + Komentář /* není uzavřen – simulátor přeskočí zbytek souboru + Souprava {0} nekončí na endtrainset + Záhlaví soupravy {0} se opakuje + Neúplná hlavička soupravy {0} (trainset název kolej odstup rychlost) + endtrainset bez započaté soupravy + reversed mimo hlavičku soupravy – musí stát před prvním vozidlem + Vozidlo {0} bez enddynamic + Neúplný záznam vozidla {0} + Vozidlo {0}: chybí počet nákladu před enddynamic (aspoň 0) + Vozidlo {0}: náklad {1} bez druhu + Vozidlo {0}: nadbytečné „{1}” před enddynamic + Simulátor kvůli tomu vynechá: {0} + Kvůli tomu nevzniknou soupravy: {0} + Souprava {0}: mezera v názvu koleje „{1}” + Vozidlo {0} stojí mimo soupravu: chybí záhlaví trainset? + {0}: „{1}“ místo čísla + Soubor {1} nenalezen (include) + Soubor {1} je na disku jako {0}: linuxový eu07 ho nenačte + include {1} bez end + Soupravu {0} se nepodařilo načíst + Vozidlo {0} se nepodařilo načíst + Vložit do vybrané soupravy scenérie + Připojit k vybrané soupravě scenérie + Vrátit změnu soupravy + Znovu provést změnu soupravy + Přidat do skladu jako… + Měřítko rozhraní simulátoru + Velikost písma rozhraní + Neprůhlednost pozadí oken + Po startu zobrazit okna pomoci při jízdě a scénáře + Po startu otevřít mapu, výcvikovou kartu a seznam vozidel + Okno přepisů (rádiové a hlasové zprávy) + Zobrazit protokol při načítání + Po startu myš otáčí kamerou + Ovládání prvků v kabině myší + Monitor pro celou obrazovku + Složka snímků obrazovky + Základní dohled vykreslování + Cílová snímková frekvence + Dohled vykreslování pražců + Dosah odrazů objektů + Dosah odrazů vozidel + Načítat textury na pozadí + Uvolňovat textury vzdálených vozidel + Vykreslovat oblohu + Vykreslovat kabinu + Doba závěrky rozmazání pohybu + Vertikální synchronizace oken obrazovek + Obrazovky z kabiny v samostatných oknech + Vzduchové hadice podle spojení vozidel + Vyhlazení trolejového vedení (klasický renderer) + Maximální počet zdrojů zvuku + Dekódovat zvuky na pozadí + Načítat trolejové vedení + Přepočítávat převýšení koleje + Houpání kamery + Přestavování výhybek z mapy + Zvýraznění trasy na mapě + Okno konzole s protokolem (Windows) + Výchozí + Změny v souboru… + Co uložení změní v eu07.ini + Změněno + Doplněno (v souboru chybí) + Zakomentováno + Uložení v eu07.ini nic nezmění. + Změněné klávesy se uloží do eu07_input-keyboard.ini. + Kvalita grafiky + Minimální + Nízká + Střední + Vysoká + Vlastní + Monitor: {0} Hz + Obrazovka {0}: až {1} Hz + Nastavit {0} FPS + Najetím na úroveň zobrazíte hodnoty. + RRRR-MM-DD + Starter nemá překlad: zůstane anglicky. Simulátor dostane tento jazyk. + Žádné profily + Vyberte profil + Profil {0} uložen + Profil {0} se nepodařilo uložit + Profil {0} použit + Profil {0} se nepodařilo načíst. Nastavení zůstává beze změny. + Profil {0} už existuje. Nahradit ho? + Na numerické klávesnici: {0}. Bez ní nebudou fungovat, přiřaďte jiné klávesy. + Zobrazit je + Modifikátor: kombinuje se s jinými klávesami. + Obsazeno simulátorem (ukazování myší). + Simulátor tuto klávesu nezná. Nelze ji přiřadit. + {0}: obsazeno simulátorem ({1}). Přiřazení by nefungovalo. + {0}: simulátor to používá pro: {1}. Přiřazení to nahradí. + Obsazeno: {0}. Stiskněte jinou + mapa + informace o soupravě + jízdní řád + panel scénáře + okno protokolu + ukončení simulátoru + ladicí panel + opuštění kabiny a vnější pohledy + přestup do vozidla + funkce ladicího režimu + editor + události scenérie + uložené kamery + Násobitel dosahu + Zkracuje nebo prodlužuje dohlednost scenérie. Cílové FPS ji přepíše. + Velmi vysoká + Ultra + Vše na maximum. Může to být moc i pro silnou kartu. + Limit snímků oken obrazovek + Funguje jen s obrazovkami v samostatných oknech; bez nich nic nemění. + Nejdelší + scénář {0} + vlak {0} + Řízené dříve + Funguje, když běží relace spuštěná ze starteru. + Log simulátoru je vypnutý: starter nevidí přesedání. + Zapnout log + Vozidlo ze startu + Relace + pásek: {0} + běží + Ve skladu: {0} + Vyberte soupravu s vozidly + Úroveň jen pro tuto část grafiky diff --git a/StarterNG/startercfg/lang/en.xml b/StarterNG/startercfg/lang/en.xml index 3c57ca3..b02cf92 100644 --- a/StarterNG/startercfg/lang/en.xml +++ b/StarterNG/startercfg/lang/en.xml @@ -7,7 +7,6 @@ Scenarios Depot Settings - Developer Controls Help MaSzyna wiki @@ -82,10 +81,47 @@ Author Photos Open latest simulation log + Hasler tapes + Read Hasler speed recorder tapes + by distance + by time + Tape feed + Scale + Live + Open folder + No tapes in {0}. + Tape recording is off. + Turn on recording + Shows the tape of the vehicle you are driving. + Driven + Your consist + hour unknown, time counted from the start of the simulation + Could not read the tape {0}. + {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 + {0} · {1:0.0} km · {2:0} km/h · cylinders {3:0.0} bar · current {4} + Cylinders + BP + Braking + Current + Vigilance + electronic + Hasler RT9 + Recorder + no + yes + {0} · {1:0.000} km · {2:0.0} km/h · BP {3:0.00} bar · cylinders {4:0.00} bar · current {5} · vigilance {6} + Start + Time the scenery starts at (hh:mm). Type it in for older tapes. + Export PNG + Could not save {0}. Vehicle database Rolling stock database + Showing {0} of {1} + No vehicle matches these filters. + Pick a vehicle from the list. A double-click replaces the one selected in the consist. + Clear filters Stock database… Search... Load consist from scenery @@ -259,6 +295,7 @@ Could not start the simulator The simulator executable was not found. The file is not marked as executable (chmod +x). + This is not a program: there is no binary or script inside. 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. The simulator ended unexpectedly Exit code: {0} @@ -303,7 +340,6 @@ Save consist Load consist from warehouse (warehouse empty) - Remove from warehouse Consist name Copy consist to clipboard Paste consist from clipboard @@ -318,6 +354,8 @@ General Language + Also the simulator's language. Saved as soon as it is picked. + The simulator has no translation for this language and will run in English. Fullscreen Pause simulation when window is inactive Pause on start @@ -345,7 +383,13 @@ UART configuration Enable UART communication Serial port - Tuning parameter + Calibration + Speed (baud) + Send every (s) + e.g. /dev/ttyUSB0 or COM3 + Without a port UART stays off. + empty = simulator defaults + Not {0} numbers: the calibration is not saved. Print debug data to the console Master controller Secondary/shunting controller @@ -366,29 +410,42 @@ Enables an AI assistant for coupling, uncoupling and simple shunting moves while the vehicle is stopped. Log missing vehicle files during export Writes vehicles the starter could not find into the log. - Show the package author's tab - Adds a tab with the state of the vehicle database, for preparing rolling stock packages. Graphics Render engine - OpenGL rendering path. 'Simplified' and 'Old' use the legacy renderer. + Full: OpenGL 3.3 with shadows and reflections. Old and Simplified: for weak cards. Experimental: Vulkan, Direct3D 12, in development. Full Old - Simplified (legacy) Simplified - Disable visual layer Experimental 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. + Graphics card (Linux) + Faster (discrete) + As the system decides + Found: {0}. The simulator will run on: {1}. + Found: {0}. The screen is already driven by the right card – the starter changes nothing. + Found: {0}. The system picks the card, usually the integrated one. + Found: {0}. Environment variables ({1}) choose the card; the starter leaves them alone. + One card: {0} – nothing to choose between. + Could not read the graphics cards from /sys/class/drm. + Only the Windows build of the simulator uses this. + Only the legacy renderer reads this, and another one is chosen. + Only works with a target frame rate (targetfps). + The experimental renderer does not read this. + Only the full renderer reads this, and another one is chosen. + The pause in the background needs a network server (network.server). Resolution + {0} (monitor) + Has no effect with automatic resolution. Buffer resolution Scales the internal render buffer relative to the window resolution. Maximum texture resolution Maximum cabin texture resolution Texture filtering quality - Anisotropic texture filtering level. + Sharpness of textures seen at an angle, such as tracks. Even x16 costs little. Multisampling - Anti-aliasing of object edges. Higher settings cost more GPU time. + Smooths edges. Every step costs noticeable frames. Very low Low Normal @@ -399,7 +456,6 @@ Standard Very low Low - Normal Moderate Standard High @@ -407,12 +463,13 @@ Disabled Dynamic light sources Maximum number of simultaneous dynamic light sources. - Rendering range - Maximum draw-distance multiplier; the engine lowers it automatically when the FPS drops. - Limit frame rate + Draw distance stretch (max) + How many times the simulator may stretch the range when frames are to spare. Squared in the full renderer: ×3 means up to ×9. + No limit + Frame rate limit + Fewer frames: a cooler, quieter computer. With V-Sync a limit above the refresh rate does nothing. Shadow length limit Shortens the long shadows cast by a low sun. Higher values cut them sooner. - No limit Shortened Automatic resolution (borderless fullscreen) Use ANGLE Vulkan renderer @@ -433,8 +490,13 @@ Keeps geometry in GPU buffers (faster). Disable only if you have problems with an old GPU. Render shadows Reflections refresh rate + How often reflections refresh. Less often means more frames. + every {0} min + every {0} s + {0}× a second Shadows resolution Shadow range + How far shadows reach; the further, the softer. After the arrow: the real reach. Cabin shadow sources range Distance at which light sources still cast shadows inside the cab. Zero turns cab shadows off. @@ -451,7 +513,7 @@ Terrain geometry, static models and vehicles View angle - Vertical camera field of view in degrees (15–75). + Vertical camera field of view in degrees (10–75). Render onboard computer screens Enables cab screens driven by Python scripts. Render screens in a separate thread @@ -493,13 +555,19 @@ Advanced Compress TGA textures Scale specular highlights (old-model compatibility) + Tones down the shine of models made for older renderers. Use OpenGL ES + OpenGL ES instead of OpenGL. Does not work with the legacy renderer. Gamma correction in shaders + Gamma in the shaders instead of sRGB. For when a driver gives too bright or dark a picture. Generate mipmaps for in-cab (Python) screen textures + Cab screens smoother from afar and at an angle, at a cost on each refresh. Extended E3D model conversion (experimental) + Saves text models as binary E3D: faster loading, more files in the game folder. Conservative texture memory management Purge unused textures from GPU memory Vehicle physics threads (0 = main thread) + Threads for vehicle physics; 0 is the main thread. More helps with many consists. Skip decorative consists when starting Starter @@ -523,7 +591,6 @@ With Shift With Ctrl With Ctrl + Shift - Reserved by the simulator Key: Assign a command to each modifier combination for this key. — none — @@ -536,6 +603,7 @@ Save Reset Settings saved + Could not save the settings Unsaved changes @@ -563,6 +631,10 @@ No changelog file found. About Close + Processor without AVX2 + This processor has no AVX2 and the official simulator needs it: it will not start. You can build the simulator without AVX2 (CMake -DENABLE_AVX2=OFF). Instructions: {0} + Open the instructions + Don't show again Settings loaded from: @@ -580,7 +652,6 @@ Consists in the warehouse Add to warehouse Remove from warehouse - Replace with warehouse consist No consists found to import. About texture No texture information. @@ -592,11 +663,15 @@ Pick couplings automatically for the whole consist Rear coupler of the train — no vehicle behind it. Rename... - Apply this load to every following vehicle that accepts it + Same load for the following vehicles Append warehouse consist Add consists from file... Start without saving settings + More ways to start Start with no vehicle + Scenery editor + Create a new scenery + The new scenery wizard in the simulator's editor. Only some builds have the editor. Open the scenery editor 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? Show log in console @@ -626,21 +701,21 @@ — new rule — Remove from rule All - Resolution and textures - Rendering + Picture + Renderer Shadows - Reflections and view - Python scripts - Port name / leave alone / data send rate - UARTfeature: - Save and close + Effects + Textures and anti-aliasing + Draw distance + Smoothness + Reflections + Cab screens + Controls over UART Pick a vehicle category or class first. Hide archived scenarios Tools - Advanced settings Event log Clear log - Composition Keyboard shortcuts @@ -657,18 +732,369 @@ Open the vehicle menu - Vehicle database - Vehicle folders - Liveries - wrecks - Groups - Fixed sets - textures.txt files - Read from - the starter's copy - textures.txt files - Copy written - Copy folder - Rebuild copy - Rebuilt + + + Resources and compatibility + Log and tools + Event log and tools + Open the log and tools… + default + Simulator interface + Ranges and rendering details + Audio engine + More simulation options + Console + Replace + Replace the vehicle in the consist with this one (double-click) + Replace with the browser's pick + Undo the last change to the consist (Ctrl+Z) + Redo the undone change (Ctrl+Y) + Edit it in the consist strip below. Changes save themselves. + Pick a warehouse consist to edit it. + Pick a consist from the list to edit it. + The warehouse already has a consist called "{0}". Replace it? + Remove the consist "{0}" from the warehouse? + Consists have unsaved changes. Reloading the sceneries drops them. Continue? + Warehouse: {0} + Save to the scenery file + Revert to the scenery file + The consist goes for good into {0}. Copy of the original: {1}. + This consist is not in {0}: the file has changed. Reload the sceneries and make your changes again. + Scenery file changed + {0} changed outside the starter. Unsaved changes in: {1}. Read the file and drop them? Without reading it they cannot be saved. + Changed - not saved in the scenery file (Ctrl+S saves) + Reversed + The scenery turns this consist round (reversed). The starter does not change that. + Syntax errors ({0}) + The simulator may read these places differently from what the author meant. + Syntax errors in the scenery's files: {0} + … and {0} more + Comment /* is never closed – the simulator skips the rest of the file + Trainset {0} does not end with endtrainset + Header of trainset {0} repeated + Incomplete header of trainset {0} (trainset name track offset speed) + endtrainset with no trainset begun + reversed outside a trainset's header – it has to come before the first vehicle + Vehicle {0} without enddynamic + Incomplete entry of vehicle {0} + Vehicle {0}: no load count before enddynamic (0 at least) + Vehicle {0}: load {1} without its type + Vehicle {0}: stray “{1}” before enddynamic + The simulator skips because of it: {0} + Because of it these trainsets are not made: {0} + Trainset {0}: space in track name “{1}” + Vehicle {0} stands outside a trainset: header missing? + {0}: “{1}” instead of a number + File {1} not found (include) + File {1} is on disk as {0}: the Linux eu07 will not load it + include {1} without end + Trainset {0} could not be read + Vehicle {0} could not be read + Put into the selected scenery consist + Append to the selected scenery consist + Undo a change to the consist + Redo a change to the consist + Add to warehouse as… + Simulator UI scale + UI font size + Window background opacity + Show the driving aid and scenario windows on start + Open the map, training card and vehicle list on start + Transcripts window (radio and voice messages) + Show the log while loading + Mouse turns the camera on start + Click cab controls with the mouse + Full-screen monitor + Screenshots folder + Base draw range + Target frame rate + Sleeper draw distance + Object reflection range + Vehicle reflection range + Stream textures in the background + Release textures of distant vehicles + Draw the sky + Draw the cab + Motion blur shutter time + Vertical sync for screen windows + Cab screens in separate windows + Draw air hoses by how the vehicles are coupled + Smooth overhead wires (classic renderer) + Maximum sound sources + Decode sounds in the background + Load overhead wires + Recalculate track cant + Camera shake + Throw switches from the map + Route highlight on the map + Console window with the log (Windows) + The starter's messages and bulk depot tools. + Less graphics memory, longer loading. + Best left off when the graphics card has memory to spare. + May cause trouble on some graphics cards. + Leaves out consists the scenery marks as decoration. + Enlarges the simulator's windows and buttons. + Size of the text in the simulator's windows. + 1 is solid; lower values let the view show through. + Unticked, it starts with a pointer in the cab. + Off, the pointer mode is unavailable and the mouse only turns the camera. + Empty: the primary monitor. + Relative to the game folder, with no spaces in the path. + How far the scenery is drawn; a target FPS may change it. + Below this the simulator shortens the draw range, above it lengthens it. + DDS textures are read in the background: the scenery loads faster. It does not raise FPS. + Multiple of the draw range beyond which vehicle textures leave the graphics card. + Off hides the cab model; for testing. + A longer time blurs more. + Useful with several monitors or a desk with its own displays. + How many sounds may play at once. + Sound files are decoded by worker threads, for faster loading. + Without wires pantographs never break and electric locomotives always have power. + Multiplier of the cab view's sway on every axis; 0 means none. + How far ahead of and behind the vehicle the map highlights the track. + engage the AI driver + disengage the AI driver + master controller up + master controller up, fast + master controller down + master controller down, fast + shunt controller up + shunt controller up, fast + shunt controller down + shunt controller down, fast + switch the current gauge to the other unit + apply more locomotive brake + apply more locomotive brake, fast + release locomotive brake + release locomotive brake, fast + bail off the locomotive brake + train brake valve: more braking + train brake valve: less braking + train brake valve: overcharge the brake pipe + train brake valve: running position + train brake valve: first braking step + train brake valve: full service + train brake valve: supplementary braking + train brake valve: lap position + emergency braking + raise the brake pipe pressure level + lower the brake pipe pressure level + default brake pipe pressure level + toggle the vehicle's brake + apply more hand brake + release hand brake + toggle the emergency brake + anti-slip brake + sander + reverser up + reverser down + reverser: forward II + reverser: forward + reverser: neutral + reverser: backward + toggle the water pump circuit breaker + toggle the water pump + toggle the water heater circuit breaker + toggle the water heater + toggle the link between the water circuits + toggle the fuel pump + toggle the oil pump + toggle the line breaker + toggle the converter + toggle the converter in the occupied unit + reset the converter overload relay + toggle the compressor + toggle the compressor in the occupied unit + switch between low and high starting current + reset the traction motor overload relay + toggle the automatic notching relay + toggle the electro-pneumatic brake + brake operation mode: more effective + brake operation mode: simpler + faster train brake acting speed + slower train brake acting speed + brake acting speed for a freight train + brake acting speed for a passenger train + brake acting speed for an express train + higher brake load setting + lower brake load setting + toggle the EMU unit braking indicator + acknowledge the vigilance device and cab signalling + acknowledge the cab signalling + low-tone horn + high-tone horn + whistle + toggle the radio + next radio channel + previous radio channel + send radio-stop + local radio-stop test + send the call-3 signal + radio volume up + radio volume down + move to the next compartment towards the front + move to the next compartment towards the rear + couple + uncouple + attach the coupler adapter + remove the coupler adapter + uncouple at the occupied cab's end + toggle the left doors + toggle the right doors + permit opening the left doors + permit opening the right doors + next door permit preset + previous door permit preset + open the permitted doors + close the left doors + close the right doors + close all doors + toggle the door steps + toggle the door operation mode + departure signal + toggle the door lock + toggle the three-way pantograph valve + auxiliary pantograph compressor + toggle the front pantograph + toggle the rear pantograph + lower all pantographs + next pantograph selection preset + previous pantograph selection preset + toggle the selected pantographs + toggle train heating + next headlight preset + previous headlight preset + toggle the left headlight + toggle the right headlight + toggle the upper headlight + toggle the left red marker + toggle the right red marker + toggle the rear left headlight + toggle the rear right headlight + toggle the rear upper headlight + toggle the rear left red marker + toggle the rear right red marker + toggle the end-of-train lights + toggle the end-of-train plates + toggle headlight dimming + open the line contactors + close the line contactors + cut out the damaged motors + toggle the cab light + toggle cab light dimming + toggle the compartment lights + toggle the instrument lights + toggle the desk lights + toggle the timetable light + generic switch 0 + generic switch 1 + generic switch 2 + generic switch 3 + generic switch 4 + generic switch 5 + generic switch 6 + generic switch 7 + generic switch 8 + generic switch 9 + toggle the batteries + toggle cab activation + toggle the front traction motor blowers + toggle the rear traction motor blowers + switch off all traction motor blowers + toggle the starting resistor fans + toggle the cruise control + toggle the spring brake + toggle the spring brake shut-off cock + release the spring brake + start the distance counter + cruise control speed up + cruise control speed down + more power for the cruise control + less power for the cruise control + cruise control preset speed 0 + cruise control preset speed 1 + cruise control preset speed 2 + cruise control preset speed 3 + cruise control preset speed 4 + cruise control preset speed 5 + cruise control preset speed 6 + cruise control preset speed 7 + cruise control preset speed 8 + cruise control preset speed 9 + universal brake button 1 + universal brake button 2 + universal brake button 3 + reset the defined relays, set 1 + reset the defined relays, set 2 + reset the defined relays, set 3 + Defaults + Changes to the file… + What saving changes in eu07.ini + Changed + Added (missing from the file) + Commented out + Saving would change nothing in eu07.ini. + Changed key bindings go to eu07_input-keyboard.ini. + Graphics quality + Minimal + Low + Medium + High + Custom + Screen: {0} Hz + Screen {0}: up to {1} Hz + Set {0} FPS + Hover over a level to see its values. + YYYY-MM-DD + No starter translation: it stays in English. The simulator gets this language. + No profiles + Pick a profile + Profile {0} saved + Could not save profile {0} + Profile {0} applied + Could not read profile {0}. The settings are unchanged. + Profile {0} already exists. Replace it? + On the numeric keypad: {0}. Without one they will not work; give them other keys. + Show them + A modifier: it goes with other keys. + Taken by the simulator (mouse picking). + The simulator does not know this key. It cannot be bound. + {0}: taken by the simulator ({1}). A binding here would not work. + {0}: the simulator uses this for: {1}. A binding replaces that. + Taken: {0}. Press another + map + consist info + timetable + scenario panel + log window + quitting the simulator + debug panel + leaving the cab and outside views + changing vehicle + debug mode functions + editor + scenery events + stored cameras + Distance factor + Shortens or lengthens how far the scenery is drawn. A target FPS overrides it. + Very high + Ultra + Everything at maximum. It may be too much even for a strong card. + Screen window frame limit + Works only with screens in separate windows; without them it changes nothing. + Longest + scenario {0} + train {0} + Driven earlier + Works while a session started from the starter runs. + The simulator's log is off: the starter does not see changes of vehicle. + Turn the log on + Vehicle at the start + Session + tapes: {0} + running + In the warehouse: {0} + Pick a consist with vehicles + Level for this part of the graphics only diff --git a/StarterNG/startercfg/lang/hu.xml b/StarterNG/startercfg/lang/hu.xml index 288de48..ae30b44 100644 --- a/StarterNG/startercfg/lang/hu.xml +++ b/StarterNG/startercfg/lang/hu.xml @@ -7,7 +7,6 @@ Forgatókönyvek Fűtőház Beállítások - Developer Irányítás Súgó MaSzyna wiki @@ -82,10 +81,47 @@ Szerző Fényképek Legutóbbi szimulációs napló megnyitása + Hasler-szalagok + Hasler sebességmérő-szalagok olvasása + út szerint + idő szerint + Szalagtovábbítás + Lépték + Élő + Mappa megnyitása + Nincsenek szalagok itt: {0}. + A szalagok rögzítése ki van kapcsolva. + Szalagmentés bekapcsolása + Annak a járműnek a szalagját mutatja, amelyet vezetsz. + Vezetett + Az Ön szerelvénye + az óra ismeretlen, az idő a szimuláció kezdetétől számít + A(z) {0} szalag nem olvasható. + {0} · rögzítve {1} (menet {2}, állás {3}) · út {4:0.00} km · Vmax {5:0} km/h · menetátlag {6:0} km/h · átlag megállásokkal {7:0} km/h + {0} · {1:0.0} km · {2:0} km/h · hengerek {3:0.0} bar · áram {4} + Hengerek + Fővez. + Fékezés + Áram + Éberség + elektronikus + Hasler RT9 + Regisztráló + nem + igen + {0} · {1:0.000} km · {2:0.0} km/h · fővezeték {3:0.00} bar · hengerek {4:0.00} bar · áram {5} · éberség {6} + Indulás + A színtér kezdési ideje (óó:pp). Régebbi szalagoknál írd be kézzel. + PNG exportálása + {0} mentése nem sikerült. Járműadatbázis Járműpark-adatbázis + {0} / {1} látható + Egy jármű sem felel meg ezeknek a szűrőknek. + Válasszon járművet a listából. A dupla kattintás lecseréli a szerelvényben kiválasztott járművet. + Szűrők törlése Járműadatbázis… Keresés... Szerelvény betöltése pályáról @@ -221,14 +257,14 @@ A következőkre Legnagyobb A teljes szerelvény rakománya - Consist ready to go - The consist starts prepared: brake pipe charged, driver’s brake valve set, batteries closed. Unchecked it starts cold and braked. - Force the consist state on launch - Overrides the depot’s "consist ready to go" box for every scenario you start. - As authored - Always cold - Always ready - Overridden by "Force the consist state on launch" in Settings. + A szerelvény menetkész + A szerelvény előkészítve indul: fővezeték feltöltve, mozdonyvezetői fékszelep beállítva, akkumulátorok bekapcsolva. Bejelölés nélkül hidegen és befékezve indul. + Szerelvény állapotának kényszerítése indításkor + Minden indított pályánál felülírja a depó „A szerelvény menetkész” jelölőnégyzetét. + A pálya szerint + Mindig hideg + Mindig menetkész + Felülírja a Beállítások „Szerelvény állapotának kényszerítése indításkor” opciója. Véletlen típus Legnagyobb mennyiség Véletlen mennyiség @@ -259,6 +295,7 @@ A szimulátor indítása sikertelen A szimulátor futtatható fájlja nem található. A fájl nincs futtathatóként megjelölve (chmod +x). + Ez nem program: nincs benne futtatható fájl vagy szkript. Ez a bináris másik operációs rendszerhez készült. Linuxon a Windows-verzió Wine vagy Proton segítségével futtatható - ha ezeket használod, ez nem hiba. A szimulátor váratlanul leállt Kilépési kód: {0} @@ -303,7 +340,6 @@ Szerelvény mentése Szerelvény betöltése a raktárból (a raktár üres) - Eltávolítás a raktárból Szerelvény neve Szerelvény másolása a vágólapra Szerelvény beillesztése a vágólapról @@ -318,6 +354,7 @@ Általános Nyelv + A szimulátornak nincs fordítása erre a nyelvre, angolul fog futni. Teljes képernyő Szimuláció szüneteltetése inaktív ablaknál Szüneteltetés indításkor @@ -342,7 +379,13 @@ UART beállítása UART kommunikáció engedélyezése Soros port - Hangolási paraméter + Kalibráció + Sebesség (baud) + Küldés ennyi másodpercenként + pl. /dev/ttyUSB0 vagy COM3 + Port nélkül az UART kikapcsolva marad. + üres = a szimulátor alapértékei + Ez nem {0} szám: a kalibrálás nem lesz mentve. Hibakeresési adatok kiírása a konzolra Fő kontroller Segéd/tolatókontroller @@ -360,24 +403,41 @@ Hibakeresési mód (teszt mód) Virtuális tolatás Hiányzó járműfájlok naplózása exportáláskor - Show the package author's tab Grafika Megjelenítő motor Teljes + Teljes: OpenGL 3.3 árnyékokkal és tükröződéssel. Régi és Egyszerűsített: gyenge kártyákhoz. Kísérleti: Vulkan, Direct3D 12, fejlesztés alatt. Régi - Egyszerűsített shader Egyszerűsített - Vizuális réteg kikapcsolása Kísérleti Figyelem: a kísérleti renderelő még fejlesztés alatt áll. Instabil lehet, a jelenet egyes részei hiányozhatnak, vagy egyes videokártyákon el sem indul. Ha a szimulátor nem indul el vagy hibásan jelenik meg, válts vissza a „Teljes” renderelőre. + Videokártya (Linux) + Erősebb (dedikált) + Ahogy a rendszer dönt + Talált kártyák: {0}. A szimulátor ezen fut: {1}. + Talált kártyák: {0}. A kijelzőt már a megfelelő kártya hajtja – az indító nem változtat semmit. + Találat: {0}. A kártyát a rendszer választja, általában az integráltat. + Találat: {0}. A kártyát környezeti változók választják ({1}); az indító nem módosítja őket. + Egy kártya: {0} – nincs miből választani. + Nem sikerült beolvasni a videokártyákat a /sys/class/drm alól. + Csak a szimulátor Windowsos változata használja. + Ezt csak a legacy renderelő olvassa, de más van kiválasztva. + Csak cél képkockaszámmal működik (targetfps). + A kísérleti renderelő ezt nem olvassa. + Ezt csak a teljes renderelő olvassa, de más van kiválasztva. + A háttérben szüneteléshez hálózati szerver kell (network.server). Felbontás + {0} (monitor) + Automatikus felbontásnál nincs hatása. Puffer felbontása Textúrák legnagyobb felbontása Vezetőállás-textúrák legnagyobb felbontása Textúraszűrés minősége + A ferdén látott textúrák élessége, pl. a síneké. Még az x16 is keveset igényel. Multisampling + Élsimítás. Minden fokozat érezhetően kevesebb képkockát jelent. Nagyon alacsony Alacsony Normál @@ -388,17 +448,18 @@ Standard Nagyon alacsony Alacsony - Normál Közepes Standard Magas Nagyon magas Kikapcsolva Dinamikus fényforrások - Megjelenítési távolság - Képkockaszám korlátozása + Látótávolság nyújtása (max.) + Hányszorosára nyújthatja a szimulátor a távolságot, ha van elég képkocka. A teljes megjelenítőben négyzetesen: ×3 akár ×9. + Nincs korlát + Képkockaszám-korlát + Kevesebb képkocka: hűvösebb, csendesebb gép. V-Sync mellett a frissítés feletti korlát hatástalan. Árnyékhossz korlátozása - Nincs korlát Rövidített Automatikus felbontás (keret nélküli teljes képernyő) ANGLE Vulkan megjelenítő használata @@ -414,8 +475,13 @@ VBO megjelenítés Árnyékok megjelenítése Tükröződések frissítési gyakorisága + Milyen gyakran frissüljenek a tükröződések. Ritkábban több képkocka. + {0} percenként + {0} másodpercenként + másodpercenként {0}× Árnyékok felbontása Árnyékok hatótávolsága + Meddig érnek az árnyékok; minél messzebb, annál lágyabbak. A nyíl után a valódi távolság. Vezetőállás árnyékforrásainak hatótávolsága Árnyékok megjelenítése @@ -429,6 +495,8 @@ Terep geometriája, statikus modellek és járművek Látószög + + A kamera függőleges látószöge fokban (10–75). Fedélzeti kijelzők megjelenítése Kijelzők megjelenítése külön szálon @@ -458,13 +526,19 @@ Speciális TGA textúrák tömörítése Csillanások skálázása (régi modellek kompatibilitása) + Csökkenti a régebbi megjelenítőkhöz készült modellek csillogását. OpenGL ES használata + OpenGL ES az OpenGL helyett. A legacy megjelenítővel nem működik. Gammakorrekció a shaderekben + Gamma a shaderekben sRGB helyett. Ha az illesztő túl világos vagy sötét képet ad. Mipmapok készítése a vezetőállás (Python) kijelzőtextúráihoz + A kabinképernyők távolról és ferdén is simábbak, minden frissítés többletmunkája árán. Kiterjesztett E3D modellkonverzió (kísérleti) + A szöveges modelleket bináris E3D-ként menti: gyorsabb betöltés, több fájl a játék mappájában. Óvatos textúramemória-kezelés Nem használt textúrák törlése a GPU memóriájából Járműfizika szálai (0 = fő szál) + A járműfizika szálai; 0 a fő szál. Több szál sok szerelvénynél segít. Dekorációs szerelvények kihagyása indításkor Starter @@ -488,7 +562,6 @@ Shift-tel Ctrl-lal Ctrl + Shift-tel - A szimulátor számára fenntartva Billentyű: Rendeljen parancsot a billentyű minden módosító-kombinációjához. — nincs — @@ -501,6 +574,7 @@ Mentés Visszaállítás A beállítások elmentve + A beállításokat nem sikerült elmenteni Nem mentett módosítások @@ -528,6 +602,10 @@ Nem található változásnapló fájl. Névjegy Bezárás + AVX2 nélküli processzor + Ez a processzor nem tudja az AVX2-t, a hivatalos szimulátornak pedig kell: nem indul el. A szimulátor lefordítható AVX2 nélkül (CMake -DENABLE_AVX2=OFF). Útmutató: {0} + Útmutató megnyitása + Ne mutasd többé Beállítások betöltve innen: @@ -545,7 +623,6 @@ Szerelvények a raktárban Hozzáadás a raktárhoz Eltávolítás a raktárból - Csere raktári szerelvényre Nem található importálható szerelvény. A textúráról Nincs textúrainformáció. @@ -557,11 +634,15 @@ Kapcsolatok automatikus beállítása az egész szerelvényre A szerelvény végén lévő kapcsolókészülék — nincs mögötte jármű. Átnevezés... - A rakomány alkalmazása minden további járműre, amely elfogadja + Ugyanez a rakomány a következő járműveknek Raktári szerelvény hozzáfűzése Szerelvények hozzáadása fájlból... Indítás a beállítások mentése nélkül + További indítási módok Indítás jármű nélkül + Pályaszerkesztő + Új színtér létrehozása + Új színtér varázsló a szimulátor szerkesztőjében. A szerkesztő csak egyes verziókban van meg. Pályaszerkesztő indítása A pályaszerkesztő (eu07 -edit) csak a szimulátor egyes verzióiban érhető el. Ha a kiválasztott szimulátor nem támogatja, a szerkesztő nem nyílik meg. Közvetlenül a(z) {0} fájlon dolgozik, nem a starter másolatán, így a mentett változások a pályába kerülnek. Elindítod? Szimuláció menetének megjelenítése @@ -590,21 +671,21 @@ — új szabály — Eltávolítás a szabályból Összes - Felbontás és textúrák - Megjelenítés + Kép + Renderelő Árnyékok - Tükröződés és nézet - Python szkriptek - Port neve / ne módosítsd / adatküldés gyakorisága - UARTfeature: - Mentés és bezárás + Effektek + Textúrák és élsimítás + Látótávolság + Folyamatosság + Tükröződések + Kabinkijelzők + Vezérlés UART-on Előbb válassz járműkategóriát vagy osztályt. Archivált forgatókönyvek elrejtése Eszközök - Speciális beállítások Eseménynapló Napló törlése - Összeállítás Billentyűparancsok @@ -621,18 +702,167 @@ Jármű menüjének megnyitása - Vehicle database - Vehicle folders - Liveries - wrecks - Groups - Fixed sets - textures.txt files - Read from - the starter's copy - textures.txt files - Copy written - Copy folder - Rebuild copy - Rebuilt + Erőforrások és kompatibilitás + Napló és eszközök + Eseménynapló és eszközök + Napló és eszközök megnyitása… + alapértelmezett + A szimulátor felülete + Távolságok és megjelenítési részletek + Hangmotor + További szimulációs beállítások + Konzol + Csere + A szerelvény járművének cseréje erre (dupla kattintás) + Csere a böngészőben kiválasztottra + A szerelvény utolsó módosításának visszavonása (Ctrl+Z) + A visszavont módosítás újra (Ctrl+Y) + Lent, az összeállításban szerkesztheted. A változások maguktól mentődnek. + Válasszon egy raktári szerelvényt a szerkesztéshez. + Válasszon szerelvényt a listából a szerkesztéshez. + A raktárban már van „{0}” nevű szerelvény. Lecseréli? + Eltávolítja a(z) „{0}” szerelvényt a raktárból? + A szerelvényeken nem mentett változások vannak. A színterek újratöltése elveti őket. Folytatod? + Raktár: {0} + Mentés a pályafájlba + Visszaállítás a pályafájlból + A szerelvény véglegesen a(z) {0} fájlba kerül. Az eredeti másolata: {1}. + Ez a szerelvény nincs a(z) {0} fájlban: a fájl megváltozott. Töltsd újra a színtereket, és végezd el újra a módosításokat. + A pályafájl megváltozott + A(z) {0} fájl az indítón kívül megváltozott. Nem mentett változások: {1}. Beolvassam a fájlt és elvessem őket? Beolvasás nélkül nem menthetők. + Módosítva – nincs mentve a pályafájlba (Ctrl+S ment) + Megfordítva + A színtér megfordítja ezt a szerelvényt (reversed). Az indító ezt nem változtatja meg. + Szintaktikai hibák ({0}) + A szimulátor ezeket a helyeket másképp olvashatja, mint ahogy a szerző szánta. + Szintaktikai hibák a pálya fájljaiban: {0} + … és még {0} + A /* megjegyzés nincs lezárva – a szimulátor kihagyja a fájl többi részét + A(z) {0} szerelvény nem endtrainset-tel végződik + A(z) {0} szerelvény fejléce ismétlődik + A(z) {0} szerelvény fejléce hiányos (trainset név vágány távolság sebesség) + endtrainset megkezdett szerelvény nélkül + reversed a szerelvény fejlécén kívül – az első jármű előtt kell állnia + {0} jármű enddynamic nélkül + A(z) {0} jármű bejegyzése hiányos + {0} jármű: hiányzik a rakomány száma az enddynamic előtt (legalább 0) + {0} jármű: {1} rakomány típus nélkül + {0} jármű: fölösleges „{1}” az enddynamic előtt + A szimulátor emiatt kihagyja: {0} + Emiatt nem jönnek létre a szerelvények: {0} + {0} szerelvény: szóköz a(z) „{1}” vágány nevében + A(z) {0} jármű szerelvényen kívül áll: hiányzik a trainset fejléc? + {0}: „{1}” szám helyett + A(z) {1} fájl nem található (include) + A(z) {1} fájl a lemezen {0} néven van: a linuxos eu07 nem tölti be + include {1} end nélkül + A(z) {0} szerelvényt nem sikerült beolvasni + A(z) {0} járművet nem sikerült beolvasni + Beillesztés a kijelölt pályaszerelvénybe + Hozzáfűzés a kijelölt pályaszerelvényhez + Szerelvénymódosítás visszavonása + Szerelvénymódosítás újra + Hozzáadás a raktárhoz néven… + A szimulátor felületének mérete + Felület betűmérete + Ablakháttér átlátszatlansága + Vezetéssegéd és forgatókönyv ablak megjelenítése induláskor + Térkép, oktatási kártya és járműlista megnyitása induláskor + Feliratablak (rádió- és hangüzenetek) + Napló megjelenítése betöltés közben + Induláskor az egér a kamerát forgatja + Vezetőfülke kezelőszerveinek kattintása egérrel + Teljes képernyős monitor + Képernyőképek mappája + Alap megjelenítési távolság + Cél képkockasebesség + Talpfák megjelenítési távolsága + Tárgyak tükröződési távolsága + Járművek tükröződési távolsága + Textúrák betöltése a háttérben + Távoli járművek textúráinak felszabadítása + Égbolt megjelenítése + Vezetőfülke megjelenítése + Mozgási elmosódás záridő + Kijelzőablakok függőleges szinkronizálása + Vezetőfülke-kijelzők külön ablakokban + Légvezetékek megjelenítése a kapcsolás szerint + Felsővezeték simítása (klasszikus megjelenítő) + Hangforrások maximális száma + Hangok dekódolása a háttérben + Felsővezeték betöltése + Sínpálya túlemelésének újraszámítása + Kamera rázkódása + Váltók állítása a térképről + Útvonal kiemelése a térképen + Konzolablak a naplóval (Windows) + Alapértelmezett + Változások a fájlban… + Mit változtat a mentés az eu07.ini-ben + Módosítva + Hozzáadva (hiányzik a fájlból) + Kikommentelve + A mentés semmit sem változtat az eu07.ini-ben. + A módosított billentyűk az eu07_input-keyboard.ini-be kerülnek. + Grafikai minőség + Minimális + Alacsony + Közepes + Magas + Egyéni + Monitor: {0} Hz + {0} kijelző: legfeljebb {1} Hz + {0} FPS beállítása + Vidd az egeret a szintre az értékekhez. + ÉÉÉÉ-HH-NN + Nincs fordítás az indítóhoz: angol marad. A szimulátor ezt a nyelvet kapja. + Nincs profil + Válasszon profilt + {0} profil mentve + A(z) {0} profilt nem sikerült menteni + {0} profil alkalmazva + A(z) {0} profilt nem sikerült beolvasni. A beállítások nem változtak. + A(z) {0} profil már létezik. Felülírja? + A számbillentyűzeten: {0}. Nélküle nem működnek, adj meg más billentyűket. + Mutassa őket + Módosító: más billentyűkkel együtt használható. + A szimulátor használja (egérrel kijelölés). + A szimulátor nem ismeri ezt a billentyűt. Nem rendelhető hozzá semmi. + {0}: a szimulátor használja ({1}). Az itteni hozzárendelés nem működne. + {0}: a szimulátor erre használja: {1}. A hozzárendelés ezt felváltja. + Foglalt: {0}. Nyomjon másikat + térkép + szerelvényadatok + menetrend + forgatókönyv-panel + naplóablak + kilépés a szimulátorból + hibakereső panel + a fülke elhagyása és külső nézetek + járműváltás + hibakereső mód funkciói + szerkesztő + pályaesemények + tárolt kamerák + Távolságszorzó + Rövidíti vagy nyújtja a színtér rajzolási távolságát. A cél FPS felülírja. + Nagyon magas + Ultra + Minden a maximumon. Erős kártyának is sok lehet. + Kijelzőablakok képkockakorlátja + Csak a külön ablakban lévő kijelzőknél működik; nélkülük nem változtat semmit. + Leghosszabb + forgatókönyv {0} + vonat {0} + Korábban vezetett + Az indítóból indított munkamenet alatt működik. + A szimulátor naplója ki van kapcsolva: az indító nem látja a járműváltást. + Napló bekapcsolása + Indulási jármű + Munkamenet + szalag: {0} + folyamatban + A raktárban: {0} + Válassz járműveket tartalmazó szerelvényt + Csak a grafika ezen részének szintje diff --git a/StarterNG/startercfg/lang/pl.xml b/StarterNG/startercfg/lang/pl.xml index 98b8d11..8570281 100644 --- a/StarterNG/startercfg/lang/pl.xml +++ b/StarterNG/startercfg/lang/pl.xml @@ -7,7 +7,6 @@ Scenariusze Zajezdnia Ustawienia - Deweloper Sterowanie Pomoc Wiki MaSzyna @@ -82,10 +81,47 @@ Autor Zdjęcia Otwórz ostatni log symulatora + Taśmy Haslera + Odczyt taśm prędkościomierza Hasler + wg drogi + wg czasu + Przesuw taśmy + Skala + Na żywo + Otwórz folder + Brak taśm w {0}. + Zapis taśm jest wyłączony. + Włącz zapis taśm + Pokazuje taśmę pojazdu, którym jedziesz. + Prowadzony + Twój skład + godzina nieznana, czas liczony od startu symulacji + Nie udało się odczytać taśmy {0}. + {0} · zarejestrowano {1} (jazda {2}, postój {3}) · droga {4:0.00} km · Vmax {5:0} km/h · Vśr jazdy {6:0} km/h · Vśr z postojami {7:0} km/h + {0} · {1:0.0} km · {2:0} km/h · cylindry {3:0.0} bar · prąd {4} + Cylindry + PG + Hamowanie + Prąd + SHP + elektroniczny + Hasler RT9 + Rejestrator + nie + tak + {0} · {1:0.000} km · {2:0.0} km/h · PG {3:0.00} bar · cylindry {4:0.00} bar · prąd {5} · SHP {6} + Start + Godzina startu scenerii (hh:mm). Dla starszych taśm wpisz ręcznie. + Eksport PNG + Nie udało się zapisać {0}. Baza pojazdów Baza taboru + Pokazano {0} z {1} + Żaden pojazd nie pasuje do tych filtrów. + Wybierz pojazd z listy. Dwuklik zamienia pojazd wybrany w składzie. + Wyczyść filtry Baza taboru… Szukaj... Wczytaj skład ze scenerii @@ -259,6 +295,7 @@ Nie udało się uruchomić symulatora Nie znaleziono pliku wykonywalnego symulatora. Plik nie ma prawa wykonywania (chmod +x). + To nie jest program: w środku nie ma pliku wykonywalnego ani skryptu. To jest plik wykonywalny dla innego systemu niż uruchomiony. Na Linuksie wersja dla Windows może działać przez Wine lub Proton - jeśli ich używasz, to nie jest błąd. Symulator zakończył pracę nieoczekiwanie Kod wyjścia: {0} @@ -303,7 +340,6 @@ Zapisz zestawienie Wczytaj zestawienie z magazynu (magazyn pusty) - Usuń z magazynu Nazwa zestawienia Skopiuj skład do schowka Wklej skład ze schowka @@ -318,6 +354,8 @@ Ogólne Język + Także język symulatora. Zapisywany od razu po wybraniu. + Symulator nie ma tłumaczenia na ten język i uruchomi się po angielsku. Tryb pełnoekranowy Wstrzymaj symulację, gdy okno nie jest aktywne Pauza po uruchomieniu @@ -345,7 +383,13 @@ Konfiguracja UART Włącz komunikację UART Port szeregowy - Parametr strojenia + Kalibracja + Prędkość (baud) + Wysyłaj co (s) + np. /dev/ttyUSB0 albo COM3 + Bez portu UART zostanie wyłączony. + puste = wartości symulatora + To nie jest {0} liczb: kalibracja nie zostanie zapisana. Wypisuj dane debugowania w konsoli Nastawnik główny Nastawnik manewrowy/pomocniczy @@ -366,29 +410,42 @@ Włącza asystenta AI do sprzęgania, rozprzęgania i prostych manewrów, gdy pojazd stoi. Zapisuj w logu brakujące pliki pojazdów podczas eksportu Zapisuje w logu pojazdy, których starter nie znalazł. - Pokaż zakładkę dla twórców paczek - Dodaje zakładkę ze stanem bazy pojazdów, przydatną przy przygotowywaniu paczek z taborem. Grafika Silnik renderowania - Wybór ścieżki renderowania OpenGL. 'Uproszczony' i 'Stary' to starszy renderer. + Pełny: OpenGL 3.3 z cieniami i odbiciami. Stary i Uproszczony: dla słabych kart. Eksperymentalny: Vulkan, Direct3D 12, w rozwoju. Pełny Stary - Uproszczony (legacy) Uproszczony - Wyłącz warstwę wizualną Eksperymentalny Uwaga: renderer eksperymentalny jest w trakcie rozwoju. Może działać niestabilnie, nie pokazywać części obiektów albo nie uruchomić się na niektórych kartach graficznych. Gdy symulator nie startuje lub wygląda źle, wróć do renderera „Pełny”. + Karta graficzna (Linux) + Wydajniejsza (dedykowana) + Jak system + Wykryto: {0}. Symulator ruszy na: {1}. + Wykryto: {0}. Ekran prowadzi już właściwa karta – starter nic nie zmienia. + Wykryto: {0}. Kartę wybierze system, zwykle zintegrowaną. + Wykryto: {0}. Kartę wybierają zmienne środowiskowe ({1}); starter ich nie zmienia. + Jedna karta: {0} – nie ma między czym wybierać. + Nie udało się odczytać kart graficznych z /sys/class/drm. + Działa tylko w wersji symulatora dla Windows. + Czyta to tylko renderer legacy, a wybrany jest inny. + Działa tylko z docelową liczbą klatek (targetfps). + Renderer eksperymentalny tego nie czyta. + Czyta to tylko renderer pełny, a wybrany jest inny. + Pauza w tle działa tylko z serwerem sieciowym (network.server). Rozdzielczość + {0} (monitor) + Nie działa przy automatycznej rozdzielczości. Rozdzielczość bufora Skaluje wewnętrzny bufor renderowania względem rozdzielczości okna. Maksymalna rozdzielczość tekstur Maksymalna rozdzielczość tekstur kabiny Jakość filtrowania tekstur - Poziom anizotropowego filtrowania tekstur. + Ostrość tekstur oglądanych pod kątem, np. torów. Nawet x16 kosztuje niewiele. Multisampling - Wygładzanie krawędzi obiektów. + Wygładzanie krawędzi. Każdy stopień wyraźnie kosztuje klatki. Bardzo niska Niska Normalna @@ -399,7 +456,6 @@ Standardowa Bardzo niski Niski - Normalny Umiarkowany Standardowy Wysoki @@ -407,12 +463,13 @@ Wyłączone Dynamiczne źródła światła Maksymalna liczba jednoczesnych źródeł światła dynamicznego. - Zasięg renderowania - Maksymalny mnożnik zasięgu rysowania; silnik zmniejsza go automatycznie przy niskim FPS. - Ogranicz liczbę klatek na sekundę + Wydłużanie zasięgu (maks.) + Ile razy symulator może wydłużyć zasięg, gdy klatek jest z zapasem. W pełnym rendererze w kwadracie: ×3 to do ×9. + Bez limitu + Limit klatek na sekundę + Mniej klatek to chłodniejszy i cichszy komputer. Z V-Sync limit powyżej odświeżania nic nie daje. Limit długości cienia Skraca długie cienie rzucane przez nisko stojące słońce. Wyższe wartości ucinają je wcześniej. - Bez ograniczeń Skrócone Automatyczna rozdzielczość (pełny ekran bez obramowania) Użyj renderera ANGLE Vulkan @@ -433,8 +490,13 @@ Trzyma geometrię w buforach karty graficznej. Wyłącz tylko przy problemach ze starszymi kartami. Renderowanie cieni Odświeżanie odbić + Jak często odświeżać odbicia. Rzadziej to więcej klatek. + co {0} min + co {0} s + {0}× na s Rozdzielczość cieni Zasięg cieni + Jak daleko sięgają cienie; im dalej, tym mniej ostre. Po strzałce zasięg rzeczywisty. Zasięg źródeł cieni w kabinie Odległość, z jakiej źródła światła nadal rzucają cień w kabinie. Zero wyłącza cienie w kabinie. @@ -451,7 +513,7 @@ Geometria terenu, modele statyczne i pojazdy Kąt widzenia - Pionowy kąt widzenia kamery w stopniach (15–75). + Pionowy kąt widzenia kamery w stopniach (10–75). Renderowanie ekranów komputerów pokładowych Włącza ekrany kabinowe obsługiwane przez skrypty Python. Renderowanie ekranów w osobnym wątku @@ -493,13 +555,19 @@ Zaawansowane Kompresuj tekstury TGA Skaluj odbicia specularne (kompatybilność ze starymi modelami) + Osłabia połysk modeli robionych pod starsze renderery. Używaj OpenGL ES + OpenGL ES zamiast OpenGL. Nie działa z rendererem legacy. Korekcja gamma w shaderach + Gamma w shaderach zamiast sRGB. Gdy sterownik daje za jasny lub za ciemny obraz. Generuj mipmapy dla tekstur ekranów kabinowych (Python) + Ekrany w kabinie gładsze z daleka i pod kątem, kosztem każdego odświeżenia. Rozszerzona konwersja modeli E3D (eksperymentalne) + Zapisuje modele tekstowe jako binarne E3D: szybsze wczytywanie, więcej plików w folderze gry. Ostrożne zarządzanie pamięcią tekstur Usuwaj nieużywane tekstury z pamięci GPU Wątki fizyki pojazdów (0 = wątek główny) + Wątki fizyki pojazdów; 0 to wątek główny. Więcej pomaga przy wielu składach. Pomijaj składy dekoracyjne przy starcie Starter @@ -523,7 +591,6 @@ Z klawiszem Shift Z klawiszem Ctrl Z Ctrl + Shift - Zarezerwowany przez symulator Klawisz: Przypisz komendę do każdej kombinacji modyfikatorów dla tego klawisza. — brak — @@ -536,6 +603,7 @@ Zapisz Przywróć Zapisano ustawienia + Nie udało się zapisać ustawień Niezapisane zmiany @@ -563,6 +631,10 @@ Brak pliku z listą zmian. O programie Zamknij + Procesor bez AVX2 + Ten procesor nie ma AVX2, a oficjalny symulator go wymaga: nie uruchomi się. Można zbudować symulator bez AVX2 (CMake -DENABLE_AVX2=OFF). Instrukcja: {0} + Otwórz instrukcję + Nie pokazuj więcej Lokalizacja wczytanych ustawień: @@ -580,7 +652,6 @@ Składy w magazynie Dodaj do magazynu Usuń z magazynu - Zastąp składem z magazynu Nie znaleziono składów do zaimportowania. O teksturze Brak informacji o teksturze. @@ -592,11 +663,15 @@ Dobierz sprzęgi automatycznie dla całego składu Sprzęg na końcu składu — nie ma za nim pojazdu. Zmień nazwę... - Dodaj ten ładunek do wszystkich możliwych następnych pojazdów + Ten sam ładunek w następnych pojazdach Dołącz skład z magazynu Dodaj składy z pliku... Uruchom bez zapisu ustawień + Inne sposoby uruchomienia Uruchom bez pojazdu + Edytor scenerii + Utwórz nową scenerię + Kreator nowej scenerii w edytorze symulatora. Edytor mają tylko niektóre wersje. Uruchom edytor scenerii Edytor scenerii (eu07 -edit) mają tylko niektóre wersje symulatora. Jeśli wybrany plik symulatora go nie obsługuje, edytor się nie otworzy. Edytor pracuje na samym pliku {0}, a nie na kopii przygotowanej przez starter, więc zapisane zmiany trafią do scenerii. Uruchomić? Wyświetlaj log w konsoli @@ -626,21 +701,21 @@ — nowa reguła — Usuń z reguły Wszystkie - Rozdzielczość i tekstury - Renderowanie + Obraz + Silnik renderowania Cienie - Odbicia i widok - Skrypty Python - Nazwa portu / nie zmieniać / częstotliwość wysyłania danych - UARTfeature: - Zapisz i zamknij + Efekty + Tekstury i wygładzanie + Zasięg rysowania + Płynność + Odbicia + Ekrany w kabinie + Sterowanie przez UART Najpierw wybierz kategorię lub klasę pojazdów. Ukryj scenariusze archiwalne Narzędzia - Ustawienia zaawansowane Dziennik zdarzeń Wyczyść log - Zestawienie Skróty klawiaturowe @@ -657,18 +732,191 @@ Otwórz menu pojazdu - Baza pojazdów - Katalogi pojazdów - Malowania - wraki - Grupy - Zespoły stałe - Pliki textures.txt - Wczytano z - kopii startera - plików textures.txt - Kopia zapisana - Katalog kopii - Odbuduj kopię - Odbudowano + Zasoby i zgodność + Dziennik i narzędzia + Dziennik zdarzeń i narzędzia + Otwórz dziennik i narzędzia… + domyślnie + Interfejs symulatora + Zasięgi i szczegóły renderowania + Silnik dźwięku + Więcej opcji symulacji + Konsola + Zamień + Zamień pojazd w składzie na ten (dwuklik) + Zamień na wybrany w przeglądarce + Cofnij ostatnią zmianę składu (Ctrl+Z) + Ponów cofniętą zmianę (Ctrl+Y) + Edytujesz w Zestawieniu na dole. Zmiany zapisują się same. + Wybierz skład z magazynu, aby go edytować. + Wybierz skład z listy, aby go edytować. + Magazyn ma już skład „{0}”. Zastąpić go? + Usunąć z magazynu skład „{0}”? + Składy mają niezapisane zmiany. Wczytanie scenerii je porzuci. Kontynuować? + Magazyn: {0} + Zapisz w pliku scenerii + Przywróć z pliku scenerii + Skład trafi na stałe do pliku {0}. Kopia oryginału: {1}. + Nie ma tego składu w pliku {0}: plik się zmienił. Przeładuj scenerie i nanieś zmiany ponownie. + Plik scenerii zmieniony + Plik {0} zmienił się poza starterem. Niezapisane zmiany mają: {1}. Wczytać plik i je porzucić? Bez wczytania nie dadzą się zapisać. + Zmieniony — niezapisany w pliku scenerii (Ctrl+S zapisuje) + Odwrócony + Sceneria odwraca ten skład (reversed). Starter tego nie zmienia. + Błędy składni ({0}) + Symulator może wczytać te miejsca inaczej, niż zamierzył autor. + Błędy składni w plikach scenerii: {0} + … i jeszcze {0} + Komentarz /* nie jest zamknięty – symulator pominie resztę pliku + Skład {0} nie kończy się na endtrainset + Nagłówek składu {0} powtórzony + Niepełny nagłówek składu {0} (trainset nazwa tor odległość prędkość) + endtrainset bez rozpoczętego składu + reversed poza nagłówkiem składu – musi stać przed pierwszym pojazdem + Pojazd {0} bez enddynamic + Niepełny wpis pojazdu {0} + Pojazd {0}: brak liczby ładunku przed enddynamic (choćby 0) + Pojazd {0}: ładunek {1} bez rodzaju + Pojazd {0}: zbędne „{1}” przed enddynamic + Symulator pominie przez to: {0} + Przez to nie powstaną składy: {0} + Skład {0}: spacja w nazwie toru „{1}” + Pojazd {0} stoi poza składem: brak nagłówka trainset? + {0}: „{1}” zamiast liczby + Brak pliku {1} (include) + Plik {1} jest na dysku jako {0}: linuksowy eu07 go nie wczyta + include {1} bez end + Nie udało się odczytać składu {0} + Nie udało się odczytać pojazdu {0} + Wstaw do wybranego składu na scenerii + Dołącz do wybranego składu na scenerii + Cofnij zmianę składu + Ponów zmianę składu + Dodaj do magazynu jako… + Skala interfejsu symulatora + Rozmiar czcionki interfejsu + Nieprzezroczystość tła okien + Pokazuj okna pomocy jazdy i scenariusza po starcie + Otwieraj mapę, kartę szkolenia i listę pojazdów po starcie + Okno napisów (komunikaty radiowe i głosowe) + Pokazuj dziennik podczas wczytywania + Po starcie mysz obraca kamerą + Klikanie przełączników w kabinie myszą + Monitor pełnoekranowy + Folder zrzutów ekranu + Bazowy zasięg rysowania + Docelowa liczba klatek + Zasięg rysowania podkładów + Zasięg odbić obiektów + Zasięg odbić pojazdów + Wczytuj tekstury w tle + Zwalniaj tekstury odległych pojazdów + Rysuj niebo + Rysuj kabinę + Czas naświetlania rozmycia ruchu + Synchronizacja pionowa okien ekranów + Ekrany z kabiny w osobnych oknach + Węże pneumatyczne rysowane według sprzęgnięcia + Wygładzanie przewodów sieci (renderer klasyczny) + Maksymalna liczba źródeł dźwięku + Dekoduj dźwięki w tle + Wczytuj sieć trakcyjną + Przeliczaj przechyłkę torów + Bujanie kamery + Przestawianie zwrotnic z mapy + Podświetlanie drogi na mapie + Okno konsoli z dziennikiem (Windows) + Komunikaty startera i zbiorcze narzędzia zajezdni. + Mniej pamięci karty, dłuższe wczytywanie. + Lepiej wyłączyć, gdy pamięci karty graficznej jest pod dostatkiem. + Na niektórych kartach graficznych może sprawiać problemy. + Pomija składy oznaczone w scenerii jako dekoracja. + Powiększa okna i przyciski interfejsu symulatora. + Wielkość tekstu w oknach symulatora. + 1 – tło pełne; mniejsze wartości prześwitują widok. + Bez zaznaczenia startuje z kursorem w kabinie. + Wyłączenie blokuje tryb kursora – mysz tylko obraca kamerą. + Puste: monitor główny. + Względem folderu gry, bez spacji w ścieżce. + Odległość rysowania scenerii; docelowy FPS może ją zmieniać. + Poniżej tej wartości symulator skraca zasięg rysowania, powyżej wydłuża. + Tekstury DDS czytane w tle: sceneria wczytuje się szybciej. Nie podnosi FPS. + Krotność zasięgu rysowania, poza którą tekstury pojazdów są usuwane z karty graficznej. + Wyłączenie ukrywa model kabiny – do testów. + Dłuższy czas – silniejsze rozmycie. + Przydatne przy kilku monitorach albo pulpicie z własnymi wyświetlaczami. + Ile dźwięków może grać naraz. + Pliki dźwiękowe dekodują osobne wątki – szybsze wczytywanie. + Bez sieci trakcyjnej pantografy się nie łamią, a elektrowozy zawsze mają zasilanie. + Mnożnik kołysania widoku z kabiny we wszystkich osiach; 0 – bez bujania. + Na jaką odległość przed i za pojazdem mapa podświetla tor. + Domyślne + Zmiany w pliku… + Co zmieni zapis w eu07.ini + Zmienione + Dopisane (brak ich w pliku) + Wyłączone komentarzem + Zapis niczego w eu07.ini nie zmieni. + Zmienione klawisze trafią do eu07_input-keyboard.ini. + Jakość grafiki + Minimalna + Niska + Średnia + Wysoka + Własne + Monitor: {0} Hz + Ekran {0}: do {1} Hz + Ustaw {0} FPS + Najedź na zestaw, żeby zobaczyć wartości. + RRRR-MM-DD + Brak tłumaczenia Startera: zostaje angielski. Symulator dostanie ten język. + Brak profili + Wybierz profil + Zapisano profil {0} + Nie udało się zapisać profilu {0} + Zastosowano profil {0} + Nie udało się wczytać profilu {0}. Ustawienia są bez zmian. + Profil {0} już istnieje. Zastąpić go? + Na klawiaturze numerycznej: {0}. Bez niej nie zadziałają, przypisz inne klawisze. + Pokaż te czynności + Modyfikator: łączy się z innymi klawiszami. + Zajęty przez symulator (wskazywanie myszą). + Symulator nie zna tego klawisza. Nie da się go przypisać. + {0}: zajęte przez symulator ({1}). Przypisanie by nie zadziałało. + {0}: symulator używa tego do: {1}. Przypisanie to zastąpi. + Zajęte: {0}. Naciśnij inny + mapa + informacje o składzie + rozkład jazdy + panel scenariusza + okno logu + wyjście z symulatora + panel debugowania + wyjście z kabiny i widoki z zewnątrz + przesiadka do pojazdu + funkcje trybu debug + edytor + zdarzenia scenerii + zapamiętane kamery + Mnożnik zasięgu + Skraca lub wydłuża zasięg rysowania scenerii. Docelowy FPS go nadpisuje. + Bardzo wysoka + Ultra + Wszystko na maksimum. Może być za ciężkie nawet dla mocnej karty. + Limit klatek okien ekranów + Działa tylko z ekranami w osobnych oknach; bez nich nic nie zmienia. + Najdłuższe + sceneriusz {0} + pociąg {0} + Prowadzony wcześniej + Działa, gdy trwa sesja uruchomiona ze Startera. + Log symulatora jest wyłączony: Starter nie widzi przesiadek. + Włącz log + Pojazd ze startu + Sesja + taśm: {0} + trwa + W magazynie: {0} + Wybierz skład z pojazdami + Poziom tylko tej części grafiki diff --git a/StarterNG/startercfg/lang/ru.xml b/StarterNG/startercfg/lang/ru.xml index 04ffca0..d27fc69 100644 --- a/StarterNG/startercfg/lang/ru.xml +++ b/StarterNG/startercfg/lang/ru.xml @@ -7,7 +7,6 @@ Сценарии Депо Настройки - Developer Управление Справка Вики MaSzyna @@ -82,10 +81,47 @@ Автор Фотографии Открыть последний журнал симуляции + Ленты Хаслера + Просмотр лент скоростемера Хаслера + по пути + по времени + Протяжка ленты + Масштаб + В реальном времени + Открыть папку + Нет лент в {0}. + Запись лент выключена. + Включить запись лент + Показывает ленту транспорта, которым вы управляете. + Управляемый + Ваш состав + час неизвестен, время считается от начала симуляции + Не удалось прочитать ленту {0}. + {0} · записано {1} (движение {2}, стоянка {3}) · путь {4:0.00} км · Vmax {5:0} км/ч · средняя в движении {6:0} км/ч · средняя со стоянками {7:0} км/ч + {0} · {1:0.0} км · {2:0} км/ч · цилиндры {3:0.0} бар · ток {4} + Цилиндры + ТМ + Торм. + Ток + Бдит. + электронный + Hasler RT9 + Регистратор + нет + да + {0} · {1:0.000} км · {2:0.0} км/ч · ТМ {3:0.00} бар · цилиндры {4:0.00} бар · ток {5} · бдительность {6} + Старт + Время начала сценария (чч:мм). Для старых лент введите вручную. + Экспорт PNG + Не удалось сохранить {0}. База подвижного состава База подвижного состава + Показано {0} из {1} + Под эти фильтры ничего не подходит. + Выберите единицу из списка. Двойной щелчок заменит единицу, выбранную в составе. + Сбросить фильтры База состава… Поиск... Загрузить состав из сценерии @@ -183,7 +219,7 @@ Q - без воздуха - N - нейтральное положение + N - нейтральное T - порожний H - гружёный I F - гружёный II @@ -221,14 +257,14 @@ На следующие Максимум Груз всего состава - Consist ready to go - The consist starts prepared: brake pipe charged, driver’s brake valve set, batteries closed. Unchecked it starts cold and braked. - Force the consist state on launch - Overrides the depot’s "consist ready to go" box for every scenario you start. - As authored - Always cold - Always ready - Overridden by "Force the consist state on launch" in Settings. + Состав готов к отправлению + Состав стартует подготовленным: тормозная магистраль заряжена, кран машиниста установлен, аккумуляторы включены. Без отметки стартует холодным и заторможенным. + Принудительное состояние состава при запуске + Переопределяет флажок «Состав готов к отправлению» из депо для каждого запускаемого сценария. + Как в сценарии + Всегда холодный + Всегда готов + Переопределено параметром «Принудительное состояние состава при запуске» в настройках. Случайный тип Максимальное количество Случайное количество @@ -259,6 +295,7 @@ Не удалось запустить симулятор Исполняемый файл симулятора не найден. Файл не помечен как исполняемый (chmod +x). + Это не программа: внутри нет ни исполняемого файла, ни скрипта. Этот исполняемый файл собран для другой операционной системы. В Linux версия для Windows может работать через Wine или Proton - если вы их используете, это не ошибка. Симулятор неожиданно завершил работу Код выхода: {0} @@ -303,7 +340,6 @@ Сохранить состав Загрузить состав со склада (склад пуст) - Удалить со склада Название состава Копировать состав в буфер обмена Вставить состав из буфера обмена @@ -318,6 +354,7 @@ Общие Язык + В симуляторе нет перевода на этот язык, он запустится на английском. Полный экран Приостанавливать симуляцию при неактивном окне Пауза при запуске @@ -342,7 +379,13 @@ Настройка UART Включить связь по UART Последовательный порт - Параметр настройки + Калибровка + Скорость (бод) + Отправлять каждые (с) + напр. /dev/ttyUSB0 или COM3 + Без порта UART останется выключенным. + пусто = значения симулятора + Это не {0} чисел: калибровка не сохранится. Выводить отладочные данные в консоль Главный контроллер Вспомогательный/маневровый контроллер @@ -360,24 +403,41 @@ Режим отладки (тестовый режим) Виртуальный манёвр Записывать в журнал отсутствующие файлы состава при экспорте - Show the package author's tab Графика Движок отрисовки Полный + Полный: OpenGL 3.3 с тенями и отражениями. Старый и Упрощённый: для слабых карт. Экспериментальный: Vulkan, Direct3D 12, в разработке. Старый - Упрощённый шейдер Упрощённый - Отключить визуальный слой Экспериментальный Внимание: экспериментальный рендерер находится в разработке. Он может работать нестабильно, не показывать части сцены или не запускаться на некоторых видеокартах. Если симулятор не запускается или выглядит неправильно, вернитесь к рендереру «Полный». + Видеокарта (Linux) + Мощнее (дискретная) + Как решит система + Найдено: {0}. Симулятор запустится на: {1}. + Найдено: {0}. Экраном уже управляет нужная карта – стартер ничего не меняет. + Найдено: {0}. Карту выберет система, обычно встроенную. + Найдено: {0}. Карту выбирают переменные среды ({1}); стартер их не меняет. + Одна карта: {0} – выбирать не из чего. + Не удалось прочитать видеокарты из /sys/class/drm. + Работает только в версии симулятора для Windows. + Это читает только рендерер legacy, а выбран другой. + Работает только с целевой частотой кадров (targetfps). + Экспериментальный рендерер это не читает. + Это читает только полный рендерер, а выбран другой. + Пауза в фоне требует сетевого сервера (network.server). Разрешение + {0} (монитор) + Не работает при автоматическом разрешении. Разрешение буфера Максимальное разрешение текстур Максимальное разрешение текстур кабины Качество фильтрации текстур + Чёткость текстур под углом, например рельсов. Даже x16 стоит немного. Multisampling + Сглаживание краёв. Каждая ступень заметно снижает частоту кадров. Очень низкое Низкое Нормальное @@ -388,17 +448,18 @@ Стандартное Очень низкий Низкий - Нормальный Умеренный Стандартный Высокий Очень высокий Отключено Динамические источники света - Дальность отрисовки - Ограничить частоту кадров + Удлинение дальности (макс.) + Во сколько раз симулятор может удлинить дальность при запасе кадров. В полном рендерере в квадрате: ×3 значит до ×9. + Без ограничения + Ограничение кадров в секунду + Меньше кадров: холоднее и тише компьютер. С V-Sync лимит выше частоты обновления ничего не даёт. Ограничение длины теней - Без ограничений Укороченные Автоматическое разрешение (полный экран без рамки) Использовать рендерер ANGLE Vulkan @@ -414,8 +475,13 @@ Отрисовка VBO Отрисовывать тени Частота обновления отражений + Как часто обновлять отражения. Реже значит больше кадров. + каждые {0} мин + каждые {0} с + {0}× в секунду Разрешение теней Дальность теней + Как далеко видны тени; чем дальше, тем мягче. После стрелки реальная дальность. Дальность источников теней в кабине Показывать тени @@ -426,9 +492,11 @@ Детализация отражений Только геометрия местности Геометрия местности и статические модели - Геометрия местности, статические модели и подвижной состав + Местность, статические модели и подвижной состав Угол обзора + + Вертикальный угол обзора камеры в градусах (10–75). Отрисовывать бортовые экраны Отрисовывать экраны в отдельном потоке @@ -458,13 +526,19 @@ Дополнительно Сжимать текстуры TGA Масштабировать блики (совместимость со старыми моделями) + Ослабляет блеск моделей, сделанных для старых рендереров. Использовать OpenGL ES + OpenGL ES вместо OpenGL. Не работает с рендерером legacy. Гамма-коррекция в шейдерах + Гамма в шейдерах вместо sRGB. Если драйвер даёт слишком светлую или тёмную картинку. Создавать мипмапы для текстур экранов кабины (Python) + Экраны в кабине глаже издалека и под углом ценой работы при каждом обновлении. Расширенное преобразование моделей E3D (экспериментально) + Сохраняет текстовые модели как двоичные E3D: быстрее загрузка, больше файлов в папке игры. Осторожное управление памятью текстур Выгружать неиспользуемые текстуры из памяти GPU Потоки физики состава (0 = главный поток) + Потоки физики транспорта; 0 это основной поток. Больше помогает при многих составах. Пропускать декоративные составы при запуске Starter @@ -488,7 +562,6 @@ С Shift С Ctrl С Ctrl + Shift - Зарезервировано симулятором Клавиша: Назначьте команду каждому сочетанию модификаторов для этой клавиши. — нет — @@ -501,6 +574,7 @@ Сохранить Сбросить Настройки сохранены + Не удалось сохранить настройки Несохранённые изменения @@ -528,6 +602,10 @@ Файл со списком изменений не найден. О программе Закрыть + Процессор без AVX2 + Этот процессор не поддерживает AVX2, а официальному симулятору он нужен: симулятор не запустится. Можно собрать симулятор без AVX2 (CMake -DENABLE_AVX2=OFF). Инструкция: {0} + Открыть инструкцию + Больше не показывать Настройки загружены из: @@ -545,7 +623,6 @@ Составы на складе Добавить на склад Удалить со склада - Заменить составом со склада Составы для импорта не найдены. О текстуре Нет информации о текстуре. @@ -557,11 +634,15 @@ Подобрать сцепки автоматически для всего состава Сцепка в конце состава — за ней нет вагона. Переименовать... - Применить этот груз ко всем следующим подходящим транспортам + Тот же груз для следующих единиц Присоединить состав со склада Добавить составы из файла... Запустить без сохранения настроек + Другие способы запуска Запустить без транспорта + Редактор сценария + Создать новый сценарий + Мастер нового сценария в редакторе симулятора. Редактор есть только в некоторых версиях. Запустить редактор сценария Редактор сценария (eu07 -edit) есть только в некоторых версиях симулятора. Если выбранный симулятор его не поддерживает, редактор не откроется. Он работает с самим файлом {0}, а не с копией стартера, поэтому сохранённые изменения попадут в сценарий. Запустить? Показывать ход симуляции @@ -590,21 +671,21 @@ — новое правило — Удалить из правила Все - Разрешение и текстуры - Рендеринг + Изображение + Рендерер Тени - Отражения и вид - Скрипты Python - Имя порта / не менять / частота отправки данных - UARTfeature: - Сохранить и закрыть + Эффекты + Текстуры и сглаживание + Дальность отрисовки + Плавность + Отражения + Экраны в кабине + Управление через UART Сначала выберите категорию или класс транспорта. Скрыть архивные сценарии Инструменты - Расширенные настройки Журнал событий Очистить журнал - Состав Сочетания клавиш @@ -621,18 +702,167 @@ Открыть меню вагона - Vehicle database - Vehicle folders - Liveries - wrecks - Groups - Fixed sets - textures.txt files - Read from - the starter's copy - textures.txt files - Copy written - Copy folder - Rebuild copy - Rebuilt + Ресурсы и совместимость + Журнал и инструменты + Журнал событий и инструменты + Открыть журнал и инструменты… + по умолчанию + Интерфейс симулятора + Дальности и детали отрисовки + Звуковой движок + Дополнительные параметры симуляции + Консоль + Заменить + Заменить транспорт в составе на этот (двойной щелчок) + Заменить выбранным в каталоге + Отменить последнее изменение состава (Ctrl+Z) + Повторить отменённое изменение (Ctrl+Y) + Редактируйте в составе внизу. Изменения сохраняются сами. + Выберите состав со склада, чтобы редактировать его. + Выберите состав из списка, чтобы изменить его. + На складе уже есть состав «{0}». Заменить его? + Удалить состав «{0}» со склада? + В составах есть несохранённые изменения. Перезагрузка сценариев их отбросит. Продолжить? + Склад: {0} + Сохранить в файл сценерии + Восстановить из файла сценерии + Состав навсегда попадёт в файл {0}. Копия оригинала: {1}. + Этого состава нет в файле {0}: файл изменился. Перезагрузите сценарии и внесите изменения снова. + Файл сценария изменён + Файл {0} изменён вне стартера. Несохранённые изменения: {1}. Прочитать файл и отбросить их? Без этого их нельзя сохранить. + Изменён — не сохранён в файле сценерии (Ctrl+S сохраняет) + Развёрнут + Сценарий разворачивает этот состав (reversed). Стартер это не меняет. + Синтаксические ошибки ({0}) + Симулятор может прочитать эти места не так, как задумал автор. + Синтаксические ошибки в файлах сценерии: {0} + … и ещё {0} + Комментарий /* не закрыт — симулятор пропустит остаток файла + Состав {0} не заканчивается на endtrainset + Заголовок состава {0} повторяется + Неполный заголовок состава {0} (trainset имя путь смещение скорость) + endtrainset без начатого состава + reversed вне заголовка состава — он должен стоять перед первой единицей + Транспорт {0} без enddynamic + Неполная запись единицы {0} + Транспорт {0}: нет количества груза перед enddynamic (хотя бы 0) + Транспорт {0}: груз {1} без типа + Транспорт {0}: лишнее «{1}» перед enddynamic + Из-за этого симулятор пропустит: {0} + Из-за этого не будут созданы составы: {0} + Состав {0}: пробел в названии пути «{1}» + Транспорт {0} стоит вне состава: нет заголовка trainset? + {0}: «{1}» вместо числа + Файл {1} не найден (include) + Файл {1} на диске назван {0}: eu07 на Linux его не загрузит + include {1} без end + Не удалось прочитать состав {0} + Не удалось прочитать единицу {0} + Вставить в выбранный состав сценерии + Добавить к выбранному составу сценерии + Отменить изменение состава + Повторить изменение состава + Добавить на склад как… + Масштаб интерфейса симулятора + Размер шрифта интерфейса + Непрозрачность фона окон + Показывать окна помощи машинисту и сценария при запуске + Открывать карту, учебную карточку и список подвижного состава при запуске + Окно субтитров (радио- и голосовые сообщения) + Показывать журнал во время загрузки + После запуска мышь вращает камеру + Нажатие органов управления в кабине мышью + Монитор для полноэкранного режима + Папка снимков экрана + Базовая дальность прорисовки + Целевая частота кадров + Дальность прорисовки шпал + Дальность отражений объектов + Дальность отражений подвижного состава + Загружать текстуры в фоне + Выгружать текстуры удалённых составов + Отображать небо + Отображать кабину + Выдержка размытия движения + Вертикальная синхронизация окон экранов + Экраны кабины в отдельных окнах + Отображать воздушные рукава по сцепке + Сглаживание контактной сети (классический рендерер) + Максимум источников звука + Декодировать звуки в фоне + Загружать контактную сеть + Пересчитывать возвышение рельса + Раскачивание камеры + Перевод стрелок с карты + Подсветка маршрута на карте + Окно консоли с журналом (Windows) + По умолчанию + Изменения в файле… + Что изменит сохранение в eu07.ini + Изменено + Добавлено (нет в файле) + Закомментировано + Сохранение ничего не изменит в eu07.ini. + Изменённые клавиши будут записаны в eu07_input-keyboard.ini. + Качество графики + Минимальное + Низкое + Среднее + Высокое + Своё + Монитор: {0} Гц + Экран {0}: до {1} Гц + Задать {0} FPS + Наведите на уровень, чтобы увидеть значения. + ГГГГ-ММ-ДД + Нет перевода стартера: останется английский. Симулятор получит этот язык. + Нет профилей + Выберите профиль + Профиль {0} сохранён + Не удалось сохранить профиль {0} + Профиль {0} применён + Не удалось прочитать профиль {0}. Настройки не изменились. + Профиль {0} уже существует. Заменить его? + На цифровой клавиатуре: {0}. Без неё не сработают, назначьте другие клавиши. + Показать их + Модификатор: используется вместе с другими клавишами. + Занято симулятором (указание мышью). + Симулятор не знает эту клавишу. Назначить её нельзя. + {0}: занято симулятором ({1}). Назначение здесь не сработает. + {0}: симулятор использует это для: {1}. Назначение заменит эту функцию. + Занято: {0}. Нажмите другую + карта + сведения о составе + расписание + панель сценария + окно журнала + выход из симулятора + панель отладки + выход из кабины и внешние виды + переход в другое транспортное средство + функции режима отладки + редактор + события сценария + сохранённые камеры + Множитель дальности + Сокращает или удлиняет дальность отрисовки сценария. Целевой FPS её перекрывает. + Очень высокое + Ультра + Всё на максимуме. Может быть слишком тяжело даже для мощной карты. + Ограничение кадров окон экранов + Работает только с экранами в отдельных окнах; без них ничего не меняет. + Самые длинные + сценарий {0} + поезд {0} + Управлялся ранее + Работает, пока идёт сеанс, запущенный из стартера. + Журнал симулятора выключен: стартер не видит пересадок. + Включить журнал + Транспорт на старте + Сеанс + лент: {0} + идёт + На складе: {0} + Выберите состав с транспортом + Уровень только для этой части графики