diff --git a/src/console.cpp b/src/console.cpp index 24a528d8a4..747f2d70ab 100644 --- a/src/console.cpp +++ b/src/console.cpp @@ -435,7 +435,10 @@ void IConsoleCmdExec(const char *cmdstr) * enclosed in "" are taken as one token. We can only go as far as the amount * of characters in our stream or the max amount of tokens we can handle */ for (cmdptr = cmdstr, t_index = 0, tstream_i = 0; *cmdptr != '\0'; cmdptr++) { - if (t_index >= lengthof(tokens) || tstream_i >= lengthof(tokenstream)) break; + if (tstream_i >= lengthof(tokenstream)) { + IConsoleError("command line too long"); + return; + } switch (*cmdptr) { case ' ': // Token separator @@ -453,6 +456,10 @@ void IConsoleCmdExec(const char *cmdstr) case '"': // Tokens enclosed in "" are one token longtoken = !longtoken; if (!foundtoken) { + if (t_index >= lengthof(tokens)) { + IConsoleError("command line too long"); + return; + } tokens[t_index++] = &tokenstream[tstream_i]; foundtoken = true; } @@ -467,6 +474,10 @@ void IConsoleCmdExec(const char *cmdstr) tokenstream[tstream_i++] = *cmdptr; if (!foundtoken) { + if (t_index >= lengthof(tokens)) { + IConsoleError("command line too long"); + return; + } tokens[t_index++] = &tokenstream[tstream_i - 1]; foundtoken = true; } @@ -474,7 +485,7 @@ void IConsoleCmdExec(const char *cmdstr) } } - for (uint i = 0; tokens[i] != NULL; i++) { + for (uint i = 0; i < lengthof(tokens) && tokens[i] != NULL; i++) { DEBUG(console, 8, "Token %d is: '%s'", i, tokens[i]); } diff --git a/src/fileio.cpp b/src/fileio.cpp index 8df7a82dab..a174650ddc 100644 --- a/src/fileio.cpp +++ b/src/fileio.cpp @@ -1032,30 +1032,29 @@ extern void DetermineBasePaths(const char *exe); */ static bool ChangeWorkingDirectoryToExecutable(const char *exe) { + char tmp[MAX_PATH]; + strecpy(tmp, exe, lastof(tmp)); + bool success = false; #ifdef WITH_COCOA - char *app_bundle = strchr(exe, '.'); + char *app_bundle = strchr(tmp, '.'); while (app_bundle != NULL && strncasecmp(app_bundle, ".app", 4) != 0) app_bundle = strchr(&app_bundle[1], '.'); - if (app_bundle != NULL) app_bundle[0] = '\0'; + if (app_bundle != NULL) *app_bundle = '\0'; #endif /* WITH_COCOA */ - char *s = const_cast(strrchr(exe, PATHSEPCHAR)); + char *s = strrchr(tmp, PATHSEPCHAR); if (s != NULL) { *s = '\0'; #if defined(__DJGPP__) /* If we want to go to the root, we can't use cd C:, but we must use '/' */ - if (s[-1] == ':') chdir("/"); + if (s > tmp && *(s - 1) == ':') chdir("/"); #endif - if (chdir(exe) != 0) { + if (chdir(tmp) != 0) { DEBUG(misc, 0, "Directory with the binary does not exist?"); } else { success = true; } - *s = PATHSEPCHAR; } -#ifdef WITH_COCOA - if (app_bundle != NULL) app_bundle[0] = '.'; -#endif /* WITH_COCOA */ return success; } diff --git a/src/lang/greek.txt b/src/lang/greek.txt index 02bf888b01..b4c56454c5 100644 --- a/src/lang/greek.txt +++ b/src/lang/greek.txt @@ -31,7 +31,7 @@ STR_JUST_NOTHING :Τίποτα STR_CARGO_PLURAL_NOTHING : STR_CARGO_PLURAL_PASSENGERS :{G=m}Επιβάτες STR_CARGO_PLURAL_PASSENGERS.geniki :Επιβάτη -STR_CARGO_PLURAL_COAL :{G=m}Άνθρακάς +STR_CARGO_PLURAL_COAL :{G=m}Άνθρακας STR_CARGO_PLURAL_MAIL :{G=f}Αλληλογραφία STR_CARGO_PLURAL_MAIL.geniki :Αλληλογραφίας STR_CARGO_PLURAL_OIL :{G=n}Πετρέλαιo @@ -346,7 +346,7 @@ STR_SORT_BY_TYPE :Τύπος STR_SORT_BY_TRANSPORTED :Μεταφέρθηκαν STR_SORT_BY_NUMBER :Αριθμός STR_SORT_BY_PROFIT_LAST_YEAR :Κέρδος προηγούμενου χρόνου -STR_SORT_BY_PROFIT_THIS_YEAR :Κέρδος αυτού του χρόνου +STR_SORT_BY_PROFIT_THIS_YEAR :Κέρδος τρέχοντος έτους STR_SORT_BY_AGE :Ηλικία STR_SORT_BY_RELIABILITY :Αξιοπιστία STR_SORT_BY_TOTAL_CAPACITY_PER_CARGOTYPE :Συνολική χωρητικότητα ανά τύπο φορτίου @@ -1479,6 +1479,7 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Απενεργ STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Μετάβαση με αριστερό κλικ: {STRING} STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Ενεργοποίηση της κύλισης του χάρτη σύροντας τον με το αριστερό κουμπί του ποντικιού. Αυτό είναι ιδιαίτερα χρήσιμο για την κύλιση όταν χρησιμοποιείται οθόνη αφής +STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_HELPTEXT :Κλείνει το παράθυρο με δεξί πάτημα μέσα του. Απενεργοποιεί την ανάδυση επεξηγήσεων με το δεξί κουμπί! STR_CONFIG_SETTING_AUTOSAVE :Αυτόματο σώσιμο: {STRING} STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Επιλέξτε το διάστημα ανάμεσα σε δυο διαδοχικά σωσίματα του παιχνιδιου @@ -3472,6 +3473,10 @@ STR_GROUP_REMOVE_ALL_VEHICLES :Αφαίρεσ STR_GROUP_RENAME_CAPTION :{BLACK}Μετονομασία μίας ομάδας +STR_GROUP_PROFIT_THIS_YEAR :Κέρδος τρέχοντος έτους: +STR_GROUP_PROFIT_LAST_YEAR :Κέρδος προηγούμενου έτους +STR_GROUP_OCCUPANCY :Τρέσουσα χρήση: +STR_GROUP_OCCUPANCY_VALUE :{NUM}% # Build vehicle window STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Νέα Οχήματα Σιδηρόδρομου diff --git a/src/lang/polish.txt b/src/lang/polish.txt index 24e64f130f..a9e138108f 100644 --- a/src/lang/polish.txt +++ b/src/lang/polish.txt @@ -705,7 +705,7 @@ STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Wyświet STR_TOOLBAR_TOOLTIP_DISPLAY_STORY_BOOK :{BLACK}Pokaż okno opowieści STR_TOOLBAR_TOOLTIP_DISPLAY_GOALS_LIST :{BLACK}Pokaż listę celów STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Wyświetl wykresy -STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Wyświetl tabele firm +STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Wyświetl ranking firm STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Ufunduj budowę nowego przedsiębiorstwa STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}Wyświetl listę pociągów firmy. Ctrl+klik otwiera listę grup/pojazdów STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}Wyświetl listę pojazdów firmy. Ctrl+klik otwiera listę grup/pojazdów @@ -799,7 +799,7 @@ STR_GRAPH_MENU_CARGO_PAYMENT_RATES :Stawki za ładu ############ range ends here ############ range for company league menu starts -STR_GRAPH_MENU_COMPANY_LEAGUE_TABLE :Wykres Ligi Firm +STR_GRAPH_MENU_COMPANY_LEAGUE_TABLE :Ranking Firm STR_GRAPH_MENU_DETAILED_PERFORMANCE_RATING :Szczegółowa tabela efektywności STR_GRAPH_MENU_HIGHSCORE :Tabela wyników ############ range ends here @@ -971,7 +971,7 @@ STR_GRAPH_KEY_CAPTION :{WHITE}Legenda STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP :{BLACK}Kliknij tutaj aby wł./wył. wyświetlanie danych firmy na wykresie # Company league window -STR_COMPANY_LEAGUE_TABLE_CAPTION :{WHITE}Tabela Ligi Firm +STR_COMPANY_LEAGUE_TABLE_CAPTION :{WHITE}Ranking Firm STR_COMPANY_LEAGUE_COMPANY_NAME :{ORANGE}{COMPANY} {BLACK}{COMPANY_NUM} '{STRING}' STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ENGINEER :Inżynier STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRAFFIC_MANAGER :Administrator Ruchu @@ -1062,7 +1062,7 @@ STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}Kliknij # Highscore window STR_HIGHSCORE_TOP_COMPANIES_WHO_REACHED :{BIG_FONT}{BLACK}Ranking firm, które osiągnęły rok {NUM} -STR_HIGHSCORE_TOP_COMPANIES_NETWORK_GAME :{BIG_FONT}{BLACK}Tabela Ligi Firm w {NUM} +STR_HIGHSCORE_TOP_COMPANIES_NETWORK_GAME :{BIG_FONT}{BLACK}Ranking Firm w {NUM} STR_HIGHSCORE_POSITION :{BIG_FONT}{BLACK}{COMMA}. STR_HIGHSCORE_PERFORMANCE_TITLE_BUSINESSMAN :Biznesmen STR_HIGHSCORE_PERFORMANCE_TITLE_ENTREPRENEUR :Przedsiębiorca @@ -1752,6 +1752,8 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Wyłączona STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Przewijanie lewym przyciskiem myszy: {STRING} STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Włącz przewijanie mapy przeciąganiem lewym przyciskiem myszki. Jest to przydatne podczas używania ekranu dotykowego do przewijania +STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE :Zamknij okno prawym przyciskiem: {STRING} +STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_HELPTEXT :Zamyka okno poprzez kliknięcie prawym przyciskiem. Wyłącza pomoc kontekstową! STR_CONFIG_SETTING_AUTOSAVE :Autozapis: {STRING} STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Częstotliwość automatycznego zapisu stanu gry @@ -3677,6 +3679,8 @@ STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Wymaga: STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Potrzebuje STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING} STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{CARGO_LONG} {BLACK}oczekuje +STR_INDUSTRY_VIEW_ACCEPT_CARGO_TEXT :{YELLOW}{STRING}{STRING} +STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT_TEXT :{YELLOW}{CARGO_LONG}{STRING} ############ range for produces starts STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Produkuje: {YELLOW}{STRING}{STRING} @@ -3745,6 +3749,10 @@ STR_GROUP_REMOVE_ALL_VEHICLES :Usuń wszystkie STR_GROUP_RENAME_CAPTION :{BLACK}Zmień nazwę grupy +STR_GROUP_PROFIT_THIS_YEAR :Zysk w tym roku: +STR_GROUP_PROFIT_LAST_YEAR :Zysk w zeszłym roku: +STR_GROUP_OCCUPANCY :Aktualne wykorzystanie: +STR_GROUP_OCCUPANCY_VALUE :{NUM}% # Build vehicle window STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Nowe pociągi @@ -3777,6 +3785,7 @@ STR_PURCHASE_INFO_ALL_TYPES :wszystkie typy STR_PURCHASE_INFO_ALL_BUT :wszystko oprócz {CARGO_LIST} STR_PURCHASE_INFO_MAX_TE :{BLACK}Maks. siła pociągowa: {GOLD}{FORCE} STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Zasięg: {GOLD}{COMMA} pól +STR_PURCHASE_INFO_AIRCRAFT_TYPE :{BLACK}Typ samolotu: {GOLD}{STRING} STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Lista wyboru pociągów - kliknij na pojeździe, aby uzyskać informacje. Ctrl+klik przełącza ukrywanie typu pojazdu STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Lista wyboru pojazdów drogowych - kliknij na pojeździe, aby uzyskać więcej informacji. Ctrl+klik przełącza ukrywanie typu pojazdu @@ -3917,6 +3926,10 @@ STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE.b :lokomotywę Mag STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Koszt: {CURRENCY_LONG} Masa: {WEIGHT_SHORT}{}Prędkość: {VELOCITY} Moc: {POWER}{}Koszt utrzymania: {CURRENCY_LONG}/rok{}Ładowność: {CARGO_LONG} STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Koszt: {CURRENCY_LONG} Masa: {WEIGHT_SHORT}{}Prędkość: {VELOCITY} Moc: {POWER} Maksymalna siła pociągowa: {6:FORCE}{}Koszt utrzymania: {4:CURRENCY_LONG}/rok{}Ładowność: {5:CARGO_LONG} STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAP_RUNCOST :{BLACK}Koszt: {CURRENCY_LONG} Prędkość maksymalna: {VELOCITY}{}Ładowność: {CARGO_LONG}{}Koszt utrzymania: {CURRENCY_LONG}/rok +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_CAP_CAP_RUNCOST :{BLACK}Koszt: {CURRENCY_LONG} Max. prędkość: {VELOCITY}{}Typ samolotu: {STRING}{}Ładowność: {CARGO_LONG}, {CARGO_LONG}{}Koszt utrzymania: {CURRENCY_LONG}/rok +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_CAP_RUNCOST :{BLACK}Koszt: {CURRENCY_LONG} Max. prędkość: {VELOCITY}{}Typ samolotu: {STRING}{}Ładowność: {CARGO_LONG}{}Koszt utrzymania: {CURRENCY_LONG}/rok +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_RANGE_CAP_CAP_RUNCOST :{BLACK}Koszt: {CURRENCY_LONG} Max. prędkość: {VELOCITY}{}Typ samolotu: {STRING} Zasięg: {COMMA}{}Ładowność: {CARGO_LONG}, {CARGO_LONG}{}Koszt utrzymania: {CURRENCY_LONG}/rok +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_RANGE_CAP_RUNCOST :{BLACK}Koszt: {CURRENCY_LONG} Max. prędkość: {VELOCITY}{}Typ samolotu: {STRING} Zasięg: {COMMA}{}Ładowność: {CARGO_LONG}{}Koszt utrzymania: {CURRENCY_LONG}/rok # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}Zastąp {STRING} - {STRING} @@ -4039,6 +4052,8 @@ STR_VEHICLE_INFO_AGE :{COMMA} {P rok STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} {P rok lata lat} ({COMMA}) STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Prędkość maksymalna: {LTBLUE}{VELOCITY} +STR_VEHICLE_INFO_MAX_SPEED_TYPE :{BLACK}Max. prędkość: {LTBLUE}{VELOCITY} {BLACK}Typ samolotu: {LTBLUE}{STRING} +STR_VEHICLE_INFO_MAX_SPEED_TYPE_RANGE :{BLACK}Max. prędkość: {LTBLUE}{VELOCITY} {BLACK}Typ samolotu: {LTBLUE}{STRING} {BLACK}Zasięg: {LTBLUE}{COMMA} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Masa: {LTBLUE}{WEIGHT_SHORT} {BLACK}Moc: {LTBLUE}{POWER}{BLACK} Prędkość maksymalna: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Masa: {LTBLUE}{WEIGHT_SHORT} {BLACK}Moc: {LTBLUE}{POWER}{BLACK} Prędkość maksymalna: {LTBLUE}{VELOCITY} {BLACK}Maksymalna siła pociągowa: {LTBLUE}{FORCE} diff --git a/src/lang/turkish.txt b/src/lang/turkish.txt index 5b769bb6ed..b312325335 100644 --- a/src/lang/turkish.txt +++ b/src/lang/turkish.txt @@ -286,7 +286,7 @@ STR_SORT_BY_TYPE :Tür STR_SORT_BY_TRANSPORTED :Taşınan STR_SORT_BY_NUMBER :Numara STR_SORT_BY_PROFIT_LAST_YEAR :Geçen seneki kar -STR_SORT_BY_PROFIT_THIS_YEAR :Bu seneki kar +STR_SORT_BY_PROFIT_THIS_YEAR :Bu yılki kar STR_SORT_BY_AGE :Yaş STR_SORT_BY_RELIABILITY :Güvenilirlik STR_SORT_BY_TOTAL_CAPACITY_PER_CARGOTYPE :Her kargo için toplam kapasite @@ -1373,6 +1373,8 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Kapalı STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Sol tık ile ekran kaydır: {STRING} STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Sol fare tuşuyla sürükleyerek harita kaydırma özelliğini etkinleştir. Özellikle dokunmatik-ekran kullanırken kaydırma yapmak için kullanılabilir. +STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE :Sağ tıklama ile pencereyi kapat: {STRING} +STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_HELPTEXT :İçerisinde sağ tıklandığında pencereyi kapatır. Sağ tıklandığında ipuçları gösterimini devre dışı bırakır! STR_CONFIG_SETTING_AUTOSAVE :Otomatik kaydet: {STRING} STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Otomatik oyun kaydetme sıklığını seçin @@ -1762,6 +1764,7 @@ STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}İndiril STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}YZ ve Oyun betik ayarlarını göster STR_INTRO_TOOLTIP_QUIT :{BLACK}'OpenTTD' den çık +STR_INTRO_BASESET :{BLACK}Geçerli seçimdeki temel grafik setinin {NUM} örneği eksik. Lütfen temel setin güncellemelerini kontrol edin. STR_INTRO_TRANSLATION :{BLACK}Bu çeviride {NUM} eksik metin var. Çevirmen olarak kaydolarak OpenTTD'nin iyileştirilmesine yardım edin. Ayrıntılar için readme.txt'ye bakın. # Quit window @@ -2495,7 +2498,7 @@ STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Haritaya # Land generation window (SE) STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}Arazi Yapımı -STR_TERRAFORM_TOOLTIP_PLACE_ROCKY_AREAS_ON_LANDSCAPE :{BLACK}Haritaya kayalik koy +STR_TERRAFORM_TOOLTIP_PLACE_ROCKY_AREAS_ON_LANDSCAPE :{BLACK}Haritaya kayalık koy STR_TERRAFORM_TOOLTIP_DEFINE_DESERT_AREA :{BLACK}Çöl alanı tanımla.{}Kaldırmak için CTRL'yi basılı tut STR_TERRAFORM_TOOLTIP_INCREASE_SIZE_OF_LAND_AREA :{BLACK}yükseltme/alçaltma alanını arttır STR_TERRAFORM_TOOLTIP_DECREASE_SIZE_OF_LAND_AREA :{BLACK}Yükseltme/alçaltma alanını arttır @@ -2780,7 +2783,7 @@ STR_GENERATION_WORLD_GENERATION :{BLACK}Harita STR_GENERATION_RIVER_GENERATION :{BLACK}Nehir oluşturma STR_GENERATION_TREE_GENERATION :{BLACK}Ağaç üretimi STR_GENERATION_OBJECT_GENERATION :{BLACK}Nesne oluşturma -STR_GENERATION_CLEARING_TILES :{BLACK}Engebeli ve kayalik alan oluştur +STR_GENERATION_CLEARING_TILES :{BLACK}Engebeli ve kayalık alan oluştur STR_GENERATION_SETTINGUP_GAME :{BLACK}Oyun ayarlanıyor STR_GENERATION_PREPARING_TILELOOP :{BLACK}tile-loop çalıştırılıyor STR_GENERATION_PREPARING_SCRIPT :{BLACK}Betik çalıştırılıyor @@ -3169,7 +3172,7 @@ STR_STATION_VIEW_CLOSE_AIRPORT_TOOLTIP :{BLACK}Uçağı # Waypoint/buoy view window STR_WAYPOINT_VIEW_CAPTION :{WHITE}{WAYPOINT} -STR_WAYPOINT_VIEW_CENTER_TOOLTIP :{BLACK}Ana görünümü güzegaha ortala. Ctrl ile tıklama güzegahın konumunu gösteren yeni bir pencere açar +STR_WAYPOINT_VIEW_CENTER_TOOLTIP :{BLACK}Ana görünümü güzergaha ortala. Ctrl ile tıklama güzegahın konumunu gösteren yeni bir pencere açar STR_WAYPOINT_VIEW_CHANGE_WAYPOINT_NAME :{BLACK}Ara nokta adını değiştir STR_BUOY_VIEW_CENTER_TOOLTIP :{BLACK}Ana görünümü şamandıra konumuna ortala. Ctrl ile tıklama şamandıranın konumunu gösteren yeni bir pencere açar STR_BUOY_VIEW_CHANGE_BUOY_NAME :{BLACK}Şamandıra adını değiştir @@ -3294,6 +3297,11 @@ STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}İstenen STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}İstenenler: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING} ############ range for requires ends +STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Gereken +STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING} +STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{CARGO_LONG} {BLACK}bekliyor +STR_INDUSTRY_VIEW_ACCEPT_CARGO_TEXT :{YELLOW}{STRING}{STRING} +STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT_TEXT :{YELLOW}{CARGO_LONG}{STRING} ############ range for produces starts STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Üretir: {YELLOW}{STRING}{STRING} @@ -3362,6 +3370,10 @@ STR_GROUP_REMOVE_ALL_VEHICLES :Bütün araçla STR_GROUP_RENAME_CAPTION :{BLACK}Grubun ismini değiştir +STR_GROUP_PROFIT_THIS_YEAR :Bu yılki kar: +STR_GROUP_PROFIT_LAST_YEAR :Geçen yılki kar: +STR_GROUP_OCCUPANCY :Şu anki kullanım: +STR_GROUP_OCCUPANCY_VALUE :%{NUM} # Build vehicle window STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Yeni Tren @@ -3394,6 +3406,7 @@ STR_PURCHASE_INFO_ALL_TYPES :Tüm kargo tür STR_PURCHASE_INFO_ALL_BUT :Şunlar hariç tümü: {CARGO_LIST} STR_PURCHASE_INFO_MAX_TE :{BLACK}Aza. Çekim Gücü: {GOLD}{FORCE} STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Menzil: {GOLD}{COMMA} kare +STR_PURCHASE_INFO_AIRCRAFT_TYPE :{BLACK}Uçak türü: {GOLD}{STRING} STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Tren seçim listesi. Bilgi için araç tıklayın. Ctrl+Tıklama araç türünün gizlenmesini açar/kapatır STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Karayolu araçları seçim listesi. Bilgi için araca tıklayın. Ctrl+Tıklama araç türünün gizlenmesini açar/kapatır @@ -3494,7 +3507,7 @@ STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}Geminin STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Uçağın bir kopyasını oluşturur. Önce bu düğmeye sonra da hangarın içindeki veya dışındaki bir uçaga tıklayın. Ctrl-tıklama talimatları paylaştırır. Shift ile tıklama satın almadan tahmini maliyeti gösterir STR_DEPOT_TRAIN_LOCATION_TOOLTIP :{BLACK}Tren garını göster. Ctrl ile tıklama garın konumunu gösteren yeni bir pencere açar -STR_DEPOT_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Kara taşıtı garajını göster. Ctrl+Tıklama garajın konumunu gösteren yeni bir pencere açar +STR_DEPOT_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Kara taşıtı garajını göster. Ctrl ile tıklama garajın konumunu gösteren yeni bir pencere açar STR_DEPOT_SHIP_LOCATION_TOOLTIP :{BLACK}Tersaneyi göster. Ctrl ile tıklama tershanenin konumunu gösteren yeni bir pencere açar STR_DEPOT_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Hangarı göster. Ctrl ile tıklama hangarın konumunu gösteren yeni bir pencere açar @@ -3525,9 +3538,13 @@ STR_ENGINE_PREVIEW_SHIP :gemi STR_ENGINE_PREVIEW_MONORAIL_LOCOMOTIVE :monoray lokomotifi STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :maglev lokomotifi -STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Fiyat: {CURRENCY_LONG} Ağırlık: {WEIGHT_SHORT}{}Hız: {VELOCITY} Güç: {POWER}{}Bakım: {CURRENCY_LONG}/sene{}Kapasite: {CARGO_LONG} -STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Maliyet: {CURRENCY_LONG} Ağırlık: {WEIGHT_SHORT}{}Hız: {VELOCITY} Güç: {POWER} Azami Tork: {6:FORCE}{}Çalışma Gideri: {4:CURRENCY_LONG}/yıl{}Kapasite: {5:CARGO_LONG} +STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Fiyat: {CURRENCY_LONG} Ağırlık: {WEIGHT_SHORT}{}Hız: {VELOCITY} Güç: {POWER}{}İşletme Gideri: {CURRENCY_LONG}/yıl{}Kapasite: {CARGO_LONG} +STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Maliyet: {CURRENCY_LONG} Ağırlık: {WEIGHT_SHORT}{}Hız: {VELOCITY} Güç: {POWER} Azami Tork: {6:FORCE}{}İşletme Gideri: {4:CURRENCY_LONG}/yıl{}Kapasite: {5:CARGO_LONG} STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAP_RUNCOST :{BLACK}Maliyet: {CURRENCY_LONG} Azami Hız: {VELOCITY}{}Kapasite: {CARGO_LONG}{}İşletme Gideri: {CURRENCY_LONG}/yıl +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_CAP_CAP_RUNCOST :{BLACK}Maliyet: {CURRENCY_LONG} Azami Hız: {VELOCITY}{}Uçak türü: {STRING}{}Kapasite: {CARGO_LONG}, {CARGO_LONG}{}İşletme Gideri: {CURRENCY_LONG}/yıl +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_CAP_RUNCOST :{BLACK}Maliyet: {CURRENCY_LONG} Azami Hız: {VELOCITY}{}Uçak türü: {STRING}{}Kapasite: {CARGO_LONG}{}İşletme Gideri: {CURRENCY_LONG}//yıl +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_RANGE_CAP_CAP_RUNCOST :{BLACK}Maliyet: {CURRENCY_LONG} Azami Hız: {VELOCITY}{}Uçak türü: {STRING} Menzil: {COMMA} kare{}Kapasite: {CARGO_LONG}, {CARGO_LONG}{}İşletme Gideri: {CURRENCY_LONG}/yıl +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_RANGE_CAP_RUNCOST :{BLACK}Maliyet: {CURRENCY_LONG} Azami Hız: {VELOCITY}{}Uçak türü: {STRING} Menzil: {COMMA} kare{}Kapasite: {CARGO_LONG}{}İşletme Gideri: {CURRENCY_LONG}/yıl # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}Değiştir {STRING} - {STRING} @@ -3650,6 +3667,8 @@ STR_VEHICLE_INFO_AGE :{COMMA} sene ({ STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} sene ({COMMA}) STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Azami Hız: {LTBLUE}{VELOCITY} +STR_VEHICLE_INFO_MAX_SPEED_TYPE :{BLACK}Azami hız: {LTBLUE}{VELOCITY} {BLACK}Uçak türü: {LTBLUE}{STRING} +STR_VEHICLE_INFO_MAX_SPEED_TYPE_RANGE :{BLACK}Azami hız: {LTBLUE}{VELOCITY} {BLACK}Uçak türü: {LTBLUE}{STRING} {BLACK}Menzil: {LTBLUE}{COMMA} kare STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Ağırlık: {LTBLUE}{WEIGHT_SHORT} {BLACK}Güç: {LTBLUE}{POWER}{BLACK} Azami Hız: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Ağırlık: {LTBLUE}{WEIGHT_SHORT} {BLACK}Güç: {LTBLUE}{POWER}{BLACK} Azami Hız: {LTBLUE}{VELOCITY} {BLACK}Azami Tork: {LTBLUE}{FORCE} @@ -4240,7 +4259,7 @@ STR_ERROR_WAYPOINT_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Birden f STR_ERROR_TOO_CLOSE_TO_ANOTHER_WAYPOINT :{WHITE}Diğer yerimine çok yakın STR_ERROR_CAN_T_BUILD_TRAIN_WAYPOINT :{WHITE}Buraya tren yerimi yapılamaz... -STR_ERROR_CAN_T_POSITION_BUOY_HERE :{WHITE}Şamandıra yerlestirilemez... +STR_ERROR_CAN_T_POSITION_BUOY_HERE :{WHITE}Buraya şamandıra yerleştirilemez... STR_ERROR_CAN_T_CHANGE_WAYPOINT_NAME :{WHITE}Yerimi adı değiştirilemedi... STR_ERROR_CAN_T_REMOVE_TRAIN_WAYPOINT :{WHITE}Tren yerimi kaldırılamaz... @@ -4452,7 +4471,7 @@ STR_ERROR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}Araç bu # Sign related errors STR_ERROR_TOO_MANY_SIGNS :{WHITE}... çok fazla tabela var -STR_ERROR_CAN_T_PLACE_SIGN_HERE :{WHITE}Buraya tabela konulamiyor... +STR_ERROR_CAN_T_PLACE_SIGN_HERE :{WHITE}Buraya tabela konulamıyor... STR_ERROR_CAN_T_CHANGE_SIGN_NAME :{WHITE}Tabela adı değiştirilemiyor... STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}Tabelayı silemezsiniz... diff --git a/src/lang/vietnamese.txt b/src/lang/vietnamese.txt index b94b6bc16c..779e549db2 100644 --- a/src/lang/vietnamese.txt +++ b/src/lang/vietnamese.txt @@ -1372,6 +1372,7 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Tắt STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Cuộn chuột trái: {STRING} STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Cho phép cuộn bản đồ bằng cách kéo với nút trái chuột. Tùy chọn này sẽ hữu ích khi dùng màn hình cảm ứng +STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE :Đóng cửa số khi click chuột phải: {STRING} STR_CONFIG_SETTING_AUTOSAVE :Tự động save: {STRING} STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Chọn chu kỳ giữa mỗi lần tự động save @@ -2587,6 +2588,7 @@ STR_LAND_AREA_INFORMATION_AIRPORTTILE_NAME :{BLACK}Tên sâ STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Hàng hoá chấp nhận: {LTBLUE} STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) +STR_LANG_AREA_INFORMATION_RAIL_TYPE :{BLACK}Kiểu đường ray: {LTBLUE}{STRING} STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Giới hạn tốc độ đường ray: {LTBLUE}{VELOCITY} STR_LANG_AREA_INFORMATION_ROAD_SPEED_LIMIT :{BLACK}Hạn chế tốc độ đường bộ: {LTBLUE}{VELOCITY} @@ -3292,6 +3294,8 @@ STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Yêu c STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Yêu cầu: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING} ############ range for requires ends +STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING} +STR_INDUSTRY_VIEW_ACCEPT_CARGO_TEXT :{YELLOW}{STRING}{STRING} ############ range for produces starts STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Sản xuất: {YELLOW}{STRING}{STRING} @@ -3360,6 +3364,7 @@ STR_GROUP_REMOVE_ALL_VEHICLES :Xoá tất cả STR_GROUP_RENAME_CAPTION :{BLACK}Đổi tên nhóm +STR_GROUP_PROFIT_LAST_YEAR :Lợi nhuận năm trước: # Build vehicle window STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Tàu Hỏa Mới @@ -3392,6 +3397,7 @@ STR_PURCHASE_INFO_ALL_TYPES :Tất cả ki STR_PURCHASE_INFO_ALL_BUT :Tất cả trừ {CARGO_LIST} STR_PURCHASE_INFO_MAX_TE :{BLACK}Lực kéo tối đa: {GOLD}{FORCE} STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Tầm xa: {GOLD}{COMMA} ô +STR_PURCHASE_INFO_AIRCRAFT_TYPE :{BLACK}Kiểu máy bay: {GOLD}{STRING} STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Danh sách tàu hỏa có thể chọn. Click vào tàu hỏa để xem thông tin. Ctrl+Click để ẩn/hiện loại được chọn STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Danh sách xe có thể chọn. Click vào xe để xem thông tin. Ctrl+Click để ẩn/hiện loại được chọn @@ -3526,6 +3532,7 @@ STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :đầu máy đ STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Giá thành: {CURRENCY_LONG} Tải trọng: {WEIGHT_SHORT}{}Tốc độ: {VELOCITY} Công suất: {POWER}{}Chi phí hoạt động: {CURRENCY_LONG}/năm{}Sức chứa: {CARGO_LONG} STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Giá: {CURRENCY_LONG} Nặng: {WEIGHT_SHORT}{}Tốc độ: {VELOCITY} Công suất: {POWER} Max. T.E.: {6:FORCE}{}Giá vận hành: {4:CURRENCY_LONG}/yr{}Năng suất: {5:CARGO_LONG} STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAP_RUNCOST :{BLACK}Giá thành: {CURRENCY_LONG} Tốc độ tối đa: {VELOCITY}{}Sức chứa: {CARGO_LONG}{}Chi phí hoạt động: {CURRENCY_LONG}/năm +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_RANGE_CAP_RUNCOST :{BLACK}Giá: {CURRENCY_LONG} Tốc độ tối đa: {VELOCITY}{}Kiểu máy bay: {STRING} Tầm xa: {COMMA} ô{}Sức chứa: {CARGO_LONG}{}Chi phí hoạt động: {CURRENCY_LONG}/năm # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}Thay thế {STRING} - {STRING} diff --git a/src/pathfinder/yapf/yapf_costrail.hpp b/src/pathfinder/yapf/yapf_costrail.hpp index cb855917f9..118d488d9d 100644 --- a/src/pathfinder/yapf/yapf_costrail.hpp +++ b/src/pathfinder/yapf/yapf_costrail.hpp @@ -624,7 +624,7 @@ no_entry_cost: // jump here at the beginning if the node has no parent (it is th /* Finish if we already exceeded the maximum path cost (i.e. when * searching for the nearest depot). */ if (m_max_cost > 0 && (parent_cost + segment_entry_cost + segment_cost) > m_max_cost) { - end_segment_reason |= ESRB_MAX_COST_EXCEEDED; + end_segment_reason |= ESRB_PATH_TOO_LONG; } /* Move to the next tile/trackdir. */ @@ -701,7 +701,7 @@ no_entry_cost: // jump here at the beginning if the node has no parent (it is th } // for (;;) /* Don't consider path any further it if exceeded max_cost. */ - if (end_segment_reason & ESRB_MAX_COST_EXCEEDED) return false; + if (end_segment_reason & ESRB_PATH_TOO_LONG) return false; bool target_seen = false; if ((end_segment_reason & ESRB_POSSIBLE_TARGET) != ESRB_NONE) { diff --git a/src/pathfinder/yapf/yapf_type.hpp b/src/pathfinder/yapf/yapf_type.hpp index b0d99d6602..8d24eee5e2 100644 --- a/src/pathfinder/yapf/yapf_type.hpp +++ b/src/pathfinder/yapf/yapf_type.hpp @@ -19,7 +19,6 @@ enum EndSegmentReason { ESR_RAIL_TYPE, ///< the next tile has a different rail type than our tiles ESR_INFINITE_LOOP, ///< infinite loop detected ESR_SEGMENT_TOO_LONG, ///< the segment is too long (possible infinite loop) - ESR_MAX_COST_EXCEEDED, ///< maximum cost is exceeded ESR_CHOICE_FOLLOWS, ///< the next tile contains a choice (the track splits to more than one segments) ESR_DEPOT, ///< stop in the depot (could be a target next time) ESR_WAYPOINT, ///< waypoint encountered (could be a target next time) @@ -44,7 +43,6 @@ enum EndSegmentReasonBits { ESRB_RAIL_TYPE = 1 << ESR_RAIL_TYPE, ESRB_INFINITE_LOOP = 1 << ESR_INFINITE_LOOP, ESRB_SEGMENT_TOO_LONG = 1 << ESR_SEGMENT_TOO_LONG, - ESRB_MAX_COST_EXCEEDED = 1 << ESR_MAX_COST_EXCEEDED, ESRB_CHOICE_FOLLOWS = 1 << ESR_CHOICE_FOLLOWS, ESRB_DEPOT = 1 << ESR_DEPOT, ESRB_WAYPOINT = 1 << ESR_WAYPOINT, @@ -65,7 +63,7 @@ enum EndSegmentReasonBits { ESRB_CACHED_MASK = ESRB_DEAD_END | ESRB_RAIL_TYPE | ESRB_INFINITE_LOOP | ESRB_SEGMENT_TOO_LONG | ESRB_CHOICE_FOLLOWS | ESRB_DEPOT | ESRB_WAYPOINT | ESRB_STATION | ESRB_SAFE_TILE, /* Reasons to abort pathfinding in this direction. */ - ESRB_ABORT_PF_MASK = ESRB_DEAD_END | ESRB_PATH_TOO_LONG | ESRB_MAX_COST_EXCEEDED | ESRB_INFINITE_LOOP | ESRB_FIRST_TWO_WAY_RED, + ESRB_ABORT_PF_MASK = ESRB_DEAD_END | ESRB_PATH_TOO_LONG | ESRB_INFINITE_LOOP | ESRB_FIRST_TWO_WAY_RED, }; DECLARE_ENUM_AS_BIT_SET(EndSegmentReasonBits) @@ -73,7 +71,7 @@ DECLARE_ENUM_AS_BIT_SET(EndSegmentReasonBits) inline CStrA ValueStr(EndSegmentReasonBits bits) { static const char * const end_segment_reason_names[] = { - "DEAD_END", "RAIL_TYPE", "INFINITE_LOOP", "SEGMENT_TOO_LONG", "MAX_COST_EXCEEDED", "CHOICE_FOLLOWS", + "DEAD_END", "RAIL_TYPE", "INFINITE_LOOP", "SEGMENT_TOO_LONG", "CHOICE_FOLLOWS", "DEPOT", "WAYPOINT", "STATION", "SAFE_TILE", "PATH_TOO_LONG", "FIRST_TWO_WAY_RED", "LOOK_AHEAD_END", "TARGET_REACHED" };