Skip to content

Commit 6fa00db

Browse files
authored
Added Ukrainian translations (baserow#4709)
1 parent 6803aec commit 6fa00db

6 files changed

Lines changed: 35 additions & 6 deletions

File tree

backend/src/baserow/config/settings/base.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -345,6 +345,7 @@
345345
("it", "Italian"),
346346
("pl", "Polish"),
347347
("ko", "Korean"),
348+
("uk", "Ukrainian"),
348349
]
349350

350351
TIME_ZONE = "UTC"
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# Generated by Django 5.2.11 on 2026-02-11 16:35
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
('core', '0111_alter_twofactorauthprovidermodel_user'),
10+
]
11+
12+
operations = [
13+
migrations.AlterField(
14+
model_name='userprofile',
15+
name='language',
16+
field=models.TextField(choices=[('en', 'English'), ('fr', 'French'), ('nl', 'Dutch'), ('de', 'German'), ('es', 'Spanish'), ('it', 'Italian'), ('pl', 'Polish'), ('ko', 'Korean'), ('uk', 'Ukrainian')], default='en', help_text='An ISO 639 language code (with optional variant) selected by the user. Ex: en-GB.', max_length=10),
17+
),
18+
]
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{
2+
"type": "feature",
3+
"message": "Add Ukrainian languauge.",
4+
"issue_origin": "github",
5+
"issue_number": null,
6+
"domain": "core",
7+
"bullet_points": [],
8+
"created_at": "2026-02-09"
9+
}

web-frontend/config/locales.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,4 +15,5 @@ export const locales = [
1515
{ code: 'it', name: 'Italiano', file: 'it.json' },
1616
{ code: 'pl', name: 'Polski (Beta)', file: 'pl.json' },
1717
{ code: 'ko', name: '한국어', file: 'ko.json' },
18+
{ code: 'uk', name: 'Українська', file: 'uk.json' },
1819
]

