From 672129504fdb656210fd16d94a251cf5d111b41f Mon Sep 17 00:00:00 2001 From: Aram Date: Tue, 4 Feb 2025 14:24:05 +0300 Subject: [PATCH] Localization: Russian and English (#1761) --- CHANGELOG.md | 3 + lua/terrortown/lang/en.lua | 165 +++---- lua/terrortown/lang/ru.lua | 849 +++++++++++++++++++------------------ 3 files changed, 514 insertions(+), 503 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2602f5cee..51fb2808a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,9 @@ All notable changes to TTT2 will be documented here. Inspired by [keep a changel ## Unreleased +### Changed +- Updated Russian and English localization files (by @Satton2) + ## [v0.14.2b](https://github.com/TTT-2/TTT2/tree/v0.14.2b) (2025-02-02) ### Fixed diff --git a/lua/terrortown/lang/en.lua b/lua/terrortown/lang/en.lua index 295ebb6c8..ab9a68cfe 100644 --- a/lua/terrortown/lang/en.lua +++ b/lua/terrortown/lang/en.lua @@ -1315,9 +1315,9 @@ L.header_rolelayering_info = "Role layering information" L.help_rolelayering_roleselection = [[ The role distribution process is split into two stages. In the first stage base roles are distributed, which are Innocent, Traitor and those listed in the 'base role layer' box below. The second stage is used to upgrade those base roles to a subrole. -Further details are available in the overview tab.]] +Further details are available in the "Roles Overview" submenu.]] L.help_rolelayering_layers = [[ -After determining the assignable roles according to role-specific convars (including the random chance it will be selected at all!), one role from each layer (if there are any) is selected for distribution. After handling the layers, unlayered roles are selected at random. Role selection stops as soon as there are no more slots which need to be filled. +After determining the assignable roles according to role-specific convars (including the random chance they will be selected at all!), one role from each layer (if there are any) is selected for distribution. After handling the layers, unlayered roles are selected at random. Role distribution stops as soon as there are no more slots which need to be filled. Roles which are not considered due to convar-related requirements are not distributed.]] L.scoreboard_voice_tooltip = "Scroll to change the volume" @@ -2322,16 +2322,16 @@ There are 4 modes: mode 0: Disabled - No derandomization is done. -mode 1: Base roles only - Derandomization is performed for base roles only. Sub-roles will be selected randomly. These are roles like Innocent and Traitor. +mode 1: Base roles only - Derandomization is performed for base roles only. Subroles will be selected randomly. These are roles like Innocent and Traitor. -mode 2: Sub-roles only - Derandomization is performed for sub-roles only. Base roles will be selected randomly. Note that sub-roles are only assigned to players which have already been selected for their base role. +mode 2: Subroles only - Derandomization is performed for subroles only. Base roles will be selected randomly. Note that subroles are only assigned to players which have already been selected for their base role. -mode 3: Base roles AND sub-roles - Derandomization is performed for both base roles and sub-roles.]] +mode 3: Base roles AND subroles - Derandomization is performed for both base roles and subroles.]] L.label_roles_derandomize_mode = "Derandomization mode" L.label_roles_derandomize_mode_none = "mode 0: Disabled" L.label_roles_derandomize_mode_base_only = "mode 1: Base roles only" -L.label_roles_derandomize_mode_sub_only = "mode 2: Sub-roles only" -L.label_roles_derandomize_mode_base_and_sub = "mode 3: Base roles AND sub-roles" +L.label_roles_derandomize_mode_sub_only = "mode 2: Subroles only" +L.label_roles_derandomize_mode_base_and_sub = "mode 3: Base roles AND subroles" L.help_roles_derandomize_min_weight = [[ Derandomization is performed by making the random player selections during role distribution use a weight associated with each role for each player, and that weight increases by 1 each time the player does not get assigned that role. These weights are not persisted between connections, or across maps. @@ -2380,7 +2380,7 @@ L.corpse_hint_without_confirm = "Press [{usekey}] to search." -- 2025-01-05 L.help_session_limits_mode = [[ -There are three different session limit modes you can choose from: +There are four different session limit modes you can choose from: mode 0: No session limits. TTT2 will not end the session and will not trigger a map change. @@ -2405,29 +2405,29 @@ L.submenu_roles_overview_title = "Roles Overview (READ ME)" L.roles_overview_html = [[

Overview

-One of TTT2's core mechanics is the role. They control what your +One of TTT2's core mechanics are roles. They control what your goals are, who your teammates are, and what you can do. The way that they are distributed to players is thus very important. The role distribution -system is very complicated, and the menus in this tab control almost every +system is very complicated, and submenus in this menu control almost every aspect of that system. For many of the options available, understanding how -the system as a whole works can be crucial to being able to make the changes -you want for your server. +the distribution system as a whole works can be crucial to being able to make +the changes you want for your server.

Terminology

The Algorithm

@@ -2442,12 +2442,12 @@ you want for your server. Innocent and Traitor always have available slots.

- All roles (both base- and sub-roles) get the computed here. Subroles - only have selectable slots if their corresponding baseroles do. + All roles (both base and subroles) get the computed here. Subroles + only have selectable slots if their corresponding base roles do.

Each role is assigned a chance that it's distributed. If that chance - fails, this step sets the possible number of players to zero. + fails, this step sets the possible number of players with this role to zero.

Implemented in @@ -2470,9 +2470,9 @@ you want for your server.

  • - Assign forced roles. This is mostly simple; there is some extra logic to - sanely deal with the case where a player was assigned multiple forced - roles. This is not commonly used, but is included for completeness. + Assign forced roles (those that were asked by some external code or addon). + There is also some extra logic to deal with the case where a player was assigned + multiple forced roles. This is not commonly used, but is included for completeness.

  • @@ -2486,22 +2486,22 @@ you want for your server.
  • - For each selectable baserole (in order Traitor, - Innocent, remaining baseroles): + For each selectable base role (in order Traitor, + Innocent, remaining base roles):

    1. - Assign up to the allowed number of players to the baserole. (This - will be detailed later.) + Assign up to the allowed number of players to the base role. (this + will be detailed later)

      Implemented in SelectBaseRolePlayers

    2. - If the baserole is not Innocent, try to "upgrade" players - with that baserole to possible subroles. (This will also be detailed - later.) + If the base role is not Innocent, try to "upgrade" players + with that base role to possible subroles. (this will also be detailed + later)

      Implemented in UpgradeRoles

    3. @@ -2516,7 +2516,7 @@ you want for your server.
    4. - All players with the Innocent baserole have their role + All players with the Innocent base role have their role "upgraded" exactly as in step 5b.

    5. @@ -2531,8 +2531,8 @@ you want for your server.
    6. Role weights for each player are updated according to their final role. - (If the player's final role is a subrole, their corresponding baserole - is also updated.) + (if the player's final role is a subrole, their corresponding base role + is also updated)

    7. @@ -2542,20 +2542,21 @@ you want for your server. Role Layering (a.k.a. roleselection.GetSelectableRolesList) -

      Role layering is the most controllable part of role selection, and historically the worst explained. In short, role layering +

      Role layering is the most controllable part of role distribution, and +historically the worst explained. In short, role layering determines what roles can be distributed, but NOT how.

      The algorithm is as follows:

      1. -

        For each baserole layer configured (as long as there are enough +

        For each base role layer configured (as long as there are enough players that more roles are needed):

        1. Remove all roles in the layer with no available player slots. - (This will remove roles which were previously randomly decided - to not be distributed.) + (this will remove roles which were previously randomly decided + to not be distributed)

        2. @@ -2565,34 +2566,34 @@ determines what roles can be distributed, but NOT how.

        3. - Add the role to the final list of candidate baseroles. + Add the role to the final list of candidate base roles.

      2. -

        Randomly iterate non-layered baseroles. For each such baserole, +

        Randomly iterate non-layered base roles. For each such base role, add the role to the final candidate list.

      3. -

        Modify each candidate baserole's available slots so that the sum is the +

        Modify each candidate base role's available slots so that the sum is the total number of players, preferring candidates added first.

      4. Now, subroles. Evaluate once per selectable subrole (including all - layered and unlayered subroles for all baseroles in the baserole + layered and unlayered subroles for all base roles in the base role candidate list):

        1. -

          Randomly select a baserole candidate.

          +

          Randomly select a base role candidate.

        2. - If there are any layers defined for that baserole: Select a random + If there are any layers defined for that base role: Select a random subrole from the first available layer. Remove the layer.

          - If there are no layers defined for that baserole: Select a random + If there are no layers defined for that base role: Select a random subrole from the unlayered subroles. Remove that subrole from the unlayered list.

          @@ -2602,22 +2603,22 @@ determines what roles can be distributed, but NOT how.

        3. - If the baserole has no more subrole layers or subroles: Remove the - baserole from further consideration (for this loop ONLY. It stays + If the base role has no more subrole layers or subroles: Remove the + base role from further consideration (for this loop ONLY. It stays in the candidate list.)

      5. -

        The baserole and subrole candidate lists now contain the roles which +

        The base role and subrole candidate lists now contain the roles which will be assigned.

      -

      Baserole Selection (a.k.a. SelectBaseRolePlayers)

      +

      Base role Selection (a.k.a. SelectBaseRolePlayers)

      -

      Recall that we assign ALL players to ONE baserole.

      +

      Recall that we assign ALL players to ONE base role.

      As long as there are players to assign, and more available slots to assign:

        @@ -2625,15 +2626,15 @@ determines what roles can be distributed, but NOT how.

        Select a player to assign the role to.

        If role derandomization (see Role Derandomization - section in General Role Settings tab) is set to "baseroles - only" or "both": Select a random player from the available players - weighted by the weight associated with this baserole. (Think of it - as if each player occurs multiple times in the list, according to - the weight.) + section in General Role Settings submenu) is set to "base roles + only" or "base roles AND subroles": Select a random player from the + available ones taking into account the weight associated with this base + role. (think of it as if each player occurs multiple times in the list, + according to the weight)

        If role derandomization is set to "disabled" or "subroles - only": Select a random player from the available players, with equal + only": Select a random player from the available onse, with equal probability.

        @@ -2642,19 +2643,19 @@ determines what roles can be distributed, but NOT how.

        If the selected player has enough karma for the role, there are not enough players to fill all slots, a 1/3 chance passes, or the target - baserole is Innocent: Remove the player from the list of - available players and assign the player the baserole. + base role is Innocent: Remove the player from the list of + available players and assign the player the base role.

      Subrole Selection (a.k.a. UpgradeRoles)

      -

      This is very similar to baserole selection.

      -

      When upgrading roles, ALL subroles associated with a baserole are -processed together. All players with that baserole are handled together.

      +

      This is very similar to base role selection.

      +

      When upgrading roles, ALL subroles associated with a base role are +processed together, and the same so goes to all players with that base role.

      Only subroles that have assignable slots that are not filled are -considered. (This is relevant in the presence of forced subroles.)

      +considered. (this is relevant in the presence of forced subroles)

      As long as there are players to assign, and more subroles which are assignable:

      @@ -2663,12 +2664,12 @@ considered. (This is relevant in the presence of forced subroles.)

      Select a player to assign the role to.

      If role derandomization is set to "subroles only" or - "both": Select a random player from the available players weighted - by the weight associated with this baserole. + "base roles AND subroles": Select a random player from the available ones + taking into account the weight associated with this subrole.

      - If role derandomization is set to "disabled" or "baseroles - only": Select a random player from the available players, with equal + If role derandomization is set to "disabled" or "base roles + only": Select a random player from the available ones, with equal probability.

      @@ -2679,7 +2680,7 @@ considered. (This is relevant in the presence of forced subroles.)

      enough players to fill all slots, or a 1/3 chance passes (this is the same condition as above, and in the code, is a shared function): Remove the player from the list of available players and assign the player the - subrole. If the subrole has had all available slots filled, remote it + subrole. If the subrole has had all available slots filled, remove it from consideration.

      @@ -2700,8 +2701,8 @@ L.help_roleinspect = [[When this is enabled, information about the decisions mad This information is only ever available for the last round which was started on this map with the option enabled. -Must be enabled when role selection happens (when the round starts) to take effect.]] -L.label_roleinspect_enable = "Enable capturing role selection inspection information" +Must be enabled when role distribution happens (when the round starts) to take effect.]] +L.label_roleinspect_enable = "Enable capturing role distribution inspection information" L.label_roleinspect_no_data = "No role inspection data is available." L.help_roleinspect_unknown_stage = "Unknown stage when rendering UI. Please open an issue." @@ -2733,24 +2734,24 @@ L.roleinspect_reason_passed_d_consider_s_preselect = "All requirements are met a L.roleinspect_reason_not_selectable_d_no_consider_s_preselect = "The role is not selectable." L.roleinspect_reason_not_enabled_d_no_consider_s_preselect = "The role is not enabled." L.roleinspect_reason_role_chance_d_no_consider_s_preselect = "The random check for whether the role should appear failed." -L.roleinspect_reason_no_players_d_no_consider_s_preselect = "There are not enough players for this role to spawn." -L.roleinspect_reason_role_decision_d_no_consider_s_preselect = "The role implementation decided it was not selectable, and provided no more detailed information." +L.roleinspect_reason_no_players_d_no_consider_s_preselect = "There are not enough players for this role to be considered." +L.roleinspect_reason_role_decision_d_no_consider_s_preselect = "The role distribution decided it was not selectable, and provided no more detailed information." -- ROLEINSPECT_STAGE_LAYERING L.header_roleinspect_stage_layering = "Stage 2: Layering" L.help_roleinspect_stage_layering = [[ This stage distributes candidate roles among player slots. This is also where Role Layering is applied. -The layers shown here will be different than thoes configured: +The layers shown here will be different than those configured: - Roles that did not pass the previous stage are not shown - Layers with no candidate roles are not shown (and layers are renumbered) Hover over each role for details about that role. Max roles: {maxRoles} -Max baseroles: {maxBaseroles}]] +Max base roles: {maxBaseroles}]] L.header_inspect_layers_baseroles = "Base role layers" -L.header_inspect_layers_subroles = "{baserole} sub-role layers" +L.header_inspect_layers_subroles = "{baserole} subrole layers" L.tooltip_layering_role_desc = [[ Role: {name} Decision: {decision} @@ -2758,11 +2759,11 @@ Reason: {reason} # of Players: {finalCount}]] L.header_inspect_layers_order = "Subrole selection order" L.help_inspect_layers_order = [[ -When selecting available subroles, first a baserole is selected (shown as the large icon). Then, a subrole is selected according to layering (shown as the small icon). +When selecting available subroles, first a base role is selected (shown as the large icon). Then, a subrole is selected according to layering (shown as the small icon). -This is important because there is a maximum number of roles (either explicitly, or because of playercount). Once player slots or role slots are filled, assignment stops and all remaining roles are not used.]] +This is important because there is a maximum number of roles (either explicitly, or because of player count). Once player slots or role slots are filled, assignment stops and all remaining roles are not used.]] L.tooltip_inspect_layers_baserole = "Base role: {name}" -L.tooltip_inspect_layers_subrole = "Selected sub role: {name}" +L.tooltip_inspect_layers_subrole = "Selected subrole: {name}" -- Reasons L.roleinspect_reason_forced_d_consider_s_layering = L.roleinspect_reason_forced_d_consider_s_preselect @@ -2773,19 +2774,19 @@ L.roleinspect_reason_no_players_d_no_consider_s_layering = "Other roles filled a L.roleinspect_reason_too_many_roles_d_no_consider_s_layering = "Other roles filled all role slots." -- ROLEINSPECT_STAGE_BASEROLES -L.header_roleinspect_stage_baseroles = "Stage 4: Baserole Assignment" +L.header_roleinspect_stage_baseroles = "Stage 3: Base role Assignment" L.help_roleinspect_stage_baseroles = [[ -This stage assigns baseroles to players. If derandomization is enabled, players' role weights are considered, and displayed below in a chart. +This stage assigns base roles to players. If derandomization is enabled, players' role weights are considered, and displayed below in a chart. -Each section shows all players which were considered for that baserole, with the highlighted ones being the ones actually selected.]] +Each section shows all players which were considered for that base role, with the highlighted ones being the ones actually selected.]] L.header_inspect_baseroles_order = "{name} assignment" -- ROLEINSPECT_STAGE_SUBROLES -L.header_roleinspect_stage_subroles = "Stage 5: Subrole Upgrading" +L.header_roleinspect_stage_subroles = "Stage 4: Subrole Upgrading" L.help_roleinspect_stage_subroles = [[ -This stage upgrades players to subroles, from previously assigned baseroles. +This stage upgrades players to subroles, from previously assigned base roles. -Information is presented as in the baseroles stage above. Each baserole is upgraded separately.]] +Information is presented as in the base roles stage above. Each base role is upgraded separately.]] L.header_inspect_upgrade_order = "Upgrading from {name}" L.header_inspect_subroles_order = "Subrole {name}" L.label_inspect_no_subroles = "No subroles were selectable." diff --git a/lua/terrortown/lang/ru.lua b/lua/terrortown/lang/ru.lua index ee26d8ca9..07231d073 100644 --- a/lua/terrortown/lang/ru.lua +++ b/lua/terrortown/lang/ru.lua @@ -41,8 +41,8 @@ L.win_showreport = "Давайте посмотрим на результаты L.limit_round = "Достигнут лимит раундов. Следующая карта скоро загрузится." L.limit_time = "Достигнут лимит времени. Следующая карта скоро загрузится." L.limit_left_session_mode_1 = "До смены карты осталось {num} раунд (а/ов) или {time} мин." ---L.limit_left_session_mode_2 = "{time} minutes remaining before the map changes." ---L.limit_left_session_mode_3 = "{num} round(s) remaining before the map changes." +L.limit_left_session_mode_2 = "Осталось времени до смены карты: {time}." +L.limit_left_session_mode_3 = "Осталось раундов до смены карты: {num}." -- Credit awards L.credit_all = "Ваша команда награждена кредитами ({num}) за ваши действия." @@ -116,7 +116,7 @@ L.radar_menutitle = "Управление радаром" L.radar_not_owned = "У вас нет радара!" L.radar_scan = "Поиск" L.radar_auto = "Автоповтор поиска." -L.radar_help = "Результаты поиска показываются в течение {num} сек., после чего радар перезарядиться и может быть использовать вновь." +L.radar_help = "Результаты поиска показываются в течение {num} сек., после чего радар перезарядится и может быть использовать вновь." L.radar_charging = "Радар всё ещё заряжается!" -- Transfer tab in equipment menu @@ -173,8 +173,8 @@ L.quick_corpse_id = "{player} (тело)" L.sb_playing = "Вы играете на..." L.sb_mapchange_mode_0 = "Лимиты сеанса выключены." L.sb_mapchange_mode_1 = "Карта сменится через {num} раунд (а/ов) или {time}" ---L.sb_mapchange_mode_2 = "Map changes in {time}" ---L.sb_mapchange_mode_3 = "Map changes in {num} rounds" +L.sb_mapchange_mode_2 = "Карта сменится через {time}" +L.sb_mapchange_mode_3 = "Карта сменится через {num} раунд (а/ов)" L.sb_mia = "Пропавшие без вести" L.sb_confirmed = "Мёртвые" @@ -485,7 +485,7 @@ L.info_popup_traitor = [[ Нажмите {menukey}, чтобы купить особое снаряжение!]] -- Various other text -L.name_kick = "Игрок был автоматически выгнан за смену имени во время раунда." +L.name_kick = "Игрок автоматически выгнан за смену имени во время раунда." L.idle_popup = [[ Вы бездействовали в течение {num} сек., в результате чего были переведены в режим наблюдения. Пока вы в этом режиме, вы не возродитесь, когда начнётся раунд. @@ -633,10 +633,10 @@ L.aw_fst4_title = "Первый взрыв" L.aw_fst4_text = "совершил первый взрыв в пользу невиновных террористов, взорвав предателя." L.aw_all1_title = "Самый смертоносный среди равных" -L.aw_all1_text = "был ответственен за каждое убийство, совершенное невинными." +L.aw_all1_text = "был ответственен за каждое убийство, совершённое невинными." L.aw_all2_title = "Одинокий волк" -L.aw_all2_text = "был ответственен за каждое убийство, совершенное предателями." +L.aw_all2_text = "был ответственен за каждое убийство, совершённое предателями." L.aw_nkt1_title = "Один готов, босс!" L.aw_nkt1_text = "сумел убить одного невиновного. Мило!" @@ -1167,7 +1167,7 @@ L.tooltip_karma_gained = "Изменение кармы в этом раунде L.tooltip_score_gained = "Изменение счёта в этом раунде:" L.tooltip_roles_time = "Изменение роли в этом раунде:" ---L.tooltip_finish_score_win = "Win: {score}" +L.tooltip_finish_score_win = "Победа: {score}" L.tooltip_finish_score_alive_teammates = "Живые товарищи: {score}" L.tooltip_finish_score_alive_all = "Живые игроки: {score}" L.tooltip_finish_score_timelimit = "Истечение времени: {score}" @@ -1175,7 +1175,7 @@ L.tooltip_finish_score_dead_enemies = "Мёртвые противники: {sco L.tooltip_kill_score = "Убийство: {score}" L.tooltip_bodyfound_score = "Нахождение тела: {score}" ---L.finish_score_win = "Win:" +L.finish_score_win = "Победа:" L.finish_score_alive_teammates = "Живые товарищи:" L.finish_score_alive_all = "Живые игроки:" L.finish_score_timelimit = "Истечение времени:" @@ -1314,8 +1314,14 @@ L.header_rolelayering_role = "Расслоение: {role}" L.header_rolelayering_baserole = "Расслоение базовых ролей" L.submenu_roles_rolelayering_title = "Расслоение ролей" L.header_rolelayering_info = "Информация о расслоении ролей" -L.help_rolelayering_roleselection = [[Процесс распределения ролей делится на два этапа. В первом этапе распределяются базовые роли: невиновный, предатель и перечисленные в поле «Расслоение базовых ролей» ниже. Второй этап используется для улучшения этих базовых ролей в подроли.]] -L.help_rolelayering_layers = [[С каждого слоя выбирается только одна роль. Сперва распределяются роли из пользовательских слоёв, начиная с первого и заканчивая последним, либо до момента невозможности дальнейших улучшений. Что бы не произошло первым, если ещё остались ячейки для улучшений, нерасслоенные роли также будут распределены.]] +L.help_rolelayering_roleselection = [[ +Процесс распределения ролей делится на два этапа. В первом этапе распределяются базовые роли: невиновный, предатель и перечисленные в поле «Расслоение базовых ролей» ниже. Второй этап используется для улучшения этих базовых ролей в подроли. + +Подробная информация доступа в подменю «Обзор ролей».]] +L.help_rolelayering_layers = [[ +После определения назначаемых ролей в соответствии с консольными переменными ролей (включая случайный шанс что роль вообще будет выбрана!), одна роль из каждого слоя (если они имеются) выбирается для распределения. После обработки слоёв, выбираются бесслойные роли случайным образом. Распределение ролей останавливается, как только заканчиваются необходимые для заполнения слоты. + +Роли, которые не рассматриваются из-за требований консольных переменных, не будут распределены.]] L.scoreboard_voice_tooltip = "Прокрутите, чтобы изменить громкость" -- 2021-06-15 @@ -1335,7 +1341,7 @@ L.spec_about_to_revive = "Наблюдение ограничено во вре L.spawneditor_name = "Редактор точек появления" L.spawneditor_desc = "Используется для размещения точек появления оружия, патронов и игроков в мире. Может быть использовано только суперадминистратором." -L.spawneditor_place = "Разместить точку" +L.spawneditor_place = "Поместить точку" L.spawneditor_remove = "Удалить точку" L.spawneditor_change = "Изменить тип точки (удерживайте [SHIFT], чтобы обратить)" L.spawneditor_ammo_edit = "Удерживайте: изменить количество автопоявляемых боеприпасов на точках оружия" @@ -1413,7 +1419,7 @@ L.equipmenteditor_name_spawn_type = "Выберите тип точки появ L.equipmenteditor_desc_auto_spawnable = [[ Система появления TTT2 позволяет каждому оружию появиться в мире. По умолчанию, появляется только оружие, отмеченное как «AutoSpawnable» создателем, однако это можно изменить в этом меню. -Большая часть снаряжения по умолчанию назначена на «Точка оружия: особое». Это значит, что снаряжение появляется только на случайных точках. Тем не менее в мире можно разместить точку появления особого оружия или изменить тип здесь для появления на других существующих точках.]] +Большая часть снаряжения по умолчанию назначена на «Точка оружия: особое». Это значит, что снаряжение появляется только на случайных точках. Тем не менее в мире можно разместить точки появления особого оружия или изменить тип здесь для появления на других существующих точках.]] L.pickup_error_inv_cached = "Сейчас вам нельзя это подобрать, поскольку ваш инвентарь кэширован." @@ -2065,9 +2071,9 @@ L.newton_help_secondary = "Заряженный отталкивающий вы L.vis_no_pickup = "Только публичная полицейская роль может подобрать Визуализатор." L.newton_force = "МОЩНОСТЬ" L.defuser_help_primary = "Обезвредить указанную C4" -L.radio_help_primary = "Разместить Радио" +L.radio_help_primary = "Поместить Радио" L.radio_help_secondary = "Прикрепить к поверхности" -L.hstation_help_primary = "Разместить Лечебную станцию" +L.hstation_help_primary = "Поместить Лечебную станцию" L.flaregun_help_primary = "Сжечь тело/объект" -- 2023-12-14 @@ -2166,7 +2172,7 @@ L.magneto_stick_help_carry_prop_release = "Бросить объект" L.magneto_stick_help_carry_prop_drop = "Положить объект" -- 2024-01-27 -L.decoy_help_primary = "Разместить Приманку" +L.decoy_help_primary = "Поместить Приманку" L.decoy_help_secondary = "Прикрепить Приманку к поверхности" @@ -2301,10 +2307,10 @@ L.help_round_restart_reset = [[ L.label_button_level_reset = "сбросить уровень" L.loadingscreen_round_restart_title = "Начинается новый раунд" ---L.loadingscreen_round_restart_subtitle_limits_mode_0 = "you're playing on {map}" ---L.loadingscreen_round_restart_subtitle_limits_mode_1 = "you're playing on {map} for another {rounds} round(s) or {time}" ---L.loadingscreen_round_restart_subtitle_limits_mode_2 = "you're playing on {map} for {time}" ---L.loadingscreen_round_restart_subtitle_limits_mode_3 = "you're playing on {map} for another {rounds} round(s)" +L.loadingscreen_round_restart_subtitle_limits_mode_0 = "вы играете на карте {map}" +L.loadingscreen_round_restart_subtitle_limits_mode_1 = "вы играете на карте {map}, которая продлится ещё {rounds} раунд (а/ов) или {time}" +L.loadingscreen_round_restart_subtitle_limits_mode_2 = "вы играете на карте {map}, которая продлится ещё {time}" +L.loadingscreen_round_restart_subtitle_limits_mode_3 = "вы играете на карте {map}, которая продлится ещё {rounds} раунд (а/ов)" -- 2024-06-23 L.header_roles_derandomize = "Дерандомизация ролей" @@ -2363,7 +2369,7 @@ L.help_enable_loadingscreen_server = [[ Минимальное время отображение сделано для возможности прочтения советов игроком. Если время перезапуска карты занимает больше минимального времени, то загрузочный экран будет отображаться столько, сколько потребуется. Как правило, ожидаемое время перезапуска карты составляет от 0,5 до 1 секунды.]] -L.label_enable_loadingscreen_server = "Включить загрузочный экран на сервере" +L.label_enable_loadingscreen_server = "Включить загрузочный экран на сервере." L.label_loadingscreen_min_duration = "Минимальное время отображения загрузочного экрана" -- 2024-09-18 @@ -2375,430 +2381,431 @@ L.vehicle_enter = "[{usekey}] Сесть в транспорт." L.corpse_hint_without_confirm = "[{usekey}] Осмотреть тело." -- 2025-01-05 ---L.help_session_limits_mode = [[ ---There are three different session limit modes you can choose from: --- ---mode 0: No session limits. TTT2 will not end the session and will not trigger a map change. --- ---mode 1: Default TTT2 mode. A map change will trigger if either the session time or session round count runs out. --- ---mode 2: Only time limit. A map change will only trigger if the session time runs out. --- ---mode 3: Only round limit. A map change will only trigger if the session round count runs out.]] ---L.label_session_limits_mode = "Set session limit mode" ---L.choice_session_limits_mode_0 = "mode 0: no session limits" ---L.choice_session_limits_mode_1 = "mode 1: time and round limit" ---L.choice_session_limits_mode_2 = "mode 2: only time limit" ---L.choice_session_limits_mode_3 = "mode 3: only round limit" +L.help_session_limits_mode = [[ +Есть четыре разных режима лимитирования сеанса: + +режим 0: без лимитов сеанса. TTT2 не будет завершать сеанс и не будет вызывать смену карты. + +режим 1: стандартный режим TTT2. Смена карты будет вызвана истечением времени или количества раундов. + +режим 2: только лимит времени. Смена карты будет вызвана только истечением времени. + +режим 3: только лимит раундов. Смена карты будет вызвана только истечением количества раундов.]] +L.label_session_limits_mode = "Выбор режима лимитирования сеанса" +L.choice_session_limits_mode_0 = "режим 0: без лимитов сеанса" +L.choice_session_limits_mode_1 = "режим 1: по времени и количеству раундов" +L.choice_session_limits_mode_2 = "режим 2: только лимит времени" +L.choice_session_limits_mode_3 = "режим 3: только лимит раундов" -- 2024-12-30 ---L.searchbar_roles_placeholder = "Search roles..." ---L.label_menu_search_no_items = "No items matched your search." - ---L.submenu_roles_overview_title = "Roles Overview (READ ME)" - --- Is there a way to ahve some sort of external file that's possibly-localized? ---L.roles_overview_html = [[ ---

      Overview

      --- ---One of TTT2's core mechanics is the role. They control what your ---goals are, who your teammates are, and what you can do. The way that they ---are distributed to players is thus very important. The role distribution ---system is very complicated, and the menus in this tab control almost every ---aspect of that system. For many of the options available, understanding how ---the system as a whole works can be crucial to being able to make the changes ---you want for your server. --- ---

      Terminology

      --- ---
        ---
      • Role — The role assigned to a player at round start, ---e.g. Traitor, Innocent, Necromancer, etc.
      • ---
      • Base role (or baserole) — A role ---selected first, that acts as a kind of high-level template for the final ---role a player will recieve. Base roles can be final roles. Ex. ---Innocent, Traitor, Pirate
      • ---
      • Sub role (or subrole) — A role assigned as a ---refinement of a base role. Each possible sub role is ---associated with a base role, such that a player must have been ---assigned the appropriate base role for them to end up with a ---sub role. Ex. Detective (I-subrole), Hitman ---(T-subrole), Survivalist (I-subrole), etc.
      • ---
      --- ---

      The Algorithm

      --- ---Implementation is roleselection.SelectRoles --- ---
        --- ---
      1. ---

        ---Determine the number of players that can be given each role. ---Innocent and Traitor always have available slots. ---

        ---

        ---All roles (both base- and sub-roles) get the computed here. Subroles ---only have selectable slots if their corresponding baseroles do. ---

        ---

        ---Each role is assigned a chance that it's distributed. If that chance ---fails, this step sets the possible number of players to zero. ---

        ---

        ---Implemented in ---roleselection.GetAllSelectableRolesList ---

        ---
      2. --- ---
      3. ---

        ---Select the roles that will actually be distributed, limited by the ---layer configuration and configured maximum number of roles. This process ---is sufficiently complicated to be worthy of its own section; details ---are in the next section. ---

        ---

        ---Implemented in ---roleselection.GetSelectableRolesList ---

        ---
      4. --- ---
      5. ---

        ---Assign forced roles. This is mostly simple; there is some extra logic to ---sanely deal with the case where a player was assigned multiple forced ---roles. This is not commonly used, but is included for completeness. ---

        ---
      6. --- ---
      7. ---

        ---Randomly shuffle the list of players. Though this likely doesn't ---meaningfully impact the role distribution, it guarantees that there is no ---dependence on player join order. ---

        ---
      8. --- ---
      9. ---

        ---For each selectable baserole (in order Traitor, ---Innocent, remaining baseroles): ---

        ---
          ---
        1. ---

          ---Assign up to the allowed number of players to the baserole. (This ---will be detailed later.) ---

          ---

          Implemented in SelectBaseRolePlayers

          ---
        2. ---
        3. ---

          ---If the baserole is not Innocent, try to "upgrade" players ---with that baserole to possible subroles. (This will also be detailed ---later.) ---

          ---

          Implemented in UpgradeRoles

          ---
        4. ---
        ---
      10. --- ---
      11. ---

        ---All players not yet assigned a role are assigned Innocent. ---

        ---
      12. --- ---
      13. ---

        ---All players with the Innocent baserole have their role ---"upgraded" exactly as in step 5b. ---

        ---
      14. --- ---
      15. ---

        ---The hook TTT2ModifyFinalRoles is called to allow other ---addons to affect final roles. ---

        ---
      16. --- ---
      17. ---

        ---Role weights for each player are updated according to their final role. ---(If the player's final role is a subrole, their corresponding baserole ---is also updated.) ---

        ---
      18. --- ---
      --- ---

      ---Role Layering (a.k.a. roleselection.GetSelectableRolesList) ---

      --- ---

      Role layering is the most controllable part of role selection, and historically the worst explained. In short, role layering ---determines what roles can be distributed, but NOT how.

      --- ---

      The algorithm is as follows:

      ---
        ---
      1. ---

        For each baserole layer configured (as long as there are enough ---players that more roles are needed):

        ---
          ---
        1. ---

          ---Remove all roles in the layer with no available player slots. ---(This will remove roles which were previously randomly decided ---to not be distributed.) ---

          ---
        2. ---
        3. ---

          ---Select one role from what's left of the layer at random. ---

          ---
        4. ---
        5. ---

          ---Add the role to the final list of candidate baseroles. ---

          ---
        6. ---
        ---
      2. ---
      3. ---

        Randomly iterate non-layered baseroles. For each such baserole, ---add the role to the final candidate list.

        ---
      4. ---
      5. ---

        Modify each candidate baserole's available slots so that the sum is the ---total number of players, preferring candidates added first.

        ---
      6. ---
      7. ---

        Now, subroles. Evaluate once per selectable subrole (including all ---layered and unlayered subroles for all baseroles in the baserole ---candidate list):

        ---
          ---
        1. ---

          Randomly select a baserole candidate.

          ---
        2. ---
        3. ---

          ---If there are any layers defined for that baserole: Select a random ---subrole from the first available layer. Remove the layer. ---

          ---

          ---If there are no layers defined for that baserole: Select a random ---subrole from the unlayered subroles. Remove that subrole from the ---unlayered list. ---

          ---
        4. ---
        5. ---

          Add the selected subrole to the final candidate list.

          ---
        6. ---
        7. ---

          ---If the baserole has no more subrole layers or subroles: Remove the ---baserole from further consideration (for this loop ONLY. It stays ---in the candidate list.) ---

          ---
        8. ---
        ---
      8. ---
      9. ---

        The baserole and subrole candidate lists now contain the roles which ---will be assigned.

        ---
      10. ---
      --- ---

      Baserole Selection (a.k.a. SelectBaseRolePlayers)

      --- ---

      Recall that we assign ALL players to ONE baserole.

      ---

      As long as there are players to assign, and more available slots to ---assign:

      ---
        ---
      1. ---

        Select a player to assign the role to.

        ---

        ---If role derandomization (see Role Derandomization ---section in General Role Settings tab) is set to "baseroles ---only" or "both": Select a random player from the available players ---weighted by the weight associated with this baserole. (Think of it ---as if each player occurs multiple times in the list, according to ---the weight.) ---

        ---

        ---If role derandomization is set to "disabled" or "subroles ---only": Select a random player from the available players, with equal ---probability. ---

        ---
      2. --- ---
      3. ---

        ---If the selected player has enough karma for the role, there are not ---enough players to fill all slots, a 1/3 chance passes, or the target ---baserole is Innocent: Remove the player from the list of ---available players and assign the player the baserole. ---

        ---
      4. ---
      --- ---

      Subrole Selection (a.k.a. UpgradeRoles)

      --- ---

      This is very similar to baserole selection.

      ---

      When upgrading roles, ALL subroles associated with a baserole are ---processed together. All players with that baserole are handled together.

      ---

      Only subroles that have assignable slots that are not filled are ---considered. (This is relevant in the presence of forced subroles.)

      --- ---

      As long as there are players to assign, and more subroles which ---are assignable:

      ---
        ---
      1. ---

        Select a player to assign the role to.

        ---

        ---If role derandomization is set to "subroles only" or ---"both": Select a random player from the available players weighted ---by the weight associated with this baserole. ---

        ---

        ---If role derandomization is set to "disabled" or "baseroles ---only": Select a random player from the available players, with equal ---probability. ---

        ---
      2. --- ---
      3. ---

        ---If the selected player has enough karma for the role, there are not ---enough players to fill all slots, or a 1/3 chance passes (this is the ---same condition as above, and in the code, is a shared function): Remove ---the player from the list of available players and assign the player the ---subrole. If the subrole has had all available slots filled, remote it ---from consideration. ---

        ---
      4. ---
      --- ---]] +L.searchbar_roles_placeholder = "Поиск ролей..." +L.label_menu_search_no_items = "Не найдено подходящих элементов." + +L.submenu_roles_overview_title = "Обзор ролей (ПРОЧТИ)" + +-- Is there a way to have some sort of external file that's possibly-localized? +L.roles_overview_html = [[ +

      Обзор

      + +Одной из ключевых механик TTT2 являются роли. Они определяют, какие +у вас цели, товарищи и что можете сделать. Таким образом очень важно то, как +они распределяются. Система распределения ролей очень сложна, а подменю в +этом меню контролируют почти все аспекты этой системы. Для многих доступных +опций понимание того, как в целом работает система распределения ролей, +может иметь решающее значение при внесения желаемых изменений для вашего +сервера. + +

      Терминология

      + +
        +
      • Роль — роль, назначаемая игроку в начале раунда, например, + предатель, невиновный, некромант, и пр.
      • +
      • Базовая рольроль, выбираемая первоочерёдно + и выступающая как высокоуровневый шаблон для итоговой роли, которую + получит игрок. Базовые роли могут быть итоговыми ролями. Например: + невиновный, предатель, пират.
      • +
      • Подрольроль, назначаемая как улучшение + для базовой роли. Все возможные подроли связаны + с базовой ролью, поэтому игрок должен быть назначен на + подходящую базовую роль, чтобы тот мог получить подроль. + Например: Детектив (подроль невиновных), наёмник + (подроль предателей), выживальщик (подроль невиновных) и пр.
      • +
      + +

      Алгоритм

      + +Реализация заключается в roleselection.SelectRoles + +
        + +
      1. +

        + Определяется количество игроков, которым может быть дана каждая роль. + Невиновный и предатель всегда имеют свободные слоты. +

        +

        + Все роли (как базовые, так и подроли) высчитываются здесь. Подроли + имеют выбираемые слоты только при наличии слотов у связанной базовой роли. +

        +

        + Каждой роли назначается шанс её распределения. Если этот шанс оканчивается + неудачей, этот шаг обнуляет возможное количество игроков с этой ролью. +

        +

        + Реализовано в + roleselection.GetAllSelectableRolesList +

        +
      2. + +
      3. +

        + Выбираются роли, которые в итоге будут распределены, в соответствии с + настройками расслоения и максимальным количеством ролей. Этот процесс + достаточно сложен, чтобы удостоится собственного раздела: подробности + в следующем разделе. +

        +

        + Реализовано в + roleselection.GetSelectableRolesList +

        +
      4. + +
      5. +

        + Назначаются принудительные роли (те, которые были запрошены внешним кодом или дополнением). + Также есть некоторая дополнительная логика для решения случая, когда игроку назначено + несколько принудительных ролей. Это обычно не используется, но включено для полноты картины. +

        +
      6. + +
      7. +

        + Список игроков перемешивается случайным образом. Хотя это, скорее всего, не + окажет значительного влияния на распределение ролей, но гарантирует отсутствие + зависимости от порядка, в котором подключились игроки. +

        +
      8. + +
      9. +

        + Для каждой выбираемой базовой роли (в порядке: предатель, + невиновный, а затем остальные): +

        +
          +
        1. +

          + назначается допустимое количество игроков для этой роли + (подробности будут дальше); +

          +

          Реализовано в SelectBaseRolePlayers

          +
        2. +
        3. +

          + если базовая роль не невиновный, идёт попытка «улучшить» игроков + с этой базовой ролью до возможных подролей (подробности тоже будут + дальше). +

          +

          Реализовано в UpgradeRoles

          +
        4. +
        +
      10. + +
      11. +

        + Все игроки. которым ещё не назначена роль, назначаются на роль невиновного. +

        +
      12. + +
      13. +

        + Все игроки с базовой ролью невиновного «улучшаются» так же, как описано в + шаге 5b. +

        +
      14. + +
      15. +

        + Вызывается хук TTT2ModifyFinalRoles для возможности другим дополнениям + повлиять на итоговые роли. +

        +
      16. + +
      17. +

        + Вес ролей для каждого игрока обновляется в соответствии с его итоговой ролью + (если итоговой ролью игрока стала подроль, то соответствующая базовая роль + тоже обновляется). +

        +
      18. + +
      + +

      + Расслоение ролей (или же roleselection.GetSelectableRolesList) +

      + +

      Расслоение ролей — это наиболее контролируемая часть процесса распределения +ролей и исторически наихудшая из объяснённых. Вкратце, расслоение ролей определяет +какие роли могут быть распределены, но НЕ как это будет происходить.

      + +

      Алгоритм таков:

      +
        +
      1. +

        Для каждого настроенного слоя базовых ролей (до тех пор, пока есть достаточное + количество игроков, необходимое для большего количества ролей):

        +
          +
        1. +

          + удаляются все роли из слоя, в котором нет доступного количества игроков + (это удалит те роли, которые ранее были случайным образом определены как + нераспределяемые); +

          +
        2. +
        3. +

          + случайным образом выбирается одна оставшаяся роль из слоя; +

          +
        4. +
        5. +

          + роль добавляется к итоговому списку базовых ролей-кандидатов. +

          +
        6. +
        +
      2. +
      3. +

        Случайным образом перебираются базовые роли без слоя. Для каждой подобной базовой роли + добавляется роль в итоговый список кандидатов.

        +
      4. +
      5. +

        Изменяется доступное количество слотов базовой роли-кандидата таким образом, чтобы сумма + равнялась общему количеству игроков, отдавая предпочтение кандидатам, которые добавлены первыми.

        +
      6. +
      7. +

        Теперь подроли. Оценивается каждая выбираемая подроль по отдельности + (включая все подроли с или без слоёв для всех базовых ролей из списка + базовых ролей-кандидатов):

        +
          +
        1. +

          случайным образом выбирается базовая роль-кандидат;

          +
        2. +
        3. +

          + если для этой базовой роли определены какие-либо слои, то выбирается + случайная подроль из первого доступного слоя. После удаляется слой. +

          +

          + Если для базовой роли не было назначено слоя, то выбирается случайная + подроль из подролей без слоёв. После эта подроль удаляется из бесслойного + списка; +

          +
        4. +
        5. +

          в итоговый список кандидатов добавляется выбранная подроль;

          +
        6. +
        7. +

          + если у базовой роли больше нет слоёв подролей или самих подролей, то базовая + роль больше не рассматривается (относится ТОЛЬКО к этому циклу. Она остаётся в + списке кандидатов.) +

          +
        8. +
        +
      8. +
      9. +

        Списки базовых ролей-кандидатов и подролей-кандидатов теперь содержат роли, + которые будут назначены.

        +
      10. +
      + +

      Выбор базовой роли (или же SelectBaseRolePlayers)

      + +

      Напомним, что мы назначаем ВСЕМ игрокам ОДНУ базовую роль.

      +

      До тех пор, пока есть игроки, которых можно назначить, и доступные слоты + для назначения:

      +
        +
      1. +

        Выбирается игрок, которому будет назначена роль.

        +

        + если дерандомизация ролей (см. раздел «Дерандомизация ролей» + в подменю «Общие настройки ролей») установлена на «только базовые + роли» или «базовые роли И подроли», выбирается случайный игрок из доступных, + учитывая вес, связанный с этой базовой ролью (представьте, как если бы + каждый игрок встречался в списке несколько раз, в зависимости от значения + их веса); +

        +

        + если дерандомизация ролей установлена на «выключена» или «только + подроли», выбирается случайный игрок из доступных, где у каждого одинаковые + шансы. +

        +
      2. + +
      3. +

        + Если у выбранного игрока достаточно кармы для роли, недостаточно игроков + для заполнения всех слотов, выпадает шанс 1:3 или базовой ролью является + невиновный, игрок удаляется из списка доступных игроков и + назначается на базовую роль. +

        +
      4. +
      + +

      Выбор подроли (или же UpgradeRoles)

      + +

      Этот процесс очень схож с выбором базовой роли.

      +

      Когда улучшаются роли, ВСЕ подроли, связанные с базовой ролью, обрабатываются +совместно, и то же самое касается всех игроков с этой базовой ролью.

      +

      Рассматриваются только те подроли, для которых есть незаполненные назначаемые +слоты (это актуально при наличии принудительных подролей).

      + +

      До тех пор, пока есть игроки, которых можно назначить, и подроли, доступные + для назначения:

      +
        +
      1. +

        Выбирается игрок, которому будет назначена роль.

        +

        + если дерандомизация ролей установлена на «только подроли» или + «базовые роли И подроли», выбирается случайный игрок из доступных, + учитывая вес, связанный с этой подролью. +

        +

        + если дерандомизация ролей установлена на «выключена» или «только + базовые роли», выбирается случайный игрок из доступных, где у каждого + одинаковые шансы. +

        +
      2. + +
      3. +

        + Если у выбранного игрока достаточно кармы для роли, недостаточно игроков + для заполнения всех слотов или выпадает шанс 1:3 (это такое же условие, + что и выше, и в коде оно является общей функцией), игрок удаляется из + списка доступных игроков и назначается на подроль. Если у подроли + заполняются все доступные слоты, то подроль больше не + рассматривается. +

        +
      4. +
      + +]] -- 2025-01-07 ---L.graph_sort_mode_none = "No Sorting" ---L.graph_sort_mode_highlight_order = "Highlighted First" ---L.graph_sort_mode_value_asc = "Ascending" ---L.graph_sort_mode_value_desc = "Descending" ---L.graph_sort_mode_player_name = "Player Name" - ---L.submenu_roles_roleinspect = "Role Distribution Inspection" ---L.header_roleinspect_info = "Role Distribution Inspection" ---L.help_roleinspect = [[When this is enabled, information about the decisions made during role distribution is collected. If any such information is available, it is displayed on this page. --- ---This information is only ever available for the last round which was started on this map with the option enabled. --- ---Must be enabled when role selection happens (when the round starts) to take effect.]] ---L.label_roleinspect_enable = "Enable capturing role selection inspection information" ---L.label_roleinspect_no_data = "No role inspection data is available." ---L.help_roleinspect_unknown_stage = "Unknown stage when rendering UI. Please open an issue." +L.graph_sort_mode_none = "Без сортировки" +L.graph_sort_mode_highlight_order = "Сперва выделенные" +L.graph_sort_mode_value_asc = "По возрастанию" +L.graph_sort_mode_value_desc = "По убыванию" +L.graph_sort_mode_player_name = "По имени игроков" + +L.submenu_roles_roleinspect = "Проверка распределения ролей" +L.header_roleinspect_info = "Проверка распределения ролей" +L.help_roleinspect = [[Если включено, собирается информация о принятых решениях при распределении ролей. Если подобная информация доступна, она отобразится на этой странице. + +Эта информация доступна только за последний раунд, начавшийся на этой карте с включённой настройкой. + +Для работы должно быть включено, когда происходит распределение ролей (когда начинается раунд).]] +L.label_roleinspect_enable = "Включить сбор информации о проверке распределения ролей." +L.label_roleinspect_no_data = "Нет данных о проверке ролей." +L.help_roleinspect_unknown_stage = "Неизвестный этап рендера интерфейса. Пожалуйста, сообщите об ошибке." -- Decisions ---L.roleinspect_decision_none = "No decision was made." ---L.roleinspect_decision_consider = "The role will be considered." ---L.roleinspect_decision_no_consider = "The role will not be considered." ---L.roleinspect_decision_role_assigned = "The role is assigned." ---L.roleinspect_decision_role_not_assigned = "The role is not assigned." +L.roleinspect_decision_none = "Решение не было принято." +L.roleinspect_decision_consider = "Роль будет рассмотрена." +L.roleinspect_decision_no_consider = "Роль не будет рассмотрена." +L.roleinspect_decision_role_assigned = "Роль назначена." +L.roleinspect_decision_role_not_assigned = "Роль не назначена." -- ROLEINSPECT_STAGE_PRESELECT ---L.header_roleinspect_stage_preselect = "Stage 1: Preselection" ---L.help_roleinspect_stage_preselect = [[ ---This stage determines the number of players that can be assigned each role. Roles with 0 possible players are not considered further. --- ---Hover over each role icon for details about that role. --- ---Max players: {maxPlayers}]] ---L.tooltip_preselect_role_desc = [[ ---Role: {name} ---Decision: {decision} ---Reason: {reason} ---# of Players: {finalCount}]] +L.header_roleinspect_stage_preselect = "Этап 1: предвыбор" +L.help_roleinspect_stage_preselect = [[ +Этот этап определяет количество игроков, которым может быть назначена каждая из ролей. Роли с нулевым количеством возможных игроков дальше не рассматриваются. + +Наведите курсор на каждую из ролей для подробностей. + +Максимум игроков: {maxPlayers}]] +L.tooltip_preselect_role_desc = [[ +Роль: {name} +Решение: {decision} +Причина: {reason} +Количество игроков: {finalCount}]] -- Reasons -- REASON_FORCED for a CONSIDER decision in PRESELECT == Role is a builtin ---L.roleinspect_reason_forced_d_consider_s_preselect = "This is a builtin role, and will always be considered." ---L.roleinspect_reason_passed_d_consider_s_preselect = "All requirements are met and all checks passed." ---L.roleinspect_reason_not_selectable_d_no_consider_s_preselect = "The role is not selectable." ---L.roleinspect_reason_not_enabled_d_no_consider_s_preselect = "The role is not enabled." ---L.roleinspect_reason_role_chance_d_no_consider_s_preselect = "The random check for whether the role should appear failed." ---L.roleinspect_reason_no_players_d_no_consider_s_preselect = "There are not enough players for this role to spawn." ---L.roleinspect_reason_role_decision_d_no_consider_s_preselect = "The role implementation decided it was not selectable, and provided no more detailed information." +L.roleinspect_reason_forced_d_consider_s_preselect = "Это встроенная роль, поэтому всегда рассматривается." +L.roleinspect_reason_passed_d_consider_s_preselect = "Все требования соблюдены, а проверки пройдены." +L.roleinspect_reason_not_selectable_d_no_consider_s_preselect = "Эту роль нельзя выбрать." +L.roleinspect_reason_not_enabled_d_no_consider_s_preselect = "Эта роль не включена." +L.roleinspect_reason_role_chance_d_no_consider_s_preselect = "Случайная проверка на возможность появления роли провалилась." +L.roleinspect_reason_no_players_d_no_consider_s_preselect = "Недостаточно игроков для рассмотрения этой роли." +L.roleinspect_reason_role_decision_d_no_consider_s_preselect = "Распределение ролей решило, что роль нельзя выбрать без предоставления дополнительной информации." -- ROLEINSPECT_STAGE_LAYERING ---L.header_roleinspect_stage_layering = "Stage 2: Layering" ---L.help_roleinspect_stage_layering = [[ ---This stage distributes candidate roles among player slots. This is also where Role Layering is applied. --- ---The layers shown here will be different than thoes configured: ---- Roles that did not pass the previous stage are not shown ---- Layers with no candidate roles are not shown (and layers are renumbered) --- ---Hover over each role for details about that role. --- ---Max roles: {maxRoles} ---Max baseroles: {maxBaseroles}]] ---L.header_inspect_layers_baseroles = "Base role layers" ---L.header_inspect_layers_subroles = "{baserole} sub-role layers" ---L.tooltip_layering_role_desc = [[ ---Role: {name} ---Decision: {decision} ---Reason: {reason} ---# of Players: {finalCount}]] ---L.header_inspect_layers_order = "Subrole selection order" ---L.help_inspect_layers_order = [[ ---When selecting available subroles, first a baserole is selected (shown as the large icon). Then, a subrole is selected according to layering (shown as the small icon). --- ---This is important because there is a maximum number of roles (either explicitly, or because of playercount). Once player slots or role slots are filled, assignment stops and all remaining roles are not used.]] ---L.tooltip_inspect_layers_baserole = "Base role: {name}" ---L.tooltip_inspect_layers_subrole = "Selected sub role: {name}" +L.header_roleinspect_stage_layering = "Этап 2: расслоение" +L.help_roleinspect_stage_layering = [[ +Этот этап распределяет роли-кандидаты между игроками. Также это этап применения расслоения ролей. + +Показанные здесь слои будут отличаться от настроенных: +- не показаны роли, которые не прошли предыдущий этап; +- не показаны слои без ролей-кандидатов (и слои перенумерованы). + +Наведите курсор на каждую из ролей для подробностей. + +Максимум ролей: {maxRoles} +Максимум базовых ролей: {maxBaseroles}]] +L.header_inspect_layers_baseroles = "Слои базовых ролей" +L.header_inspect_layers_subroles = "{baserole}: слои подролей" +L.tooltip_layering_role_desc = [[ +Роль: {name} +Решение: {decision} +Причина: {reason} +Количество игроков: {finalCount}]] +L.header_inspect_layers_order = "Порядок выбора подролей" +L.help_inspect_layers_order = [[ +При выборе доступных подролей сперва выбирается базовая роль (показана в качестве большой иконки). После выбирается подроль в соответствии с расслоением (показана в качестве маленькой иконки). + +Это важно, поскольку у ролей есть количественный максимум (либо явный, либо из-за количества игроков). Как только слоты игроков или слоты ролей заполнены, назначение ролей прекращается и все оставшиеся роли не используются.]] +L.tooltip_inspect_layers_baserole = "Базовая роль: {name}" +L.tooltip_inspect_layers_subrole = "Выбранная подроль: {name}" -- Reasons ---L.roleinspect_reason_layer_d_consider_s_layering = "This is the selected role for this layer." ---L.roleinspect_reason_layer_d_no_consider_s_layering = "Another role from this layer was selected." ---L.roleinspect_reason_not_layered_d_consider_s_layering = "This role was selected after all layers were." ---L.roleinspect_reason_no_players_d_no_consider_s_layering = "Other roles filled all player slots." ---L.roleinspect_reason_too_many_roles_d_no_consider_s_layering = "Other roles filled all role slots." +L.roleinspect_reason_layer_d_consider_s_layering = "Это выбранная роль для этого слоя." +L.roleinspect_reason_layer_d_no_consider_s_layering = "Была выбрана другая роль из этого слоя." +L.roleinspect_reason_not_layered_d_consider_s_layering = "Эта роль была выбрана после распределения всех слоёв." +L.roleinspect_reason_no_players_d_no_consider_s_layering = "Другие роли заполнили все слоты игроков." +L.roleinspect_reason_too_many_roles_d_no_consider_s_layering = "Другие роли заполнили все слоты ролей." -- ROLEINSPECT_STAGE_BASEROLES ---L.header_roleinspect_stage_baseroles = "Stage 4: Baserole Assignment" ---L.help_roleinspect_stage_baseroles = [[ ---This stage assigns baseroles to players. If derandomization is enabled, players' role weights are considered, and displayed below in a chart. --- ---Each section shows all players which were considered for that baserole, with the highlighted ones being the ones actually selected.]] ---L.header_inspect_baseroles_order = "{name} assignment" +L.header_roleinspect_stage_baseroles = "Этап 3: назначение базовых ролей" +L.help_roleinspect_stage_baseroles = [[ +Этот этап распределяет базовые роли игрокам. Если включена дерандомизация, вес ролей игроков также рассматривается и отображается в диаграмме ниже. + +Каждый раздел показывает всех игроков, которые рассматривались для этой базовой роли, где подсвечены те, кто в итоге был выбран]] +L.header_inspect_baseroles_order = "Назначение роли «{name}»" -- ROLEINSPECT_STAGE_SUBROLES ---L.header_roleinspect_stage_subroles = "Stage 5: Subrole Upgrading" ---L.help_roleinspect_stage_subroles = [[ ---This stage upgrades players to subroles, from previously assigned baseroles. --- ---Information is presented as in the baseroles stage above. Each baserole is upgraded separately.]] ---L.header_inspect_upgrade_order = "Upgrading from {name}" ---L.header_inspect_subroles_order = "Subrole {name}" ---L.label_inspect_no_subroles = "No subroles were selectable." +L.header_roleinspect_stage_subroles = "Этап 4: улучшение до подролей" +L.help_roleinspect_stage_subroles = [[ +Этот этап улучшает игроков до подролей от ранее назначенных базовых ролей. + +Информация представлена так же, как в этапе базовых ролей выше. Каждая базовая роль улучшается отдельно.]] +L.header_inspect_upgrade_order = "Улучшение от роли «{name}»" +L.header_inspect_subroles_order = "Подроль: {name}" +L.label_inspect_no_subroles = "Не было выбрано подролей." -- ROLEINSPECT_STAGE_FINAL ---L.header_roleinspect_stage_final = "Final Roles" ---L.help_roleinspect_stage_final = [[ ---This shows the final role assignments. These may have been modified by a hook after subroles were assigned.]] +L.header_roleinspect_stage_final = "Итоговые роли" +L.help_roleinspect_stage_final = [[ +Здесь показаны итоговые назначения ролей. Они могли быть изменены после назначения подролей с помощью хука.]] -- 2025-01-19 ---L.help_rolelayering_enable = "The red and green border around the icon shows if the role is currently enabled. Right click on an icon to quickly enable/disable that role." +L.help_rolelayering_enable = "Красная и зелёная границы вокруг иконок показывают, включена ли сейчас роль. Нажатие правой кнопкой мыши по иконке быстро включает или выключает роль." -- 2025-01-20 ---L.label_hud_show_team_name = "Enable showing team name next to role name" +L.label_hud_show_team_name = "Включить показ названия команды возле названия роли." -- 2025-01-31 ---L.radio_desc = [[ ---Plays sounds to distract or deceive. --- ---Place the radio somewhere, and then remotely interact with it to choose sounds to play.]] +L.radio_desc = [[ +Воспроизводит звуки для отвлечения или обмана. + +Поместите его где-нибудь, а затем используйте удалённо, выбирая звуки для воспроизведения.]]