From 9caf72aae727c59684d29d0694221e5ebbf5d1c2 Mon Sep 17 00:00:00 2001 From: Lollyde Date: Thu, 31 Oct 2024 13:55:38 +0100 Subject: [PATCH 1/4] fix: documentation link (#2163) seems like this was missed a while back. --- data/configs/default.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/data/configs/default.json b/data/configs/default.json index 910d736f7b6..b77e3869d76 100644 --- a/data/configs/default.json +++ b/data/configs/default.json @@ -432,7 +432,7 @@ "type": "notebook", "properties": { "showToolbar": true, - "content": "

Welcome to Homarr 🚀👋

We're glad that you're here! Homarr is a modern and easy to use dashboard that helps you to organize and manage your home network from one place. Control is at your fingertips.

We recommend you to read the getting started guide first. To edit this board you must enter the edit mode - only administrators can do this. Adding an app is the first step you should take. You can do this by clicking the Add tile button at the top right and select App. After you provided an internal URL, external URL and selected an icon you can drag it around when holding down the left mouse button. Make it bigger or smaller using the drag icon at the bottom right. When you're happy with it's position, you must exit edit mode to save your board. Adding widgets works the same way but may require additional configuration - read the documentation for more information.

To remove this widget, you must log in to your administrator account and click on the menu to delete it.

Your TODO list:

" + "content": "

Welcome to Homarr 🚀👋

We're glad that you're here! Homarr is a modern and easy to use dashboard that helps you to organize and manage your home network from one place. Control is at your fingertips.

We recommend you to read the getting started guide first. To edit this board you must enter the edit mode - only administrators can do this. Adding an app is the first step you should take. You can do this by clicking the Add tile button at the top right and select App. After you provided an internal URL, external URL and selected an icon you can drag it around when holding down the left mouse button. Make it bigger or smaller using the drag icon at the bottom right. When you're happy with it's position, you must exit edit mode to save your board. Adding widgets works the same way but may require additional configuration - read the documentation for more information.

To remove this widget, you must log in to your administrator account and click on the menu to delete it.

Your TODO list:

" }, "area": { "type": "wrapper", @@ -510,4 +510,4 @@ "allowGuests": false } } -} \ No newline at end of file +} From 22732e33e546f6893574393326944ce64b7d86e8 Mon Sep 17 00:00:00 2001 From: Meier Lukas Date: Fri, 1 Nov 2024 10:03:45 +0100 Subject: [PATCH 2/4] fix: credentials login behind proxy no longer works (#2177) --- src/server/auth.ts | 13 ++------ src/utils/auth/cookies.ts | 66 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 68 insertions(+), 11 deletions(-) create mode 100644 src/utils/auth/cookies.ts diff --git a/src/server/auth.ts b/src/server/auth.ts index 9b7e19a934b..bea84ec2aa3 100644 --- a/src/server/auth.ts +++ b/src/server/auth.ts @@ -7,6 +7,7 @@ import { decode, encode } from 'next-auth/jwt'; import { env } from '~/env'; import { secondsFromTimeString } from '~/tools/client/parseDuration'; import { adapter, getProviders, onCreateUser } from '~/utils/auth'; +import { createCookiesWithDefaultOptions } from '~/utils/auth/cookies'; import { createRedirectUri } from '~/utils/auth/oidc'; import EmptyNextAuthProvider from '~/utils/empty-provider'; import { fromDate, generateSessionToken } from '~/utils/session'; @@ -106,17 +107,7 @@ export const constructAuthOptions = async ( }, adapter: adapter as Adapter, providers: [...(await getProviders(req.headers)), EmptyNextAuthProvider()], - cookies: { - sessionToken: { - name: 'next-auth.session-token', - options: { - httpOnly: true, - sameSite: 'lax', - path: '/', - secure: true, - }, - }, - }, + cookies: createCookiesWithDefaultOptions(req.url?.startsWith('https:') ?? false), jwt: { async encode(params) { if (!isCredentialsRequest(req)) { diff --git a/src/utils/auth/cookies.ts b/src/utils/auth/cookies.ts new file mode 100644 index 00000000000..8ccaea01e4c --- /dev/null +++ b/src/utils/auth/cookies.ts @@ -0,0 +1,66 @@ +export const createCookiesWithDefaultOptions = (useSecureCookies: boolean) => { + const cookiePrefix = useSecureCookies ? '__Secure-' : ''; + + return { + // default cookie options + sessionToken: { + // We don't use __Secure prefix as the cookie is used in the code + name: `next-auth.session-token`, + options: { + httpOnly: true, + sameSite: 'lax', + path: '/', + secure: useSecureCookies, + }, + }, + callbackUrl: { + name: `${cookiePrefix}next-auth.callback-url`, + options: { + httpOnly: true, + sameSite: 'lax', + path: '/', + secure: useSecureCookies, + }, + }, + csrfToken: { + // Default to __Host- for CSRF token for additional protection if using useSecureCookies + // NB: The `__Host-` prefix is stricter than the `__Secure-` prefix. + name: `${useSecureCookies ? '__Host-' : ''}next-auth.csrf-token`, + options: { + httpOnly: true, + sameSite: 'lax', + path: '/', + secure: useSecureCookies, + }, + }, + pkceCodeVerifier: { + name: `${cookiePrefix}next-auth.pkce.code_verifier`, + options: { + httpOnly: true, + sameSite: 'lax', + path: '/', + secure: useSecureCookies, + maxAge: 60 * 15, // 15 minutes in seconds + }, + }, + state: { + name: `${cookiePrefix}next-auth.state`, + options: { + httpOnly: true, + sameSite: 'lax', + path: '/', + secure: useSecureCookies, + maxAge: 60 * 15, // 15 minutes in seconds + }, + }, + nonce: { + name: `${cookiePrefix}next-auth.nonce`, + options: { + httpOnly: true, + sameSite: 'lax', + path: '/', + secure: useSecureCookies, + }, + }, + } as const; +}; From 36515852710bd34b3358b484380e12041ec4135b Mon Sep 17 00:00:00 2001 From: Thomas Camlong Date: Fri, 1 Nov 2024 18:04:23 +0900 Subject: [PATCH 3/4] chore: new Crowdin updates (#2169) * New translations common.json (Ukrainian) * New translations date.json (Ukrainian) * New translations weather.json (Ukrainian) * New translations page-appearance.json (Ukrainian) * New translations common.json (Ukrainian) * New translations page-appearance.json (Ukrainian) * New translations login.json (Ukrainian) * New translations selector.json (Ukrainian) * New translations add-app.json (Ukrainian) * New translations about.json (Ukrainian) * New translations torrents-status.json (Ukrainian) * New translations manage.json (Ukrainian) * New translations boards.json (Ukrainian) * New translations users.json (Ukrainian) * New translations docker.json (Ukrainian) * New translations entity-state.json (Ukrainian) * New translations edit.json (Ukrainian) * New translations trigger-automation.json (Ukrainian) * New translations indexer-manager.json (Ukrainian) * New translations health-monitoring.json (Ukrainian) * New translations media-transcoding.json (Ukrainian) --- public/locales/uk/authentication/login.json | 4 +- public/locales/uk/common.json | 12 ++-- .../uk/layout/element-selector/selector.json | 2 +- public/locales/uk/layout/manage.json | 2 +- public/locales/uk/layout/modals/about.json | 8 +-- public/locales/uk/layout/modals/add-app.json | 2 +- public/locales/uk/manage/boards.json | 10 +-- public/locales/uk/manage/users.json | 8 +-- public/locales/uk/manage/users/edit.json | 32 ++++----- public/locales/uk/modules/date.json | 14 ++-- .../locales/uk/modules/health-monitoring.json | 10 +-- .../locales/uk/modules/indexer-manager.json | 16 ++--- .../locales/uk/modules/media-transcoding.json | 70 +++++++++---------- .../uk/modules/smart-home/entity-state.json | 30 ++++---- .../smart-home/trigger-automation.json | 12 ++-- .../locales/uk/modules/torrents-status.json | 36 +++++----- public/locales/uk/modules/weather.json | 4 +- .../customization/page-appearance.json | 22 +++--- public/locales/uk/tools/docker.json | 2 +- 19 files changed, 148 insertions(+), 148 deletions(-) diff --git a/public/locales/uk/authentication/login.json b/public/locales/uk/authentication/login.json index 1224f19d7cc..ef1639cd3e8 100644 --- a/public/locales/uk/authentication/login.json +++ b/public/locales/uk/authentication/login.json @@ -16,8 +16,8 @@ }, "afterLoginRedirection": "Після входу ви будете перенаправлені на сайт {{url}}", "providersEmpty": { - "title": "", - "message": "" + "title": "Помилка постачальника авторизації", + "message": "Постачальник(и) не налаштовано, перевірте свої журнали для отримання додаткової інформації." } }, "alert": "Ваші облікові дані невірні або такого облікового запису не існує. Будь ласка, спробуйте ще раз." diff --git a/public/locales/uk/common.json b/public/locales/uk/common.json index 0586a2323c9..8195caaeb7f 100644 --- a/public/locales/uk/common.json +++ b/public/locales/uk/common.json @@ -1,7 +1,7 @@ { "save": "Зберегти", - "apply": "", - "insert": "", + "apply": "Застосувати", + "insert": "Вставити", "about": "Про програму", "cancel": "Скасувати", "close": "Закрити", @@ -13,11 +13,11 @@ "previous": "Попередній", "confirm": "Підтвердити", "enabled": "Увімкнено", - "duplicate": "", + "duplicate": "Дублікат", "disabled": "Вимкнено", "enableAll": "Увімкнути все", "disableAll": "Вимкнути усе", - "setTimer": "", + "setTimer": "Встановити таймер", "version": "Версія", "changePosition": "Змінити положення", "remove": "Видалити", @@ -47,7 +47,7 @@ "seeMore": "Побачити більше...", "position": { "left": "Ліворуч.", - "center": "", + "center": "Центр", "right": "Так." }, "attributes": { @@ -55,5 +55,5 @@ "height": "Висота" }, "public": "Публічний", - "restricted": "" + "restricted": "Обмежено" } \ No newline at end of file diff --git a/public/locales/uk/layout/element-selector/selector.json b/public/locales/uk/layout/element-selector/selector.json index bac518ba333..9034d2f3907 100644 --- a/public/locales/uk/layout/element-selector/selector.json +++ b/public/locales/uk/layout/element-selector/selector.json @@ -22,5 +22,5 @@ "message": "Створено категорію \"{{name}}\"" } }, - "importFromDocker": "" + "importFromDocker": "Імпортувати з docker" } diff --git a/public/locales/uk/layout/manage.json b/public/locales/uk/layout/manage.json index 7f70fa21155..39235e06311 100644 --- a/public/locales/uk/layout/manage.json +++ b/public/locales/uk/layout/manage.json @@ -26,7 +26,7 @@ "title": "Інструменти", "items": { "docker": "Docker", - "api": "" + "api": "API" } }, "about": { diff --git a/public/locales/uk/layout/modals/about.json b/public/locales/uk/layout/modals/about.json index 44546868523..867b02cc2fb 100644 --- a/public/locales/uk/layout/modals/about.json +++ b/public/locales/uk/layout/modals/about.json @@ -5,10 +5,10 @@ "key": "Гарячі клавіши", "action": "Дії", "keybinds": "Сполучення клавіш", - "translators": "", - "translatorsDescription": "", - "contributors": "", - "contributorsDescription": "", + "translators": "Перекладачі ({{count}})", + "translatorsDescription": "Завдяки цим людям Homarr доступний {{languages}} мовами! Хочете допомогти перекласти Homarr своєю мовою? Прочитайте, як це зробити тут.", + "contributors": "Учасники ({{count}})", + "contributorsDescription": "Ці люди створили код, завдяки якому homarr працює! Хочете допомогти побудувати Homarr? Прочитайте, як це зробити тут", "actions": { "toggleTheme": "Перемикання світлого/темного режиму", "focusSearchBar": "Зосередьтеся на рядку пошуку", diff --git a/public/locales/uk/layout/modals/add-app.json b/public/locales/uk/layout/modals/add-app.json index 811751f2df8..21fce199862 100644 --- a/public/locales/uk/layout/modals/add-app.json +++ b/public/locales/uk/layout/modals/add-app.json @@ -32,7 +32,7 @@ "externalAddress": { "label": "Зовнішня адреса", "description": "URL-адреса відкриється в браузері при натисканні на додаток.", - "tooltip": "" + "tooltip": "Ви можете використовувати декілька змінних для створення динамічних адрес:

[homarr_base]: повна адреса, за винятком порту і шляху. (Приклад: 'https://subdomain.homarr.dev')
[homarr_hostname]: повна базова адреса, включаючи поточний субдомен. (Приклад: 'subdomain.homarr.dev')
[homarr_domain]: домен з відфільтрованим субдоменом. (Приклад: `homarr.dev')
[homarr_protocol]: http/https

Всі ці змінні залежать від поточного url." } }, "behaviour": { diff --git a/public/locales/uk/manage/boards.json b/public/locales/uk/manage/boards.json index 1a5f3ad7f36..dc4277c9365 100644 --- a/public/locales/uk/manage/boards.json +++ b/public/locales/uk/manage/boards.json @@ -16,15 +16,15 @@ "label": "Видалити назавжди", "disabled": "Видалення вимкнено, оскільки старіші компоненти Homarr не дозволяють видаляти конфігурацію за замовчуванням. Видалення буде можливим у майбутньому." }, - "duplicate": "", + "duplicate": "Дублікат", "rename": { - "label": "", + "label": "Перейменувати", "modal": { - "title": "", + "title": "Перейменувати дошку {{name}}", "fields": { "name": { - "label": "", - "placeholder": "" + "label": "Нова назва", + "placeholder": "Нова назва дошки" } } } diff --git a/public/locales/uk/manage/users.json b/public/locales/uk/manage/users.json index 0715f7d93ea..c97093a6a73 100644 --- a/public/locales/uk/manage/users.json +++ b/public/locales/uk/manage/users.json @@ -6,10 +6,10 @@ }, "filter": { "roles": { - "all": "", - "normal": "", - "admin": "", - "owner": "" + "all": "Усе", + "normal": "Нормально", + "admin": "Адміністратор", + "owner": "Власник" } }, "table": { diff --git a/public/locales/uk/manage/users/edit.json b/public/locales/uk/manage/users/edit.json index 6716f14922f..9823b9057d6 100644 --- a/public/locales/uk/manage/users/edit.json +++ b/public/locales/uk/manage/users/edit.json @@ -1,6 +1,6 @@ { - "metaTitle": "", - "back": "", + "metaTitle": "Користувач {{username}}", + "back": "Повернутися до керування користувачами", "sections": { "general": { "title": "Загальне", @@ -14,40 +14,40 @@ } }, "security": { - "title": "", + "title": "Безпека", "inputs": { "password": { - "label": "" + "label": "Новий пароль" }, "terminateExistingSessions": { - "label": "", - "description": "" + "label": "Завершити поточні сесії", + "description": "Змушує користувача повторно входити в систему на своїх пристроях" }, "confirm": { "label": "Підтвердити", - "description": "" + "description": "Пароль буде оновлено. Дію не можна скасувати." } } }, "roles": { - "title": "", - "currentRole": "", + "title": "Ролі", + "currentRole": "Поточна роль: ", "badges": { - "owner": "", - "admin": "", - "normal": "" + "owner": "Власник", + "admin": "Адміністратор", + "normal": "Нормально" } }, "deletion": { - "title": "", + "title": "Видалення облікового запису", "inputs": { "confirmUsername": { - "label": "", - "description": "" + "label": "Підтвердіть ім'я користувача", + "description": "Введіть ім'я користувача для підтвердження видалення" }, "confirm": { "label": "Видалити назавжди", - "description": "" + "description": "Я усвідомлюю, що ця дія є безстроковою і всі дані облікового запису будуть втрачені." } } } diff --git a/public/locales/uk/modules/date.json b/public/locales/uk/modules/date.json index d83f78a95bd..9eb8708ca7e 100644 --- a/public/locales/uk/modules/date.json +++ b/public/locales/uk/modules/date.json @@ -5,11 +5,11 @@ "settings": { "title": "Налаштування віджету дати й часу", "timezone": { - "label": "", - "info": "" + "label": "Часовий пояс", + "info": "Виберіть назву свого часового поясу, знайдіть свій тут: " }, "customTitle": { - "label": "" + "label": "Назва міста або власна назва" }, "display24HourFormat": { "label": "Показувати повний час (24 години)" @@ -21,11 +21,11 @@ } }, "titleState": { - "label": "", - "info": "", + "label": "Назва годинника", + "info": "У віджеті можна показувати власну назву та код часового поясу.
Ви також можете показувати лише місто, не показувати жодного,
або навіть показувати лише часовий пояс, якщо вибрано обидва, але не вказано назву.", "data": { - "both": "", - "city": "", + "both": "Назва та часовий пояс", + "city": "Тільки назва", "none": "Нема" } } diff --git a/public/locales/uk/modules/health-monitoring.json b/public/locales/uk/modules/health-monitoring.json index b7cc6023a3d..804d6452520 100644 --- a/public/locales/uk/modules/health-monitoring.json +++ b/public/locales/uk/modules/health-monitoring.json @@ -131,11 +131,11 @@ "diskSize": "", "diskRatio": "", "uptime": "", - "plugin": "", - "ha": "", - "sharedStorage": "", - "localStorage": "", - "na": "" + "plugin": "Плагін", + "ha": "Стан HA - {{haState}}", + "sharedStorage": "Спільне сховище", + "localStorage": "Локальне сховище", + "na": "Н/Д" } } } \ No newline at end of file diff --git a/public/locales/uk/modules/indexer-manager.json b/public/locales/uk/modules/indexer-manager.json index 93145402723..319da58d98c 100644 --- a/public/locales/uk/modules/indexer-manager.json +++ b/public/locales/uk/modules/indexer-manager.json @@ -1,22 +1,22 @@ { "descriptor": { - "name": "", - "description": "", + "name": "Статус менеджера індексування", + "description": "Статус про ваші індексування", "settings": { - "title": "", + "title": "Статус менеджера індексування", "openIndexerSiteInNewTab": { - "label": "" + "label": "Відкрити Сайт індексування у новій вкладці" } } }, "indexersStatus": { - "title": "", - "testAllButton": "" + "title": "Менеджер індексації", + "testAllButton": "Перевірте все" }, "errors": { "general": { - "title": "", - "text": "" + "title": "Не вдається знайти менеджера індексації", + "text": "Виникла проблема підключення до вашого менеджера індексаторів. Будь ласка, перевірте вашу конфігурацію/інтеграцію(ї)." } } } \ No newline at end of file diff --git a/public/locales/uk/modules/media-transcoding.json b/public/locales/uk/modules/media-transcoding.json index a64f7d57a46..79be834bdc5 100644 --- a/public/locales/uk/modules/media-transcoding.json +++ b/public/locales/uk/modules/media-transcoding.json @@ -1,96 +1,96 @@ { "descriptor": { - "name": "", - "description": "", + "name": "Перекодування медіа", + "description": "Відображає інформацію про перекодування медіа", "settings": { - "title": "", + "title": "Налаштування перекодування мультимедіа", "appId": { - "label": "" + "label": "Виберіть програму" }, "defaultView": { - "label": "", + "label": "Вигляд за замовчуванням", "data": { - "workers": "", + "workers": "Робітники", "queue": "Черга", - "statistics": "" + "statistics": "Статистика" } }, "showHealthCheck": { - "label": "" + "label": "Показувати індикатор перевірки працездатності" }, "showHealthChecksInQueue": { - "label": "" + "label": "Показувати перевірки працездатності в черзі" }, "queuePageSize": { - "label": "" + "label": "Черга: Елементи на сторінку" }, "showAppIcon": { - "label": "" + "label": "Показати іконку програми в правому нижньому куті" } } }, - "noAppSelected": "", + "noAppSelected": "Будь ласка, оберіть додаток у налаштуваннях віджету", "views": { "workers": { "table": { "header": { - "name": "", + "name": "Файл", "eta": "Залишилося", "progress": "Прогрес" }, "empty": "Пусто", "tooltip": { - "transcode": "", - "healthCheck": "" + "transcode": "Перекодувати", + "healthCheck": "Перевірка працездатності" } } }, "queue": { "table": { "header": { - "name": "", + "name": "Файл", "size": "Розмір" }, "footer": { - "currentIndex": "" + "currentIndex": "{{start}}-{{end}} від {{total}}" }, "empty": "Пусто", "tooltip": { - "transcode": "", - "healthCheck": "" + "transcode": "Перекодувати", + "healthCheck": "Перевірка працездатності" } } }, "statistics": { "empty": "Пусто", "box": { - "transcodes": "", - "healthChecks": "", - "files": "", - "spaceSaved": "" + "transcodes": "Перекодує: {{value}}", + "healthChecks": "Перевірки працездатності: {{value}}", + "files": "Файли: {{value}}", + "spaceSaved": "Збережено: {{value}}" }, "pies": { - "transcodes": "", - "healthChecks": "", - "videoCodecs": "", - "videoContainers": "", - "videoResolutions": "" + "transcodes": "Перекодує", + "healthChecks": "Перевірка працездатності", + "videoCodecs": "Кодеки", + "videoContainers": "Контейнери", + "videoResolutions": "Роздільна здатність" } } }, "error": { "title": "Помилка", - "message": "" + "message": "Виникла помилка при отриманні даних з Tdarr." }, "tabs": { - "workers": "", + "workers": "Робітники", "queue": "Черга", - "statistics": "" + "statistics": "Статистика" }, "healthCheckStatus": { - "title": "", - "queued": "", - "healthy": "", - "unhealthy": "" + "title": "Перевірка працездатності", + "queued": "У черзі", + "healthy": "Здоровий", + "unhealthy": "Нездоровий" } } diff --git a/public/locales/uk/modules/smart-home/entity-state.json b/public/locales/uk/modules/smart-home/entity-state.json index 45587f0a5cc..19d9cd78fa8 100644 --- a/public/locales/uk/modules/smart-home/entity-state.json +++ b/public/locales/uk/modules/smart-home/entity-state.json @@ -1,32 +1,32 @@ { - "entityNotFound": "", + "entityNotFound": "Об'єкт не знайдено", "descriptor": { - "name": "", - "description": "", + "name": "Home Assistant об'єкт", + "description": "Поточний стан об'єкта в Home Assistant", "settings": { - "title": "", + "title": "Стан об'єкта", "entityId": { - "label": "", - "info": "" + "label": "Ідентифікатор об'єкта", + "info": "Унікальний ідентифікатор сутності в Home Assistant. Скопіюйте, натиснувши на об'єкт > Натисніть на значок гвинтика > Натисніть на кнопку копіювання в \"Ідентифікаторі об'єкта\". Деякі користувацькі об'єкти можуть не підтримуватися." }, "appendUnit": { - "label": "", - "info": "" + "label": "Додайте одиницю виміру", + "info": "Додайте атрибут одиниці виміру до стану об'єкта." }, "automationId": { - "label": "", - "info": "" + "label": "Додатковий ідентифікатор автоматизації", + "info": "Ваш унікальний ідентифікатор автоматизації. Завжди починається з automation.XXXXX. Якщо не встановлено, віджет не буде клікабельним, а лише показуватиме стан. Після натискання стан об'єкта буде оновлено." }, "displayName": { - "label": "" + "label": "Відображати ім'я" }, "displayFriendlyName": { - "label": "", - "info": "" + "label": "Відображати зрозуміле ім'я", + "info": "Замість відображуваного імені відображати зрозуміле ім’я від Home Assistant." }, "genericToggle": { - "label": "", - "info": "" + "label": "Перемикач об'єкту", + "info": "Виконайте загальну дію перемикання Home Assistant над об’єктом після натискання." } } } diff --git a/public/locales/uk/modules/smart-home/trigger-automation.json b/public/locales/uk/modules/smart-home/trigger-automation.json index 37046b5cf74..69907b8911d 100644 --- a/public/locales/uk/modules/smart-home/trigger-automation.json +++ b/public/locales/uk/modules/smart-home/trigger-automation.json @@ -1,15 +1,15 @@ { "descriptor": { - "name": "", - "description": "", + "name": "Автоматизація Home Assistant", + "description": "Виконати автоматизацію", "settings": { - "title": "", + "title": "Виконати автоматизацію", "automationId": { - "label": "", - "info": "" + "label": "Ідентифікатор автоматизації", + "info": "Ваш унікальний ідентифікатор автоматизації. Завжди починається з automation.XXXXX." }, "displayName": { - "label": "" + "label": "Відображати ім'я" } } } diff --git a/public/locales/uk/modules/torrents-status.json b/public/locales/uk/modules/torrents-status.json index 54b97c3704b..d65c7ad04b0 100644 --- a/public/locales/uk/modules/torrents-status.json +++ b/public/locales/uk/modules/torrents-status.json @@ -11,10 +11,10 @@ "label": "Відображати завершені торренти" }, "displayActiveTorrents": { - "label": "" + "label": "Відображати активні торренти" }, "speedLimitOfActiveTorrents": { - "label": "" + "label": "Швидкість завантаження, щоб вважати торрент активним (кБ/с)" }, "displayStaleTorrents": { "label": "Відображати застарілі торренти" @@ -27,19 +27,19 @@ "description": "Якщо позначено опцію \"білий список\", він буде діяти як білий список. Якщо не позначено, це чорний список. Нічого не робитиме, якщо порожній" }, "displayRatioWithFilter": { - "label": "", - "info": "" + "label": "Відображати співвідношення відфільтрованих списків торрентів", + "info": "Якщо цю опцію вимкнено, буде показано лише глобальне співвідношення. Глобальне співвідношення все одно використовуватиме мітки, якщо встановлено" }, "columnOrdering": { - "label": "" + "label": "Увімкнути переупорядкування стовпців" }, "rowSorting": { - "label": "" + "label": "Увімкнути сортування рядків" }, "columns": { - "label": "", + "label": "Виберіть стовпці для відображення", "data": { - "date": "", + "date": "Дата додавання", "down": "Завантаження", "up": "Віддача", "eta": "Залишилося", @@ -47,7 +47,7 @@ } }, "nameColumnSize": { - "label": "" + "label": "Змінити розмір стовпчика назви" } } }, @@ -55,24 +55,24 @@ "footer": { "error": "Помилка", "lastUpdated": "Востаннє оновлено {{time}} тому", - "ratioGlobal": "", - "ratioWithFilter": "" + "ratioGlobal": "Глобальне співвідношення", + "ratioWithFilter": "Співвідношення з фільтром" }, "table": { "header": { - "isCompleted": "", + "isCompleted": "Завантаження", "name": "Ім’я", - "dateAdded": "", + "dateAdded": "Додано на", "size": "Розмір", "download": "Завантаження", "upload": "Віддача", "estimatedTimeOfArrival": "Залишилося", "progress": "Прогрес", - "totalUploaded": "", - "totalDownloaded": "", - "ratio": "", - "seeds": "", - "peers": "", + "totalUploaded": "Загальне завантаження", + "totalDownloaded": "Загальне завантаження", + "ratio": "Співвідношення", + "seeds": "Сідери (підключено)", + "peers": "Піри (підключено)", "label": "", "state": "Стан", "stateMessage": "" diff --git a/public/locales/uk/modules/weather.json b/public/locales/uk/modules/weather.json index fd889e37a9d..4bf76ac7a6b 100644 --- a/public/locales/uk/modules/weather.json +++ b/public/locales/uk/modules/weather.json @@ -11,10 +11,10 @@ "label": "Показувати назву міста" }, "displayWeekly": { - "label": "" + "label": "Показати тижневий прогноз" }, "forecastDays": { - "label": "" + "label": "Дні для відображення" }, "location": { "label": "Погодна локація" diff --git a/public/locales/uk/settings/customization/page-appearance.json b/public/locales/uk/settings/customization/page-appearance.json index f4ca83a4df6..c94a9917b8a 100644 --- a/public/locales/uk/settings/customization/page-appearance.json +++ b/public/locales/uk/settings/customization/page-appearance.json @@ -19,26 +19,26 @@ "label": "Фон" }, "backgroundImageAttachment": { - "label": "", + "label": "Прикріплене фонове зображення", "options": { - "fixed": "", - "scroll": "" + "fixed": "Фіксований - фон залишається в тому самому положенні (рекомендовано)", + "scroll": "Прокручування – фонове прокручування за допомогою миші" } }, "backgroundImageSize": { - "label": "", + "label": "Розмір фонового зображення", "options": { - "cover": "", - "contain": "" + "cover": "Обкладинка – Масштабує зображення до найменшого розміру, щоб охопити все вікно, обрізаючи зайвий простір. (рекомендовано)", + "contain": "Вмістити - Масштабує зображення до максимально можливого розміру в межах контейнера без обрізання або розтягування зображення." } }, "backgroundImageRepeat": { - "label": "", + "label": "Прикріплене фонове зображення", "options": { - "repeat": "", - "no-repeat": "", - "repeat-x": "", - "repeat-y": "" + "repeat": "Повторювати - Зображення повторюється стільки разів, скільки потрібно, щоб покрити всю область зафарбовування фонового зображення.", + "no-repeat": "Без повтору - Зображення не повторюється і може не заповнювати весь простір (рекомендовано)", + "repeat-x": "Повторити X - Те саме, що й \"Повторити\", але тільки на горизонтальній осі.", + "repeat-y": "Повторити Y - Те саме, що й \"Повторити\", але тільки по вертикальній осі." } }, "customCSS": { diff --git a/public/locales/uk/tools/docker.json b/public/locales/uk/tools/docker.json index d553bf75882..9150bff4a9a 100644 --- a/public/locales/uk/tools/docker.json +++ b/public/locales/uk/tools/docker.json @@ -2,7 +2,7 @@ "title": "Docker", "alerts": { "notConfigured": { - "text": "" + "text": "У вашому екземплярі Homarr не налаштовано Docker або не вдалося отримати контейнери. Будь ласка, зверніться до документації, щоб дізнатися, як налаштувати інтеграцію." } }, "modals": { From 7ea9c00c18bf99a03a22ac1f4b95bc380a446651 Mon Sep 17 00:00:00 2001 From: Meier Lukas Date: Sat, 2 Nov 2024 17:39:42 +0100 Subject: [PATCH 4/4] chore: update package-json version to 0.15.7 (#2184) --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 3ec7e04919b..bab2389e3fb 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "homarr", - "version": "0.15.6", + "version": "0.15.7", "description": "Homarr - A homepage for your server.", "license": "MIT", "repository": {