Merge branch 'dev' into docker-onboarding-fix

This commit is contained in:
Thomas Camlong
2023-12-31 11:42:56 +01:00
committed by GitHub
298 changed files with 7179 additions and 3511 deletions

2
.github/FUNDING.yml vendored
View File

@@ -2,7 +2,7 @@
github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
patreon: # Replace with a single Patreon username patreon: # Replace with a single Patreon username
open_collective: # Replace with a single Open Collective username open_collective: homarr
ko_fi: ajnart ko_fi: ajnart
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry

16
.github/workflows/greetings.yml vendored Normal file
View File

@@ -0,0 +1,16 @@
name: Greetings
on: [pull_request_target, issues]
jobs:
greeting:
runs-on: ubuntu-latest
permissions:
issues: write
pull-requests: write
steps:
- uses: actions/first-interaction@v1
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
issue-message: "Hi 👋. Thank you for submitting your first issue to Homarr. Please ensure that you've provided all nessesary information. You can use the three dots > Edit button to update your post with additional images and information. Depending on the current volume of requests, the team should get in conact with you shortly."
pr-message: "Hi 👋. Thank you for making your first contribution to Homarr. Please ensure that you've completed all the points in the TODO checklist. We'll review your changes shortly."

28
.github/workflows/stale.yml vendored Normal file
View File

@@ -0,0 +1,28 @@
# This workflow warns and then closes issues and PRs that have had no activity for a specified amount of time.
#
# You can adjust the behavior by modifying this file.
# For more information, see:
# https://github.com/actions/stale
name: Mark stale issues and pull requests
on:
schedule:
- cron: '18 17 * * *'
jobs:
stale:
runs-on: ubuntu-latest
permissions:
issues: write
pull-requests: write
steps:
- uses: actions/stale@v5
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
stale-issue-message: "Hello 👋, this issue has been open for 60 without activity. Please close this issue if it's no longer relevant or has been resolved. Still relevant? Simply reply and I'll mark it as active."
stale-pr-message: 'Hello 👋, this PR has gone stale. Please reply to mark it as active.'
stale-issue-label: 'Stale'
stale-pr-label: 'Stale'
days-before-close: -1

2
.gitignore vendored
View File

@@ -4,6 +4,7 @@
/node_modules /node_modules
/.pnp /.pnp
.pnp.js .pnp.js
/cli/node_modules/
# testing # testing
/coverage /coverage
@@ -49,6 +50,7 @@ data/configs
!.yarn/releases !.yarn/releases
!.yarn/sdks !.yarn/sdks
!.yarn/versions !.yarn/versions
/cli/.yarn/
#envfiles #envfiles
.env .env

View File

@@ -21,6 +21,7 @@ COPY ./drizzle ./drizzle
COPY ./drizzle/migrate ./migrate COPY ./drizzle/migrate ./migrate
COPY ./tsconfig.json ./migrate/tsconfig.json COPY ./tsconfig.json ./migrate/tsconfig.json
COPY ./cli ./cli
RUN mkdir /data RUN mkdir /data
@@ -43,6 +44,10 @@ RUN mv node_modules ./migrate/node_modules
# Copy temp node_modules of app to app folder # Copy temp node_modules of app to app folder
RUN mv _node_modules node_modules RUN mv _node_modules node_modules
RUN echo '#!/bin/bash\nnode /app/cli/cli.js "$@"' > /usr/bin/homarr
RUN chmod +x /usr/bin/homarr
RUN cd /app/cli && yarn --immutable
# Expose the default application port # Expose the default application port
EXPOSE $PORT EXPOSE $PORT
ENV PORT=${PORT} ENV PORT=${PORT}

30
cli/cli.js Normal file
View File

@@ -0,0 +1,30 @@
import yargs from 'yargs';
import { resetPasswordForOwner } from './commands/reset-owner-password.js';
import { resetPasswordForUsername } from './commands/reset-password.js';
yargs(process.argv.slice(2))
.scriptName('homarr')
.usage('$0 <cmd> [args]')
.command('reset-owner-password', 'Resets the current owner password without UI access', async () => {
await resetPasswordForOwner();
})
.command(
'reset-password',
'Reset the password of a specific user without UI access',
(yargs) => {
yargs.option('username', {
type: 'string',
describe: 'Username of user',
demandOption: true
});
},
async (argv) => {
await resetPasswordForUsername(argv.username);
}
)
.version(false)
.showHelpOnFail(true)
.alias('h', 'help')
.demandCommand()
.help().argv;

View File

@@ -0,0 +1,55 @@
import bcrypt from 'bcryptjs';
import Database from 'better-sqlite3';
import boxen from 'boxen';
import chalk from 'chalk';
import Consola from 'consola';
import crypto from 'crypto';
import { sql } from 'drizzle-orm';
import { drizzle } from 'drizzle-orm/better-sqlite3';
export async function resetPasswordForOwner() {
if (!process.env.DATABASE_URL) {
Consola.error('Unable to connect to database due to missing database URL environment variable');
return;
}
Consola.info('Connecting to the database...');
const sqlite = new Database(process.env.DATABASE_URL.replace('file:', ''));
const db = drizzle(sqlite);
Consola.info('Connected to the database ' + chalk.green('✓'));
Consola.info('Generating new random password...');
const newPassword = crypto.randomUUID();
const salt = bcrypt.genSaltSync(10);
const hashedPassword = bcrypt.hashSync(newPassword, salt);
try {
await db.transaction((tx) => {
tx.run(
sql`DELETE FROM session WHERE userId = (SELECT id FROM user WHERE is_owner = 1 LIMIT 1)`
);
tx.run(sql`UPDATE user SET password = ${hashedPassword} WHERE is_owner = 1 LIMIT 1;`);
});
console.log(
boxen(`New owner password is '${chalk.red(newPassword)}'. You can now log in with this password.\nExising sessions have been destroyed and need to login again with the new passowrd.`, {
dimBorder: true,
borderStyle: 'round',
padding: {
left: 1,
right: 1
}
})
);
} catch (err) {
Consola.error('Failed to update password', err);
} finally {
Consola.info('Command has completed');
}
}

View File

@@ -0,0 +1,56 @@
import bcrypt from 'bcryptjs';
import Database from 'better-sqlite3';
import Consola from 'consola';
import crypto from 'crypto';
import boxen from 'boxen';
import chalk from 'chalk';
import { sql } from 'drizzle-orm';
import { drizzle } from 'drizzle-orm/better-sqlite3';
export async function resetPasswordForUsername(username) {
if (!process.env.DATABASE_URL) {
Consola.error('Unable to connect to database due to missing database URL environment variable');
return;
}
Consola.info('Connecting to the database...');
const sqlite = new Database(process.env.DATABASE_URL.replace('file:', ''));
const db = drizzle(sqlite);
Consola.info('Generating new random password...');
const newPassword = crypto.randomUUID();
const salt = bcrypt.genSaltSync(10);
const hashedPassword = bcrypt.hashSync(newPassword, salt);
Consola.info(`Updating password for user '${username}'`);
try {
await db.transaction((tx) => {
tx.run(
sql`DELETE FROM session WHERE userId = (SELECT id FROM user WHERE name = ${username} LIMIT 1)`
);
tx.run(sql`UPDATE user SET password = ${hashedPassword} WHERE id = (SELECT id FROM user WHERE name = ${username} LIMIT 1) LIMIT 1`);
});
console.log(
boxen(`New password for '${username}' is '${chalk.red(newPassword)}'. You can now log in with this password.\nExising sessions have been destroyed and need to login again with the new passowrd.`, {
dimBorder: true,
borderStyle: 'round',
padding: {
left: 1,
right: 1
}
})
);
} catch (err) {
Consola.error('Failed to update password', err);
} finally {
Consola.info('Command has completed');
}
}

12
cli/package.json Normal file
View File

@@ -0,0 +1,12 @@
{
"dependencies": {
"bcryptjs": "^2.4.3",
"better-sqlite3": "^8.6.0",
"boxen": "^7.1.1",
"chalk": "^5.3.0",
"consola": "^3.0.0",
"drizzle-orm": "^0.28.6",
"yargs": "^17.7.2"
},
"type": "module"
}

1371
cli/yarn.lock Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -1,5 +1,5 @@
{ {
"schemaVersion": 1, "schemaVersion": 2,
"configProperties": { "configProperties": {
"name": "default" "name": "default"
}, },

View File

@@ -1,6 +1,6 @@
{ {
"name": "homarr", "name": "homarr",
"version": "0.14.1", "version": "0.14.3",
"description": "Homarr - A homepage for your server.", "description": "Homarr - A homepage for your server.",
"license": "MIT", "license": "MIT",
"repository": { "repository": {
@@ -75,7 +75,6 @@
"axios": "^1.0.0", "axios": "^1.0.0",
"bcryptjs": "^2.4.3", "bcryptjs": "^2.4.3",
"better-sqlite3": "^8.6.0", "better-sqlite3": "^8.6.0",
"browser-geo-tz": "^0.0.4",
"consola": "^3.0.0", "consola": "^3.0.0",
"cookies": "^0.8.0", "cookies": "^0.8.0",
"cookies-next": "^2.1.1", "cookies-next": "^2.1.1",
@@ -91,6 +90,10 @@
"html-entities": "^2.3.3", "html-entities": "^2.3.3",
"i18next": "^22.5.1", "i18next": "^22.5.1",
"immer": "^10.0.2", "immer": "^10.0.2",
"js-file-download": "^0.4.12",
"mantine-react-table": "^1.3.4",
"moment": "^2.29.4",
"moment-timezone": "^0.5.43",
"next": "13.4.12", "next": "13.4.12",
"next-auth": "^4.23.0", "next-auth": "^4.23.0",
"next-i18next": "^14.0.0", "next-i18next": "^14.0.0",

View File

@@ -51,5 +51,7 @@
"attributes": { "attributes": {
"width": "宽度", "width": "宽度",
"height": "高度" "height": "高度"
} },
"public": "公开",
"restricted": "限制"
} }

View File

@@ -21,5 +21,6 @@
"title": "分类已创建", "title": "分类已创建",
"message": "已创建分类\"{{name}}\"" "message": "已创建分类\"{{name}}\""
} }
} },
"importFromDocker": ""
} }

