Compare commits

...

5 Commits

Author SHA1 Message Date
Manuel
e93343b06b 🚀 v0.10.2: Bugfixes for Dash. and services with API keys 2022-10-11 10:48:19 +09:00
Thomas Camlong
ba7786d337 🌎 New Crowdin updates 2022-10-10 22:18:12 +02:00
Manuel Ruwe
e23a6bfc3b 🔖 Bumb version to v0.10.2 2022-10-10 19:12:13 +02:00
Norman
62b789321d 🩹 Fix *seerr API key link (#446)
Author:    NormanJS <NormanJS>
2022-09-22 21:14:52 +02:00
Raphaël Catarino
2ee2c70e9e 🐛 do not translate params for dashdot
* fix for #444

* Revert "fix for #444"

This reverts commit 3927198617.

* use id instead of name for param
2022-09-19 21:13:39 +02:00
27 changed files with 148 additions and 133 deletions

View File

@@ -1,2 +1,2 @@
export const REPO_URL = 'ajnart/homarr'; export const REPO_URL = 'ajnart/homarr';
export const CURRENT_VERSION = 'v0.10.1'; export const CURRENT_VERSION = 'v0.10.2';

View File

@@ -1,6 +1,6 @@
{ {
"name": "homarr", "name": "homarr",
"version": "0.10.1", "version": "0.10.2",
"description": "Homarr - A homepage for your server.", "description": "Homarr - A homepage for your server.",
"license": "MIT", "license": "MIT",
"repository": { "repository": {

View File

@@ -1,27 +1,27 @@
{ {
"title": "", "title": "¡Bienvenido/a otra vez!",
"text": "", "text": "Por favor, introduce la Contraseña",
"form": { "form": {
"fields": { "fields": {
"password": { "password": {
"label": "Contraseña", "label": "Contraseña",
"placeholder": "" "placeholder": "Tu contraseña"
} }
}, },
"buttons": { "buttons": {
"submit": "" "submit": "Iniciar sesión"
} }
}, },
"notifications": { "notifications": {
"checking": { "checking": {
"title": "", "title": "Comprobando tu contraseña",
"message": "" "message": "Tu contraseña está siendo comprobada..."
}, },
"correct": { "correct": {
"title": "" "title": "Contraseña correcta, redireccionándote..."
}, },
"wrong": { "wrong": {
"title": "" "title": "Contraseña incorrecta, por favor, intenta otra vez."
} }
} }
} }

View File

@@ -34,8 +34,8 @@
}, },
"category": { "category": {
"label": "Categoría", "label": "Categoría",
"placeholder": "Selecciona una categoría o cree una nueva", "placeholder": "Seleccione una categoría o cree una nueva",
"nothingFound": "No se ha encontrado nada", "nothingFound": "No se ha encontrado ningún resultado",
"createLabel": "+ Crear {{query}}" "createLabel": "+ Crear {{query}}"
}, },
"integrations": { "integrations": {
@@ -101,7 +101,7 @@
"label": "Códigos de Estado HTTP", "label": "Códigos de Estado HTTP",
"placeholder": "Seleccionar códigos de estado válidos", "placeholder": "Seleccionar códigos de estado válidos",
"clearButtonLabel": "Borrar selección", "clearButtonLabel": "Borrar selección",
"nothingFound": "No se ha encontrado nada" "nothingFound": "No se ha encontrado ningún resultado"
}, },
"openServiceInNewTab": { "openServiceInNewTab": {
"label": "Abrir el servicio en una nueva pestaña" "label": "Abrir el servicio en una nueva pestaña"

View File

@@ -1,27 +1,27 @@
{ {
"title": "", "title": "Bienvenue !",
"text": "", "text": "Veuillez entrer votre mot de passe",
"form": { "form": {
"fields": { "fields": {
"password": { "password": {
"label": "Mot de passe", "label": "Mot de passe",
"placeholder": "" "placeholder": "Votre mot de passe"
} }
}, },
"buttons": { "buttons": {
"submit": "" "submit": "Se connecter"
} }
}, },
"notifications": { "notifications": {
"checking": { "checking": {
"title": "", "title": "Vérification de votre mot de passe",
"message": "" "message": "Votre mot de passe est en cours de vérification..."
}, },
"correct": { "correct": {
"title": "" "title": "Mot de passe correct, redirection en cours..."
}, },
"wrong": { "wrong": {
"title": "" "title": "Mot de passe erroné, veuillez réessayer."
} }
} }
} }

View File

@@ -35,8 +35,8 @@
"title": "Réseau", "title": "Réseau",
"label": "Réseau :", "label": "Réseau :",
"metrics": { "metrics": {
"download": "Duvet", "download": "Descendant",
"upload": "Up" "upload": "Montant"
} }
}, },
"cpu": { "cpu": {

View File

@@ -1,27 +1,27 @@
{ {
"title": "", "title": "Dobrodošli nazaj!",
"text": "", "text": "Prosimo vnesite geslo",
"form": { "form": {
"fields": { "fields": {
"password": { "password": {
"label": "Geslo", "label": "Geslo",
"placeholder": "" "placeholder": "Vaše geslo"
} }
}, },
"buttons": { "buttons": {
"submit": "" "submit": "Prijava"
} }
}, },
"notifications": { "notifications": {
"checking": { "checking": {
"title": "", "title": "Preverjanje gesla",
"message": "" "message": "Preverjamo vaše geslo..."
}, },
"correct": { "correct": {
"title": "" "title": "Geslo je pravilno, preusmerjam..."
}, },
"wrong": { "wrong": {
"title": "" "title": "Geslo je napačno, poskusite znova."
} }
} }
} }

View File

@@ -1,27 +1,27 @@
{ {
"title": "", "title": "Välkommen tillbaka!",
"text": "", "text": "Vänligen ange lösenordet",
"form": { "form": {
"fields": { "fields": {
"password": { "password": {
"label": "Lösenord", "label": "Lösenord",
"placeholder": "" "placeholder": "Ditt lösenord"
} }
}, },
"buttons": { "buttons": {
"submit": "" "submit": "Logga in"
} }
}, },
"notifications": { "notifications": {
"checking": { "checking": {
"title": "", "title": "Kontrollerar ditt lösenord",
"message": "" "message": "Ditt lösenord kontrolleras..."
}, },
"correct": { "correct": {
"title": "" "title": "Lösenord korrekt, omdirigerar dig..."
}, },
"wrong": { "wrong": {
"title": "" "title": "Lösenordet är fel, försök igen."
} }
} }
} }

View File

@@ -1,27 +1,27 @@
{ {
"title": "", "title": "欢迎回来!",
"text": "", "text": "请输入密码",
"form": { "form": {
"fields": { "fields": {
"password": { "password": {
"label": "密码", "label": "密码",
"placeholder": "" "placeholder": "你的密码"
} }
}, },
"buttons": { "buttons": {
"submit": "" "submit": "登录"
} }
}, },
"notifications": { "notifications": {
"checking": { "checking": {
"title": "", "title": "检查你的密码",
"message": "" "message": "正在检查你的密码..."
}, },
"correct": { "correct": {
"title": "" "title": "密码正确,正在重定向..."
}, },
"wrong": { "wrong": {
"title": "" "title": "密码错误,请重试。"
} }
} }
} }

View File

@@ -34,16 +34,16 @@
}, },
"category": { "category": {
"label": "类型", "label": "类型",
"placeholder": "选择一个类别或创建一个新类别", "placeholder": "选择或创建一个新类别",
"nothingFound": "没有找到", "nothingFound": "没有找到",
"createLabel": "+ 创建 {{query}}" "createLabel": "+ 创建 {{query}}"
}, },
"integrations": { "integrations": {
"apiKey": { "apiKey": {
"label": "API key", "label": "API密钥",
"placeholder": "你的API密钥", "placeholder": "你的API密钥",
"validation": { "validation": {
"noKey": "无效key" "noKey": "无效秘钥"
}, },
"tip": { "tip": {
"text": "获取你的API密钥", "text": "获取你的API密钥",

View File

@@ -1,7 +1,7 @@
{ {
"descriptor": { "descriptor": {
"name": "潇洒。", "name": "Dash.",
"description": "用于显示运行中的Dash.instance的图表模块。", "description": "一个显示运行中的仪表板实例的图表模块。",
"settings": { "settings": {
"cpuMultiView": { "cpuMultiView": {
"label": "CPU多核视图" "label": "CPU多核视图"
@@ -16,27 +16,27 @@
"label": "图表" "label": "图表"
}, },
"url": { "url": {
"label": "Dash. URL" "label": "Dash. 网址"
} }
} }
}, },
"card": { "card": {
"title": "潇洒。", "title": "Dash.",
"errors": { "errors": {
"noService": "没有找到Dash.服务。请在你的Homarr仪表板上添加一个,或者在模块选项中设置一个Dash.URL。URL在模块选项中", "noService": "没有找到Dash.服务。请在你的Homarr仪表板上添加或者设置一个仪表板网址。网址在应用选项中添加",
"noInformation": "无法从仪表获取信息。- 你运行的是最新版本吗?" "noInformation": "无法从仪表获取信息。- 你运行的是最新版本吗?"
}, },
"graphs": { "graphs": {
"storage": { "storage": {
"title": "存", "title": "存",
"label": "储存。" "label": "存储:"
}, },
"network": { "network": {
"title": "网络", "title": "网络",
"label": "网络", "label": "网络",
"metrics": { "metrics": {
"download": "下", "download": "下",
"upload": "上" "upload": "上"
} }
}, },
"cpu": { "cpu": {

View File

@@ -4,7 +4,7 @@
"description": "在卡片中显示当前时间和日期", "description": "在卡片中显示当前时间和日期",
"settings": { "settings": {
"display24HourFormat": { "display24HourFormat": {
"label": "显示全时(24小时" "label": "显示完整时间 (24小时)"
} }
} }
} }

View File

@@ -1,6 +1,6 @@
{ {
"descriptor": { "descriptor": {
"name": "码头", "name": "Docker",
"description": "允许你轻松地管理你的torrent文件" "description": "允许你轻松地管理你的torrent文件"
}, },
"search": { "search": {
@@ -8,25 +8,25 @@
}, },
"table": { "table": {
"header": { "header": {
"name": "名", "name": "名",
"image": "图片", "image": "镜像",
"ports": "码头", "ports": "端口",
"state": "国家" "state": "状态"
}, },
"body": { "body": {
"portCollapse": "{{ports}} 更多" "portCollapse": "{{ports}} 更多"
}, },
"states": { "states": {
"running": "跑步", "running": "运行中",
"created": "创建", "created": "创建",
"stopped": "已停止", "stopped": "已停止",
"unknown": "不详" "unknown": "未知"
} }
}, },
"actionBar": { "actionBar": {
"addService": { "addService": {
"title": "添加应用", "title": "添加应用",
"message": "Homarr添加服务" "message": "添加服务到 Homarr"
}, },
"restart": { "restart": {
"title": "重新启动" "title": "重新启动"
@@ -49,8 +49,8 @@
}, },
"messages": { "messages": {
"successfullyExecuted": { "successfullyExecuted": {
"title": "容器 {{containerName}} {{action}}ed", "title": "容器 {{containerName}} {{action}}已完成",
"message": "的容器已成功 {{action}}。" "message": "的容器已成功 {{action}}。"
} }
}, },
"errors": { "errors": {
@@ -66,6 +66,6 @@
} }
}, },
"actionIcon": { "actionIcon": {
"tooltip": "码头" "tooltip": "Docker"
} }
} }

View File

@@ -1,6 +1,6 @@
{ {
"descriptor": { "descriptor": {
"name": "监督员r", "name": "Overseerr",
"description": "允许你从Overseerr/Jellyseerr搜索和添加媒体" "description": "允许你从Overseerr/Jellyseerr搜索和添加媒体"
}, },
"popup": { "popup": {
@@ -18,11 +18,11 @@
} }
}, },
"seasonSelector": { "seasonSelector": {
"caption": "勾选你想要下载的季", "caption": "勾选你想要下载的季",
"table": { "table": {
"header": { "header": {
"season": "季", "season": "季",
"numberOfEpisodes": "节目的数量" "numberOfEpisodes": "剧集数"
} }
} }
} }

View File

@@ -1,6 +1,6 @@
{ {
"descriptor": { "descriptor": {
"name": "", "name": "Ping",
"description": "允许你检查服务是否启动或返回一个特定的HTTP状态代码。" "description": "允许你检查服务是否启动或返回一个特定的HTTP状态代码。"
}, },
"states": { "states": {

View File

@@ -1,38 +1,38 @@
{ {
"descriptor": { "descriptor": {
"name": "酷刑", "name": "Torrent",
"description": "显示支持的服务的当前下载速度", "description": "显示支持的服务的当前下载速度",
"settings": { "settings": {
"hideComplete": { "hideComplete": {
"label": "隐藏已完成的torrent" "label": "隐藏已完成的种子"
} }
} }
}, },
"card": { "card": {
"table": { "table": {
"header": { "header": {
"name": "名", "name": "名",
"size": "尺寸", "size": "大小",
"download": "下", "download": "下",
"upload": "上", "upload": "上",
"estimatedTimeOfArrival": "ETA", "estimatedTimeOfArrival": "剩余时间",
"progress": "进" "progress": "进"
}, },
"body": { "body": {
"nothingFound": "没有找到山洪资源" "nothingFound": "没有找到种子"
} }
}, },
"lineChart": { "lineChart": {
"title": "当前下载速度", "title": "当前下载速度",
"download": "下载{{download}}", "download": "下载{{download}}",
"upload": "上传 {{upload}}", "upload": "上传 {{upload}}",
"timeSpan": "{{seconds}} 秒前", "timeSpan": "{{seconds}} 秒前",
"totalDownload": "下载 {{download}}/s", "totalDownload": "下载 {{download}}/",
"totalUpload": "上传 {{upload}}/s" "totalUpload": "上传 {{upload}}/"
}, },
"errors": { "errors": {
"noDownloadClients": { "noDownloadClients": {
"title": "没有找到支持的下载客户端!", "title": "没有找到支持的下载客户端",
"text": "添加下载服务,查看你当前的下载量" "text": "添加下载服务,查看你当前的下载量"
} }
} }

View File

@@ -1,48 +1,48 @@
{ {
"descriptor": { "descriptor": {
"name": "Sabnzbd", "name": "Sabnzbd",
"description": "允许您查看您的Sabnzbd队列和历史暂停和恢复下载" "description": "允许您查看您的Sabnzbd队列和历史进行暂停和恢复下载操作"
}, },
"card": { "card": {
"errors": { "errors": {
"noDownloadClients": { "noDownloadClients": {
"title": "没有找到支持的下载客户端!", "title": "没有找到支持的下载客户端",
"text": "添加下载服务,查看你当前的下载量" "text": "添加下载服务,查看你当前的下载量"
} }
} }
}, },
"tabs": { "tabs": {
"queue": "队", "queue": "队",
"history": "历史" "history": "历史"
}, },
"info": { "info": {
"sizeLeft": "左侧尺寸", "sizeLeft": "左侧大小",
"paused": "暂停使用" "paused": "暂停使用"
}, },
"queue": { "queue": {
"header": { "header": {
"name": "名", "name": "名",
"size": "尺寸", "size": "大小",
"eta": "ETA", "eta": "剩余时间",
"progress": "进" "progress": "进"
}, },
"empty": "空的", "empty": "空的",
"error": { "error": {
"title": "误", "title": "误",
"message": "发生了一个错误" "message": "出错了"
}, },
"paused": "暂停使用" "paused": "暂停使用"
}, },
"history": { "history": {
"header": { "header": {
"name": "名", "name": "名",
"size": "尺寸", "size": "大小",
"duration": "时间" "duration": "持续时间"
}, },
"empty": "空的", "empty": "空的",
"error": { "error": {
"title": "误", "title": "误",
"message": "错误加载历史记录" "message": "加载历史记录时出错"
}, },
"paused": "暂停使用" "paused": "暂停使用"
} }

View File

@@ -1,10 +1,10 @@
{ {
"descriptor": { "descriptor": {
"name": "天气", "name": "天气",
"description": "查你所在地区的当前天气", "description": "查你所在地区的当前天气",
"settings": { "settings": {
"displayInFahrenheit": { "displayInFahrenheit": {
"label": "显示单位:华氏" "label": "显示华氏"
}, },
"location": { "location": {
"label": "天气位置" "label": "天气位置"
@@ -13,20 +13,20 @@
}, },
"card": { "card": {
"weatherDescriptions": { "weatherDescriptions": {
"clear": "清楚", "clear": "晴朗",
"mainlyClear": "主要是清楚", "mainlyClear": "晴朗为主",
"fog": "雾", "fog": "雾",
"drizzle": "细雨", "drizzle": "细雨",
"freezingDrizzle": "冰冷的细雨", "freezingDrizzle": "细雨",
"rain": "雨", "rain": "雨",
"freezingRain": "冻雨", "freezingRain": "冻雨",
"snowFall": "降雪", "snowFall": "降雪",
"snowGrains": "雪", "snowGrains": "雪",
"rainShowers": "阵雨", "rainShowers": "阵雨",
"snowShowers": "阵雪", "snowShowers": "阵雪",
"thunderstorm": "雷雨天气", "thunderstorm": "雷雨天气",
"thunderstormWithHail": "雷暴冰雹", "thunderstormWithHail": "雷暴冰雹",
"unknown": "不详" "unknown": "未知"
} }
} }
} }

View File

@@ -2,13 +2,13 @@
"title": "设置", "title": "设置",
"tooltip": "设置", "tooltip": "设置",
"tabs": { "tabs": {
"common": "普通", "common": "常规",
"customizations": "定制化" "customizations": "个性化"
}, },
"tips": { "tips": {
"configTip": "将你的配置文件拖放到页面上,就可以上传了!" "configTip": "将你的配置文件拖放到页面上,就可以上传了!"
}, },
"credits": { "credits": {
"madeWithLove": "用❤️制作的@" "madeWithLove": "用❤️创造,出品于"
} }
} }

View File

@@ -1,18 +1,18 @@
{ {
"pageTitle": { "pageTitle": {
"label": "页面标题", "label": "页面标题",
"placeholder": "霍马尔 🦞" "placeholder": "Homarr 🦞"
}, },
"logo": { "logo": {
"label": "徽标", "label": "徽标",
"placeholder": "/img/logo.png" "placeholder": "/img/logo.png"
}, },
"favicon": { "favicon": {
"label": "徽标Favicon", "label": "网站图标",
"placeholder": "/favicon.png" "placeholder": "/favicon.png"
}, },
"background": { "background": {
"label": "背景介绍", "label": "背景",
"placeholder": "/img/background.png" "placeholder": "/img/background.png"
}, },
"customCSS": { "customCSS": {

View File

@@ -1,3 +1,3 @@
{ {
"label": "遮阳板" "label": "阴影"
} }

View File

@@ -13,7 +13,7 @@
}, },
"events": { "events": {
"configSaved": { "configSaved": {
"title": "保存的配置", "title": "配置已保存",
"message": "配置保存为 {{configName}}" "message": "配置保存为 {{configName}}"
} }
} }
@@ -24,8 +24,8 @@
"text": "删除配置", "text": "删除配置",
"notifications": { "notifications": {
"deleted": { "deleted": {
"title": "配置删除", "title": "配置删除",
"message": "配置删除" "message": "配置删除"
}, },
"deleteFailed": { "deleteFailed": {
"title": "配置删除失败", "title": "配置删除失败",
@@ -42,7 +42,7 @@
"message": "无法加载您的配置。无效的JSON格式。" "message": "无法加载您的配置。无效的JSON格式。"
}, },
"loadedSuccessfully": { "loadedSuccessfully": {
"title": "配置 {{configName}} 成功加载。" "title": "配置 {{configName}} 成功加载。"
} }
}, },
"accept": { "accept": {

View File

@@ -1,3 +1,3 @@
{ {
"title": "模块使能器" "title": "启用模块"
} }

View File

@@ -1,11 +1,11 @@
{ {
"title": "搜索引擎", "title": "搜索引擎",
"tips": { "tips": {
"generalTip": "在你的查询前使用前缀 !yt和 !t分别在YouTube上搜索或搜索Torrent。", "generalTip": "在查询前使用前缀 !yt和 !t可以在YouTubeTorrent中搜索。",
"placeholderTip": "%s 可以作为查询的占位符。" "placeholderTip": "%s 可以作为查询的占位符。"
}, },
"customEngine": { "customEngine": {
"label": "查询网址", "label": "查询网址",
"placeholder": "自定义查询URL" "placeholder": "自定义查询网址"
} }
} }

View File

@@ -26,6 +26,7 @@ import { useEffect, useState } from 'react';
import { v4 as uuidv4 } from 'uuid'; import { v4 as uuidv4 } from 'uuid';
import { useConfig } from '../../tools/state'; import { useConfig } from '../../tools/state';
import { tryMatchPort, ServiceTypeList, StatusCodes, Config } from '../../tools/types'; import { tryMatchPort, ServiceTypeList, StatusCodes, Config } from '../../tools/types';
import apiKeyPaths from './apiKeyPaths.json';
import Tip from '../layout/Tip'; import Tip from '../layout/Tip';
export function AddItemShelfButton(props: any) { export function AddItemShelfButton(props: any) {
@@ -307,7 +308,7 @@ export function AddAppShelfItemForm(props: AddAppShelfItemFormProps) {
target="_blank" target="_blank"
weight="bold" weight="bold"
style={{ fontStyle: 'inherit', fontSize: 'inherit' }} style={{ fontStyle: 'inherit', fontSize: 'inherit' }}
href={`${hostname}/settings/general`} href={`${hostname}/${apiKeyPaths[form.values.type as keyof typeof apiKeyPaths]}`}
> >
{t('modal.tabs.options.form.integrations.apiKey.tip.link')} {t('modal.tabs.options.form.integrations.apiKey.tip.link')}
</Anchor> </Anchor>

View File

@@ -0,0 +1,9 @@
{
"Jellyseerr": "settings",
"Overseerr": "settings",
"Sonarr": "settings/general",
"Radarr": "settings/general",
"Readarr": "settings/general",
"Lidarr": "settings/general",
"Sabnzbd": "sabnzbd/config/general"
}

View File

@@ -145,6 +145,7 @@ export function DashdotComponent() {
const graphs = [ const graphs = [
{ {
id: 'cpu',
name: t('card.graphs.cpu.title'), name: t('card.graphs.cpu.title'),
enabled: cpuEnabled, enabled: cpuEnabled,
params: { params: {
@@ -152,6 +153,7 @@ export function DashdotComponent() {
}, },
}, },
{ {
id: 'storage',
name: t('card.graphs.storage.title'), name: t('card.graphs.storage.title'),
enabled: storageEnabled && !isCompact, enabled: storageEnabled && !isCompact,
params: { params: {
@@ -159,15 +161,18 @@ export function DashdotComponent() {
}, },
}, },
{ {
id: 'ram',
name: t('card.graphs.memory.title'), name: t('card.graphs.memory.title'),
enabled: ramEnabled, enabled: ramEnabled,
}, },
{ {
id: 'network',
name: t('card.graphs.network.title'), name: t('card.graphs.network.title'),
enabled: networkEnabled, enabled: networkEnabled,
spanTwo: true, spanTwo: true,
}, },
{ {
id: 'gpu',
name: t('card.graphs.gpu.title'), name: t('card.graphs.gpu.title'),
enabled: gpuEnabled, enabled: gpuEnabled,
spanTwo: true, spanTwo: true,
@@ -232,7 +237,7 @@ export function DashdotComponent() {
className={classes.iframe} className={classes.iframe}
key={graph.name} key={graph.name}
title={graph.name} title={graph.name}
src={`${dashdotUrl}?singleGraphMode=true&graph=${graph.name.toLowerCase()}&theme=${colorScheme}&surface=${(colorScheme === src={`${dashdotUrl}?singleGraphMode=true&graph=${graph.id.toLowerCase()}&theme=${colorScheme}&surface=${(colorScheme ===
'dark' 'dark'
? theme.colors.dark[7] ? theme.colors.dark[7]
: theme.colors.gray[0] : theme.colors.gray[0]