web-frontend/modules/database/locales/uk.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -156,8 +156,8 @@
156156
"filterType": "- `AND`: Вказує, що рядки повинні відповідати всім наданим фільтрам.\n- `OR`: Вказує, що рядки повинні відповідати лише одному з фільтрів.\n\n Це працює лише якщо надано два або більше фільтрів.",
157157
"include": "За замовчуванням усі поля включені у відповідь. Ви можете вибрати підмножину полів для включення, надавши параметр запиту include.\n\n #### З `user_field_names`:\n\n `include` має бути списком назв полів для включення в результати, розділених комами. Наприклад, якщо ви надасте такий параметр GET: `include=My Field,-My Field 2`, то лише ці поля будуть включені (якщо вони явно не виключені).\n\n Назви полів, що містять коми, мають бути взяті в лапки: `\"Name ,\"`. Якщо назви полів містять лапки, їх потрібно екранувати символом `\\`. Наприклад: `Name \\\"`.\n\n #### Без `user_field_names`:\n\n `include` має бути списком `field_`, за яким слідує id поля для включення в результати, розділених комами. Наприклад: якщо ви надасте такий параметр GET `include=field_1,field_2`, то лише поля з id `1` та id `2` будуть включені (якщо вони явно не виключені).",
158158
"exclude": "За замовчуванням усі поля включені у відповідь. Ви можете вибрати підмножину полів для виключення, надавши параметр запиту exclude.\n\n #### З `user_field_names`:\n\n `exclude` має бути списком назв полів для виключення з результатів, розділених комами. Наприклад, якщо ви надасте такий параметр GET: `exclude=My Field,-My Field 2`, то ці поля будуть виключені.\n\n Назви полів, що містять коми, мають бути взяті в лапки: `\"Name ,\"`. Якщо назви полів містять лапки, їх потрібно екранувати символом `\\`. Наприклад: `Name \\\"`.\n\n #### Без `user_field_names`:\n\n `exclude` має бути списком `field_`, за яким слідує id поля для виключення з результатів, розділених комами. Наприклад: якщо ви надасте такий параметр GET `exclude=field_1,field_2`, то поля з id `1` та id `2` будуть виключені.",
159-
"viewId": "За замовчуванням жодні фільтри та сортування, крім тих, що визначені в параметрах запиту, не застосовуються. Ви можете додати фільтри та сортування перегляду, надавши його `id` у параметрі GET `view_id`. Наприклад, якщо ви надасте такий параметр GET `view_id=1`, то будуть застосовані фільтри та сортування, визначені в перегляді з id `1`. Ви можете знайти `view_id` у контекстному меню будь-якого перегляду. Це число в дужках за назвою перегляду. \n\n #### With `filter__{'{'}field}__{{'}'}__{'{'}filter{'}'}` \n\n Будуть застосовані як фільтр, наданий у параметрі запиту, так і фільтри, визначені в перегляді.\n\n #### З `order_by` \n\n Якщо надано `order_by`, то сортування, визначене в перегляді, буде проігноровано.",
160-
"filters": "Рядки можна необов'язково фільтрувати, використовуючи ті ж фільтри перегляду, що доступні для переглядів. Цей параметр приймає серіалізований JSON рядок, що містить дерево фільтрів для застосування до цього перегляду. Дерево фільтрів — це вкладена структура, що містить фільтри, які потрібно застосувати. \n\n#### З `user_field_names`:\n\nПриклад дійсного дерева фільтрів: `{\"filter_type\": \"AND\", \"filters\": [{\"field\": \"Name\", \"type\": \"equal\", \"value\": \"test\"}]}`.\n\n#### Без `user_field_names`:\n\nНаприклад, якщо ви надасте такий параметр GET: `{\"filter_type\": \"AND\", \"filters\": [{\"field\": 1, \"type\": \"equal\", \"value\": \"test\"}]}`\n\nЗверніть увагу, що якщо цей параметр надано, всі інші `filter__{field}__{filter}` будуть проігноровані, так само як і параметр filter_type.",
159+
"viewId": "За замовчуванням жодні фільтри та сортування, крім тих, що визначені в параметрах запиту, не застосовуються. Ви можете додати фільтри та сортування перегляду, надавши його `id` у параметрі GET `view_id`. Наприклад, якщо ви надасте такий параметр GET `view_id=1`, то будуть застосовані фільтри та сортування, визначені в перегляді з id `1`. Ви можете знайти `view_id` у контекстному меню будь-якого перегляду. Це число в дужках за назвою перегляду. \n\n #### З `filter__{field}__{filter}` \n\n Будуть застосовані як фільтр, наданий у параметрі запиту, так і фільтри, визначені в перегляді.\n\n #### З `order_by` \n\n Якщо надано `order_by`, то сортування, визначене в перегляді, буде проігноровано.",
160+
"filters": "Рядки можна необов'язково фільтрувати, використовуючи ті ж фільтри перегляду, що доступні для переглядів. Цей параметр приймає серіалізований JSON рядок, що містить дерево фільтрів для застосування до цього перегляду. Дерево фільтрів — це вкладена структура, що містить фільтри, які потрібно застосувати. \n\n#### З `user_field_names`:\n\nПриклад дійсного дерева фільтрів: `{'{'}\"filter_type\": \"AND\", \"filters\": [{'{'}\"field\": \"Name\", \"type\": \"equal\", \"value\": \"test\"{'}'}]{'}'}`.\n\n#### Без `user_field_names`:\n\nНаприклад, якщо ви надасте такий параметр GET: `{'{'}\"filter_type\": \"AND\", \"filters\": [{'{'}\"field\": 1, \"type\": \"equal\", \"value\": \"test\"{'}'}]{'}'}`\n\nЗверніть увагу, що якщо цей параметр надано, всі інші `filter__{'{'}field{'}'}__{'{'}filter{'}'}` будуть проігноровані, так само як і параметр filter_type.",
161161
"filtersBuilder": "Відкрити конструктор параметрів фільтрів",
162162
"join": "Дозволяє запитувати пошук значень полів з цільової таблиці через існуючі поля зв'язаних рядків. Назва параметра має бути назвою існуючого поля зв'язаного рядка, за якою слідує __join. Значенням має бути список назв полів, для яких ми хочемо отримати додаткові значення. Ви можете надати одне або кілька цільових полів. Неможливо отримати значення поля зв'язаного рядка в цільовій таблиці.\n\n #### З `user_field_names`:\n\n `join` має бути списком назв полів для включення в результати, розділених комами. Наприклад: якщо ви надасте такий параметр GET `LinkRowField__join=MyField,MyField2`, то значення `MyField` та `My Field2` у таблиці, зв'язаній через `LinkRowField`, будуть включені у відповідь.\n\n#### Без `user_field_names`:\n\n `join` має бути списком `field_`, за яким слідує id поля для включення в результати, розділених комами. Наприклад: якщо ви надасте такий параметр GET `field_1__join=field_2,field_3`, то значення `field_2` та `field_3` у таблиці, зв'язаній через `field_1`, будуть включені у відповідь.",
163163
"test": "`{'{'}\"filter_type\": \"AND\", \"filters\": [{'{'}\"field\": \"Name\", \"type\": \"equal\", \"value\": \"test\"{'}'}]{'}'}"