View File

@@ -11,9 +11,9 @@
"actions": { "actions": {
"avatar": { "avatar": {
"switchTheme": "切换主题", "switchTheme": "切换主题",
"preferences": "用户选项", "preferences": "用户选项",
"defaultBoard": "默认仪表盘", "defaultBoard": "默认面板",
"manage": "管理", "manage": "管理中心",
"logout": "注销 {{username}}", "logout": "注销 {{username}}",
"login": "登录" "login": "登录"
} }

View File

@@ -5,7 +5,7 @@
"key": "快捷键", "key": "快捷键",
"action": "操作", "action": "操作",
"keybinds": "热键绑定", "keybinds": "热键绑定",
"translators": "翻译 ({{count}})", "translators": "翻译 ({{count}})",
"translatorsDescription": "感谢这些人Homarr 现已支持 {{languages}} 种语言!想要帮助将 Homarr 翻译成您的语言吗?请阅读<a>此处</a>了解如何执行此操作 。", "translatorsDescription": "感谢这些人Homarr 现已支持 {{languages}} 种语言!想要帮助将 Homarr 翻译成您的语言吗?请阅读<a>此处</a>了解如何执行此操作 。",
"contributors": "贡献者 ({{count}})", "contributors": "贡献者 ({{count}})",
"contributorsDescription": "这些人构建了让 homarr 工作的代码!想帮助建造 Homarr 吗?请阅读<a>此处</a>了解如何操作", "contributorsDescription": "这些人构建了让 homarr 工作的代码!想帮助建造 Homarr 吗?请阅读<a>此处</a>了解如何操作",

View File

@@ -1,13 +1,21 @@
{ {
"metaTitle": "用户", "metaTitle": "用户",
"pageTitle": "管理用户", "pageTitle": "管理用户",
"text": "通过账号您可以配置谁可以编辑您的面板。Homarr的未来版本将对权限和面板进行更精细地控制。",
"buttons": { "buttons": {
"create": "创建" "create": "创建"
}, },
"filter": {
"roles": {
"all": "全部",
"normal": "普通",
"admin": "管理员",
"owner": "所有者"
}
},
"table": { "table": {
"header": { "header": {
"user": "用户" "user": "用户",
"email": "邮箱"
} }
}, },
"tooltips": { "tooltips": {

View File

@@ -0,0 +1,55 @@
{
"metaTitle": "用户 {{username}}",
"back": "返回用户管理",
"sections": {
"general": {
"title": "通用",
"inputs": {
"username": {
"label": "用户名"
},
"eMail": {
"label": "邮箱"
}
}
},
"security": {
"title": "安全",
"inputs": {
"password": {
"label": "新密码"
},
"terminateExistingSessions": {
"label": "终止现有会话",
"description": "强制用户在其设备上重新登录"
},
"confirm": {
"label": "确认",
"description": "密码将被更新。该操作不可撤销。"
}
}
},
"roles": {
"title": "角色",
"currentRole": "当前角色: ",
"badges": {
"owner": "所有者",
"admin": "管理员",
"normal": "普通"
}
},
"deletion": {
"title": "删除账号",
"inputs": {
"confirmUsername": {
"label": "确认用户名",
"description": "输入用户名以确认删除"
},
"confirm": {
"label": "永久删除",
"description": "我知道此操作是永久性的,所有帐户数据都将丢失。"
}
}
}
}
}

View File

@@ -4,6 +4,13 @@
"description": "显示当前的日期和时间。", "description": "显示当前的日期和时间。",
"settings": { "settings": {
"title": "日期和时间组件设置", "title": "日期和时间组件设置",
"timezone": {
"label": "",
"info": ""
},
"customTitle": {
"label": ""
},
"display24HourFormat": { "display24HourFormat": {
"label": "全时显示24 小时)" "label": "全时显示24 小时)"
}, },
@@ -13,18 +20,12 @@
"hide": "隐藏日期" "hide": "隐藏日期"
} }
}, },
"enableTimezone": {
"label": "显示自定义时区"
},
"timezoneLocation": {
"label": "时区位置"
},
"titleState": { "titleState": {
"label": "城市名称", "label": "",
"info": "如果激活时区选项,则可显示城市名称和时区代码。<br/>您也可以只显示城市,甚至不显示。", "info": "",
"data": { "data": {
"both": "城市和时区", "both": "",
"city": "仅城市", "city": "",
"none": "无" "none": "无"
} }
} }

View File

@@ -0,0 +1,17 @@
{
"entityNotFound": "未找到实体",
"descriptor": {
"name": "Home Assistant 实体",
"description": "Home Assistant 中实体的当前状态",
"settings": {
"title": "实体状态",
"entityId": {
"label": "实体 ID",
"info": "Home Assistant 中的唯一实体 ID。通过单击实体 > 单击齿轮图标 > 单击“实体 ID”处的复制按钮进行复制。某些自定义实体可能不受支持。"
},
"displayName": {
"label": "显示名称"
}
}
}
}

View File

@@ -41,12 +41,22 @@
}, },
"table": { "table": {
"header": { "header": {
"isCompleted": "正在下载",
"name": "名称", "name": "名称",
"dateAdded": "已添加到",
"size": "大小", "size": "大小",
"download": "下载", "download": "下载",
"upload": "上传", "upload": "上传",
"estimatedTimeOfArrival": "剩余时间", "estimatedTimeOfArrival": "剩余时间",
"progress": "进度" "progress": "进度",
"totalUploaded": "上传总量",
"totalDownloaded": "下载总量",
"ratio": "分享率",
"seeds": "种子数(已连接)",
"peers": "用户数(已连接)",
"label": "标签",
"state": "状态",
"stateMessage": "状态信息"
}, },
"item": { "item": {
"text": "由 {{appName}}, {{ratio}} 管理的比率" "text": "由 {{appName}}, {{ratio}} 管理的比率"

View File

@@ -51,5 +51,7 @@
"attributes": { "attributes": {
"width": "crwdns3910:0crwdne3910:0", "width": "crwdns3910:0crwdne3910:0",
"height": "crwdns3912:0crwdne3912:0" "height": "crwdns3912:0crwdne3912:0"
} },
"public": "crwdns4034:0crwdne4034:0",
"restricted": "crwdns4036:0crwdne4036:0"
} }

View File

@@ -21,5 +21,6 @@
"title": "crwdns3243:0crwdne3243:0", "title": "crwdns3243:0crwdne3243:0",
"message": "crwdns3245:0{{name}}crwdne3245:0" "message": "crwdns3245:0{{name}}crwdne3245:0"
} }
} },
"importFromDocker": "crwdns4138:0crwdne4138:0"
} }

View File

