diff --git a/bin/baseset/no_music.obm b/bin/baseset/no_music.obm index f782d23ea0..07dcedf50b 100644 --- a/bin/baseset/no_music.obm +++ b/bin/baseset/no_music.obm @@ -12,7 +12,7 @@ description.af_ZA = 'n Musiek stel sonder enige musiek. description.ar_EG = مجموعة موسيقى بدون موسيقى description.be_BY = "Пусты" набор музычнага афармлення, які не зьмяшчае ніякай музыкі. description.bg_BG = Празен музикален пакет. -description.ca_ES = Un joc de música sense cap música. +description.ca_ES = Una llista de música sense cap peça. description.cs_CZ = Prázná hudební sada. description.cy_GB = Pecyn cerddoriaeth heb unrhyw gerddoriaeth ynddo. description.da_DK = En musikpakke uden musik. @@ -27,7 +27,7 @@ description.fr_FR = Un pack de musiques sans musiques. description.ga_IE = Pacáiste ceoil gan aon cheol iarbhír ann. description.gd_GB = Pacaid ciùil anns nach eil fonn sam bith. description.gl_ES = Un conxunto de músicas sen ningunha música. -description.hr_HR = Muzički paket bez ikakve muzike. +description.hr_HR = Glazbeni paket bez ikakve glazbe. description.hu_HU = Zenei alapcsomag zene nélkül. description.id_ID = Paket musik tanpa musik sungguhan. description.is_IS = Tónlistarpakki sem er í raun án tónlistar. diff --git a/bin/baseset/no_sound.obs b/bin/baseset/no_sound.obs index 9954845a35..522c45b9b9 100644 --- a/bin/baseset/no_sound.obs +++ b/bin/baseset/no_sound.obs @@ -12,7 +12,7 @@ description.af_ZA = 'n Klank stel sonder enige klanke. description.ar_EG = مجموعة صوت بدوت اصوات مضافة description.be_BY = "Пусты" набор гукавога афармленьня, які не зьмяшчае ніякіх гукаў. description.bg_BG = Празен звуков пакет. -description.ca_ES = Un joc de sons sense cap so. +description.ca_ES = Una llista de sons buida. description.cs_CZ = Prázdná sada zvuků. description.cy_GB = Pecyn sain heb unrhyw effeithiau sain ynddo. description.da_DK = En lydpakke uden lyde. diff --git a/bin/baseset/orig_dos.obg b/bin/baseset/orig_dos.obg index ffe230ccf2..693d9dd95f 100644 --- a/bin/baseset/orig_dos.obg +++ b/bin/baseset/orig_dos.obg @@ -13,7 +13,7 @@ description.af_ZA = Oorspronklike Transport Tycoon Deluxe DOS uitgawe grafieke. description.ar_EG = النسخة الاصلية من ترانسبورت تايكون ديلوكس الرسومية نسخة الدوس description.be_BY = Арыґінальная ґрафіка з Transport Tycoon Deluxe для DOS. description.bg_BG = Оригинални графики на Transport Tycoon Deluxe за DOS. -description.ca_ES = Gràfics originals de Transport Tycoon Deluxe per a DOS. +description.ca_ES = Gràfics originals del Transport Tycoon Deluxe pel DOS. description.cs_CZ = Původní sada grafik Transport Tycoon Deluxe (verze pro DOS). description.cy_GB = Graffeg gwreiddiol fersiwn DOS o Transport Tycoon Deluxe. description.da_DK = Originalgrafik fra Transport Tycoon Deluxe DOS-version. diff --git a/bin/baseset/orig_dos.obs b/bin/baseset/orig_dos.obs index 5ae658692d..38eb7b5818 100644 --- a/bin/baseset/orig_dos.obs +++ b/bin/baseset/orig_dos.obs @@ -12,7 +12,7 @@ description.af_ZA = Oorspronklike Transport Tycoon Deluxe DOS uitgawe klanke. description.ar_EG = النسخة الاصلية من ترانسبورت تايكون ديلوكس الصوتية نسخة الدوس description.be_BY = Арыґінальны набор гукавога афармленьня з гульні Transport Tycoon Deluxe для DOS. description.bg_BG = Оригинални звуци на Transport Tycoon Deluxe за DOS. -description.ca_ES = Sons originals de Transport Tycoon Deluxe per a DOS. +description.ca_ES = Sons originals del Transport Tycoon Deluxe pel DOS. description.cs_CZ = Původní sada zvuků Transport Tycoon Deluxe (verze pro DOS). description.cy_GB = Effeithiau sain gwreiddiol fersiwn DOS o Transport Tycoon Deluxe. description.da_DK = Originallyd fra Transport Tycoon Deluxe DOS-version. diff --git a/bin/baseset/orig_dos_de.obg b/bin/baseset/orig_dos_de.obg index 5649613eef..e9344b3f63 100644 --- a/bin/baseset/orig_dos_de.obg +++ b/bin/baseset/orig_dos_de.obg @@ -13,7 +13,7 @@ description.af_ZA = Oorspronklike Transport Tycoon Deluxe DOS (German) uitgawe g description.ar_EG = النسخة الاصلية من ترانسبورت تايكون ديلوكس الالمانية نسخة الدوس description.be_BY = Арыґінальная ґрафіка зь нямецкай версіі Transport Tycoon Deluxe для DOS. description.bg_BG = Оригинални графики на Transport Tycoon Deluxe за DOS (немски) . -description.ca_ES = Gràfics originals de Transport Tycoon Deluxe per a DOS (Alemany). +description.ca_ES = Gràfics originals del Transport Tycoon Deluxe (alemany) pel DOS. description.cs_CZ = Původní sada grafik Transport Tycoon Deluxe (německá verze pro DOS). description.cy_GB = Graffeg gwreiddiol fersiwn DOS (Almaenig) o Transport Tycoon Deluxe. description.da_DK = Originalgrafik fra Transport Tycoon Deluxe DOS (Tysk) version. diff --git a/bin/baseset/orig_win.obg b/bin/baseset/orig_win.obg index f9bd77934c..11ad4136f8 100644 --- a/bin/baseset/orig_win.obg +++ b/bin/baseset/orig_win.obg @@ -13,7 +13,7 @@ description.af_ZA = Oorspronklike Transport Tycoon Deluxe Windows uitgawe grafie description.ar_EG = النسخة الاصلية من ترانسبورت تايكون ديلوكس الرسومية نسخة وندوز description.be_BY = Арыґінальная ґрафіка з Transport Tycoon Deluxe для Windows. description.bg_BG = Оригинални графики на Transport Tycoon Deluxe за Windows. -description.ca_ES = Gràfics originals de Transport Tycoon Deluxe per a Windows. +description.ca_ES = Gràfics originals del Transport Tycoon Deluxe pel Windows. description.cs_CZ = Původní sada grafik Transport Tycoon Deluxe (verze pro Windows). description.cy_GB = Graffeg gwreiddiol fersiwn Windows o Transport Tycoon Deluxe. description.da_DK = Originalgrafik fra Transport Tycoon Deluxe Windows-version. diff --git a/bin/baseset/orig_win.obm b/bin/baseset/orig_win.obm index 203c0417c3..27164c73bc 100644 --- a/bin/baseset/orig_win.obm +++ b/bin/baseset/orig_win.obm @@ -12,7 +12,7 @@ description.af_ZA = Oorspronklike Transport Tycoon Deluxe Windows uitgawe musiek description.ar_EG = النسخة الاصلية من ترانسبورت تايكون ديلوكس الموسيقية نسخة وندوز description.be_BY = Арыґінальны набор музычнага афармленьня з гульні Transport Tycoon Deluxe для Windows. description.bg_BG = Оригинална музика на Transport Tycoon Deluxe за Windows. -description.ca_ES = Música Original de Transport Tycoon Deluxe per a Windows. +description.ca_ES = Música original del Transport Tycoon Deluxe pel Windows. description.cs_CZ = Původní hudba Transport Tycoon Deluxe (verze pro Windows). description.cy_GB = Cerddoriaeth gwreiddiol fersion Windows o Transport Tycoon Deluxe. description.da_DK = Originalmusik fra Transport Tycoon Deluxe Windows-version. @@ -27,7 +27,7 @@ description.fr_FR = Musiques originales de Transport Tycoon Deluxe (version Wind description.ga_IE = Ceol bunaidh Transport Tycoon Deluxe, eagrán Windows. description.gd_GB = Ceòl aig an deasachadh Windows tùsail aig Transport Tycoon Deluxe. description.gl_ES = Música da edición orixinal de Transport Tycoon Deluxe para Windows. -description.hr_HR = Originalna muzika za Transport Tycoon Deluxe Windows izdanje. +description.hr_HR = Originalna glazba za Transport Tycoon Deluxe Windows izdanje. description.hu_HU = Az eredeti Transport Tycoon Deluxe Windows verziójának zenéje. description.id_ID = Musik pengiring orisinil Transport Tycoon Deluxe versi Windows. description.is_IS = Upprunalega tónlistin úr Transport Tycoon Deluxe Windows útgáfunni. diff --git a/bin/baseset/orig_win.obs b/bin/baseset/orig_win.obs index 33164e9584..9fe250b304 100644 --- a/bin/baseset/orig_win.obs +++ b/bin/baseset/orig_win.obs @@ -12,7 +12,7 @@ description.af_ZA = Oorspronklike Transport Tycoon Deluxe Windows uitgawe klanke description.ar_EG = النسخة الاصلية من ترانسبورت تايكون ديلوكس الصوتية نسخة وندوز description.be_BY = Арыґінальны набор гукавога афармленьня з гульні Transport Tycoon Deluxe для Windows. description.bg_BG = Оригинални звуци на Transport Tycoon Deluxe за Windows. -description.ca_ES = Sons originals de Transport Tycoon Deluxe per a Windows. +description.ca_ES = Sons originals del Transport Tycoon Deluxe pel Windows. description.cs_CZ = Původní sada zvuků Transport Tycoon Deluxe (verze pro Windows). description.cy_GB = Effeithiau sain gwreiddiol fersiwn Windows o Transport Tycoon Deluxe. description.da_DK = Originallyd fra Transport Tycoon Deluxe Windows-version. diff --git a/src/group_gui.cpp b/src/group_gui.cpp index 1e35371431..ebc77efbf1 100644 --- a/src/group_gui.cpp +++ b/src/group_gui.cpp @@ -25,8 +25,8 @@ #include "vehicle_gui_base.h" #include "core/geometry_func.hpp" #include "company_base.h" - #include "widgets/group_widget.h" +#include "core/smallvec_type.hpp" #include "table/sprites.h" @@ -63,6 +63,11 @@ static const NWidgetPart _nested_group_widgets[] = { SetDataTip(SPR_GROUP_DELETE_TRAIN, STR_GROUP_DELETE_TOOLTIP), NWidget(WWT_PUSHIMGBTN, COLOUR_GREY, WID_GL_RENAME_GROUP), SetFill(0, 1), SetDataTip(SPR_GROUP_RENAME_TRAIN, STR_GROUP_RENAME_TOOLTIP), + NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_GL_COLLAPSE_EXPAND_GROUP), SetFill(0, 1), + NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_GL_COLLAPSE_ALL_GROUPS), SetFill(0, 1), + SetDataTip(STR_GROUP_COLLAPSE_ALL, STR_GROUP_COLLAPSE_ALL), + NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_GL_EXPAND_ALL_GROUPS), SetFill(0, 1), + SetDataTip(STR_GROUP_EXPAND_ALL, STR_GROUP_EXPAND_ALL), NWidget(WWT_PANEL, COLOUR_GREY), SetFill(1, 1), EndContainer(), NWidget(WWT_PUSHIMGBTN, COLOUR_GREY, WID_GL_REPLACE_PROTECTION), SetFill(0, 1), SetDataTip(SPR_GROUP_REPLACE_OFF_TRAIN, STR_GROUP_REPLACE_PROTECTION_TOOLTIP), @@ -101,6 +106,7 @@ private: /* Columns in the group list */ enum ListColumns { VGC_NAME, ///< Group name. + VGC_COLLAPSED, ///< Collapsed icon VGC_PROTECT, ///< Autoreplace protect icon. VGC_AUTOREPLACE, ///< Autoreplace active icon. VGC_PROFIT, ///< Profit icon. @@ -117,20 +123,30 @@ private: GUIGroupList groups; ///< List of groups uint tiny_step_height; ///< Step height for the group list Scrollbar *group_sb; + SmallVector collapsed_groups; ///< List of collapsed groups + SmallVector collapsable_groups; ///< List of collapsable groups SmallVector indents; ///< Indentation levels Dimension column_size[VGC_END]; ///< Size of the columns in the group list. - void AddParents(GUIGroupList *source, GroupID parent, int indent) + /** return true if group has children */ + bool AddParents(GUIGroupList *source, GroupID parent, int indent) { + bool is_collapsed = this->collapsed_groups.Contains(parent); + bool has_children = false; + for (const Group **g = source->Begin(); g != source->End(); g++) { if ((*g)->parent == parent) { + has_children = true; + if (is_collapsed) return has_children; *this->groups.Append() = *g; *this->indents.Append() = indent; - AddParents(source, (*g)->index, indent + 1); + bool child_has_children = AddParents(source, (*g)->index, indent + 1); + if (child_has_children) *this->collapsable_groups.Append() = (*g)->index; } } + return has_children; } /** Sort the groups by their name */ @@ -156,6 +172,16 @@ private: return r; } + void ToogleGroupCollapse(GroupID group) + { + GroupID *item = this->collapsed_groups.Find(group); + if (item == this->collapsed_groups.End()) { + *(this->collapsed_groups.Append()) = group; + } else { + this->collapsed_groups.Erase(item); + } + } + /** * (Re)Build the group list. * @@ -167,6 +193,7 @@ private: this->groups.Clear(); this->indents.Clear(); + this->collapsable_groups.Clear(); GUIGroupList list; @@ -196,6 +223,9 @@ private: this->column_size[VGC_NAME].width = max((170u * FONT_HEIGHT_NORMAL) / 10u, this->column_size[VGC_NAME].width); this->tiny_step_height = this->column_size[VGC_NAME].height; + this->column_size[VGC_COLLAPSED] = GetSpriteSize(SPR_WINDOW_UNSHADE); + this->tiny_step_height = max(this->tiny_step_height, this->column_size[VGC_COLLAPSED].height); + this->column_size[VGC_PROTECT] = GetSpriteSize(SPR_GROUP_REPLACE_PROTECT); this->tiny_step_height = max(this->tiny_step_height, this->column_size[VGC_PROTECT].height); @@ -219,6 +249,7 @@ private: return WD_FRAMERECT_LEFT + 8 + this->column_size[VGC_NAME].width + 8 + + this->column_size[VGC_COLLAPSED].width + 2 + this->column_size[VGC_PROTECT].width + 2 + this->column_size[VGC_AUTOREPLACE].width + 2 + this->column_size[VGC_PROFIT].width + 2 + @@ -262,8 +293,12 @@ private: int x = rtl ? right - WD_FRAMERECT_RIGHT - 8 - this->column_size[VGC_NAME].width + 1 : left + WD_FRAMERECT_LEFT + 8; DrawString(x + indent * LEVEL_WIDTH, x + this->column_size[VGC_NAME].width - 1, y + (this->tiny_step_height - this->column_size[VGC_NAME].height) / 2, str, colour); + /* draw collapse state */ + x = rtl ? x - 8 - this->column_size[VGC_COLLAPSED].width : x + 8 + this->column_size[VGC_NAME].width; + if (this->collapsed_groups.Contains(g_id)) DrawSprite(SPR_WINDOW_UNSHADE, PAL_NONE, x, y + (this->tiny_step_height - this->column_size[VGC_COLLAPSED].height) / 2); + /* draw autoreplace protection */ - x = rtl ? x - 8 - this->column_size[VGC_PROTECT].width : x + 8 + this->column_size[VGC_NAME].width; + x = rtl ? x - 2 - this->column_size[VGC_PROTECT].width : x + 2 + this->column_size[VGC_COLLAPSED].width; if (protection) DrawSprite(SPR_GROUP_REPLACE_PROTECT, PAL_NONE, x, y + (this->tiny_step_height - this->column_size[VGC_PROTECT].height) / 2); /* draw autoreplace status */ @@ -342,6 +377,9 @@ public: this->GetWidget(WID_GL_CAPTION)->widget_data = STR_VEHICLE_LIST_TRAIN_CAPTION + this->vli.vtype; this->GetWidget(WID_GL_LIST_VEHICLE)->tool_tip = STR_VEHICLE_LIST_TRAIN_LIST_TOOLTIP + this->vli.vtype; + this->GetWidget(WID_GL_COLLAPSE_EXPAND_GROUP)->widget_data = STR_GROUP_COLLAPSE; + this->GetWidget(WID_GL_COLLAPSE_EXPAND_GROUP)->tool_tip = STR_GROUP_COLLAPSE_TOOLTIP; + this->GetWidget(WID_GL_CREATE_GROUP)->widget_data += this->vli.vtype; this->GetWidget(WID_GL_RENAME_GROUP)->widget_data += this->vli.vtype; this->GetWidget(WID_GL_DELETE_GROUP)->widget_data += this->vli.vtype; @@ -522,6 +560,25 @@ public: /* Set text of sort by dropdown */ this->GetWidget(WID_GL_SORT_BY_DROPDOWN)->widget_data = this->vehicle_sorter_names[this->vehicles.SortType()]; + + bool is_non_collapsable_group = (this->vli.index == ALL_GROUP) || (this->vli.index == DEFAULT_GROUP) + || (this->vli.index == INVALID_GROUP) || !this->collapsable_groups.Contains(this->vli.index); + + this->SetWidgetDisabledState(WID_GL_COLLAPSE_EXPAND_GROUP, is_non_collapsable_group); + + NWidgetCore *collapse_widget = this->GetWidget(WID_GL_COLLAPSE_EXPAND_GROUP); + + if (is_non_collapsable_group || !this->collapsed_groups.Contains(this->vli.index)) { + collapse_widget->widget_data = STR_GROUP_COLLAPSE; + collapse_widget->tool_tip = STR_GROUP_COLLAPSE_TOOLTIP; + } else { + collapse_widget->widget_data = STR_GROUP_EXPAND; + collapse_widget->tool_tip = STR_GROUP_EXPAND_TOOLTIP; + } + + this->SetWidgetDisabledState(WID_GL_EXPAND_ALL_GROUPS, this->collapsed_groups.Length() == 0); + this->SetWidgetDisabledState(WID_GL_COLLAPSE_ALL_GROUPS, this->collapsable_groups.Length() == 0 || this->collapsed_groups.Length() == this->collapsable_groups.Length()); + this->DrawWidgets(); } @@ -657,6 +714,11 @@ public: this->group_sel = this->vli.index = this->groups[id_g]->index; + if (click_count % 2 == 0) { + this->ToogleGroupCollapse(this->vli.index); + OnInvalidateData(); + } + SetObjectToPlaceWnd(SPR_CURSOR_MOUSE, PAL_NONE, HT_DRAG, this); this->vehicles.ForceRebuild(); @@ -696,6 +758,32 @@ public: this->ShowRenameGroupWindow(this->vli.index, false); break; + case WID_GL_COLLAPSE_EXPAND_GROUP: // Toggle collapse/expand + this->ToogleGroupCollapse(this->vli.index); + OnInvalidateData(); + this->SetDirty(); + break; + + case WID_GL_COLLAPSE_ALL_GROUPS: { + this->collapsed_groups.Clear(); + for (const Group **group = this->groups.Begin(); group != this->groups.End(); ++group) { + GroupID id = (*group)->index; + if (id != ALL_GROUP && id != DEFAULT_GROUP && id != INVALID_GROUP && this->collapsable_groups.Contains(id)) { + *this->collapsed_groups.Append() = id; + } + } + OnInvalidateData(); + this->SetDirty(); + break; + } + + case WID_GL_EXPAND_ALL_GROUPS: { + this->collapsed_groups.Clear(); + OnInvalidateData(); + this->SetDirty(); + break; + } + case WID_GL_AVAILABLE_VEHICLES: ShowBuildVehicleWindow(INVALID_TILE, this->vli.vtype); break; @@ -744,6 +832,8 @@ public: if (this->group_sel != new_g && g->parent != new_g) { DoCommandP(0, this->group_sel | (1 << 16), new_g, CMD_ALTER_GROUP | CMD_MSG(STR_ERROR_GROUP_CAN_T_SET_PARENT)); + GroupID *group = this->collapsed_groups.Find(new_g); + if (group != this->collapsed_groups.End()) this->collapsed_groups.Erase(group); } this->group_sel = INVALID_GROUP; diff --git a/src/lang/catalan.txt b/src/lang/catalan.txt index 2efe688df8..aa57824cf1 100644 --- a/src/lang/catalan.txt +++ b/src/lang/catalan.txt @@ -990,7 +990,7 @@ STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_4X_ZOOM :Quàdruple STR_GAME_OPTIONS_BASE_GRF :{BLACK}Conjunt de gràfics base STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Selecciona el conjunt de gràfics base a utilitzar -STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} arxiu{P "" s} absent{P "" s}/corromput{P "" s} +STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} arxiu{P "" s} absent{P "" s} o corromput{P "" s}. STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Informació addicional sobre el conjunt de gràfics base STR_GAME_OPTIONS_BASE_SFX :{BLACK}Conjunt de sons base @@ -1706,21 +1706,21 @@ STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}Canvia e # Config errors STR_CONFIG_ERROR :{WHITE}S'ha produït un error en l'arxiu de configuració... -STR_CONFIG_ERROR_ARRAY :{WHITE}... error en la sèrie '{STRING}' +STR_CONFIG_ERROR_ARRAY :{WHITE}...error en la matriu «{STRING}». STR_CONFIG_ERROR_INVALID_VALUE :{WHITE}... valor invàlid '{STRING}' per '{STRING}' STR_CONFIG_ERROR_TRAILING_CHARACTERS :{WHITE}... caràcters de fi al final de la configuració '{STRING}' -STR_CONFIG_ERROR_DUPLICATE_GRFID :{WHITE}... ignorant NewGRF '{STRING}': GRF ID duplicada amb '{STRING}' -STR_CONFIG_ERROR_INVALID_GRF :{WHITE}... ignorant NewGRF invàlid '{STRING}': {STRING} -STR_CONFIG_ERROR_INVALID_GRF_NOT_FOUND :no trobat +STR_CONFIG_ERROR_DUPLICATE_GRFID :{WHITE}...s'ignorarà l'arxiu NewGRF «{STRING}» perquè l'identificador del GRF és el mateix que el de «{STRING}». +STR_CONFIG_ERROR_INVALID_GRF :{WHITE}...s'ignorarà l'arxiu NewGRF invàlid «{STRING}»: {STRING} +STR_CONFIG_ERROR_INVALID_GRF_NOT_FOUND :no s'ha trobat. STR_CONFIG_ERROR_INVALID_GRF_UNSAFE :insegur per a ús estàtic -STR_CONFIG_ERROR_INVALID_GRF_SYSTEM :sistema NewGRF -STR_CONFIG_ERROR_INVALID_GRF_INCOMPATIBLE :incompatible amb aquesta versió d'OpenTTD +STR_CONFIG_ERROR_INVALID_GRF_SYSTEM :arxiu NewGRF compatible només amb el TTDPatch. +STR_CONFIG_ERROR_INVALID_GRF_INCOMPATIBLE :no és compatible amb aquesta versió de l'OpenTTD. STR_CONFIG_ERROR_INVALID_GRF_UNKNOWN :desconegut STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_LEVEL :{WHITE}... el nivell de compressió '{STRING}' no és vàlid STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_ALGORITHM :{WHITE}... el format de partida '{STRING}' no està disponible. Tornant a '{STRING}' -STR_CONFIG_ERROR_INVALID_BASE_GRAPHICS_NOT_FOUND :{WHITE}... ignorant el conjunt de gràfics base '{STRING}': no trobats -STR_CONFIG_ERROR_INVALID_BASE_SOUNDS_NOT_FOUND :{WHITE}... ignorant el conjunt de sons base '{STRING}': no trobats -STR_CONFIG_ERROR_INVALID_BASE_MUSIC_NOT_FOUND :{WHITE}... ignorant el conjunt de músiques base '{STRING}': no trobats +STR_CONFIG_ERROR_INVALID_BASE_GRAPHICS_NOT_FOUND :{WHITE}...s'ignorarà el conjunt de gràfics base «{STRING}» perquè no s'ha trobat. +STR_CONFIG_ERROR_INVALID_BASE_SOUNDS_NOT_FOUND :{WHITE}...s'ignorarà el conjunt de sons base «{STRING}» perquè no s'ha trobat. +STR_CONFIG_ERROR_INVALID_BASE_MUSIC_NOT_FOUND :{WHITE}...s'ignorarà el conjunt de peces de música «{STRING}» perquè no s'ha trobat. STR_CONFIG_ERROR_OUT_OF_MEMORY :{WHITE}Memòria exhaurida STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}L'assignació de {BYTES} de la memòria cau d'sprites ha fallat. La memòria cau d'sprites s'ha reduït a {BYTES}. Això reduirà el rendiment d'OpenTTD. Per reduir els requeriments de memòria pots probar a desactivar els gràfics de 32bpp i/o els nivells amb zoom diff --git a/src/lang/english.txt b/src/lang/english.txt index 3f4c426c0e..63b87e0b72 100644 --- a/src/lang/english.txt +++ b/src/lang/english.txt @@ -3784,6 +3784,12 @@ STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Groups - STR_GROUP_CREATE_TOOLTIP :{BLACK}Click to create a group STR_GROUP_DELETE_TOOLTIP :{BLACK}Delete the selected group STR_GROUP_RENAME_TOOLTIP :{BLACK}Rename the selected group +STR_GROUP_COLLAPSE :{BLACK}Collapse +STR_GROUP_EXPAND :{BLACK}Expand +STR_GROUP_EXPAND_ALL :{BLACK}Expand all +STR_GROUP_COLLAPSE_ALL :{BLACK}Collapse all +STR_GROUP_COLLAPSE_TOOLTIP :{BLACK}Click to collapse the selected group +STR_GROUP_EXPAND_TOOLTIP :{BLACK}Click to expand the selected group STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Click to protect this group from global autoreplace STR_QUERY_GROUP_DELETE_CAPTION :{WHITE}Delete Group diff --git a/src/lang/greek.txt b/src/lang/greek.txt index ed44925b5a..f68f0c91b7 100644 --- a/src/lang/greek.txt +++ b/src/lang/greek.txt @@ -1745,15 +1745,18 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_SI :SI (kN) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT :Μονάδες μέτρησης ύψους: {STRING} STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_HELPTEXT :Όποτε εμφανίζεται ένα ύψος στη διεπαφή χρήστη, να εμφανίζεται στην επιλεγμένη μονάδα -STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Μετρικές (m) +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Μετρικό (m) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (m) STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Τοπικοποίηση STR_CONFIG_SETTING_GRAPHICS :{ORANGE}Γραφικά STR_CONFIG_SETTING_SOUND :{ORANGE}Ήχος STR_CONFIG_SETTING_INTERFACE :{ORANGE}Περιβάλλον Λειτουργίας +STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :{ORANGE}Παράθυρα προβολών STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Κατασκευή +STR_CONFIG_SETTING_ADVISORS :{ORANGE}Νέα / Σύμβουλοι STR_CONFIG_SETTING_COMPANY :{ORANGE}Εταιρία +STR_CONFIG_SETTING_ACCOUNTING :{ORANGE}Λογιστικά STR_CONFIG_SETTING_VEHICLES :{ORANGE}Οχήματα STR_CONFIG_SETTING_VEHICLES_PHYSICS :{ORANGE}Φυσική STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Δρομολογήσεις @@ -1764,6 +1767,7 @@ STR_CONFIG_SETTING_ENVIRONMENT :{ORANGE}Περ STR_CONFIG_SETTING_ENVIRONMENT_AUTHORITIES :{ORANGE}Αρχές STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Πόλεις STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Βιομηχανίες +STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}Κατανομή φορτίων STR_CONFIG_SETTING_AI :{ORANGE}Ανταγωνιστές STR_CONFIG_SETTING_AI_NPC :{ORANGE}Παίκτες υπολογιστή @@ -1979,6 +1983,7 @@ STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}Αλλα # Network server list STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}Παιχνίδι πολλών παικτών +STR_NETWORK_SERVER_LIST_ADVERTISED :{BLACK}Διαφημιζόμενο STR_NETWORK_SERVER_LIST_ADVERTISED_NO :Όχι STR_NETWORK_SERVER_LIST_ADVERTISED_YES :Ναι STR_NETWORK_SERVER_LIST_PLAYER_NAME :{BLACK}Όνομα παίκτη: @@ -2914,6 +2919,7 @@ STR_SAVE_PRESET_CAPTION :{WHITE}Αποθ STR_SAVE_PRESET_TITLE :{BLACK}Δώστε ένα όνομα για το προκαθορισμένο STR_SAVE_PRESET_CANCEL_TOOLTIP :{BLACK}Μη αλλαγή του προκαθορισμένου STR_SAVE_PRESET_SAVE :{BLACK}Αποθήκευση +STR_SAVE_PRESET_SAVE_TOOLTIP :{BLACK}Αποθήκευση προκαθορισμένου, χρησιμοποιώντας το επιλεγμένο όνομα # NewGRF parameters window STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}Αλλαγή παραμέτρων NewGRF @@ -3204,6 +3210,7 @@ STR_STATION_VIEW_GROUP_S_V_D :Πηγή-Μέσ STR_STATION_VIEW_GROUP_S_D_V :Πηγή-Προορισμός-Μέσω STR_STATION_VIEW_GROUP_V_S_D :Μέσω-Πηγή-Προορισμός STR_STATION_VIEW_GROUP_V_D_S :Μέσω-Προορισμός-Πηγή +STR_STATION_VIEW_GROUP_D_S_V :Προορισμός-Πηγή-Μέσω STR_STATION_VIEW_GROUP_D_V_S :Προορισμός-Μέσω-Πηγή ############ range for rating starts @@ -3964,7 +3971,8 @@ STR_TIMETABLE_TRAVEL_NOT_TIMETABLED :Ταξίδεψ STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :Ταξίδι (μη δρομολογημένο) με μέγιστη ταχύτητα {2:VELOCITY} STR_TIMETABLE_TRAVEL_FOR :Ταξίδεψε για {STRING} STR_TIMETABLE_TRAVEL_FOR_SPEED :Ταξίδεψε για {STRING} με στο μέγιστο {VELOCITY} -STR_TIMETABLE_TRAVEL_FOR_SPEED_ESTIMATED :Ταξίδι (for {STRING}, (μη δρομολογημένο) με μέγιστη ταχύτητα {VELOCITY} +STR_TIMETABLE_TRAVEL_FOR_SPEED_ESTIMATED :Ταξίδι γιά {STRING}, (μη δρομολογημένο) με μέγιστη ταχύτητα {VELOCITY} +STR_TIMETABLE_AND_TRAVEL_FOR_ESTIMATED :(ταξίδι για {STRING}, μη δρομολογημένο) STR_TIMETABLE_STAY_FOR :και μείνε για {STRING} STR_TIMETABLE_AND_TRAVEL_FOR :και ταξίδεψε για {STRING} STR_TIMETABLE_DAYS :{COMMA}{NBSP}μέρ{P α ες} @@ -4093,6 +4101,7 @@ STR_AI_SETTINGS_START_DELAY :Αριθμός STR_TEXTFILE_README_CAPTION :{WHITE}{STRING} readme του {STRING} STR_TEXTFILE_CHANGELOG_CAPTION :{G=m}{WHITE}{STRING} ιστορικό αλλαγών του {STRING} STR_TEXTFILE_LICENCE_CAPTION :{WHITE}{STRING} άδεια του {STRING} +STR_TEXTFILE_WRAP_TEXT_TOOLTIP :{BLACK}Αναδίπλωση του κειμένου του παραθύρου ώστε να χωρά χωρίς να απαιτέιται κύλιση STR_TEXTFILE_VIEW_README :{BLACK}Εμφάνιση readme STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}Ιστορικό αλλαγών STR_TEXTFILE_VIEW_LICENCE :{BLACK}Άδεια diff --git a/src/lang/korean.txt b/src/lang/korean.txt index 6f8967667a..334b30e16a 100644 --- a/src/lang/korean.txt +++ b/src/lang/korean.txt @@ -98,28 +98,28 @@ STR_CARGO_SINGULAR_FIZZY_DRINK :{G=f}탄산음 STR_QUANTITY_NOTHING : STR_QUANTITY_PASSENGERS :승객{NBSP}{COMMA}명 STR_QUANTITY_COAL :석탄 {WEIGHT_LONG} -STR_QUANTITY_MAIL :{G=f}우편 {COMMA}{NBSP}자루 +STR_QUANTITY_MAIL :우편 {COMMA}{NBSP}자루 STR_QUANTITY_OIL :석유 {VOLUME_LONG} -STR_QUANTITY_LIVESTOCK :{G=f}가축 {COMMA}{NBSP}마리 -STR_QUANTITY_GOODS :{G=f}상품 {COMMA}{NBSP}상자 +STR_QUANTITY_LIVESTOCK :가축 {COMMA}{NBSP}마리 +STR_QUANTITY_GOODS :상품 {COMMA}{NBSP}상자 STR_QUANTITY_GRAIN :곡물 {WEIGHT_LONG} STR_QUANTITY_WOOD :목재 {WEIGHT_LONG} STR_QUANTITY_IRON_ORE :철광석 {WEIGHT_LONG} STR_QUANTITY_STEEL :철 {WEIGHT_LONG} -STR_QUANTITY_VALUABLES :{G=f}귀금속 {COMMA}{NBSP}자루 +STR_QUANTITY_VALUABLES :귀금속 {COMMA}{NBSP}자루 STR_QUANTITY_COPPER_ORE :구리 광석 {WEIGHT_LONG} STR_QUANTITY_MAIZE :옥수수 {WEIGHT_LONG} STR_QUANTITY_FRUIT :과일 {WEIGHT_LONG} -STR_QUANTITY_DIAMONDS :{G=f}다이아몬드 {COMMA}{NBSP}자루 +STR_QUANTITY_DIAMONDS :다이아몬드 {COMMA}{NBSP}자루 STR_QUANTITY_FOOD :식품 {WEIGHT_LONG} STR_QUANTITY_PAPER :종이 {WEIGHT_LONG} -STR_QUANTITY_GOLD :{G=f}금 {COMMA}{NBSP}자루 +STR_QUANTITY_GOLD :금 {COMMA}{NBSP}자루 STR_QUANTITY_WATER :물 {VOLUME_LONG} STR_QUANTITY_WHEAT :밀 {WEIGHT_LONG} STR_QUANTITY_RUBBER :고무 {VOLUME_LONG} STR_QUANTITY_SUGAR :설탕 {WEIGHT_LONG} -STR_QUANTITY_TOYS :{G=f}장난감 {COMMA}{NBSP}상자 -STR_QUANTITY_SWEETS :{G=f}사탕 {COMMA}{NBSP}자루 +STR_QUANTITY_TOYS :장난감 {COMMA}{NBSP}상자 +STR_QUANTITY_SWEETS :사탕 {COMMA}{NBSP}자루 STR_QUANTITY_COLA :콜라 {VOLUME_LONG} STR_QUANTITY_CANDYFLOSS :솜사탕 {WEIGHT_LONG} STR_QUANTITY_BUBBLES :거품 {COMMA}개 @@ -177,7 +177,7 @@ STR_CRATES :{G=f}{COMMA}{NB STR_COLOUR_DARK_BLUE :어두운 파랑 STR_COLOUR_PALE_GREEN :연한 초록 STR_COLOUR_PINK :분홍 -STR_COLOUR_YELLOW :{G=m}노랑 +STR_COLOUR_YELLOW :노랑 STR_COLOUR_RED :빨강 STR_COLOUR_LIGHT_BLUE :밝은 파랑 STR_COLOUR_GREEN :녹색 @@ -306,7 +306,7 @@ STR_SORT_BY_COST :가격 STR_SORT_BY_POWER :힘 STR_SORT_BY_TRACTIVE_EFFORT :견인력 STR_SORT_BY_INTRO_DATE :도입 날짜 -STR_SORT_BY_RUNNING_COST :{G=f}유지비 +STR_SORT_BY_RUNNING_COST :유지비 STR_SORT_BY_POWER_VS_RUNNING_COST :유지비 분의 힘 STR_SORT_BY_CARGO_CAPACITY :화물 수송량 STR_SORT_BY_RANGE :항속거리 @@ -979,7 +979,7 @@ STR_GAME_OPTIONS_FULLSCREEN_TOOLTIP :{BLACK}OpenTTD STR_GAME_OPTIONS_RESOLUTION :{BLACK}화면 해상도 STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}사용하실 화면 해상도를 선택하세요. -STR_GAME_OPTIONS_RESOLUTION_OTHER :{G=f}기타 +STR_GAME_OPTIONS_RESOLUTION_OTHER :기타 STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}인터페이스 크기 STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}인터페이스의 크기를 선택하십시오. @@ -1715,7 +1715,7 @@ STR_CONFIG_ERROR_INVALID_GRF_NOT_FOUND :찾을 수 없 STR_CONFIG_ERROR_INVALID_GRF_UNSAFE :사용하기에 불안함 STR_CONFIG_ERROR_INVALID_GRF_SYSTEM :NewGRF 시스템 STR_CONFIG_ERROR_INVALID_GRF_INCOMPATIBLE :현재 OpenTTD 버전과 맞지 않음 -STR_CONFIG_ERROR_INVALID_GRF_UNKNOWN :{G=m}알 수 없음 +STR_CONFIG_ERROR_INVALID_GRF_UNKNOWN :알 수 없음 STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_LEVEL :{WHITE}... 압축 레벨 '{STRING}' : 유효하지 않습니다 STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_ALGORITHM :{WHITE}... '{STRING}' 형식으로 게임을 저장할 수 없습니다. '{STRING}' 형식으로 변환합니다 STR_CONFIG_ERROR_INVALID_BASE_GRAPHICS_NOT_FOUND :{WHITE}... 기본 그래픽 세트({STRING})가 무시되었습니다: 파일을 찾을 수 없습니다. @@ -1776,7 +1776,7 @@ STR_OSNAME_DOS :{G=f}DOS STR_OSNAME_UNIX :{G=f}Unix STR_OSNAME_OSX :{G=f}OS{NBSP}X STR_OSNAME_BEOS :{G=f}BeOS -STR_OSNAME_HAIKU :Haiku +STR_OSNAME_HAIKU :{G=f}Haiku STR_OSNAME_MORPHOS :{G=f}MorphOS STR_OSNAME_AMIGAOS :{G=f}AmigaOS STR_OSNAME_OS2 :{G=f}OS/2 @@ -1829,8 +1829,8 @@ STR_LIVERY_EMU :{G=f}EMU STR_LIVERY_PASSENGER_WAGON_STEAM :{G=f}객차 (증기) STR_LIVERY_PASSENGER_WAGON_DIESEL :{G=f}객차 (디젤) STR_LIVERY_PASSENGER_WAGON_ELECTRIC :{G=f}객차 (전기) -STR_LIVERY_PASSENGER_WAGON_MONORAIL :객차 (모노레일) -STR_LIVERY_PASSENGER_WAGON_MAGLEV :객차 (자기부상) +STR_LIVERY_PASSENGER_WAGON_MONORAIL :{G=f}객차 (모노레일) +STR_LIVERY_PASSENGER_WAGON_MAGLEV :{G=f}객차 (자기부상) STR_LIVERY_FREIGHT_WAGON :{G=f}화물차 STR_LIVERY_BUS :{G=f}버스 STR_LIVERY_TRUCK :{G=m}트럭 @@ -1839,8 +1839,8 @@ STR_LIVERY_FREIGHT_SHIP :{G=m}화물선 STR_LIVERY_HELICOPTER :{G=f}헬리콥터 STR_LIVERY_SMALL_PLANE :{G=f}소형 항공기 STR_LIVERY_LARGE_PLANE :{G=f}대형 항공기 -STR_LIVERY_PASSENGER_TRAM :승객 전차 -STR_LIVERY_FREIGHT_TRAM :화물 전차 +STR_LIVERY_PASSENGER_TRAM :{G=f}승객 전차 +STR_LIVERY_FREIGHT_TRAM :{G=f}화물 전차 # Face selection window STR_FACE_CAPTION :{WHITE}얼굴 선택 @@ -2332,7 +2332,7 @@ STR_BUILD_DEPOT_TRAIN_ORIENTATION_CAPTION :{WHITE}차량 STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}차량기지의 방향을 선택하세요. # Rail waypoint construction window -STR_WAYPOINT_CAPTION :{G=f}{WHITE}경유지 +STR_WAYPOINT_CAPTION :{WHITE}경유지 STR_WAYPOINT_GRAPHICS_TOOLTIP :{BLACK}경유지 종류 설정 # Rail station construction window @@ -2350,7 +2350,7 @@ STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}표시 STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}건설할 역의 종류를 선택합니다 STR_STATION_CLASS_DFLT :기본 역사 -STR_STATION_CLASS_WAYP :{G=f}경유지 +STR_STATION_CLASS_WAYP :경유지 # Signal window STR_BUILD_SIGNAL_CAPTION :{WHITE}신호기 선택 @@ -2629,7 +2629,7 @@ STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :{STRING} 차량 STR_LAI_ROAD_DESCRIPTION_ROAD :도로 STR_LAI_ROAD_DESCRIPTION_ROAD_WITH_STREETLIGHTS :가로등이 있는 도로 STR_LAI_ROAD_DESCRIPTION_TREE_LINED_ROAD :가로수가 있는 도로 -STR_LAI_ROAD_DESCRIPTION_ROAD_VEHICLE_DEPOT :{G=f}차고지 +STR_LAI_ROAD_DESCRIPTION_ROAD_VEHICLE_DEPOT :차고지 STR_LAI_ROAD_DESCRIPTION_ROAD_RAIL_LEVEL_CROSSING :철도 건널목 STR_LAI_ROAD_DESCRIPTION_TRAMWAY :전찻길 @@ -2646,8 +2646,8 @@ STR_LAI_STATION_DESCRIPTION_AIRPORT :공항 STR_LAI_STATION_DESCRIPTION_TRUCK_LOADING_AREA :트럭 적하장 STR_LAI_STATION_DESCRIPTION_BUS_STATION :버스 정류장 STR_LAI_STATION_DESCRIPTION_SHIP_DOCK :항구 -STR_LAI_STATION_DESCRIPTION_BUOY :{G=f}부표 -STR_LAI_STATION_DESCRIPTION_WAYPOINT :{G=f}경유지 +STR_LAI_STATION_DESCRIPTION_BUOY :부표 +STR_LAI_STATION_DESCRIPTION_WAYPOINT :경유지 STR_LAI_WATER_DESCRIPTION_WATER :물 STR_LAI_WATER_DESCRIPTION_CANAL :운하 @@ -3054,9 +3054,9 @@ STR_GOAL_QUESTION_CAPTION_ERROR :오류 ############ Start of Goal Question button list STR_GOAL_QUESTION_BUTTON_CANCEL :취소 -STR_GOAL_QUESTION_BUTTON_OK :{G=m}확인 +STR_GOAL_QUESTION_BUTTON_OK :확인 STR_GOAL_QUESTION_BUTTON_NO :아니요 -STR_GOAL_QUESTION_BUTTON_YES :{G=f}예 +STR_GOAL_QUESTION_BUTTON_YES :예 STR_GOAL_QUESTION_BUTTON_DECLINE :거절 STR_GOAL_QUESTION_BUTTON_ACCEPT :수락 STR_GOAL_QUESTION_BUTTON_IGNORE :무시 @@ -3878,7 +3878,7 @@ STR_ORDER_STOP_LOCATION_NEAR_END :[가까운쪽] STR_ORDER_STOP_LOCATION_MIDDLE :[중간] STR_ORDER_STOP_LOCATION_FAR_END :[먼쪽] -STR_ORDER_OUT_OF_RANGE :{RED} (다음 목적지가 항속거리제한을 벗어납니다.) +STR_ORDER_OUT_OF_RANGE :{RED} (다음 목적지가 제한 항속거리보다 멀리 있습니다) STR_ORDER_CONDITIONAL_UNCONDITIONAL :[조건 경로] {COMMA}번 경로로 건너뛰기 STR_ORDER_CONDITIONAL_NUM :[조건 경로] {COMMA}번 경로로 건너뛰기 ({STRING} {STRING} {COMMA} 일때) @@ -3985,7 +3985,7 @@ STR_AI_CONFIG_GAMELIST_TOOLTIP :{BLACK}다음 STR_AI_CONFIG_AILIST_TOOLTIP :{BLACK}다음에 게임을 시작할 때 이 인공지능을 불러올 것입니다 STR_AI_CONFIG_HUMAN_PLAYER :사용자 플레이어 STR_AI_CONFIG_RANDOM_AI :무작위 인공지능 -STR_AI_CONFIG_NONE :{G=m}(없음) +STR_AI_CONFIG_NONE :(없음) STR_AI_CONFIG_MOVE_UP :{BLACK}위로 이동 STR_AI_CONFIG_MOVE_UP_TOOLTIP :{BLACK}목록에서 선택한 인공지능의 순서를 한 칸 위로 옮깁니다. @@ -3997,16 +3997,16 @@ STR_AI_CONFIG_AI :{G=m}{SILVER} STR_AI_CONFIG_CHANGE :{BLACK}{STRING} 선택하기 STR_AI_CONFIG_CHANGE_NONE : -STR_AI_CONFIG_CHANGE_AI :{G=m}인공지능 -STR_AI_CONFIG_CHANGE_GAMESCRIPT :{G=f}게임 스크립트 +STR_AI_CONFIG_CHANGE_AI :인공지능 +STR_AI_CONFIG_CHANGE_GAMESCRIPT :게임 스크립트 STR_AI_CONFIG_CHANGE_TOOLTIP :{BLACK}다른 스크립트 불러오기 STR_AI_CONFIG_CONFIGURE :{BLACK}설정 STR_AI_CONFIG_CONFIGURE_TOOLTIP :{BLACK}인공지능의 매개 변수를 설정합니다. # Available AIs window STR_AI_LIST_CAPTION :{WHITE}사용 가능한 {STRING} -STR_AI_LIST_CAPTION_AI :{G=m}인공지능 -STR_AI_LIST_CAPTION_GAMESCRIPT :{G=f}게임 스크립트 +STR_AI_LIST_CAPTION_AI :인공지능 +STR_AI_LIST_CAPTION_GAMESCRIPT :게임 스크립트 STR_AI_LIST_TOOLTIP :{BLACK}스크립트를 선택하려면 클릭하세요. STR_AI_LIST_AUTHOR :{LTBLUE}저자: {ORANGE}{STRING} @@ -4020,7 +4020,7 @@ STR_AI_LIST_CANCEL_TOOLTIP :{BLACK}인공 # AI Parameters STR_AI_SETTINGS_CAPTION :{WHITE}{STRING} 매개 변수 -STR_AI_SETTINGS_CAPTION_AI :{G=m}인공지능 +STR_AI_SETTINGS_CAPTION_AI :인공지능 STR_AI_SETTINGS_CAPTION_GAMESCRIPT :게임 스크립트 STR_AI_SETTINGS_CLOSE :{BLACK}닫기 STR_AI_SETTINGS_RESET :{BLACK}초기화 @@ -4554,7 +4554,7 @@ STR_INDUSTRY_NAME_SUGAR_MINE :{G=m}설탕 광 ############ These strings may never get a new id, or savegames will break! ##id 0x6000 STR_SV_EMPTY : -STR_SV_UNNAMED :{G=m}이름 없음 +STR_SV_UNNAMED :이름 없음 STR_SV_TRAIN_NAME :열차 {COMMA} STR_SV_ROAD_VEHICLE_NAME :차량 {COMMA} STR_SV_SHIP_NAME :선박 {COMMA} @@ -4856,7 +4856,7 @@ STR_FORMAT_DATE_SHORT :{1:NUM}년 {0:S STR_FORMAT_DATE_LONG :{2:NUM}년 {1:STRING}월 {0:STRING}일 STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING} -STR_FORMAT_BUOY_NAME :{G=f}{TOWN} 부표 +STR_FORMAT_BUOY_NAME :{TOWN} 부표 STR_FORMAT_BUOY_NAME_SERIAL :{TOWN} 부표 #{COMMA} STR_FORMAT_COMPANY_NUM :(회사 {COMMA}) STR_FORMAT_GROUP_NAME :그룹 {COMMA} @@ -4872,7 +4872,7 @@ STR_FORMAT_DEPOT_NAME_SHIP :{TOWN} 정박 STR_FORMAT_DEPOT_NAME_SHIP_SERIAL :{TOWN} 정박소 #{COMMA} STR_FORMAT_DEPOT_NAME_AIRCRAFT :{STATION} 격납고 -STR_UNKNOWN_STATION :알수없는 정거장 +STR_UNKNOWN_STATION :알 수 없는 정거장 STR_DEFAULT_SIGN_NAME :팻말 STR_COMPANY_SOMEONE :누군가 diff --git a/src/lang/unfinished/frisian.txt b/src/lang/unfinished/frisian.txt index b21f1f2800..fe77940bce 100644 --- a/src/lang/unfinished/frisian.txt +++ b/src/lang/unfinished/frisian.txt @@ -1833,6 +1833,7 @@ STR_NETWORK_SERVER_LIST_PLAYER_NAME :{BLACK}Namme fa STR_NETWORK_SERVER_LIST_GAME_NAME :{BLACK}Namme STR_NETWORK_SERVER_LIST_GAME_NAME_TOOLTIP :{BLACK}Namme fan dit spul STR_NETWORK_SERVER_LIST_GENERAL_ONLINE :{BLACK}{COMMA}/{COMMA} - {COMMA}/{COMMA} +STR_NETWORK_SERVER_LIST_CLIENTS_CAPTION :{BLACK}kliïnten STR_NETWORK_SERVER_LIST_MAP_SIZE_SHORT :{BLACK}{COMMA}x{COMMA} STR_NETWORK_SERVER_LIST_MAP_SIZE_CAPTION :{BLACK}Lângrutte STR_NETWORK_SERVER_LIST_DATE_CAPTION :{BLACK}Datum @@ -2001,8 +2002,10 @@ STR_NETWORK_ERROR_SAVEGAMEERROR :{WHITE}Koe opsl STR_NETWORK_ERROR_SERVER_START :{WHITE}Koe de tsjinner net starte STR_NETWORK_ERROR_CLIENT_START :{WHITE}Koe gjin ferbyning meitsje STR_NETWORK_ERROR_TIMEOUT :{WHITE}Ferbining #{NUM} ferrûn +STR_NETWORK_ERROR_SERVER_ERROR :{WHITE}In protokol flater is opmurken en de ferbining is sletten STR_NETWORK_ERROR_WRONG_PASSWORD :{WHITE}Ferkeard wachtwurd STR_NETWORK_ERROR_SERVER_FULL :{WHITE}De tsjinner is vol +STR_NETWORK_ERROR_CHEATER :Falsk spielje net tastien op disse server STR_NETWORK_ERROR_TOO_MANY_COMMANDS :{WHITE}Do stjoerst tevolle opdrachten ny de server ############ Leave those lines in this order!! @@ -2030,6 +2033,7 @@ STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_4 :Spul stiet nog STR_NETWORK_SERVER_MESSAGE_GAME_REASON_MANUAL :hânmjittich STR_NETWORK_SERVER_MESSAGE_GAME_REASON_GAME_SCRIPT :spulskript ############ End of leave-in-this-order +STR_NETWORK_MESSAGE_CLIENT_LEAVING :Ferlit STR_NETWORK_MESSAGE_CLIENT_JOINED_ID :*** {STRING} der is ien bykommen(Client #{2:NUM}) STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} is in neie taskôger STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} hat syn/har namme oanpast nei {STRING} @@ -2300,6 +2304,7 @@ STR_FOUND_TOWN_SELECT_LAYOUT_RANDOM :{BLACK}Samar # Fund new industry window STR_FUND_INDUSTRY_CAPTION :{WHITE}Betelje nije yndustry +STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES_TOOLTIP :{BLACK}Pleats yndustry oer de map hinne STR_FUND_INDUSTRY_INDUSTRY_BUILD_COST :{BLACK}Kostet: {YELLOW}{CURRENCY_LONG} STR_FUND_INDUSTRY_BUILD_NEW_INDUSTRY :{BLACK}Bouwe STR_FUND_INDUSTRY_FUND_NEW_INDUSTRY :{BLACK}Finansierje @@ -2836,6 +2841,7 @@ STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}Akseptea STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_SELF :{BLACK}Dit stasjon hat eksklusyfe transportrjochten in dizze plak. STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Stasjonwurdearing sjen litte +STR_STATION_VIEW_SUPPLY_RATINGS_TITLE :{BLACK}Moanlikse foarried en wurdearring: STR_STATION_VIEW_CARGO_SUPPLY_RATING :{WHITE}{STRING}: {YELLOW}{COMMA} / {STRING} ({COMMA}%) STR_STATION_VIEW_GROUP :{BLACK}Groepearje by @@ -2966,6 +2972,7 @@ STR_BUY_COMPANY_MESSAGE :{WHITE}Wy sykje # Company infrastructure window STR_COMPANY_INFRASTRUCTURE_VIEW_CAPTION :{WHITE}Ynfrastruktuer fan {COMPANY} STR_COMPANY_INFRASTRUCTURE_VIEW_SIGNALS :{WHITE}Seinen +STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD_SECT :{GOLD}Stikjes dyk: STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD :{WHITE}Dyk STR_COMPANY_INFRASTRUCTURE_VIEW_TRAMWAY :{WHITE}Tramwei STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}Stasjons: @@ -3104,6 +3111,7 @@ STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Wikselje STR_BUY_VEHICLE_SHIP_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Wikselje tusken it ferbergje/sjen litte fan it soart skip STR_BUY_VEHICLE_AIRCRAFT_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Wikselje tusken it ferbergje/sjen litte fan it soart fleanmasine +STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}Jou treinmodel in oare namme # Depot window STR_DEPOT_CAPTION :{WHITE}{DEPOT} @@ -3119,10 +3127,12 @@ STR_DEPOT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Weinen - STR_DEPOT_TRAIN_SELL_TOOLTIP :{BLACK}tôgje trein hjirhinne om it te ferkeapjen. STR_DEPOT_ROAD_VEHICLE_SELL_TOOLTIP :{BLACK}tôgje wein hjirhinne om it te ferkeapjen. +STR_DEPOT_AIRCRAFT_SELL_TOOLTIP :{BLACK}tôgje fleantúg hjirhinne om it te ferkeapjen. STR_DEPOT_SELL_ALL_BUTTON_ROAD_VEHICLE_TOOLTIP :Ferkeapje alle weinen yn disse garage +STR_DEPOT_AUTOREPLACE_SHIP_TOOLTIP :{BLACK}Ferfang automatysk skippen yn de skipmakkerij STR_DEPOT_AUTOREPLACE_AIRCRAFT_TOOLTIP :{BLACK}Ferfang automatysk alle fleantúgen yn disse fleantúchhangaar STR_DEPOT_TRAIN_NEW_VEHICLES_BUTTON :{BLACK}Nije fiertugen @@ -3175,6 +3185,7 @@ STR_REPLACE_MONORAIL_VEHICLES :Monorail weinen # Vehicle view STR_VEHICLE_VIEW_CAPTION :{WHITE}{VEHICLE} +STR_VEHICLE_VIEW_TRAIN_LOCATION_TOOLTIP :{BLACK}Sintrearje it byld op de lokaasje fan disse trein. bij Ctrl+Click bliuwst it skip folgjen STR_VEHICLE_VIEW_SHIP_LOCATION_TOOLTIP :{BLACK}Sintrearje it byld op de lokaasje fan dit skip. bij Ctrl+Click bliuwst it skip folgjen STR_VEHICLE_VIEW_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Sintrearje it byld op de lokaasje fan dit fleantúch @@ -3190,6 +3201,7 @@ STR_VEHICLE_VIEW_SHIP_ORDERS_TOOLTIP :{BLACK}Lit de r # Messages in the start stop button in the vehicle view STR_VEHICLE_STATUS_LOADING_UNLOADING :{LTBLUE}Laden / Losse +STR_VEHICLE_STATUS_LEAVING :{LTBLUE}fuortsette STR_VEHICLE_STATUS_BROKEN_DOWN :{RED}Stikken STR_VEHICLE_STATUS_STOPPED :{RED}Stoppe STR_VEHICLE_STATUS_TRAIN_STOPPING_VEL :{RED}Stoppet, {VELOCITY} @@ -3224,6 +3236,7 @@ STR_VEHICLE_INFO_CAPACITY :{BLACK}Kapasite STR_VEHICLE_INFO_CAPACITY_MULT :{BLACK}Kapasiteit: {LTBLUE}{CARGO_LONG}{3:STRING} (x{4:NUM}) STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}Kapasiteit: {LTBLUE}{CARGO_LONG}, {CARGO_LONG}{STRING} +STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Wikselje kredyt: {LTBLUE}{CURRENCY_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Underhâldsinterval: {LTBLUE}{COMMA}{NBSP}dagen{BLACK} Lêste underhâld: {LTBLUE}{DATE_LONG} STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Underhâldsinterval: {LTBLUE}{COMMA}%{BLACK} Lêste underhâld: {LTBLUE}{DATE_LONG} @@ -3267,6 +3280,7 @@ STR_REFIT_ROAD_VEHICLE_REFIT_BUTTON :{BLACK}Wein omb STR_REFIT_SHIP_REFIT_BUTTON :{BLACK}Skip ombouwe STR_REFIT_AIRCRAFT_REFIT_BUTTON :{BLACK}Fleantúch ombouwe +STR_REFIT_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}Wein ombouwe nij selektearre fracht STR_REFIT_SHIP_REFIT_TOOLTIP :{BLACK}Skip ombouwe nij selektearre fracht # Order view @@ -3330,6 +3344,7 @@ STR_ORDER_GO_NON_STOP_TO_WAYPOINT :Oanienwei lâns STR_ORDER_GO_TO_NEAREST_DEPOT_FORMAT :{STRING} {STRING} {STRING} STR_ORDER_GO_TO_DEPOT_FORMAT :{STRING} {DEPOT} +STR_ORDER_REFIT_ORDER :(Ombouwe nij {STRING}) STR_ORDER_STOP_ORDER :(Stop) STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING} @@ -3470,6 +3485,7 @@ STR_AI_SETTINGS_SETTING :{STRING}: {ORAN # Textfile window STR_TEXTFILE_LICENCE_CAPTION :{WHITE}{STRING} lisinsje fan {STRING} +STR_TEXTFILE_WRAP_TEXT :{WHITE}Omwikkelje tekst STR_TEXTFILE_VIEW_LICENCE :{BLACK}Lisinsje diff --git a/src/newgrf.cpp b/src/newgrf.cpp index dd0e223049..5487e03a5e 100644 --- a/src/newgrf.cpp +++ b/src/newgrf.cpp @@ -6429,8 +6429,8 @@ static void SafeParamSet(ByteReader *buf) { uint8 target = buf->ReadByte(); - /* Only writing GRF parameters is considered safe */ - if (target < 0x80) return; + /* Writing GRF parameters and some bits of 'misc GRF features' are safe. */ + if (target < 0x80 || target == 0x9E) return; /* GRM could be unsafe, but as here it can only happen after other GRFs * are loaded, it should be okay. If the GRF tried to use the slots it @@ -6846,7 +6846,15 @@ static void ParamSet(ByteReader *buf) /* Remove the local flags from the global flags */ ClrBit(res, GMB_TRAIN_WIDTH_32_PIXELS); - _misc_grf_features = res; + /* Only copy safe bits for static grfs */ + if (HasBit(_cur.grfconfig->flags, GCF_STATIC)) { + uint32 safe_bits = 0; + SetBit(safe_bits, GMB_SECOND_ROCKY_TILE_SET); + + _misc_grf_features = (_misc_grf_features & ~safe_bits) | (res & safe_bits); + } else { + _misc_grf_features = res; + } break; case 0x9F: // locale-dependent settings diff --git a/src/widgets/group_widget.h b/src/widgets/group_widget.h index 41e0bcd45a..6bd0a9888e 100644 --- a/src/widgets/group_widget.h +++ b/src/widgets/group_widget.h @@ -31,6 +31,9 @@ enum GroupListWidgets { WID_GL_CREATE_GROUP, ///< Create group button. WID_GL_DELETE_GROUP, ///< Delete group button. WID_GL_RENAME_GROUP, ///< Rename group button. + WID_GL_COLLAPSE_EXPAND_GROUP, ///< Collapse/expand group button. + WID_GL_COLLAPSE_ALL_GROUPS, ///< Collapse all groups button. + WID_GL_EXPAND_ALL_GROUPS, ///< Expand all groups button. WID_GL_REPLACE_PROTECTION, ///< Replace protection button. WID_GL_INFO, ///< Group info. };