chore: Translate the strings missing from every locale

Thirty-three locales were short the same sixty-six keys and had been since
2.2.1. Fifty-six of them are the two-factor setup and the auto-logout
preference; six are the two-factor challenge itself; the rest are the promo
strings the banner rotates through.

The six in `login.js` were the urgent ones. They render during sign-in, before
`core.js` is fetched, so a user with two-factor enabled met the whole challenge
in English — on the one screen they cannot get past without understanding it.
Three of those six exist in `core.js` as well and now read identically in both
files, which nothing checks and which two translators working from two files
would otherwise have got subtly different.

Plural forms follow each language rather than the English pair: Arabic carries
all six CLDR categories with the agreement its counting requires, Czech,
Polish, Russian, Slovak and Ukrainian four with the right case in each, and
Chinese, Japanese, Korean, Vietnamese and Indonesian only `other`, since a
`_one` variant would be a form i18next never reads.

Every file is additions only — no existing line was moved, reworded or
reformatted, so the diff shows what was missing and nothing else. Several
existing mistranslations turned up along the way and were left alone; they are
a separate concern from filling the gaps.
This commit is contained in:
Daniel Hiller
2026-09-08 19:54:41 +02:00
parent 9069b24cfb
commit 26b512193a
66 changed files with 2687 additions and 0 deletions
+79
View File
@@ -93,6 +93,16 @@ export default {
attachment: 'Вкладення',
attachments: 'Вкладення',
authentication: 'Аутентифікація',
autoLogout: 'Автоматичний вихід',
autoLogout_10m: 'Через 10 хвилин',
autoLogout_12h: 'Через 12 годин',
autoLogout_2m: 'Через 2 хвилини',
autoLogout_30m: 'Через 30 хвилин',
autoLogout_5m: 'Через 5 хвилин',
autoLogout_never: 'Ніколи',
autoLogoutWarning_body:
"Вас буде виведено із системи через {{seconds}}с у зв'язку з неактивністю.",
autoLogoutWarning_title: 'Незабаром вас буде виведено із системи',
background: 'Фон',
baseCustomFields_title: 'Базові користувацькі поля',
baseGroup: 'Базова група',
@@ -125,6 +135,8 @@ export default {
closed: 'Закрито',
color: 'Колір',
comments: 'Коментарі',
confirmCodesSaved: 'Я зберіг(ла) ці коди в безпечному місці.',
confirmPassword: 'Підтвердження пароля',
contentExceedsLimit: 'Вміст перевищує {{limit}}',
contentOfThisAttachmentIsTooBigToDisplay:
'Вміст цього вкладення занадто великий для відображення.',
@@ -148,9 +160,63 @@ export default {
proFeatureCalendar: '✨ Вигляд календаря для ваших дощок',
proFeatureRecurringCards: '✨ Повторювані картки та автоматизація',
proFeatureGuestRoles: '✨ Ролі гостей та зовнішня співпраця',
proFeatureDashboard: '✨ Одна панель для всіх проектів',
proFeatureExport: '✨ Картки у форматі PDF для ваших звітів',
proFeatureMobile: '✨ PLANKA на телефонах і планшетах',
proFeatureSso: '✨ Вхід через каталог вашої компанії (SSO)',
proFeatureThemes: "✨ П'ять тем і власний акцентний колір",
proFeatureTimeline: '✨ Таймлайн: цілий рік на одній осі',
proTrialSelfHosted: '✨ Спробуйте PLANKA Pro 30 днів на власному сервері',
dismissProBannerFor30Days: 'Закрити на 30 днів',
customerPanel_title: 'Панель клієнта',
dangerZone_title: 'Небезпечна зона',
disable2fa_title: 'Вимкнути двофакторну аутентифікацію',
disable2faWarning:
'Вам потрібно буде підтвердити поточний пароль і TOTP-код. Наявні сеанси залишаться активними.',
enable2fa_title: 'Увімкнути двофакторну аутентифікацію',
enabledOn: 'Увімкнено {{date}}',
enterCodeFromApp: 'Введіть 6-значний код із вашого додатка для аутентифікації.',
enterPasswordToContinue: 'Підтвердіть поточний пароль, щоб продовжити.',
enterTotpOrRecoveryCode:
'Введіть 6-значний код із вашого додатка для аутентифікації або один із ваших кодів відновлення (xxxxx-xxxxx).',
expires: 'Термін дії',
invalidTotpCode: 'Неправильний TOTP-код або код відновлення',
lastUsed: 'Останнє використання',
never: 'Ніколи',
noTrustedDevices: 'Немає довірених пристроїв.',
orEnterSecretManually: 'Або введіть цей секретний ключ вручну:',
recoveryCodesExhausted:
'Усі коди відновлення використано. Перегенеруйте новий набір, щоб мати запасний варіант на випадок втрати доступу до додатка для аутентифікації.',
recoveryCodesIntro:
'Зберігайте ці коди в безпечному місці — кожен можна використати один раз, якщо ви втратите доступ до свого додатка для аутентифікації.',
recoveryCodesLow_one:
'Залишився лише {{count}} код відновлення. Радимо незабаром перегенерувати коди.',
recoveryCodesLow_few:
'Залишилося лише {{count}} коди відновлення. Радимо незабаром перегенерувати коди.',
recoveryCodesLow_many:
'Залишилося лише {{count}} кодів відновлення. Радимо незабаром перегенерувати коди.',
recoveryCodesLow_other:
'Залишилося лише {{count}} коду відновлення. Радимо незабаром перегенерувати коди.',
regenerateRecoveryCodes_title: 'Перегенерувати коди відновлення',
regenerateRecoveryCodesIntro:
'Генерація нових кодів зробить усі наявні коди відновлення недійсними.',
reset2fa_title: 'Скинути 2FA',
reset2faWarning:
'Скидання 2FA завершує всі сеанси користувача та видаляє його налаштування TOTP. Йому потрібно буде налаштувати 2FA знову під час наступного входу.',
saveTheseCodes_title: 'Збережіть ці коди відновлення',
scanQrCodeWithApp:
'Відскануйте цей QR-код за допомогою додатка для аутентифікації, наприклад Google Authenticator або Authy.',
security_title: 'Безпека',
totpCode: 'TOTP-код',
totpOrRecoveryCode: 'TOTP-код або код відновлення',
trustedDevices_title: 'Довірені браузери',
trustedDevicesHint:
'Браузери, позначені як довірені, пропускають другий фактор протягом 30 днів. Відкличте всі, які ви більше не впізнаєте.',
twoFactor_enabled: 'Двофакторну аутентифікацію увімкнено.',
twoFactor_intro:
'Додайте додатковий рівень безпеки до свого облікового запису за допомогою тимчасового одноразового коду з додатка для аутентифікації.',
twoFactorAuthentication: 'Двофакторна аутентифікація',
unknownDevice: 'Невідомий пристрій',
date: 'Дата',
deactivateUser_title: 'Деактивувати користувача',
defaultCardType_title: 'Тип картки за замовчуванням',
@@ -403,8 +469,11 @@ export default {
archiveCards: 'Архівувати картки',
archiveCards_title: 'Архівувати картки',
assignAsOwner: 'Призначити власником',
back: 'Назад',
cancel: 'Скасувати',
changePassword: 'Змінити пароль',
copy: 'Копіювати',
copyAll: 'Копіювати все',
copyCard_title: 'Копіювати картку',
createApiKey: 'Створити ключ API',
createBoard: 'Створити дошку',
@@ -444,7 +513,9 @@ export default {
deleteUser: 'Видалити користувача',
deleteUser_title: 'Видалити користувача',
deleteWebhook: 'Видалити вебхук',
disable2fa: 'Вимкнути 2FA',
dismissAll: 'Скасувати всі',
done: 'Готово',
download: 'Завантажити',
duplicateCard_title: 'Дублювати картку',
edit: 'Редагувати',
@@ -464,12 +535,14 @@ export default {
editUsername_title: "Редагувати ім'я користувача",
emptyTrash: 'Очистити смітник',
emptyTrash_title: 'Очистити смітник',
enable2fa: 'Увімкнути 2FA',
import: 'Імпортувати',
join: 'Приєднатися',
leave: 'Покинути',
leaveBoard: 'Залишити дошку',
leaveProject: 'Залишити проект',
logOut_title: 'Вийти',
logOutNow: 'Вийти зараз',
makeCover_title: 'Зробити обкладинкою',
makeProjectPrivate: 'Зробити проект приватним',
makeProjectPrivate_title: 'Зробити проект приватним',
@@ -478,7 +551,9 @@ export default {
move: 'Перемістити',
moveCard_title: 'Перемістити картку',
moveList_title: 'Перемістити список',
regenerate: 'Перегенерувати',
regenerateApiKey: 'Перегенерувати ключ API',
regenerateRecoveryCodes: 'Перегенерувати коди відновлення',
remove: 'Видалити',
removeAssignee: 'Видалити виконавця',
removeColor: 'Видалити колір',
@@ -487,8 +562,10 @@ export default {
removeFromProject: 'Вилучити з проекту',
removeManager: 'Вилучити керівника',
removeMember: 'Вилучити учасника',
reset2fa: 'Скинути 2FA',
restoreToList: 'Відновити до {{list}}',
returnToBoard: 'Повернутися до дошки',
revoke: 'Відкликати',
save: 'Зберегти',
sendTestEmail: 'Надіслати тестовий електронний лист',
showActive: 'Показати активний',
@@ -500,11 +577,13 @@ export default {
showMore: 'Показати більше',
sortList_title: 'Сортувати список',
start: 'Почати',
stayLoggedIn: 'Залишитися в системі',
stop: 'Зупинити',
subscribe: 'Підписатися',
unsubscribe: 'Відписатися',
uploadNewAvatar: 'Завантажити новий аватар',
uploadNewImage: 'Завантажити нове зображення',
verify: 'Підтвердити',
},
},
};