@@ -1,13 +1,21 @@
{ {
"metaTitle": "crwdns3789:0crwdne3789:0", "metaTitle": "crwdns3789:0crwdne3789:0",
"pageTitle": "crwdns3791:0crwdne3791:0", "pageTitle": "crwdns3791:0crwdne3791:0",
"text": "crwdns3793:0crwdne3793:0",
"buttons": { "buttons": {
"create": "crwdns3795:0crwdne3795:0" "create": "crwdns3795:0crwdne3795:0"
}, },
"filter": {
"roles": {
"all": "crwdns4114:0crwdne4114:0",
"normal": "crwdns4116:0crwdne4116:0",
"admin": "crwdns4118:0crwdne4118:0",
"owner": "crwdns4120:0crwdne4120:0"
}
},
"table": { "table": {
"header": { "header": {
"user": "crwdns3797:0crwdne3797:0" "user": "crwdns3797:0crwdne3797:0",
"email": "crwdns4122:0crwdne4122:0"
} }
}, },
"tooltips": { "tooltips": {

View File

@@ -0,0 +1,55 @@
{
"metaTitle": "crwdns4072:0{{username}}crwdne4072:0",
"back": "crwdns4074:0crwdne4074:0",
"sections": {
"general": {
"title": "crwdns4076:0crwdne4076:0",
"inputs": {
"username": {
"label": "crwdns4078:0crwdne4078:0"
},
"eMail": {
"label": "crwdns4080:0crwdne4080:0"
}
}
},
"security": {
"title": "crwdns4082:0crwdne4082:0",
"inputs": {
"password": {
"label": "crwdns4084:0crwdne4084:0"
},
"terminateExistingSessions": {
"label": "crwdns4086:0crwdne4086:0",
"description": "crwdns4088:0crwdne4088:0"
},
"confirm": {
"label": "crwdns4090:0crwdne4090:0",
"description": "crwdns4092:0crwdne4092:0"
}
}
},
"roles": {
"title": "crwdns4094:0crwdne4094:0",
"currentRole": "crwdns4096:0crwdne4096:0",
"badges": {
"owner": "crwdns4098:0crwdne4098:0",
"admin": "crwdns4100:0crwdne4100:0",
"normal": "crwdns4102:0crwdne4102:0"
}
},
"deletion": {
"title": "crwdns4104:0crwdne4104:0",
"inputs": {
"confirmUsername": {
"label": "crwdns4106:0crwdne4106:0",
"description": "crwdns4108:0crwdne4108:0"
},
"confirm": {
"label": "crwdns4110:0crwdne4110:0",
"description": "crwdns4112:0crwdne4112:0"
}
}
}
}
}

View File

@@ -4,6 +4,13 @@
"description": "crwdns2341:0crwdne2341:0", "description": "crwdns2341:0crwdne2341:0",
"settings": { "settings": {
"title": "crwdns2343:0crwdne2343:0", "title": "crwdns2343:0crwdne2343:0",
"timezone": {
"label": "crwdns4124:0crwdne4124:0",
"info": "crwdns4126:0crwdne4126:0"
},
"customTitle": {
"label": "crwdns4128:0crwdne4128:0"
},
"display24HourFormat": { "display24HourFormat": {
"label": "crwdns1430:0crwdne1430:0" "label": "crwdns1430:0crwdne1430:0"
}, },
@@ -13,18 +20,12 @@
"hide": "crwdns3057:0crwdne3057:0" "hide": "crwdns3057:0crwdne3057:0"
} }
}, },
"enableTimezone": {
"label": "crwdns3059:0crwdne3059:0"
},
"timezoneLocation": {
"label": "crwdns3061:0crwdne3061:0"
},
"titleState": { "titleState": {
"label": "crwdns3063:0crwdne3063:0", "label": "crwdns4130:0crwdne4130:0",
"info": "crwdns3065:0crwdne3065:0", "info": "crwdns4132:0crwdne4132:0",
"data": { "data": {
"both": "crwdns3067:0crwdne3067:0", "both": "crwdns4134:0crwdne4134:0",
"city": "crwdns3069:0crwdne3069:0", "city": "crwdns4136:0crwdne4136:0",
"none": "crwdns3071:0crwdne3071:0" "none": "crwdns3071:0crwdne3071:0"
} }
} }

View File

@@ -0,0 +1,17 @@
{
"entityNotFound": "crwdns4038:0crwdne4038:0",
"descriptor": {
"name": "crwdns4040:0crwdne4040:0",
"description": "crwdns4042:0crwdne4042:0",
"settings": {
"title": "crwdns4044:0crwdne4044:0",
"entityId": {
"label": "crwdns4046:0crwdne4046:0",
"info": "crwdns4048:0crwdne4048:0"
},
"displayName": {
"label": "crwdns4050:0crwdne4050:0"
}
}
}
}

View File

@@ -41,12 +41,22 @@
}, },
"table": { "table": {
"header": { "header": {
"isCompleted": "crwdns4052:0crwdne4052:0",
"name": "crwdns2225:0crwdne2225:0", "name": "crwdns2225:0crwdne2225:0",
"dateAdded": "crwdns4054:0crwdne4054:0",
"size": "crwdns2227:0crwdne2227:0", "size": "crwdns2227:0crwdne2227:0",
"download": "crwdns2229:0crwdne2229:0", "download": "crwdns2229:0crwdne2229:0",
"upload": "crwdns2231:0crwdne2231:0", "upload": "crwdns2231:0crwdne2231:0",
"estimatedTimeOfArrival": "crwdns2233:0crwdne2233:0", "estimatedTimeOfArrival": "crwdns2233:0crwdne2233:0",
"progress": "crwdns2235:0crwdne2235:0" "progress": "crwdns2235:0crwdne2235:0",
"totalUploaded": "crwdns4056:0crwdne4056:0",
"totalDownloaded": "crwdns4058:0crwdne4058:0",
"ratio": "crwdns4060:0crwdne4060:0",
"seeds": "crwdns4062:0crwdne4062:0",
"peers": "crwdns4064:0crwdne4064:0",
"label": "crwdns4066:0crwdne4066:0",
"state": "crwdns4068:0crwdne4068:0",
"stateMessage": "crwdns4070:0crwdne4070:0"
}, },
"item": { "item": {
"text": "crwdns2461:0{{appName}}crwdnd2461:0{{ratio}}crwdne2461:0" "text": "crwdns2461:0{{appName}}crwdnd2461:0{{ratio}}crwdne2461:0"

View File

@@ -1,5 +1,5 @@
{ {
"header": { "header": {
"customize": "" "customize": "Přizpůsobit plochu"
} }
} }

View File

@@ -5,11 +5,11 @@
"about": "", "about": "",
"cancel": "", "cancel": "",
"close": "", "close": "",
"back": "", "back": "Zpět",
"delete": "", "delete": "",
"ok": "", "ok": "",
"edit": "", "edit": "",
"next": "", "next": "Další",
"previous": "", "previous": "",
"confirm": "", "confirm": "",
"enabled": "", "enabled": "",
@@ -44,12 +44,14 @@
}, },
"seeMore": "", "seeMore": "",
"position": { "position": {
"left": "", "left": "Vlevo",
"center": "", "center": "",
"right": "" "right": "Vpravo"
}, },
"attributes": { "attributes": {
"width": "", "width": "",
"height": "" "height": ""
} },
"public": "",
"restricted": "Omezené"
} }

View File

@@ -3,23 +3,24 @@
"title": "Přidat novou dlaždici", "title": "Přidat novou dlaždici",
"text": "Dlaždice jsou hlavním prvkem Homarru. Slouží k zobrazení Vašich aplikací a dalších informací. Můžete přidat libovolný počet dlaždic." "text": "Dlaždice jsou hlavním prvkem Homarru. Slouží k zobrazení Vašich aplikací a dalších informací. Můžete přidat libovolný počet dlaždic."
}, },
"widgetDescription": "", "widgetDescription": "Widgety komunikují s vašimi aplikacemi, aby nad nimi poskytovaly větší kontrolu. Před použitím obvykle vyžadují další konfiguraci.",
"goBack": "", "goBack": "Přejít zpět na předchozí stránku",
"actionIcon": { "actionIcon": {
"tooltip": "" "tooltip": "Přidat dlaždici"
}, },
"apps": "Aplikace", "apps": "Aplikace",
"app": { "app": {
"defaultName": "" "defaultName": "Vaše aplikace"
}, },
"widgets": "Widgety", "widgets": "Widgety",
"categories": "Kategorie", "categories": "Kategorie",
"category": { "category": {
"newName": "", "newName": "Název nové kategorie",
"defaultName": "", "defaultName": "Nová kategorie",
"created": { "created": {
"title": "", "title": "Kategorie vytvořena",
"message": "" "message": "Kategorie \"{{name}}\" byla vytvořena"
}
} }
},
"importFromDocker": ""
} }

View File

