Add Ukrainian 🇺🇦 (uk_UA) localization and translate documentation (#455)

This commit is contained in:
Jarnexis authored and GitHub committed 2026-09-10 20:50:14 +01:00
1 parent 766b8f483c
commit fe0466e04f
5 files changed
+549

No files matched your search

+2
View File
@@ -1,6 +1,8 @@
GTNHLib
=======
🌐 **Languages:** [English](README.md) | [Українська](README_uk.md)
## About
Shared code library for GTNH mods.
+76
View File
@@ -0,0 +1,76 @@
GTNHLib
=======
🌐 **Мови:** [English](README.md) | [Українська](README_uk.md)
## Про бібліотеку
Спільна бібліотека коду для модів GTNH.
## Можливості
### Налаштування
- Визначення налаштувань за допомогою анотації `@Config` для класу. Кожне поле стає параметром конфігурації.
- Встановлення значень за замовчуванням, діапазонів, коментарів та ключів локалізації за допомогою анотацій полів, таких як `@DefaultInt`, `@RangeInt` та `@Comment`.
- Бібліотека зчитує, записує та перевіряє файл `.cfg` за вас. Жодних ручних викликів `Configuration`.
- Позначення полів анотацією `@Sync` для надсилання значень із сервера клієнтам під час підключення.
- Створення графічного інтерфейсу налаштувань Forge прямо з анотацій.
### Події
- Викликає `InventoryChangedEvent`, коли змінюється загальна кількість предметів в інвентарі гравця. Підписуйтесь на `ItemAdded` або `ItemRemoved`, які містять змінений `ItemStack`, дельту зі знаком, а також `inventoryCount` — загальну кількість цього предмета у гравця після зміни.
- Предмети зіставляються за типом і метаданими, ігноруючи NBT, тому сортування інвентарю не викликає жодних подій. Сканування виконується кожні кілька тактів (можна налаштувати).
- Викликає `PickBlockEvent`, коли гравець клацає середньою кнопкою миші по блоку.
- Позначте клас анотацією `@EventBusSubscriber` для автоматичної реєстрації його методів `@SubscribeEvent`. Виберіть сторону та етап завантаження в анотації. Ручна реєстрація не потрібна.
### Предмети
- `ImmutableItemStack` обгортає стек як доступний лише для читання, щоб запобігти випадковим змінам.
- `ItemTransfer` переміщує предмети між `ItemSource` та `ItemSink` за допомогою фільтрів-предикатів та обмежень кількості.
- Перебирайте будь-який `IInventory` за допомогою `InventoryIterator`, включно зі слотами, прив’язаними до сторін блока.
- Інтерфейси джерела та приймача абстрагують вилучення та вставлення предметів, тому логіка переміщення працює з будь-яким типом інвентарю.
### Рендеринг
- Рендеринг предметів з кількома накладеними текстурними шарами шляхом реалізації `ItemWithTextures`. Реєструйте за допомогою `TexturedItemRenderer`.
- `CapturingTesselator` захоплює квади рендерингу поза основним потоком для пакетної або асинхронної візуалізації.
- Допоміжні класи для анімованих підказок та HUD-повідомлень над панеллю швидкого доступу.
### Стан блоку
- Реєстрація власних властивостей блоку: boolean, int, enum, direction, axis та orientation.
- Пакування та зчитування значень властивостей із метаданих блоку, щоб на версії 1.7 блоки поводилися як сучасні стани блоків.
- Включає команду `blockstate` для перевірки стану блоку за координатами.
### Команди
- Brigadier command API для сучасного парсингу, автодоповнення та виконання команд на версії 1.7.
- Реєстрація власних ігрових правил за допомогою `GameRuleRegistry`. Бібліотека вбудовується у ванільну систему ігрових правил, щоб сповіщати ваші правила про зміни.
### Команди гравців
- Система керування командами гравців з ролями, складом учасників та адміністративними командами.
- Реєстрація власних даних команди за допомогою `TeamDataRegistry`. Бібліотека зберігає їх на диск і синхронізує з клієнтами.
### Мережа
- Надсилання екранних повідомлень, повідомлень над панеллю швидкого доступу та дальності промальовування клієнтам.
- Синхронізація власних даних гравців.
### Утиліти
- Бекпорт `MemoryUtil` та `MemoryStack` у стилі LWJGL3 в пакеті `bytebuf`.
- 32- та 64-бітне хешування FNV-1a.
- Допоміжні класи для роботи з математикою, NBT, JSON, файлами, напрямками та відстанями.
- Типи кольорів для RGB та HSV.
- Ітератори та трансформації 3D-геометрії.
- Допоміжні класи для провайдерів можливостей.
- Синхронізовані прив’язки клавіш.
- Допоміжні класи для роботи з ASM та байт-кодом.
- Перевірка сумісності з модами (Baubles, FalseTweaks, NEI).
- Тіньове підключення FastUtil через https://github.com/GTNewHorizons/GTNHExtLib
## Подяки
Налаштування: Оригінальний код від FalsePattern, що розповсюджується за ліцензією LGPL-3.0 у [FalsePatternLib](https://github.com/FalsePattern/FalsePatternLib/tree/master/src/main/java/com/falsepattern/lib/config)
+2
View File
@@ -1,5 +1,7 @@
# Model API
🌐 **Languages:** [English](models.md) | [Українська](models_uk.md)
In general, it is designed to mimic the latest version.
### Intentional deviations
+174
View File
@@ -0,0 +1,174 @@
# Model API
🌐 **Мови:** [English](models.md) | [Українська](models_uk.md)
Загалом цей API розроблений так, щоб імітувати поведінку новіших версій Minecraft.
### Свідомі відхилення
Наразі відсутні.
### Колишні відхилення
Посилання на текстури більше не вважаються прив’язаними до розташувань 1.7.10.
Замість цього вони обробляються з assets/namespace/textures, як у сучасних версіях.
Це також означає, що тепер ви можете використовувати будь-яку текстуру у своєму ISBRH,
і GTNHLib впровадить її в атлас блоків. Будь ласка, використовуйте цю можливість відповідально.
Ресурспаки тепер можуть замінювати більшість блоків, аналогічно до сучасних версій.
*Зверніть увагу:* це працює насамперед для блоків із ISBRH — якщо для блоку
в коді зареєстровано TESR, це призведе до рендерингу *як* моделі,
*так і* TESR.
## Приклади
### BlockColor
Використовуйте для застосування кольору до `TintIndex`.
<p>
Приклад: Використання реєстрації BlockColor
<pre>
BlockColor.registerBlockColors(new IBlockColor() {
&#64;Override
public int colorMultiplier(IBlockAccess world, int x, int y, int z, int tintIndex) {
// Повертає червоний колір для основного шару, зелений — для додаткового
return tintIndex == 0 ? 0xFF0000 : 0x00FF00;
}
&#64;Override
public int colorMultiplier(ItemStack stack, int tintIndex) {
// Повертає синій колір для основного шару, жовтий — для додаткового
return tintIndex == 0 ? 0x0000FF : 0xFFFF00;
}
}, ModBlocks.MY_CUSTOM_BLOCK);
</pre>
Приклад: Реалізація `IBlockColor` безпосередньо у класі блоку
<pre>
public class BlockTestTint extends Block implements IBlockColor {
public BlockTestTint() {
super(Material.wood);
}
&#64;Override
public int colorMultiplier(IBlockAccess world, int x, int y, int z, int tintIndex) {
return switch(tintIndex) {
case 0 -> 0xFF0000; // червоний
case 1 -> 0x00FF00; // зелений
case 2 -> 0x0000FF; // синій
case 3 -> 0xFFFF00; // жовтий
case 4 -> 0xFF00FF; // пурпуровий
case 5 -> 0x00FFFF; // блакитний
default -> 0xFFFFFF; // білий
};
}
&#64;Override
public int colorMultiplier(ItemStack stack, int tintIndex) {
return colorMultiplier(null, 0, 0, 0, tintIndex);
}
}
</pre>
### BlockState API
Замість використання 4-бітових метаданих, вибір моделі можна визначити на основі повних даних про стан блоку за допомогою зареєстрованого `BlockProperty`.
Це дозволяє:
- Необмежену кількість логічних станів (без обмеження в 16 значень метаданих);
- Варіанти моделей на основі даних `TileEntity`;
- Визначення стану з урахуванням `ItemStack`;
- Динамічну поведінку рендерингу.
Визначення BlockState працює у три кроки:
1. `BlockProperty` реєструється для блоку (і опціонально для його предмета).
2. Властивість надає значення з:
- Світу + `TileEntity`
- `ItemStack`
3. Завантажувач `JsonModel` визначає варіанти моделей, використовуючи ці значення властивостей.
#### 1. Створення BlockProperty
Приклад: Властивість напрямку, яка базується на `TileEntity`.
<pre>
DirectionBlockProperty property = new DirectionBlockProperty() {
@Override
public String getName() {
return "facing";
}
@Override
public boolean hasTrait(BlockPropertyTrait trait) {
return switch (trait) {
case SupportsWorld, WorldMutable, StackMutable, SupportsStacks -> true;
default -> false;
};
}
@Override
public ForgeDirection getValue(IBlockAccess world, int x, int y, int z) {
TileEntity te = world.getTileEntity(x, y, z);
if (te instanceof TileTestTintMul tile) {
return tile.getFacing();
}
return ForgeDirection.NORTH;
}
@Override
public void setValue(World world, int x, int y, int z, ForgeDirection value) {
TileEntity te = world.getTileEntity(x, y, z);
if (te instanceof TileTestTintMul tile) {
tile.setFacing(value);
}
}
@Override
public ForgeDirection getValue(ItemStack stack) {
return ForgeDirection.NORTH;
}
};
</pre>
#### 2. Реєстрація властивості
<pre>
BlockPropertyRegistry.registerProperty(block, property);
BlockPropertyRegistry.registerProperty(Item.getItemFromBlock(block), property);
</pre>
Ви повинні зареєструвати властивість:
- Для блоку (стан у світі);
- Для предмета (відображення в інвентарі).
#### 3. Визначення JSON-файлу blockstate
Приклад:
<pre>
{
"variants": {
"facing=north": { "model": "modid:block/machine_north" },
"facing=south": { "model": "modid:block/machine_south" },
"facing=west": { "model": "modid:block/machine_west" },
"facing=east": { "model": "modid:block/machine_east" }
}
}
</pre>
Завантажувач виконає такі дії:
- Надішле запит до `property.getValue(...)`;
- Сформує рядок стану, наприклад: `facing=north`;
- Визначить відповідний варіант моделі.
#### Підтримувані атрибути
`BlockPropertyTrait` керує тим, де саме працює властивість:
- `SupportsWorld` → використовується під час рендерингу у світі;
- `SupportsStacks` → використовується під час рендерингу предмета в інвентарі;
- `WorldMutable` → значення можна змінювати у світі;
- `StackMutable` → значення можна змінювати в ItemStack.
Реалізовуйте лише ті атрибути, які вам необхідні.
### Заплановано
- Додавання м’якого затінення до ModelISBRH.
- Додавання відсікання граней для моделей.
- Реалізація фіксації UV-координат.
@@ -0,0 +1,295 @@
# Тестові блоки
tile.model_test.name=Тестовий блок
tile.model_test_tint.name=Тестовий блок (Відтінок)
tile.model_test_tint_mul.name=Тестовий блок (Множник відтінку)
tile.model_test_lectern.name=Тестовий блок аналоя
tile.rng_test.name=Тестовий блок RNG
tile.weighted_rng_test.name=Тестовий блок зваженого RNG
# Налаштування
fml.configgui.tooltip.default=[типово: %s]
fml.configgui.tooltip.defaultNumeric=[діапазон: %2$s ~ %3$s, типово: %1$s]
# Перенесено з WAWLA (What Are We Looking At)
# Професії селян
description.villager.profession.farmer=Фермер
description.villager.profession.librarian=Бібліотекар
description.villager.profession.priest=Церковник
description.villager.profession.blacksmith=Коваль
description.villager.profession.butcher=М’ясник
description.villager.profession.zombie=Зомбі
description.villager.profession.witch=Відьма
description.villager.profession.misingno=Звичайний
description.villager.profession.openblocks.king-ish=Королеподібний
description.villager.profession.tinker.villagertools=Майстер
description.villager.profession.extvil.Miller=Мельник
description.villager.profession.extvil.Fisher=Рибалка
description.villager.profession.extvil.Baker=Пекар
description.villager.profession.extvil.Miner=Шахтар
description.villager.profession.extvil.Scientist=Вчений
description.villager.profession.extvillom.Tanner=Чинбар
description.villager.profession.forestry.beekeeper=Бджоляр
description.villager.profession.forestry.lumberjack=Лісоруб
description.villager.profession.mystcraft.archivist=Архівіст
description.villager.profession.bcaddons.Engineer=Інженер
description.villager.profession.thaumcraft.wizard=Чаклун
description.villager.profession.thaumcraft.moneychanger=Торговець
description.villager.profession.compactmachines.villager=Компактний механік
description.villager.profession.railcraft.trackman=Залізничник
description.villager.profession.pneumaticcraft.VillagerMechanic=Механік
description.villager.profession.witchery.apothecary=Аптекар
description.villager.profession.minefactoryreloaded.zoologist=Зоолог
description.villager.profession.is_mtc.card_master=Майстер карт
description.villager.profession.gravestone.undertaker=Гробар
description.villager.profession.gcewing_sg.tokra=Ток’ра
description.villager.profession.steamcraft.villager=Паровий майстер
description.villager.profession.fantastic.fantastic_fisherman=Дивовижний рибалка
description.villager.profession.defeatedcrow.villager_cafe=Офіціант
description.villager.profession.defeatedcrow.villager_yome=Йоме
description.villager.profession.grccellar.brewer=Пивовар
description.villager.profession.peripheralsplusplus.CCVillager=Комп’ютерний технік
description.villager.profession.evilcraft.werewolfVillager=Перевертень
description.villager.profession.redgear_brewcraft.villagerwitch=Відьма
description.villager.profession.redgear_brewcraft.villagerwarlock=Чорнокнижник
description.villager.profession.fossil.Archaeologist=Археолог
description.villager.profession.pennyarcade.CoinMerchant=Торговець монетами
description.villager.profession.psychedelicraft.villagerDealer=Наркоторговець
description.villager.profession.jukeboxreloaded.villager=Торговець платівками
description.villager.profession.minecraft.etymologist=Етимолог
description.villager.profession.tofucraft.tofucook=Шеф-кухар тофу
description.villager.profession.jewelrycraft.jeweler=Ювелір
description.villager.profession.taverns.barwench=Шинкарка
description.villager.profession.taverns.village_shepherdess=Пастушка
description.villager.profession.taverns.village_hostler=Конюх
description.villager.profession.taverns.village_baker=Пекар
description.villager.profession.tynkyn.jx_villager_chef=Шеф-кухар
description.villager.profession.tynkyn.jx_villager_recycle=Спеціаліст із вторсировини
description.villager.profession.tynkyn.jx_villager_botanist=Ботанік
description.villager.profession.lozmod.villager_beedle=Бідл
description.villager.profession.lozmod.villager_beedle_special=Бідл
description.villager.profession.minecraft.farmer=Фермер
description.villager.profession.savemoney.insurer=Страховик
description.villager.profession.gvcguns.gvcVillager=Торговець зброєю
description.villager.profession.actuallyadditions.jamVillager=Торговець джемом
description.villager.profession.jewelrycraft2.jeweler=Ювелір
description.villager.profession.pokecube_adventures.cubesalesman=Продавець покекубів
description.villager.profession.terraarts.YE3TE2y=YE3TE2y
description.villager.profession.xw.smithy3=Коваль
description.villager.profession.xw.hunter_v1=Мисливець
description.villager.profession.diversity.warrior=Воїн
description.villager.profession.diversity.priest=Священник
description.villager.profession.diversity.butcher=М’ясник
description.villager.profession.diversity.chief=Вождь
description.villager.profession.diversity.breeder=Селекціонер
description.villager.profession.diversity.guru=Гуру
description.villager.profession.diversity.farmer=Фермер
description.villager.profession.jbrobot.jbvillagerblock=Блоки
description.villager.profession.jbrobot.jbvillageritem=Предмети
description.villager.profession.jbrobot.jbvillagermodel=Моделі
description.villager.profession.jbrobot.jbvillagermotion=Рух
description.villager.profession.jbrobot.jbvillagercarving=Різьблення
description.villager.profession.wa.villager=Селянин
description.villager.profession.wa.swordsmith=Майстер мечів
description.villager.profession.wa.teaMaster=Чайний майстер
description.villager.profession.wa.priest=Священник
description.villager.profession.rftools.rftoolsvillager=Інженер RFTools
description.villager.profession.forbidden.heretic=Єретик
description.villager.profession.agricraft.villager=Фермер AgriCraft
# Конфігурація форматування чисел
gtnhlib.config.number_formatting.numberFormatLocale=Локаль форматування чисел
gtnhlib.config.number_formatting.numberFormatLocale.tooltip=Оберіть локаль для форматування чисел. «Системна за замовчуванням» використовує формат мови системи.
# Оновлювач пакетів ресурсів
# Сповіщення про оновлення пакетів ресурсів
gtnhlib.chat.rpupdater.update_available=§3Доступне нове оновлення для §f%s: v%s §7(у вас v%s)§3.
gtnhlib.chat.rpupdater.click_here=§6Натисніть сюди
gtnhlib.chat.rpupdater.open_release= §3, щоб відкрити сторінку релізу.
gtnhlib.chat.rpupdater.line_mismatch=§f%s §3призначений для GTNH §f%s§3, але ви граєте на §fGTNH %s§3.
gtnhlib.chat.rpupdater.checking=§3Перевірка оновлень пакетів ресурсів...
gtnhlib.chat.rpupdater.no_updates=§3Оновлень для активних пакетів ресурсів не знайдено.
gtnhlib.chat.rpupdater.already_running=§4Перевірка оновлень вже триває.
gtnhlib.chat.rpupdater.cooldown=§4Перевірку оновлень призупинено через нещодавній збій. Спробуйте пізніше або скористайтеся §f%s§4.
gtnhlib.chat.rpupdater.disabled=§4Перевірку оновлень пакетів ресурсів вимкнено у конфігурації. Увімкніть її в §fконфігурації GTNH Lib§4 або запустіть з аргументом §f%s§4.
gtnhlib.chat.rpupdater.manual_cooldown=§4Будь ласка, зачекайте трохи перед повторним виконанням цієї команди.
gtnhlib.chat.rpupdater.commands=§2Команди оновлювача пакетів ресурсів:
gtnhlib.chat.rpupdater.list.header=§2Активні пакети ресурсів (§f%s§2):
gtnhlib.chat.rpupdater.list.item.updater=§3%s §2(оновлювач: §7%s v%s, %s§2)
gtnhlib.chat.rpupdater.list.item.none=%s §4(без оновлювача)
gtnhlib.chat.rpupdater.status.header=§2Статус оновлювача пакетів ресурсів:
gtnhlib.chat.rpupdater.status.running=Виконується: §7%s
gtnhlib.chat.rpupdater.status.last_check=Остання перевірка: §7%s
gtnhlib.chat.rpupdater.status.never=§7ніколи
gtnhlib.chat.rpupdater.status.cooldown_failure=Призупинення через збій: §7%s
gtnhlib.chat.rpupdater.status.cooldown_manual=Ручне призупинення: §7%s
gtnhlib.chat.rpupdater.info.usage=Використання: §7%s
gtnhlib.chat.rpupdater.info.not_found=Жоден активний пакет ресурсів не відповідає §7%s.
gtnhlib.chat.rpupdater.info.ambiguous=Кілька пакетів ресурсів відповідають §7%s§f (§7%s§f). Уточніть запит.
gtnhlib.chat.rpupdater.info.header=§2Інформація про пакет ресурсів §3%s§2:
gtnhlib.chat.rpupdater.info.no_updater=Для цього пакета ресурсів не знайдено метаданих оновлювача.
gtnhlib.chat.rpupdater.info.updater_name=Назва оновлювача: §7%s
gtnhlib.chat.rpupdater.info.version=Версія: §7%s (GTNH %s)
gtnhlib.chat.rpupdater.info.source=Джерело: §7%s/%s
# Команди GTNHTeams
gtnhlib.chat.teams.error.name_in_use=Ця назва команди вже зайнята або недійсна.
gtnhlib.chat.teams.error.not_in_team=Ви не перебуваєте в команді.
gtnhlib.chat.teams.error.not_online=Гравець "%s" не в мережі.
gtnhlib.chat.teams.error.no_invite=У вас немає очікуваних запрошень до команди.
gtnhlib.chat.teams.error.team_not_found=Команди "%s" не існує.
gtnhlib.chat.teams.error.no_invite_specific=Вас не запрошували до команди "%s".
gtnhlib.chat.teams.error.disambiguate_invite=Вас запросили до кількох команд. Використайте %s accept <Назва команди> або %1$s deny <Назва команди>.
gtnhlib.chat.teams.error.other_not_in_team=%s не перебуває у вашій команді.
gtnhlib.chat.teams.error.invite_teammate=%s вже у вашій команді.
gtnhlib.chat.teams.error.invite_self=Ви не можете запросити самого себе.
gtnhlib.chat.teams.error.not_owner_rename=Лише власники команди можуть змінювати її назву.
gtnhlib.chat.teams.error.not_owner_promote=Лише власники команди можуть підвищувати учасників.
gtnhlib.chat.teams.error.not_owner_demote=Лише власники команди можуть понижувати учасників.
gtnhlib.chat.teams.error.kick_not_allowed=Ви можете виганяти гравців лише як власник або якщо вони нижчі за вас за рангом.
gtnhlib.chat.teams.error.cannot_kick_self=Ви не можете вигнати самого себе (у грі).
gtnhlib.chat.teams.error.not_owner_merge_request=Лише власники команди можуть надсилати або скасовувати запити на об’єднання.
gtnhlib.chat.teams.error.not_owner_merge_response=Лише власники команди можуть приймати або відхиляти запити на об’єднання.
gtnhlib.chat.teams.error.not_owner_disband=Лише власники команди можуть розформувати свою команду.
gtnhlib.chat.teams.error.not_officer_invite=Лише власники або офіцери команди можуть запрошувати гравців.
gtnhlib.chat.teams.error.merge_self=Ваша команда не може об’єднатися сама з собою.
gtnhlib.chat.teams.error.merge_already_requested=Ваша команда вже має очікуваний запит на об’єднання з %s.
gtnhlib.chat.teams.error.no_such_merge_request=Запит на об’єднання від вашої команди до %s не знайдено.
gtnhlib.chat.teams.error.no_merge_request=У вашої команди немає очікуваних запитів на об’єднання.
gtnhlib.chat.teams.error.disambiguate_merge=У вашої команди є кілька очікуваних запитів на об’єднання. Використайте %s merge accept <Назва команди> або %1$s merge deny <Назва команди>.
gtnhlib.chat.teams.error.no_merge_request_specific=Ваша команда не отримувала запиту на об’єднання від "%s".
gtnhlib.chat.teams.error.last_member_leave=Ви не можете покинути команду, якщо ви її єдиний учасник.
gtnhlib.chat.teams.error.last_owner_leave=Ви не можете покинути команду як останній власник, поки в ній є інші учасники. Спочатку підвищте іншого учасника.
gtnhlib.chat.teams.error.last_owner_demote=Ви не можете понизити себе, якщо ви єдиний власник своєї команди.
gtnhlib.chat.teams.error.last_owner_disband=Ви не можете розформувати команду, якщо ви її єдиний учасник.
gtnhlib.chat.teams.error.demote_member=%s вже має найнижчий ранг (учасник).
gtnhlib.chat.teams.error.promote_owner=%s вже є власником.
gtnhlib.chat.teams.error.not_player=Цю команду може використовувати лише гравець.
gtnhlib.chat.teams.message.usage=Команди %s: help, gui, info, rename, invite, accept, deny, leave, promote, demote, kick, disband, merge <request|cancel|accept|deny>
gtnhlib.chat.teams.message.renamed_team=Вашу команду було перейменовано на %s.
gtnhlib.chat.teams.message.admin_renamed_team=Вашу команду було примусово перейменовано на %s.
gtnhlib.chat.teams.message.joined_team=Ви приєдналися до %s.
gtnhlib.chat.teams.message.other_joined_team=%s приєднався(-лася) до вашої команди.
gtnhlib.chat.teams.message.left_team=Ви покинули %s.
gtnhlib.chat.teams.message.other_left_team=%s покинув(-ла) вашу команду.
gtnhlib.chat.teams.message.kicked_from_team=Вас було вигнано з %s.
gtnhlib.chat.teams.message.admin_kicked_from_team=Вас було примусово вигнано з %s.
gtnhlib.chat.teams.message.other_kicked_from_team=%s було вигнано з вашої команди.
gtnhlib.chat.teams.message.admin_other_kicked_from_team=%s було примусово вигнано з вашої команди.
gtnhlib.chat.teams.message.sent_invite=Запрошено %s до вашої команди.
gtnhlib.chat.teams.message.received_invite=%s запрошує вас приєднатися до %s. Використайте %s, щоб прийняти, або %s, щоб відхилити.
gtnhlib.chat.teams.message.declined_invite=Відхилено запрошення до %s.
gtnhlib.chat.teams.message.promoted_to_owner=%s тепер є власником команди.
gtnhlib.chat.teams.message.promoted_to_officer=%s тепер є офіцером команди.
gtnhlib.chat.teams.message.demoted_to_officer=%s більше не є власником команди.
gtnhlib.chat.teams.message.demoted_to_member=%s більше не є офіцером команди.
gtnhlib.chat.teams.message.merge_request_sent=Надіслано запит на об’єднання до %s.
gtnhlib.chat.teams.message.merge_request_cancelled=Скасовано запит на об’єднання до %s.
gtnhlib.chat.teams.message.merge_request_received=%s пропонує об’єднати свою команду з вашою. Прийняття перенесе всіх її учасників та дані до вашої команди. Це незворотна дія! Використайте %s, щоб прийняти, або %s, щоб відхилити.
gtnhlib.chat.teams.message.merge_complete=%s об’єднано з %s. Всіх учасників та дані було перенесено.
gtnhlib.chat.teams.message.merge_denied=Відхилено запит на об’єднання від %s.
gtnhlib.chat.teams.message.team_name_too_long=Назва команди занадто довга!
gtnhlib.chat.teams.message.team_disbanded=Вашу команду %s було розформовано.
gtnhlib.chat.teams.info.owners=Власники: %s
gtnhlib.chat.teams.info.officers=Офіцери: %s
gtnhlib.chat.teams.info.members=Учасники: %s
gtnhlib.chat.teams.help.1=Сторінка довідки %s:
gtnhlib.chat.teams.help.2=%s info — вивести список учасників вашої поточної команди.
gtnhlib.chat.teams.help.3=%s invite <гравець> — [Офіцер] запросити гравця в мережі до вашої команди.
gtnhlib.chat.teams.help.4=%s accept [команда] — прийняти очікуване запрошення до команди.
gtnhlib.chat.teams.help.5=%s deny [команда] — відхилити очікуване запрошення до команди.
gtnhlib.chat.teams.help.6=%s leave — покинути поточну команду та створити соло-команду.
gtnhlib.chat.teams.help.7=%s rename <нова назва> — [Власник] змінити назву вашої команди.
gtnhlib.chat.teams.help.8=%s promote <гравець> — [Власник] підвищити учасника до офіцера або офіцера до власника.
gtnhlib.chat.teams.help.9=%s demote <гравець> — [Власник] понизити власника до офіцера або офіцера до учасника.
gtnhlib.chat.teams.help.10=%s kick <гравець> — [Вищий ранг] вигнати гравця з команди.
gtnhlib.chat.teams.help.11=%s merge request <команда> — [Власник] подати запит на об’єднання вашої команди з іншою.
gtnhlib.chat.teams.help.12=%s merge accept [команда] — [Власник] прийняти очікуваний запит на об’єднання.
gtnhlib.chat.teams.help.13=%s merge deny [команда] — [Власник] відхилити очікуваний запит на об’єднання.
gtnhlib.chat.teams.help.14=%s disband — [Власник] розформувати вашу команду.
# Адміністративні команди GTNHTeams
gtnhlib.chat.teams.admin.error.team_not_found=Команду з назвою %s не знайдено.
gtnhlib.chat.teams.admin.error.cannot_disband_solo_team=Неможливо розформувати команду, в якій лише один гравець.
gtnhlib.chat.teams.admin.error.name_in_use=Назва %s вже використовується.
gtnhlib.chat.teams.admin.error.player_not_in_team=%s не перебуває в команді %s.
gtnhlib.chat.teams.admin.error.demote_last_owner=Неможливо примусово понизити %s, поки він є останнім власником команди %s.
gtnhlib.chat.teams.admin.error.kick_last_owner=%s є останнім власником своєї команди, тому його не можна вигнати.
gtnhlib.chat.teams.admin.message.usage=Адмін-команди %s: help, info, rename, promote, demote, kick, merge, disband
gtnhlib.chat.teams.admin.message.renamed=Команду %s було примусово перейменовано на %s.
gtnhlib.chat.teams.admin.message.merged=Команду %s було примусово об’єднано з %s.
gtnhlib.chat.teams.admin.message.merge_teams_same=Неможливо об’єднати команду саму з собою!
gtnhlib.chat.teams.admin.message.team_disbanded=%s було примусово розформовано адміністратором.
gtnhlib.chat.teams.admin.message.disbanded=%s було примусово розформовано.
gtnhlib.chat.teams.admin.message.promoted_to_owner=%s було примусово підвищено до власника %s.
gtnhlib.chat.teams.admin.message.promoted_to_officer=%s було примусово підвищено до офіцера %s.
gtnhlib.chat.teams.admin.message.demoted_to_officer=%s було примусово понижено до офіцера %s.
gtnhlib.chat.teams.admin.message.demoted_to_member=%s було примусово понижено до учасника %s.
gtnhlib.chat.teams.admin.message.kicked=%s було примусово вигнано з %s.
gtnhlib.chat.teams.admin.help.1=Сторінка довідки адміна %s:
gtnhlib.chat.teams.admin.help.2=%s info <команда> — вивести список учасників вказаної команди.
gtnhlib.chat.teams.admin.help.3=%s rename <команда> <нова назва> — примусово перейменувати вказану команду.
gtnhlib.chat.teams.admin.help.4=%s promote <команда> <гравець> — примусово підвищити вказаного гравця в команді.
gtnhlib.chat.teams.admin.help.5=%s demote <команда> <гравець> — примусово понизити вказаного гравця в команді.
gtnhlib.chat.teams.admin.help.6=%s kick <команда> <гравець> — примусово вигнати вказаного гравця з команди.
gtnhlib.chat.teams.admin.help.7=%s merge <початкова команда> <цільова команда> — примусово об’єднати початкову команду з цільовою, перенісши їхніх учасників та дані.
gtnhlib.chat.teams.admin.help.8=%s disband <команда> — примусово розформувати команду. Гравців буде негайно переведено в соло-команди, а дані команди будуть назавжди втрачені.
# Команди інтеграції GTNHTeams з MUI2
gtnhlib.chat.teams.error.mui2_not_loaded=Для графічного інтерфейсу команд потрібен мод MUI2.
gtnhlib.chat.teams.help.gui=/gtnhteam gui — показати інтерфейс команд.
gtnhlib.gui.teams.missing_team_name=Невизначена команда
gtnhlib.gui.teams.edit_team_name=Змінити назву команди
gtnhlib.gui.teams.promote_member=Підвищити
gtnhlib.gui.teams.confirm_promote_member=Підвищити %s?
gtnhlib.gui.teams.admin.confirm_promote_member=[Адмін] Примусово підвищити %s?
gtnhlib.gui.teams.demote_member=Понизити
gtnhlib.gui.teams.confirm_demote_member=Понизити %s?
gtnhlib.gui.teams.admin.confirm_demote_member=[Адмін] Примусово понизити %s?
gtnhlib.gui.teams.kick_member=Вигнати
gtnhlib.gui.teams.confirm_kick_member=Вигнати учасника %s?
gtnhlib.gui.teams.admin.confirm_kick_member=[Адмін] Примусово вигнати учасника %s?
gtnhlib.gui.teams.view_member_invites=Запрошення
gtnhlib.gui.teams.invite_member=Запросити учасника
gtnhlib.gui.teams.cancel_invite_member=Скасувати запрошення учасника
gtnhlib.gui.teams.merge_team=Об’єднати команди
gtnhlib.gui.teams.disband_team=Розформувати команду
gtnhlib.gui.teams.confirm_disband_team=Ви впевнені, що хочете розформувати команду?
gtnhlib.gui.teams.leave_team=Покинути команду
gtnhlib.gui.teams.confirm_leave_team=Ви впевнені, що хочете покинути команду?
gtnhlib.gui.teams.view_all_teams=Показати всі команди
gtnhlib.gui.teams.view_team_data=Дані команди
gtnhlib.gui.teams.confirm_invite_player=Запросити %s до вашої команди?
gtnhlib.gui.teams.confirm_cancel_invite_player=Скасувати запрошення для %s?
gtnhlib.gui.teams.accept_team_invitation=Прийняти запрошення
gtnhlib.gui.teams.confirm_accept_team_invitation=Приєднатися до %s?
gtnhlib.gui.teams.deny_team_invitation=Відхилити запрошення
gtnhlib.gui.teams.confirm_deny_team_invitation=Відхилити запрошення приєднатися до %s?
gtnhlib.gui.teams.request_merge=Запросити об’єднання
gtnhlib.gui.teams.confirm_merge_request=Надіслати запит на об’єднання вашої команди з %s?
gtnhlib.gui.teams.cancel_merge_request=Скасувати запит на об’єднання
gtnhlib.gui.teams.confirm_cancel_merge_request=Скасувати запит на об’єднання з %s?
gtnhlib.gui.teams.accept_merge_request=Прийняти
gtnhlib.gui.teams.confirm_accept_merge_request=Об’єднати %s з вашою командою?
gtnhlib.gui.teams.deny_merge_request=Відхилити
gtnhlib.gui.teams.confirm_deny_merge_request=Відхилити об’єднання %s з вашою командою?
gtnhlib.gui.teams.confirm=Прийняти
gtnhlib.gui.teams.cancel=Скасувати
gtnhlib.gui.teams.select_screen.invalid=Недійсний список
gtnhlib.gui.teams.select_screen.team_list=Усі команди
gtnhlib.gui.teams.select_screen.player_list=Список гравців
gtnhlib.gui.teams.select_screen.invite=Запросити гравців
gtnhlib.gui.teams.select_screen.get_invites=Запрошення до команд
gtnhlib.gui.teams.select_screen.team_merge=Об’єднати команду з...
gtnhlib.gui.teams.select_screen.get_team_merge=Прийняти запити на об’єднання команд
gtnhlib.gui.teams.admin.force_disband_team=Примусово розформувати
gtnhlib.gui.teams.admin.confirm_force_disband_team=Примусово розформувати команду %s?
gtnhlib.gui.teams.admin.force_edit_team_name=Примусово змінити назву
gtnhlib.gui.teams.admin.force_merge_into_team=Примусово об’єднати першу вибрану команду з цією
gtnhlib.gui.teams.admin.force_merge_confirmation=Примусово об’єднати %s з %s? %s та всі її дані будуть видалені!
commands.title.cleared.single=Очищено заголовок для %s
commands.title.reset.single=Скинуто налаштування заголовка для %s
commands.title.show.title.single=Показано заголовок для %s
commands.title.show.subtitle.single=Показано підзаголовок для %s
commands.title.times.single=Змінено час відображення заголовка для %s
commands.title.icon.single=Змінено іконку заголовка для %s