web-frontend/modules/integrations/locales/uk.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -211,9 +211,9 @@
211211
"supportPairingHeading": "2. Підключення до вашого застосунку Slack",
212212
"supportPairingStep1": "Якщо ваш застосунок новий: перейдіть до \"Settings\" > \"Install App\". Натисніть зелену кнопку, щоб встановити застосунок у ваш робочий простір.",
213213
"supportPairingStep2": "Скопіюйте ваш \"Bot User OAuth Token\" і збережіть його в полі \"Токен користувача бота\" у цій формі.",
214-
"supportSetupStep1": "Перейдіть до вашого робочого простору <&lt;a href=\"https://api.slack.com/apps\" target=\"_blank\"&gt;apps page&lt;/a&gt;",
215-
"supportSetupStep4": "Щоб дозволити вашому додатку надсилати повідомлення, додайте &lt;pre&gt;chat:write&lt;/pre&gt; область.",
216-
"supportPairingStep3": "Нарешті, якщо ваш додаток новий: у Slack запросіть його до обраного каналу за допомогою команди &lt;pre&gt;/invite {'@'}yourAppName yourChannel&lt;/pre&gt;"
214+
"supportPairingStep3": "Нарешті, якщо ваш додаток новий: у Slack запросіть його до обраного каналу за допомогою команди &lt;pre&gt;/invite {'@'}yourAppName yourChannel&lt;/pre&gt;",
215+
"supportSetupStep1": "Перейдіть до вашого робочого простору &lt;a href=\"https://api.slack.com/apps\" target=\"_blank\"&gt;.",
216+
"supportSetupStep4": "Щоб дозволити вашому додатку надсилати повідомлення, додайте &lt;pre&gt;chat:write&lt;/pre&gt; область."
217217
},
218218
"slackWriteMessageServiceForm": {
219219
"alertMessage": "Ця дія повинна бути пов'язана із застосунком Slack. Дотримуйтесь інструкцій у спливаючому вікні інтеграцій, щоб почати.",
@@ -250,7 +250,7 @@
250250
"smtpEmailForm": {
251251
"integrationDropdownLabel": "Інтеграція",
252252
"fromEmail": "Від кого (Email)",
253-
"fromEmailPlaceholder": "sender@{'@'}example.com",
253+
"fromEmailPlaceholder": "sender{'@'}example.com",
254254
"fromName": "Від кого (Ім'я)",
255255
"fromNamePlaceholder": "Ваше ім'я",
256256
"toEmails": "Кому (Email)",

0 commit comments

Comments
 (0)