@@ -16,7 +16,7 @@
"help": { "help": {
"title": "Nápověda", "title": "Nápověda",
"items": { "items": {
"documentation": "", "documentation": "Dokumentace",
"report": "Nahlášení problému/chyby", "report": "Nahlášení problému/chyby",
"discord": "Komunitní Discord", "discord": "Komunitní Discord",
"contribute": "Zapojte se" "contribute": "Zapojte se"

View File

@@ -1,6 +1,6 @@
{ {
"description": "", "description": "",
"addToDashboard": "", "addToDashboard": "Přidat na plochu",
"tip": "", "tip": "",
"key": "", "key": "",
"action": "", "action": "",

View File

@@ -9,29 +9,29 @@
"general": { "general": {
"appname": { "appname": {
"label": "Název aplikace", "label": "Název aplikace",
"description": "" "description": "Zobrazuje se s aplikací na ploše."
}, },
"internalAddress": { "internalAddress": {
"label": "", "label": "Interní adresa",
"description": "", "description": "Interní IP adresa aplikace.",
"troubleshoot": { "troubleshoot": {
"label": "Narazili jste na problém?", "label": "Narazili jste na problém?",
"header": "", "header": "Zde je seznam nejčastějších chyb a jejich řešení:",
"lines": { "lines": {
"nothingAfterPort": "", "nothingAfterPort": "Ve většině případů, ne-li ve všech, byste za port neměli zadávat žádnou cestu. (Dokonce ani '/admin' pro pihole nebo '/web' pro plex)",
"protocolCheck": "", "protocolCheck": "Vždy se ujistěte, že na začátku URL je http nebo https a také se ujistěte, že používáte správnou předponu.",
"preferIP": "", "preferIP": "Doporučuje se používat přímo Ip adresu stroje nebo kontejneru, se kterým se snažíte komunikovat.",
"enablePings": "", "enablePings": "Zkontrolujte, zda je IP adresa správná, povolením pingů. Běžte do Přizpůsobení plochy -> Rozložení -> Povolit ping. Na dlaždicích aplikace se objeví malá červená nebo zelená bublina a po najetí na ni se zobrazí kód odpovědi (ve většině případů se očekává zelená bublina s kódem 200).",
"wget": "", "wget": "Chcete-li se ujistit, že homarr může komunikovat s ostatními aplikacemi, zkontrolujte, zda wget/curl/ping odpovídá IP adrese:portu aplikace.",
"iframe": "", "iframe": "Pokud jde o iframe, ty by měly vždy používat stejný protokol (http/s) jako Homarr.",
"clearCache": "" "clearCache": ""
}, },
"footer": "" "footer": "Pro řešení dalších problémů se obraťte na náš {{discord}}."
} }
}, },
"externalAddress": { "externalAddress": {
"label": "", "label": "Veřejná adresa",
"description": "" "description": "URL která bude otevřena po kliknutí na aplikaci."
} }
}, },
"behaviour": { "behaviour": {
@@ -47,18 +47,18 @@
}, },
"network": { "network": {
"statusChecker": { "statusChecker": {
"label": "", "label": "Kontrola stavu",
"description": "" "description": "Kontroluje, zda je aplikace online pomocí jednoduchého HTTP(S) požadavku."
}, },
"statusCodes": { "statusCodes": {
"label": "", "label": "Stavové kódy HTTP",
"description": "" "description": "Stavové kódy HTTP, které jsou považovány jako online."
} }
}, },
"appearance": { "appearance": {
"icon": { "icon": {
"label": "", "label": "Ikona aplikace",
"description": "", "description": "Začněte psát pro vyhledání ikony. Můžete také vložit adresu URL obrázku a použít vlastní ikonu.",
"autocomplete": { "autocomplete": {
"title": "", "title": "",
"text": "" "text": ""
@@ -69,38 +69,38 @@
} }
}, },
"appNameFontSize": { "appNameFontSize": {
"label": "", "label": "Velikost písma názvu aplikace",
"description": "" "description": "Nastavte velikost písma zobrazení názvu aplikace na dlaždici."
}, },
"appNameStatus": { "appNameStatus": {
"label": "", "label": "Stav názvu aplikace",
"description": "", "description": "Zvolte, kde se má název zobrazit, pokud se vůbec má zobrazit.",
"dropdown": { "dropdown": {
"normal": "", "normal": "Zobrazení názvu pouze na dlaždici",
"hover": "", "hover": "Zobrazení názvu pouze při najetí myší",
"hidden": "" "hidden": "Nezobrazovat vůbec"
} }
}, },
"positionAppName": { "positionAppName": {
"label": "", "label": "Pozice názvu aplikace",
"description": "", "description": "Pozice názvu aplikace vzhledem k ikoně.",
"dropdown": { "dropdown": {
"top": "", "top": "Nahoře",
"right": "", "right": "Vpravo",
"bottom": "", "bottom": "Dole",
"left": "" "left": "Vlevo"
} }
}, },
"lineClampAppName": { "lineClampAppName": {
"label": "", "label": "Řádky názvu aplikace",
"description": "" "description": "Určuje, na kolik řádků se má maximálně vejít váš nadpis. Nastavte 0 pro neomezený počet."
} }
}, },
"integration": { "integration": {
"type": { "type": {
"label": "", "label": "Nastavení propojení",
"description": "", "description": "Konfigurace integrace, která bude použita pro připojení k vaší aplikaci.",
"placeholder": "", "placeholder": "Vyberte integraci",
"defined": "", "defined": "",
"undefined": "", "undefined": "",
"public": "", "public": "",

View File

@@ -8,22 +8,22 @@
"categories": "Kategorie" "categories": "Kategorie"
}, },
"buttons": { "buttons": {
"view": "" "view": "Zobrazit plochu"
}, },
"menu": { "menu": {
"setAsDefault": "", "setAsDefault": "Nastavit jako výchozí plochu",
"delete": { "delete": {
"label": "", "label": "Trvale smazat",
"disabled": "" "disabled": "Smazání je zakázáno, protože starší komponenty Homarru neumožňují smazání výchozí konfigurace. Smazání bude možné v budoucnu."
} }
}, },
"badges": { "badges": {
"fileSystem": "", "fileSystem": "Souborový systém",
"default": "" "default": "Výchozí"
} }
}, },
"buttons": { "buttons": {
"create": "" "create": "Vytvořit novou plochu"
}, },
"modals": { "modals": {
"delete": { "delete": {
@@ -31,13 +31,13 @@
"text": "" "text": ""
}, },
"create": { "create": {
"title": "", "title": "Vytvořit plochu",
"text": "", "text": "Název nelze po vytvoření plochy změnit.",
"form": { "form": {
"name": { "name": {
"label": "" "label": ""
}, },
"submit": "" "submit": "Vytvořit"
} }
} }
} }

View File

@@ -1,13 +1,21 @@
{ {
"metaTitle": "Uživatelé", "metaTitle": "Uživatelé",
"pageTitle": "Správa uživatelů", "pageTitle": "Správa uživatelů",
"text": "",
"buttons": { "buttons": {
"create": "" "create": "Vytvořit"
},
"filter": {
"roles": {
"all": "",
"normal": "",
"admin": "",
"owner": ""
}
}, },
"table": { "table": {
"header": { "header": {
"user": "Uživatel" "user": "Uživatel",
"email": "E-mail"
} }
}, },
"tooltips": { "tooltips": {

View File

@@ -1,25 +1,25 @@
{ {
"metaTitle": "", "metaTitle": "Vytvořit uživatele",
"steps": { "steps": {
"account": { "account": {
"title": "", "title": "První krok",
"text": "", "text": "",
"username": { "username": {
"label": "" "label": ""
}, },
"email": { "email": {
"label": "" "label": "E-mail"
} }
}, },
"security": { "security": {
"title": "", "title": "Druhý krok",
"text": "", "text": "",
"password": { "password": {
"label": "" "label": ""
} }
}, },
"finish": { "finish": {
"title": "", "title": "Potvrzení",
"text": "", "text": "",
"card": { "card": {
"title": "", "title": "",
@@ -30,7 +30,7 @@
"property": "", "property": "",
"value": "", "value": "",
"username": "", "username": "",
"email": "", "email": "E-mail",
"password": "" "password": ""
}, },
"notSet": "", "notSet": "",

View File

@@ -0,0 +1,55 @@
{
"metaTitle": "",
"back": "",
"sections": {
"general": {
"title": "Obecné",
"inputs": {
"username": {
"label": ""
},
"eMail": {
"label": "E-mail"
}
}
},
"security": {
"title": "",
"inputs": {
"password": {
"label": ""
},
"terminateExistingSessions": {
"label": "",
"description": ""
},
"confirm": {
"label": "",
"description": ""
}
}
},
"roles": {
"title": "",
"currentRole": "",
"badges": {
"owner": "",
"admin": "",
"normal": ""
}
},
"deletion": {
"title": "",
"inputs": {
"confirmUsername": {
"label": "",
"description": ""
},
"confirm": {
"label": "Trvale smazat",
"description": ""
}
}
}
}
}

View File

@@ -20,11 +20,11 @@
}, },
"modals": { "modals": {
"create": { "create": {
"title": "", "title": "Vytvořit pozvánku",
"description": "", "description": "Po vypršení platnosti pozvánka přestane být platná a příjemce pozvánky si nebude moci vytvořit účet.",
"form": { "form": {
"expires": "", "expires": "Datum konce platnosti",
"submit": "" "submit": "Vytvořit"
} }
}, },
"copy": { "copy": {
@@ -44,5 +44,5 @@
"description": "" "description": ""
} }
}, },
"noInvites": "" "noInvites": "Zatím zde nejsou žádné pozvánky."
} }

View File

@@ -1,7 +1,7 @@
{ {
"descriptor": { "descriptor": {
"name": "", "name": "Záložka",
"description": "", "description": "Zobrazí statický seznam textů nebo odkazů",
"settings": { "settings": {
"title": "", "title": "",
"name": { "name": {

View File

@@ -1,7 +1,7 @@
{ {
"descriptor": { "descriptor": {
"name": "", "name": "Kalendář",
"description": "", "description": "Zobrazí kalendář s nadcházejícími vydáními z podporovaných integrací.",
"settings": { "settings": {
"title": "", "title": "",
"radarrReleaseType": { "radarrReleaseType": {

View File

@@ -1,7 +1,7 @@
{ {
"descriptor": { "descriptor": {
"name": "", "name": "Dash.",
"description": "", "description": "Zobrazuje grafy z externího Dash. Instance uvnitř Homarru.",
"settings": { "settings": {
"title": "", "title": "",
"dashName": { "dashName": {
@@ -82,7 +82,7 @@
} }
}, },
"card": { "card": {
"title": "", "title": "Dash.",
"errors": { "errors": {
"noService": "", "noService": "",
"noInformation": "", "noInformation": "",

View File

@@ -1,9 +1,16 @@
{ {
"descriptor": { "descriptor": {
"name": "", "name": "Datum a čas",
"description": "", "description": "Zobrazuje aktuální datum a čas.",
"settings": { "settings": {
"title": "", "title": "",
"timezone": {
"label": "",
"info": ""
},
"customTitle": {
"label": ""
},
"display24HourFormat": { "display24HourFormat": {
"label": "" "label": ""
}, },
@@ -13,12 +20,6 @@
"hide": "" "hide": ""
} }
}, },
"enableTimezone": {
"label": ""
},
"timezoneLocation": {
"label": ""
},
"titleState": { "titleState": {
"label": "", "label": "",
"info": "", "info": "",

View File

@@ -1,7 +1,7 @@
{ {
"descriptor": { "descriptor": {
"name": "", "name": "Rychlost stahování",
"description": "" "description": "Zobrazuje rychlost stahování a odesílání z podporovaných integrací."
}, },
"card": { "card": {
"table": { "table": {

View File

@@ -1,7 +1,7 @@
{ {
"descriptor": { "descriptor": {
"name": "", "name": "Ovládání DNS hole",
"description": "", "description": "Ovládejte PiHole nebo AdGuard z plochy",
"settings": { "settings": {
"title": "", "title": "",
"showToggleAllButtons": { "showToggleAllButtons": {

View File

@@ -1,7 +1,7 @@
{ {
"descriptor": { "descriptor": {
"name": "", "name": "Shrnutí DNS hole",
"description": "", "description": "Zobrazuje důležitá data ze služby PiHole nebo AdGuard",
"settings": { "settings": {
"title": "", "title": "",
"usePiHoleColors": { "usePiHoleColors": {

View File

@@ -1,7 +1,7 @@
{ {
"descriptor": { "descriptor": {
"name": "", "name": "iFrame",
"description": "", "description": "Vložte jakýkoli obsah z internetu. Některé webové stránky mohou omezit přístup.",
"settings": { "settings": {
"title": "", "title": "",
"embedUrl": { "embedUrl": {

View File

@@ -1,7 +1,7 @@
{ {
"descriptor": { "descriptor": {
"name": "", "name": "Žádosti o média",
"description": "", "description": "Podívejte se na seznam všech požadavků na média z vaší instance Overseerr nebo Jellyseerr",
"settings": { "settings": {
"title": "", "title": "",
"replaceLinksWithExternalHost": { "replaceLinksWithExternalHost": {

View File

@@ -1,7 +1,7 @@
{ {
"descriptor": { "descriptor": {
"name": "", "name": "Statistiky požadavků na média",
"description": "", "description": "Statistiky vašich požadavků na média",
"settings": { "settings": {
"title": "", "title": "",
"replaceLinksWithExternalHost": { "replaceLinksWithExternalHost": {

View File

@@ -1,7 +1,7 @@
{ {
"descriptor": { "descriptor": {
"name": "Mediální server", "name": "Mediální server",
"description": "", "description": "Interagujte se svým mediálním serverem Jellyfin nebo Plex",
"settings": { "settings": {
"title": "" "title": ""
} }

View File

@@ -1,7 +1,7 @@
{ {
"descriptor": { "descriptor": {
"name": "", "name": "Zápisník",
"description": "", "description": "Interaktivní widget založený na Markdownu, do kterého si můžete zapisovat poznámky!",
"settings": { "settings": {
"title": "", "title": "",
"showToolbar": { "showToolbar": {

View File

@@ -1,7 +1,7 @@
{ {
"descriptor": { "descriptor": {
"name": "", "name": "RSS Widget",
"description": "", "description": "RSS widget umožňuje zobrazit RSS kanály na vaší nástěnce.",
"settings": { "settings": {
"title": "", "title": "",
"rssFeedUrl": { "rssFeedUrl": {

View File

@@ -0,0 +1,17 @@
{
"entityNotFound": "",
"descriptor": {
"name": "",
"description": "",
"settings": {
"title": "",
"entityId": {
"label": "",
"info": ""
},
"displayName": {
"label": ""
}
}
}
}

View File

@@ -1,7 +1,7 @@
{ {
"descriptor": { "descriptor": {
"name": "", "name": "Torrenty",
"description": "", "description": "Zobrazuje seznam torrentů z podporovaných klientů Torrent.",
"settings": { "settings": {
"title": "", "title": "",
"refreshInterval": { "refreshInterval": {
@@ -36,17 +36,27 @@
"footer": { "footer": {
"error": "", "error": "",
"lastUpdated": "Naposledy aktualizováno před {{time}}", "lastUpdated": "Naposledy aktualizováno před {{time}}",
"ratioGlobal": "Globální poměr", "ratioGlobal": "Obecný poměr",
"ratioWithFilter": "Filtrovaný poměr" "ratioWithFilter": "Filtrovaný poměr"
}, },
"table": { "table": {
"header": { "header": {
"isCompleted": "",
"name": "", "name": "",
"dateAdded": "",
"size": "", "size": "",
"download": "", "download": "",
"upload": "", "upload": "",
"estimatedTimeOfArrival": "", "estimatedTimeOfArrival": "",
"progress": "" "progress": "",
"totalUploaded": "",
"totalDownloaded": "",
"ratio": "",
"seeds": "",
"peers": "",
"label": "",
"state": "",
"stateMessage": ""
}, },
"item": { "item": {
"text": "" "text": ""

View File

@@ -1,7 +1,7 @@
{ {
"descriptor": { "descriptor": {
"name": "", "name": "Usenet",
"description": "" "description": "Umožňuje zobrazit a spravovat instanci Usenetu."
}, },
"card": { "card": {
"errors": { "errors": {

View File

@@ -1,7 +1,7 @@
{ {
"descriptor": { "descriptor": {
"name": "", "name": "Streamování videa",
"description": "", "description": "Vložte video stream nebo video z kamery nebo webové stránky",
"settings": { "settings": {
"title": "", "title": "",
"FeedUrl": { "FeedUrl": {

View File

@@ -1,7 +1,7 @@
{ {
"descriptor": { "descriptor": {
"name": "", "name": "Počasí",
"description": "", "description": "Zobrazuje aktuální informace o počasí na nastaveném místě.",
"settings": { "settings": {
"title": "", "title": "",
"displayInFahrenheit": { "displayInFahrenheit": {

View File

@@ -2,18 +2,18 @@
"title": "", "title": "",
"alerts": { "alerts": {
"notConfigured": { "notConfigured": {
"text": "" "text": "Vaše instance Homarr nemá nakonfigurovaný Docker nebo se nepodařilo načíst kontejnery. Podívejte se prosím do dokumentace, jak integraci nastavit."
} }
}, },
"modals": { "modals": {
"selectBoard": { "selectBoard": {
"title": "", "title": "Vyberte plochu",
"text": "", "text": "Vyberte plochu, na kterou chcete přidat aplikace pro vybrané Docker kontejnery.",
"form": { "form": {
"board": { "board": {
"label": "" "label": "Plocha"
}, },
"submit": "" "submit": "Přidat aplikace"
} }
} }
}, },

View File

@@ -1,48 +1,48 @@
{ {
"metaTitle": "", "metaTitle": "Předvolby",
"pageTitle": "", "pageTitle": "Vaše předvolby",
"boards": { "boards": {
"defaultBoard": { "defaultBoard": {
"label": "" "label": "Výchozí plocha"
} }
}, },
"accessibility": { "accessibility": {
"title": "", "title": "",
"disablePulse": { "disablePulse": {
"label": "", "label": "Vypnout pulsování pingu",
"description": "" "description": "Ve výchozím nastavení budou indikátory pingu v Homarru pulzovat. To může být dráždivé. Tento posuvník deaktivuje animaci"
}, },
"replaceIconsWithDots": { "replaceIconsWithDots": {
"label": "", "label": "Nahraďte tečky pingu ikonami",
"description": "" "description": "Pro barvoslepé uživatele mohou být body pingu nerozpoznatelné. Toto nahradí indikátory ikonami"
} }
}, },
"localization": { "localization": {
"language": { "language": {
"label": "" "label": "Jazyk"
}, },
"firstDayOfWeek": { "firstDayOfWeek": {
"label": "", "label": "První den v týdnu",
"options": { "options": {
"monday": "", "monday": "Pondělí",
"saturday": "", "saturday": "Sobota",
"sunday": "" "sunday": "Neděle"
} }
} }
}, },
"searchEngine": { "searchEngine": {
"title": "", "title": "Vyhledávač",
"custom": "", "custom": "Vlastní",
"newTab": { "newTab": {
"label": "" "label": "Otevřít výsledky hledání v nové záložce"
}, },
"autoFocus": { "autoFocus": {
"label": "", "label": "Zaměřit na vyhledávací panel po načtení stránky.",
"description": "" "description": "Při přechodu na stránky plochy se automaticky zaměří vyhledávací panel. Funguje pouze na stolních počítačích."
}, },
"template": { "template": {
"label": "", "label": "Adresa URL dotazu",
"description": "" "description": "Použijte %s jako zástupný znak pro dotaz"
} }
} }
} }

View File

@@ -51,5 +51,7 @@
"attributes": { "attributes": {
"width": "Bredde", "width": "Bredde",
"height": "Højde" "height": "Højde"
} },
"public": "Offentlig",
"restricted": "Begrænset"
} }

View File

@@ -21,5 +21,6 @@
"title": "Kategorien er oprettet", "title": "Kategorien er oprettet",
"message": "Kategorien \"{{name}}\" er blevet oprettet" "message": "Kategorien \"{{name}}\" er blevet oprettet"
} }
} },
"importFromDocker": "Importer fra docker"
} }

View File

@@ -1,13 +1,21 @@
{ {
"metaTitle": "Brugere", "metaTitle": "Brugere",
"pageTitle": "Administrér brugere", "pageTitle": "Administrér brugere",
"text": "Ved hjælp af brugere kan du konfigurere, hvem der kan redigere dine dashboards. Fremtidige versioner af Homarr vil have endnu mere detaljeret kontrol over tilladelser og tavler.",
"buttons": { "buttons": {
"create": "Opret" "create": "Opret"
}, },
"filter": {
"roles": {
"all": "Alle",
"normal": "Normal",
"admin": "Admin",
"owner": "Ejer"
}
},
"table": { "table": {
"header": { "header": {
"user": "Bruger" "user": "Bruger",
"email": "E-mail"
} }
}, },
"tooltips": { "tooltips": {

View File

@@ -0,0 +1,55 @@
{
"metaTitle": "Bruger {{username}}",
"back": "Tilbage til brugeradministration",
"sections": {
"general": {
"title": "Generelt",
"inputs": {
"username": {
"label": "Brugernavn"
},
"eMail": {
"label": "E-mail"
}
}
},
"security": {
"title": "Sikkerhed",
"inputs": {
"password": {
"label": "Nyt kodeord"
},
"terminateExistingSessions": {
"label": "Afslut eksisterende sessioner",
"description": "Tvinger brugeren til at logge ind igen på deres enheder"
},
"confirm": {
"label": "Bekræft",
"description": "Adgangskoden vil blive opdateret. Handlingen kan ikke fortrydes."
}
}
},
"roles": {
"title": "Roller",
"currentRole": "Nuværende rolle: ",
"badges": {
"owner": "Ejer",
"admin": "Admin",
"normal": "Normal"
}
},
"deletion": {
"title": "Sletning af konto",
"inputs": {
"confirmUsername": {
"label": "Bekræft brugernavn",
"description": "Indtast brugernavn for at bekræfte sletningen"
},
"confirm": {
"label": "Slet permanent",
"description": "Jeg er klar over, at denne handling er permanent, og alle kontodata vil gå tabt."
}
}
}
}
}

View File

@@ -4,6 +4,13 @@
"description": "Viser aktuel dag og klokkeslæt.", "description": "Viser aktuel dag og klokkeslæt.",
"settings": { "settings": {
"title": "Indstillinger for dato og tid widget", "title": "Indstillinger for dato og tid widget",
"timezone": {
"label": "Tidszone",
"info": "Vælg navnet på din tidszone, find din her: "
},
"customTitle": {
"label": "Bynavn eller tilpasset titel"
},
"display24HourFormat": { "display24HourFormat": {
"label": "Vis fuld tid (24-timer)" "label": "Vis fuld tid (24-timer)"
}, },
@@ -13,18 +20,12 @@
"hide": "Skjul dato" "hide": "Skjul dato"
} }
}, },
"enableTimezone": {
"label": "Vis en brugerdefineret tidszone"
},
"timezoneLocation": {
"label": "Tidszone Lokation"
},
"titleState": { "titleState": {
"label": "Byens titel", "label": "Urets titel",
"info": "Hvis du aktiverer indstillingen Tidszone, kan du få vist navnet på byen og tidszonekoden.<br/>Du kan også vise byen alene eller slet ikke vise noget.", "info": "Den tilpassede titel og tidszonekoden kan vises på din widget.<br/>Du kan også vise byen alene, vise ingen,<br/>eller endda vise tidszonen alene, når begge er valgt, men ingen titel er angivet.",
"data": { "data": {
"both": "By og tidszone", "both": "Titel og tidszone",
"city": "Kun by", "city": "Kun titel",
"none": "Intet" "none": "Intet"
} }
} }

View File

@@ -0,0 +1,17 @@
{
"entityNotFound": "Entitet blev ikke fundet",
"descriptor": {
"name": "Home Assistant entitet",
"description": "Aktuel tilstand for en entitet i Home Assistant",
"settings": {
"title": "Entitet tilstand",
"entityId": {
"label": "Entitet ID",
"info": "Unikt entitets-id i Home Assistant. Kopier ved at klikke på entitet > Klik på tandhjulsikon > Klik på kopieringsknappen ved 'Entitets-ID'. Nogle brugerdefinerede entiteter understøttes muligvis ikke."
},
"displayName": {
"label": "Visningsnavn"
}
}
}
}

View File

@@ -41,12 +41,22 @@
}, },
"table": { "table": {
"header": { "header": {
"isCompleted": "Downloader",
"name": "Navn", "name": "Navn",
"dateAdded": "Tilføjet den",
"size": "Størrelse", "size": "Størrelse",
"download": "Down", "download": "Down",
"upload": "Up", "upload": "Up",
"estimatedTimeOfArrival": "ETA", "estimatedTimeOfArrival": "ETA",
"progress": "Fremskridt" "progress": "Fremskridt",
"totalUploaded": "Samlet upload",
"totalDownloaded": "Samlet download",
"ratio": "Delingsforhold",
"seeds": "Seeds (forbundet)",
"peers": "Peers (forbundet)",
"label": "Etiket",
"state": "Tilstand",
"stateMessage": "Tilstandsbesked"
}, },
"item": { "item": {
"text": "Administreret af {{appName}}, {{ratio}} ratio" "text": "Administreret af {{appName}}, {{ratio}} ratio"

View File

@@ -51,5 +51,7 @@
"attributes": { "attributes": {
"width": "Breite", "width": "Breite",
"height": "Höhe" "height": "Höhe"
} },
"public": "Öffentlich sichtbar",
"restricted": "Eingeschränkt"
} }

View File

@@ -21,5 +21,6 @@
"title": "Kategorie erstellt", "title": "Kategorie erstellt",
"message": "Die Kategorie \"{{name}}\" wurde erstellt" "message": "Die Kategorie \"{{name}}\" wurde erstellt"
} }
} },
"importFromDocker": "Aus Docker importieren"
} }

View File

@@ -1,13 +1,21 @@
{ {
"metaTitle": "Benutzer", "metaTitle": "Benutzer",
"pageTitle": "Verwaltung von Benutzern", "pageTitle": "Verwaltung von Benutzern",
"text": "Mit Benutzern können Sie konfigurieren, wer Ihre Dashboards bearbeiten kann. Zukünftige Versionen von Homarr werden eine noch detailliertere Kontrolle über Berechtigungen und Boards haben.",
"buttons": { "buttons": {
"create": "Erstellen" "create": "Erstellen"
}, },
"filter": {
"roles": {
"all": "Alle",
"normal": "Normal",
"admin": "Admin",
"owner": "Eigentümer"
}
},
"table": { "table": {
"header": { "header": {
"user": "Benutzer" "user": "Benutzer",
"email": "E-Mail"
} }
}, },
"tooltips": { "tooltips": {

View File

@@ -0,0 +1,55 @@
{
"metaTitle": "Benutzer {{username}}",
"back": "Zurück zur Benutzerverwaltung",
"sections": {
"general": {
"title": "Allgemein",
"inputs": {
"username": {
"label": "Benutzername"
},
"eMail": {
"label": "E-Mail"
}
}
},
"security": {
"title": "Sicherheit",
"inputs": {
"password": {
"label": "Neues Passwort"
},
"terminateExistingSessions": {
"label": "Beenden Sie bestehende Sitzungen",
"description": "Erzwingt die erneute Anmeldung des Benutzers auf seinen Geräten"
},
"confirm": {
"label": "Bestätigen",
"description": "Das Passwort wird aktualisiert. Diese Aktion kann nicht rückgängig gemacht werden."
}
}
},
"roles": {
"title": "Rollen",
"currentRole": "Aktuelle Rolle: ",
"badges": {
"owner": "Eigentümer",
"admin": "Admin",
"normal": "Normal"
}
},
"deletion": {
"title": "Löschung des Kontos",
"inputs": {
"confirmUsername": {
"label": "Benutzername bestätigen",
"description": "Geben Sie den Benutzernamen ein, um die Löschung zu bestätigen"
},
"confirm": {
"label": "Dauerhaft löschen",
"description": "Ich bin mir bewusst, dass diese Maßnahme dauerhaft ist und alle Kontodaten im Zuge dessen verloren gehen."
}
}
}
}
}

View File

@@ -4,6 +4,13 @@
"description": "Zeigt das aktuelle Datum und die Uhrzeit an.", "description": "Zeigt das aktuelle Datum und die Uhrzeit an.",
"settings": { "settings": {
"title": "\"Datum und Uhrzeit\" Widget Einstellungen", "title": "\"Datum und Uhrzeit\" Widget Einstellungen",
"timezone": {
"label": "Zeitzone",
"info": "Wählen Sie den Namen Ihrer Zeitzone, Ihre finden Sie hier: "
},
"customTitle": {
"label": "Name der Stadt oder benutzerdefinierter Name"
},
"display24HourFormat": { "display24HourFormat": {
"label": "24-Stunden Format" "label": "24-Stunden Format"
}, },
@@ -13,18 +20,12 @@
"hide": "Daten ausblenden" "hide": "Daten ausblenden"
} }
}, },
"enableTimezone": {
"label": "Benutzerdefinierte Zeitzone anzeigen"
},
"timezoneLocation": {
"label": "Standort der Zeitzone"
},
"titleState": { "titleState": {
"label": "Stadt", "label": "Titel der Uhr",
"info": "Wenn Sie die Zeitzonen Option aktivieren, können der Name der Stadt und die Zeitzone angezeigt werden.<br/>Sie können auch nur die Stadt oder gar nichts davon anzeigen lassen.", "info": "Der benutzerdefinierte Name und der Zeitzonencode können auf Ihrem Widget angezeigt werden.<br/>Sie können auch nur die Stadt anzeigen, keine anzeigen,<br/>oder sogar nur die Zeitzone anzeigen, wenn beide ausgewählt sind, aber kein Titel angegeben wird.",
"data": { "data": {
"both": "Stadt und Zeitzone", "both": "Name und Zeitzone",
"city": "Nur Stadt", "city": "Nur Name",
"none": "Keine" "none": "Keine"
} }
} }

View File

@@ -0,0 +1,17 @@
{
"entityNotFound": "Eintrag nicht gefunden",
"descriptor": {
"name": "Home Assistant Eintrag",
"description": "Aktueller Status eines Eintrags in Home Assistant",
"settings": {
"title": "Zustand des Eintrags",
"entityId": {
"label": "Eintrag-ID",
"info": "Eindeutige Eintrag-ID im Home Assistant. Kopieren durch Anklicken von Eintrag > Anklicken des Zahnradsymbols > Anklicken der Schaltfläche \"Kopieren\" bei \"Eintrag-ID\". Einige benutzerdefinierte Einträge werden möglicherweise nicht unterstützt."
},
"displayName": {
"label": "Anzeigename"
}
}
}
}

View File

@@ -41,12 +41,22 @@
}, },
"table": { "table": {
"header": { "header": {
"isCompleted": "Herunterladen",
"name": "Name", "name": "Name",
"dateAdded": "Hinzugefügt am",
"size": "Größe", "size": "Größe",
"download": "Down", "download": "Down",
"upload": "Up", "upload": "Up",
"estimatedTimeOfArrival": "Voraussichtlicher Abschluss", "estimatedTimeOfArrival": "Voraussichtlicher Abschluss",
"progress": "Fortschritt" "progress": "Fortschritt",
"totalUploaded": "Upload gesamt",
"totalDownloaded": "Download gesamt",
"ratio": "Verhältnis",
"seeds": "Seeds (verbunden)",
"peers": "Peers (Verbunden)",
"label": "Kategorie",
"state": "Staat",
"stateMessage": "Statusmeldung"
}, },
"item": { "item": {
"text": "Verwaltet von {{appName}}, {{ratio}} ratio" "text": "Verwaltet von {{appName}}, {{ratio}} ratio"

View File

@@ -51,5 +51,7 @@
"attributes": { "attributes": {
"width": "Πλάτος", "width": "Πλάτος",
"height": "Ύψος" "height": "Ύψος"
} },
"public": "Δημόσιο",
"restricted": "Περιορισμένη πρόσβαση"
} }

View File

@@ -21,5 +21,6 @@
"title": "Η κατηγορία δημιουργήθηκε", "title": "Η κατηγορία δημιουργήθηκε",
"message": "Η κατηγορία \"{{name}}\" έχει δημιουργηθεί" "message": "Η κατηγορία \"{{name}}\" έχει δημιουργηθεί"
} }
} },
"importFromDocker": ""
} }

View File

@@ -1,13 +1,21 @@
{ {
"metaTitle": "Χρήστες", "metaTitle": "Χρήστες",
"pageTitle": "Διαχείριση χρηστών", "pageTitle": "Διαχείριση χρηστών",
"text": "Χρησιμοποιώντας τους χρήστες, μπορείτε να ρυθμίσετε ποιος μπορεί να επεξεργάζεται τους πίνακές σας. Οι μελλοντικές εκδόσεις του Homarr θα έχουν ακόμα πιο λεπτομερή έλεγχο των δικαιωμάτων και των πινάκων.",
"buttons": { "buttons": {
"create": "Δημιουργία" "create": "Δημιουργία"
}, },
"filter": {
"roles": {
"all": "",
"normal": "",
"admin": "",
"owner": ""
}
},
"table": { "table": {
"header": { "header": {
"user": "Χρήστης" "user": "Χρήστης",
"email": "E-Mail"
} }
}, },
"tooltips": { "tooltips": {

View File

@@ -0,0 +1,55 @@
{
"metaTitle": "",
"back": "",
"sections": {
"general": {
"title": "Γενικά",
"inputs": {
"username": {
"label": "Όνομα Χρήστη"
},
"eMail": {
"label": "E-Mail"
}
}
},
"security": {
"title": "",
"inputs": {
"password": {
"label": ""
},
"terminateExistingSessions": {
"label": "",
"description": ""
},
"confirm": {
"label": "Επιβεβαίωση",
"description": ""
}
}
},
"roles": {
"title": "",
"currentRole": "",
"badges": {
"owner": "",
"admin": "",
"normal": ""
}
},
"deletion": {
"title": "",
"inputs": {
"confirmUsername": {
"label": "",
"description": ""
},
"confirm": {
"label": "Οριστική διαγραφή",
"description": ""
}
}
}
}
}

View File

@@ -4,6 +4,13 @@
"description": "Εμφανίζει την τρέχουσα ημερομηνία και ώρα.", "description": "Εμφανίζει την τρέχουσα ημερομηνία και ώρα.",
"settings": { "settings": {
"title": "Ρυθμίσεις για το widget ημερομηνίας και ώρας", "title": "Ρυθμίσεις για το widget ημερομηνίας και ώρας",
"timezone": {
"label": "",
"info": ""
},
"customTitle": {
"label": ""
},
"display24HourFormat": { "display24HourFormat": {
"label": "Εμφάνιση πλήρης ώρας(24-ώρο)" "label": "Εμφάνιση πλήρης ώρας(24-ώρο)"
}, },
@@ -13,18 +20,12 @@
"hide": "Απόκρυψη Ημερομηνίας" "hide": "Απόκρυψη Ημερομηνίας"
} }
}, },
"enableTimezone": {
"label": "Εμφάνιση προσαρμοσμένης ζώνης ώρας"
},
"timezoneLocation": {
"label": "Τοποθεσία Ζώνης Ώρας"
},
"titleState": { "titleState": {
"label": "Τίτλος πόλης", "label": "",
"info": "Σε περίπτωση που ενεργοποιήσετε την επιλογή Ζώνη Ώρας, μπορεί να εμφανιστεί το όνομα της πόλης και ο κωδικός ζώνης ώρας.<br/>Μπορείτε επίσης να δείξετε την πόλη μόνο ή ακόμη και να μη δείξετε τίποτα.", "info": "",
"data": { "data": {
"both": "Πόλη και ζώνη ώρας", "both": "",
"city": "Πόλη μόνο", "city": "",
"none": "Κανένα" "none": "Κανένα"
} }
} }

View File

@@ -0,0 +1,17 @@
{
"entityNotFound": "Η οντότητα δε βρέθηκε",
"descriptor": {
"name": "Οντότητα Home Assistant",
"description": "Τρέχουσα κατάσταση μιας οντότητας στο Home Assistant",
"settings": {
"title": "Κατάσταση οντότητας",
"entityId": {
"label": "Αναγνωριστικό οντότητας",
"info": "Μοναδικό αναγνωριστικό οντότητας στο Home Assistant. Αντιγράψτε κάνοντας κλικ στην οντότητα > Κάντε κλικ στο εικονίδιο με το γρανάζι > Κάντε κλικ στο κουμπί αντιγραφής στο 'Αναγνωριστικό οντότητας'. Ορισμένες προσαρμοσμένες οντότητες ενδέχεται να μην υποστηρίζονται."
},
"displayName": {
"label": "Εμφανιζόμενο όνομα"
}
}
}
}

View File

@@ -41,12 +41,22 @@
}, },
"table": { "table": {
"header": { "header": {
"isCompleted": "Λήψη",
"name": "Όνομα", "name": "Όνομα",
"dateAdded": "Προστέθηκε στις",
"size": "Μέγεθος", "size": "Μέγεθος",
"download": "Κάτω", "download": "Κάτω",
"upload": "Πάνω", "upload": "Πάνω",
"estimatedTimeOfArrival": "Εκτιμώμενος χρόνος αναμονής", "estimatedTimeOfArrival": "Εκτιμώμενος χρόνος αναμονής",
"progress": "Πρόοδος" "progress": "Πρόοδος",
"totalUploaded": "Συνολική Μεταφόρτωση",
"totalDownloaded": "Συνολικές λήψεις",
"ratio": "Αναλογία",
"seeds": "Seeds (Συνδεδεμένοι)",
"peers": "Peers (Συνδεδεμένοι)",
"label": "Ετικέτα",
"state": "Κατάσταση",
"stateMessage": "Μήνυμα Κατάστασης"
}, },
"item": { "item": {
"text": "Διαχειρίζεται από {{appName}}, {{ratio}} αναλογία" "text": "Διαχειρίζεται από {{appName}}, {{ratio}} αναλογία"

View File

@@ -1,13 +1,21 @@
{ {
"metaTitle": "Users", "metaTitle": "Users",
"pageTitle": "Manage users", "pageTitle": "Manage users",
"text": "Using users, you can configure who can edit your dashboards. Future versions of Homarr will have even more granular control over permissions and boards.",
"buttons": { "buttons": {
"create": "Create" "create": "Create"
}, },
"filter": {
"roles": {
"all": "All",
"normal": "Normal",
"admin": "Admin",
"owner": "Owner"
}
},
"table": { "table": {
"header": { "header": {
"user": "User" "user": "User",
"email": "E-Mail"
} }
}, },
"tooltips": { "tooltips": {

View File

@@ -0,0 +1,55 @@
{
"metaTitle": "User {{username}}",
"back": "Back to user management",
"sections": {
"general": {
"title": "General",
"inputs": {
"username": {
"label": "Username"
},
"eMail": {
"label": "E-Mail"
}
}
},
"security": {
"title": "Security",
"inputs": {
"password": {
"label": "New password"
},
"terminateExistingSessions": {
"label": "Terminate existing sessions",
"description": "Forces user to log in again on their devices"
},
"confirm": {
"label": "Confirm",
"description": "Password will be updated. Action cannot be reverted."
}
}
},
"roles": {
"title": "Roles",
"currentRole": "Current role: ",
"badges": {
"owner": "Owner",
"admin": "Admin",
"normal": "Normal"
}
},
"deletion": {
"title": "Account deletion",
"inputs": {
"confirmUsername": {
"label": "Confirm username",
"description": "Type username to confirm deletion"
},
"confirm": {
"label": "Delete permanently",
"description": "I am aware that this action is permanent and all account data will be lost."
}
}
}
}
}

View File

@@ -4,6 +4,13 @@
"description": "Displays the current date and time.", "description": "Displays the current date and time.",
"settings": { "settings": {
"title": "Settings for Date and Time widget", "title": "Settings for Date and Time widget",
"timezone":{
"label":"Timezone",
"info":"Select the name of your timezone, find yours here: "
},
"customTitle":{
"label":"City name or custom title"
},
"display24HourFormat": { "display24HourFormat": {
"label": "Display full time (24-hour)" "label": "Display full time (24-hour)"
}, },
@@ -13,18 +20,12 @@
"hide": "Hide Date" "hide": "Hide Date"
} }
}, },
"enableTimezone": {
"label": "Display a custom Timezone"
},
"timezoneLocation": {
"label": "Timezone Location"
},
"titleState": { "titleState": {
"label": "City title", "label": "Clock title",
"info": "In case you activate the Timezone option, the name of the city and the timezone code can be shown.<br/>You can also show the city alone or even show none.", "info": "The custom title and the timezone code can be shown on your widget.<br/>You can also show the city alone, show none,<br/>or even show the timezone alone when both are selected but no title is provided.",
"data": { "data": {
"both": "City and Timezone", "both": "Title and Timezone",
"city": "City only", "city": "Title only",
"none": "None" "none": "None"
} }
} }

View File

@@ -0,0 +1,17 @@
{
"entityNotFound": "Entity not found",
"descriptor": {
"name": "Home Assistant entity",
"description": "Current state of an entity in Home Assistant",
"settings": {
"title": "Entity state",
"entityId": {
"label": "Entity ID",
"info": "Unique entity ID in Home Assistant. Copy by clicking on entity > Click on cog icon > Click on copy button at 'Entity ID'. Some custom entities may not be supported."
},
"displayName": {
"label": "Display name"
}
}
}
}

View File

@@ -41,12 +41,22 @@
}, },
"table": { "table": {
"header": { "header": {
"isCompleted": "Downloading",
"name": "Name", "name": "Name",
"dateAdded": "Added On",
"size": "Size", "size": "Size",
"download": "Down", "download": "Down",
"upload": "Up", "upload": "Up",
"estimatedTimeOfArrival": "ETA", "estimatedTimeOfArrival": "ETA",
"progress": "Progress" "progress": "Progress",
"totalUploaded": "Total Upload",
"totalDownloaded": "Total Download",
"ratio": "Ratio",
"seeds": "Seeds (Connected)",
"peers": "Peers (Connected)",
"label": "Label",
"state": "State",
"stateMessage": "State Message"
}, },
"item": { "item": {
"text": "Managed by {{appName}}, {{ratio}} ratio" "text": "Managed by {{appName}}, {{ratio}} ratio"

View File

@@ -51,5 +51,7 @@
"attributes": { "attributes": {
"width": "Ancho", "width": "Ancho",
"height": "Alto" "height": "Alto"
} },
"public": "Pública",
"restricted": "Restringido"
} }

View File

@@ -21,5 +21,6 @@
"title": "Categoría creada", "title": "Categoría creada",
"message": "La categoría \"{{name}}\" ha sido creada" "message": "La categoría \"{{name}}\" ha sido creada"
} }
} },
"importFromDocker": "Importar desde docker"
} }

View File

@@ -1,13 +1,21 @@
{ {
"metaTitle": "Usuarios", "metaTitle": "Usuarios",
"pageTitle": "Administrar usuarios", "pageTitle": "Administrar usuarios",
"text": "Mediante los usuarios, puedes configurar quién puede editar tus paneles. Las versiones futuras de Homarr tendrán un control aún más granular sobre los permisos y los tableros.",
"buttons": { "buttons": {
"create": "Crear" "create": "Crear"
}, },
"filter": {
"roles": {
"all": "Todos",
"normal": "Normal",
"admin": "Administrador",
"owner": "Propietario"
}
},
"table": { "table": {
"header": { "header": {
"user": "Usuario" "user": "Usuario",
"email": "Correo electrónico"
} }
}, },
"tooltips": { "tooltips": {

View File

@@ -0,0 +1,55 @@
{
"metaTitle": "Usuario {{username}}",
"back": "Volver a la administración de usuario",
"sections": {
"general": {
"title": "General",
"inputs": {
"username": {
"label": "Nombre de usuario"
},
"eMail": {
"label": "Correo electrónico"
}
}
},
"security": {
"title": "Seguridad",
"inputs": {
"password": {
"label": "Nueva contraseña"
},
"terminateExistingSessions": {
"label": "Finalizar sesiones activas",
"description": "Fuerza al usuario a iniciar sesión nuevamente en sus dispositivos"
},
"confirm": {
"label": "Confirmar",
"description": "La contraseña se actualizará. La acción no se puede revertir."
}
}
},
"roles": {
"title": "Roles",
"currentRole": "Rol actual: ",
"badges": {
"owner": "Propietario",
"admin": "Administrador",
"normal": "Normal"
}
},
"deletion": {
"title": "Eliminación de la cuenta",
"inputs": {
"confirmUsername": {
"label": "Confirmar nombre de usuario",
"description": "Escribe el nombre de usuario para confirmar la eliminación"
},
"confirm": {
"label": "Eliminar permanentemente",
"description": "Soy consciente de que esta acción es permanente y se perderán todos los datos de la cuenta."
}
}
}
}
}

View File

@@ -4,6 +4,13 @@
"description": "Muestra la fecha y hora actual.", "description": "Muestra la fecha y hora actual.",
"settings": { "settings": {
"title": "Ajustes del widget Fecha y Hora", "title": "Ajustes del widget Fecha y Hora",
"timezone": {
"label": "Zona horaria",
"info": "Selecciona el nombre de tu zona horaria, encuentra la tuya aquí: "
},
"customTitle": {
"label": "Nombre de ciudad o título personalizado"
},
"display24HourFormat": { "display24HourFormat": {
"label": "Mostrar hora completa (24 horas)" "label": "Mostrar hora completa (24 horas)"
}, },
@@ -13,18 +20,12 @@
"hide": "Ocultar Fecha" "hide": "Ocultar Fecha"
} }
}, },
"enableTimezone": {
"label": "Mostrar una zona horaria personalizada"
},
"timezoneLocation": {
"label": "Ubicación de la zona horaria"
},
"titleState": { "titleState": {
"label": "Título de la ciudad", "label": "Título del reloj",
"info": "En caso de que se active la opción zona horaria, se puede mostrar el nombre de la ciudad y el código de la zona horaria.<br/>También se puede mostrar la ciudad sola o incluso no mostrar nada.", "info": "El título personalizado y el código de zona horaria se pueden mostrar en tu widget.<br/>También puedes mostrar solo la ciudad, no mostrar ninguna<br/>o incluso mostrar solo la zona horaria cuando ambas están seleccionadas y no se proporcione ningún título.",
"data": { "data": {
"both": "Ciudad y zona horaria", "both": "Título y zona horaria",
"city": "Solo ciudad", "city": "Solo título",
"none": "Nada" "none": "Nada"
} }
} }

View File

@@ -0,0 +1,17 @@
{
"entityNotFound": "Entidad no encontrada",
"descriptor": {
"name": "Entidad de Home Assistant",
"description": "Estado actual de una entidad de Home Assistant",
"settings": {
"title": "Estado de la entidad",
"entityId": {
"label": "ID de la entidad",
"info": "ID de entidad única de Home Assistant. Copia haciendo clic en la entidad > Clic en el icono de engranaje > Clic en el botón copiar en 'ID de la entidad'. Algunas entidades personalizadas pueden no ser compatibles."
},
"displayName": {
"label": "Nombre a mostrar"
}
}
}
}

View File

@@ -41,12 +41,22 @@
}, },
"table": { "table": {
"header": { "header": {
"isCompleted": "Descargando",
"name": "Nombre", "name": "Nombre",
"dateAdded": "Añadido el",
"size": "Tamaño", "size": "Tamaño",
"download": "Descarga", "download": "Descarga",
"upload": "Subida", "upload": "Subida",
"estimatedTimeOfArrival": "Tiempo restante", "estimatedTimeOfArrival": "Tiempo restante",
"progress": "Completado %" "progress": "Completado %",
"totalUploaded": "Subida Total",
"totalDownloaded": "Descarga Total",
"ratio": "Ratio",
"seeds": "Semillas (Conectadas)",
"peers": "Pares (Conectados)",
"label": "Etiqueta",
"state": "Estado",
"stateMessage": "Mensaje de estado"
}, },
"item": { "item": {
"text": "Gestionado por {{appName}}, proporción {{ratio}}" "text": "Gestionado por {{appName}}, proporción {{ratio}}"

View File

@@ -51,5 +51,7 @@
"attributes": { "attributes": {
"width": "Largeur", "width": "Largeur",
"height": "Hauteur" "height": "Hauteur"
} },
"public": "Public",
"restricted": "Restreint"
} }

View File

@@ -21,5 +21,6 @@
"title": "Catégorie créée", "title": "Catégorie créée",
"message": "La catégorie « {{name}} » a été créée" "message": "La catégorie « {{name}} » a été créée"
} }
} },
"importFromDocker": ""
} }

View File

@@ -1,5 +1,5 @@
{ {
"title": "Accès refusé", "title": "Accès refusé",
"text": "Vous n'avez pas les permissions suffissantes pour accéder à cette page. Si vous pouvez pensez qu'il s'agit d'une erreur, veuillez contacter votre administrateur.", "text": "Vous n'avez pas les permissions suffisantes pour accéder à cette page. Si vous pensez qu'il s'agit d'une erreur, veuillez contacter votre administrateur.",
"switchAccount": "Basculer sur un autre compte" "switchAccount": "Basculer sur un autre compte"
} }

View File

@@ -1,13 +1,21 @@
{ {
"metaTitle": "Utilisateurs", "metaTitle": "Utilisateurs",
"pageTitle": "Gérer les utilisateurs", "pageTitle": "Gérer les utilisateurs",
"text": "En utilisant des utilisateurs, vous pouvez configurer qui peut éditer vos tableaux de bord. Les prochaines versions de Homarr auront un contrôle plus fin quant aux permissions et les tableaux de bord.",
"buttons": { "buttons": {
"create": "Créer" "create": "Créer"
}, },
"filter": {
"roles": {
"all": "",
"normal": "",
"admin": "",
"owner": ""
}
},
"table": { "table": {
"header": { "header": {
"user": "Utilisateur" "user": "Utilisateur",
"email": "Courriel"
} }
}, },
"tooltips": { "tooltips": {

View File

@@ -0,0 +1,55 @@
{
"metaTitle": "",
"back": "",
"sections": {
"general": {
"title": "Général",
"inputs": {
"username": {
"label": "Nom d'utilisateur"
},
"eMail": {
"label": "Courriel"
}
}
},
"security": {
"title": "",
"inputs": {
"password": {
"label": ""
},
"terminateExistingSessions": {
"label": "",
"description": ""
},
"confirm": {
"label": "Confirmer",
"description": ""
}
}
},
"roles": {
"title": "",
"currentRole": "",
"badges": {
"owner": "",
"admin": "",
"normal": ""
}
},
"deletion": {
"title": "",
"inputs": {
"confirmUsername": {
"label": "",
"description": ""
},
"confirm": {
"label": "Supprimer définitivement",
"description": ""
}
}
}
}
}

View File

@@ -4,6 +4,13 @@
"description": "Affiche la date et l'heure courante.", "description": "Affiche la date et l'heure courante.",
"settings": { "settings": {
"title": "Paramètres du widget Date et heure", "title": "Paramètres du widget Date et heure",
"timezone": {
"label": "",
"info": ""
},
"customTitle": {
"label": ""
},
"display24HourFormat": { "display24HourFormat": {
"label": "Affichage 24 h" "label": "Affichage 24 h"
}, },
@@ -13,18 +20,12 @@
"hide": "Masquer la date" "hide": "Masquer la date"
} }
}, },
"enableTimezone": {
"label": "Afficher un fuseau horaire personnalisé"
},
"timezoneLocation": {
"label": "Localisation du fuseau horaire"
},
"titleState": { "titleState": {
"label": "Nom de la ville", "label": "",
"info": "Si vous avez choisi d'activer un fuseau horaire différent, le nom de la ville ainsi que le nom de son fuseau horaire peuvent être affichés.<br/>Vous pouvez aussi n'afficher que la ville ou aucun des deux.", "info": "",
"data": { "data": {
"both": "Ville et fuseau horaire", "both": "",
"city": "Ville uniquement", "city": "",
"none": "Aucun" "none": "Aucun"
} }
} }

View File

@@ -0,0 +1,17 @@
{
"entityNotFound": "Entité non trouvée",
"descriptor": {
"name": "Entité Home Assistant",
"description": "État actuel d'une entité dans Home Assistant",
"settings": {
"title": "État de l'entité",
"entityId": {
"label": "ID de lentité",
"info": "ID dentité unique dans Home Assistant. Copiez en cliquant sur l'entité > Cliquez sur l'icône en forme de rouage > Cliquez sur le bouton Copier sous « ID d'entité ». Certaines entités personnalisées peuvent ne pas être prises en charge."
},
"displayName": {
"label": "Nom d'affichage"
}
}
}
}

View File

@@ -41,12 +41,22 @@
}, },
"table": { "table": {
"header": { "header": {
"isCompleted": "Téléchargement en cours",
"name": "Nom", "name": "Nom",
"dateAdded": "",
"size": "Taille", "size": "Taille",
"download": "Descendant", "download": "Descendant",
"upload": "Montant", "upload": "Montant",
"estimatedTimeOfArrival": "ETA", "estimatedTimeOfArrival": "ETA",
"progress": "Progrès" "progress": "Progrès",
"totalUploaded": "",
"totalDownloaded": "",
"ratio": "",
"seeds": "",
"peers": "",
"label": "",
"state": "État",
"stateMessage": ""
}, },
"item": { "item": {
"text": "Géré par {{appName}}, {{ratio}} ratio" "text": "Géré par {{appName}}, {{ratio}} ratio"

Some files were not shown because too many files have changed in this diff Show More