Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7ea9c00c18 | ||
|
|
3651585271 | ||
|
|
22732e33e5 | ||
|
|
9caf72aae7 |
@@ -432,7 +432,7 @@
|
||||
"type": "notebook",
|
||||
"properties": {
|
||||
"showToolbar": true,
|
||||
"content": "<h2><strong>Welcome to Homarr 🚀👋</strong></h2><p>We're glad that you're here! Homarr is a <em>modern </em>and <em>easy to use</em> dashboard that helps you to <strong>organize and manage</strong> your home network from one place. Control is <strong>at your fingertips</strong>.</p><p>We recommend you to read the <a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://homarr.dev/docs/introduction/after-the-installation\">getting started guide</a> 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 <code>Add tile</code> button at the top right and select <code>App</code>. 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 <strong>must exit edit mode to save your board</strong>. Adding widgets works the same way but may require additional configuration - read the documentation for more information.</p><p>To remove this widget, you must log in to your administrator account and click on the menu to delete it.</p><p><strong><u>Your TODO list:</u></strong></p><ul data-type=\"taskList\"><li data-checked=\"false\" data-type=\"taskItem\"><label><input type=\"checkbox\"><span></span></label><div><p>Read the <a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://homarr.dev\">documentation</a></p></div></li><li data-checked=\"false\" data-type=\"taskItem\"><label><input type=\"checkbox\"><span></span></label><div><p>Add your <em>first app</em></p></div></li><li data-checked=\"false\" data-type=\"taskItem\"><label><input type=\"checkbox\"><span></span></label><div><p><em>Resize </em>and <em>drag</em> your app to a different position</p></div></li><li data-checked=\"false\" data-type=\"taskItem\"><label><input type=\"checkbox\"><span></span></label><div><p>Add the <em>clock widget</em> to your dashboard</p></div></li><li data-checked=\"false\" data-type=\"taskItem\"><label><input type=\"checkbox\"><span></span></label><div><p>Create a <em>new user</em></p></div></li></ul>"
|
||||
"content": "<h2><strong>Welcome to Homarr 🚀👋</strong></h2><p>We're glad that you're here! Homarr is a <em>modern </em>and <em>easy to use</em> dashboard that helps you to <strong>organize and manage</strong> your home network from one place. Control is <strong>at your fingertips</strong>.</p><p>We recommend you to read the <a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://homarr.dev/docs/getting-started/after-the-installation\">getting started guide</a> 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 <code>Add tile</code> button at the top right and select <code>App</code>. 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 <strong>must exit edit mode to save your board</strong>. Adding widgets works the same way but may require additional configuration - read the documentation for more information.</p><p>To remove this widget, you must log in to your administrator account and click on the menu to delete it.</p><p><strong><u>Your TODO list:</u></strong></p><ul data-type=\"taskList\"><li data-checked=\"false\" data-type=\"taskItem\"><label><input type=\"checkbox\"><span></span></label><div><p>Read the <a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://homarr.dev\">documentation</a></p></div></li><li data-checked=\"false\" data-type=\"taskItem\"><label><input type=\"checkbox\"><span></span></label><div><p>Add your <em>first app</em></p></div></li><li data-checked=\"false\" data-type=\"taskItem\"><label><input type=\"checkbox\"><span></span></label><div><p><em>Resize </em>and <em>drag</em> your app to a different position</p></div></li><li data-checked=\"false\" data-type=\"taskItem\"><label><input type=\"checkbox\"><span></span></label><div><p>Add the <em>clock widget</em> to your dashboard</p></div></li><li data-checked=\"false\" data-type=\"taskItem\"><label><input type=\"checkbox\"><span></span></label><div><p>Create a <em>new user</em></p></div></li></ul>"
|
||||
},
|
||||
"area": {
|
||||
"type": "wrapper",
|
||||
@@ -510,4 +510,4 @@
|
||||
"allowGuests": false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "homarr",
|
||||
"version": "0.15.6",
|
||||
"version": "0.15.7",
|
||||
"description": "Homarr - A homepage for your server.",
|
||||
"license": "MIT",
|
||||
"repository": {
|
||||
|
||||
@@ -16,8 +16,8 @@
|
||||
},
|
||||
"afterLoginRedirection": "Після входу ви будете перенаправлені на сайт {{url}}",
|
||||
"providersEmpty": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
"title": "Помилка постачальника авторизації",
|
||||
"message": "Постачальник(и) не налаштовано, перевірте свої журнали для отримання додаткової інформації."
|
||||
}
|
||||
},
|
||||
"alert": "Ваші облікові дані невірні або такого облікового запису не існує. Будь ласка, спробуйте ще раз."
|
||||
|
||||
@@ -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": "Обмежено"
|
||||
}
|
||||
@@ -22,5 +22,5 @@
|
||||
"message": "Створено категорію \"{{name}}\""
|
||||
}
|
||||
},
|
||||
"importFromDocker": ""
|
||||
"importFromDocker": "Імпортувати з docker"
|
||||
}
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
"title": "Інструменти",
|
||||
"items": {
|
||||
"docker": "Docker",
|
||||
"api": ""
|
||||
"api": "API"
|
||||
}
|
||||
},
|
||||
"about": {
|
||||
|
||||
@@ -5,10 +5,10 @@
|
||||
"key": "Гарячі клавіши",
|
||||
"action": "Дії",
|
||||
"keybinds": "Сполучення клавіш",
|
||||
"translators": "",
|
||||
"translatorsDescription": "",
|
||||
"contributors": "",
|
||||
"contributorsDescription": "",
|
||||
"translators": "Перекладачі ({{count}})",
|
||||
"translatorsDescription": "Завдяки цим людям Homarr доступний {{languages}} мовами! Хочете допомогти перекласти Homarr своєю мовою? Прочитайте, як це зробити <a>тут</a>.",
|
||||
"contributors": "Учасники ({{count}})",
|
||||
"contributorsDescription": "Ці люди створили код, завдяки якому homarr працює! Хочете допомогти побудувати Homarr? Прочитайте, як це зробити <a>тут</a>",
|
||||
"actions": {
|
||||
"toggleTheme": "Перемикання світлого/темного режиму",
|
||||
"focusSearchBar": "Зосередьтеся на рядку пошуку",
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
"externalAddress": {
|
||||
"label": "Зовнішня адреса",
|
||||
"description": "URL-адреса відкриється в браузері при натисканні на додаток.",
|
||||
"tooltip": ""
|
||||
"tooltip": "Ви можете використовувати декілька змінних для створення динамічних адрес:<br><br><b>[homarr_base]</b>: повна адреса, за винятком порту і шляху. <i>(Приклад: 'https://subdomain.homarr.dev')</i><br><b>[homarr_hostname]</b>: повна базова адреса, включаючи поточний субдомен. <i>(Приклад: 'subdomain.homarr.dev')</i><br><b>[homarr_domain]</b>: домен з відфільтрованим субдоменом. <i>(Приклад: `homarr.dev')</i><br><b>[homarr_protocol]</b>: <i>http/https</i><br><br>Всі ці змінні залежать від поточного url."
|
||||
}
|
||||
},
|
||||
"behaviour": {
|
||||
|
||||
@@ -16,15 +16,15 @@
|
||||
"label": "Видалити назавжди",
|
||||
"disabled": "Видалення вимкнено, оскільки старіші компоненти Homarr не дозволяють видаляти конфігурацію за замовчуванням. Видалення буде можливим у майбутньому."
|
||||
},
|
||||
"duplicate": "",
|
||||
"duplicate": "Дублікат",
|
||||
"rename": {
|
||||
"label": "",
|
||||
"label": "Перейменувати",
|
||||
"modal": {
|
||||
"title": "",
|
||||
"title": "Перейменувати дошку {{name}}",
|
||||
"fields": {
|
||||
"name": {
|
||||
"label": "",
|
||||
"placeholder": ""
|
||||
"label": "Нова назва",
|
||||
"placeholder": "Нова назва дошки"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,10 +6,10 @@
|
||||
},
|
||||
"filter": {
|
||||
"roles": {
|
||||
"all": "",
|
||||
"normal": "",
|
||||
"admin": "",
|
||||
"owner": ""
|
||||
"all": "Усе",
|
||||
"normal": "Нормально",
|
||||
"admin": "Адміністратор",
|
||||
"owner": "Власник"
|
||||
}
|
||||
},
|
||||
"table": {
|
||||
|
||||
@@ -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": "Я усвідомлюю, що ця дія є безстроковою і всі дані облікового запису будуть втрачені."
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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": "У віджеті можна показувати власну назву та код часового поясу.<br/>Ви також можете показувати лише місто, не показувати жодного,<br/>або навіть показувати лише часовий пояс, якщо вибрано обидва, але не вказано назву.",
|
||||
"data": {
|
||||
"both": "",
|
||||
"city": "",
|
||||
"both": "Назва та часовий пояс",
|
||||
"city": "Тільки назва",
|
||||
"none": "Нема"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -131,11 +131,11 @@
|
||||
"diskSize": "",
|
||||
"diskRatio": "",
|
||||
"uptime": "",
|
||||
"plugin": "",
|
||||
"ha": "",
|
||||
"sharedStorage": "",
|
||||
"localStorage": "",
|
||||
"na": ""
|
||||
"plugin": "Плагін",
|
||||
"ha": "Стан HA - {{haState}}",
|
||||
"sharedStorage": "Спільне сховище",
|
||||
"localStorage": "Локальне сховище",
|
||||
"na": "Н/Д"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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": "Виникла проблема підключення до вашого менеджера індексаторів. Будь ласка, перевірте вашу конфігурацію/інтеграцію(ї)."
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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": "Нездоровий"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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 над об’єктом після натискання."
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
{
|
||||
"descriptor": {
|
||||
"name": "",
|
||||
"description": "",
|
||||
"name": "Автоматизація Home Assistant",
|
||||
"description": "Виконати автоматизацію",
|
||||
"settings": {
|
||||
"title": "",
|
||||
"title": "Виконати автоматизацію",
|
||||
"automationId": {
|
||||
"label": "",
|
||||
"info": ""
|
||||
"label": "Ідентифікатор автоматизації",
|
||||
"info": "Ваш унікальний ідентифікатор автоматизації. Завжди починається з automation.XXXXX."
|
||||
},
|
||||
"displayName": {
|
||||
"label": ""
|
||||
"label": "Відображати ім'я"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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": ""
|
||||
|
||||
@@ -11,10 +11,10 @@
|
||||
"label": "Показувати назву міста"
|
||||
},
|
||||
"displayWeekly": {
|
||||
"label": ""
|
||||
"label": "Показати тижневий прогноз"
|
||||
},
|
||||
"forecastDays": {
|
||||
"label": ""
|
||||
"label": "Дні для відображення"
|
||||
},
|
||||
"location": {
|
||||
"label": "Погодна локація"
|
||||
|
||||
@@ -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": {
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
"title": "Docker",
|
||||
"alerts": {
|
||||
"notConfigured": {
|
||||
"text": ""
|
||||
"text": "У вашому екземплярі Homarr не налаштовано Docker або не вдалося отримати контейнери. Будь ласка, зверніться до документації, щоб дізнатися, як налаштувати інтеграцію."
|
||||
}
|
||||
},
|
||||
"modals": {
|
||||
|
||||
@@ -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)) {
|
||||
|
||||
66
src/utils/auth/cookies.ts
Normal file
66
src/utils/auth/cookies.ts
Normal file
@@ -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;
|
||||
};
|
||||
Reference in New Issue
Block a user