Compare commits
93 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b4a8d47636 | ||
|
|
a68f8424f5 | ||
|
|
eba4dd3b9d | ||
|
|
745adb3a95 | ||
|
|
c83b04dfc0 | ||
|
|
a3948430ed | ||
|
|
108803ae2a | ||
|
|
b9a5b5ed09 | ||
|
|
159ba4b1c3 | ||
|
|
0a929a93a3 | ||
|
|
e9100fce91 | ||
|
|
082077ec9d | ||
|
|
e13a4afdde | ||
|
|
f20c209c94 | ||
|
|
f9c9f23b0c | ||
|
|
19e65e0d08 | ||
|
|
b6b697cabd | ||
|
|
fd3f8f317a | ||
|
|
553fa98e61 | ||
|
|
199b711324 | ||
|
|
976634a908 | ||
|
|
217020154b | ||
|
|
51e96c0ccf | ||
|
|
d6af6af0b6 | ||
|
|
fc38f7ab29 | ||
|
|
deee511f86 | ||
|
|
48ca5352c9 | ||
|
|
e2da8338e0 | ||
|
|
cca8be09cb | ||
|
|
9bdd6a442e | ||
|
|
15605e3f09 | ||
|
|
dfcb899013 | ||
|
|
5522abdfb6 | ||
|
|
312e2c8297 | ||
|
|
7f46fafbb9 | ||
|
|
5a8a378a2e | ||
|
|
fe63c03372 | ||
|
|
c88cd3c05e | ||
|
|
eadfa4a10f | ||
|
|
5aefd0962f | ||
|
|
da7c111438 | ||
|
|
669d311b0c | ||
|
|
228c51299b | ||
|
|
57975f3030 | ||
|
|
f4e737b4a1 | ||
|
|
a933406ef8 | ||
|
|
a30d6f6f7b | ||
|
|
34074b1c92 | ||
|
|
f7ab929bcb | ||
|
|
21dcde44a1 | ||
|
|
ccf0970226 | ||
|
|
221c13d92f | ||
|
|
4486d4b49d | ||
|
|
1ee17463c2 | ||
|
|
687c7587df | ||
|
|
6484ed5976 | ||
|
|
8ee28767fc | ||
|
|
a2cfe8391e | ||
|
|
de2a632a4e | ||
|
|
f06dff7bb7 | ||
|
|
7634062a85 | ||
|
|
a0efd01d43 | ||
|
|
c9d1a12299 | ||
|
|
c6b945775a | ||
|
|
6e6f435abc | ||
|
|
12d531c258 | ||
|
|
de344ccea9 | ||
|
|
b05152abb1 | ||
|
|
d2e7615345 | ||
|
|
404d73ebf7 | ||
|
|
5a563b3875 | ||
|
|
e3e890f0a1 | ||
|
|
a1e8ffc367 | ||
|
|
811d940f2b | ||
|
|
d2441ba86a | ||
|
|
a3ca74ab46 | ||
|
|
102bd5deee | ||
|
|
f3d24a62f5 | ||
|
|
3edd2b8ea2 | ||
|
|
30378d299e | ||
|
|
0437b63870 | ||
|
|
27037c6f50 | ||
|
|
e900a7b07e | ||
|
|
173727c155 | ||
|
|
c7b25ce21e | ||
|
|
d7cdd6a30b | ||
|
|
e1b4d76133 | ||
|
|
2a1f73345c | ||
|
|
e9aef74815 | ||
|
|
b146a7e1e2 | ||
|
|
351aa47e47 | ||
|
|
6753eeb822 | ||
|
|
82b292fce1 |
2
.github/FUNDING.yml
vendored
2
.github/FUNDING.yml
vendored
@@ -2,7 +2,7 @@
|
||||
|
||||
github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
|
||||
patreon: # Replace with a single Patreon username
|
||||
open_collective: # Replace with a single Open Collective username
|
||||
open_collective: homarr
|
||||
ko_fi: ajnart
|
||||
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
|
||||
|
||||
16
.github/workflows/greetings.yml
vendored
Normal file
16
.github/workflows/greetings.yml
vendored
Normal 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
28
.github/workflows/stale.yml
vendored
Normal 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
2
.gitignore
vendored
@@ -4,6 +4,7 @@
|
||||
/node_modules
|
||||
/.pnp
|
||||
.pnp.js
|
||||
/cli/node_modules/
|
||||
|
||||
# testing
|
||||
/coverage
|
||||
@@ -49,6 +50,7 @@ data/configs
|
||||
!.yarn/releases
|
||||
!.yarn/sdks
|
||||
!.yarn/versions
|
||||
/cli/.yarn/
|
||||
|
||||
#envfiles
|
||||
.env
|
||||
|
||||
35
Dockerfile
35
Dockerfile
@@ -1,4 +1,4 @@
|
||||
FROM node:20.5-slim
|
||||
FROM node:20.2.0-slim
|
||||
WORKDIR /app
|
||||
|
||||
# Define node.js environment variables
|
||||
@@ -18,29 +18,48 @@ COPY .next/standalone ./
|
||||
COPY .next/static ./.next/static
|
||||
COPY ./scripts/run.sh ./scripts/run.sh
|
||||
COPY ./drizzle ./drizzle
|
||||
|
||||
COPY ./drizzle/migrate ./migrate
|
||||
COPY ./tsconfig.json ./migrate/tsconfig.json
|
||||
COPY ./cli ./cli
|
||||
|
||||
RUN mkdir /data
|
||||
COPY ./src/migrate.ts ./src/migrate.ts
|
||||
|
||||
# Install dependencies
|
||||
RUN apt-get update -y && apt-get install -y openssl wget
|
||||
RUN apt update && apt install -y openssl wget
|
||||
|
||||
# Required for migration
|
||||
# Move node_modules to temp location to avoid overwriting
|
||||
RUN mv node_modules _node_modules
|
||||
RUN rm package.json
|
||||
RUN yarn add typescript ts-node dotenv drizzle-orm@0.28.6 better-sqlite3@8.6.0 @types/better-sqlite3
|
||||
RUN mv node_modules node_modules_migrate
|
||||
|
||||
# Install dependencies for migration
|
||||
RUN cp ./migrate/package.json ./package.json
|
||||
RUN yarn
|
||||
|
||||
# Copy better_sqlite3 build for current platform
|
||||
RUN cp /app/node_modules/better-sqlite3/build/Release/better_sqlite3.node /app/_node_modules/better-sqlite3/build/Release/better_sqlite3.node
|
||||
|
||||
# Copy node_modules for migration to migrate folder for migration script
|
||||
RUN mv node_modules ./migrate/node_modules
|
||||
# Copy temp node_modules of app to app folder
|
||||
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 $PORT
|
||||
ENV PORT=${PORT}
|
||||
|
||||
ENV DATABASE_URL "file:/data/db.sqlite"
|
||||
ENV NEXTAUTH_URL "http://localhost:3000"
|
||||
ENV NEXTAUTH_URL "http://localhost:7575"
|
||||
ENV PORT 7575
|
||||
ENV NEXTAUTH_SECRET NOT_IN_USE_BECAUSE_JWTS_ARE_UNUSED
|
||||
|
||||
HEALTHCHECK --interval=10s --timeout=5s --start-period=5s --retries=3 \
|
||||
CMD wget --no-verbose --tries=1 --spider http://localhost:${PORT} || exit 1
|
||||
|
||||
CMD ["sh", "./scripts/run.sh"]
|
||||
VOLUME [ "/app/data/configs" ]
|
||||
VOLUME [ "/data" ]
|
||||
ENTRYPOINT ["sh", "./scripts/run.sh"]
|
||||
|
||||
30
cli/cli.js
Normal file
30
cli/cli.js
Normal 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;
|
||||
55
cli/commands/reset-owner-password.js
Normal file
55
cli/commands/reset-owner-password.js
Normal 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');
|
||||
}
|
||||
}
|
||||
56
cli/commands/reset-password.js
Normal file
56
cli/commands/reset-password.js
Normal 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
12
cli/package.json
Normal 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
1371
cli/yarn.lock
Normal file
File diff suppressed because it is too large
Load Diff
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "homarr Top Members Report",
|
||||
"url": "https://crowdin.com/project/homarr",
|
||||
"url": "https://translate.homarr.dev/project/homarr",
|
||||
"unit": "words",
|
||||
"dateRange": {
|
||||
"from": "2022-08-25",
|
||||
@@ -8,28 +8,6 @@
|
||||
},
|
||||
"language": "All",
|
||||
"data": [
|
||||
{
|
||||
"user": {
|
||||
"id": "15492732",
|
||||
"username": "hillaliy",
|
||||
"fullName": "Yossi Hillali (hillaliy)",
|
||||
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15492732/medium/0bae17b421604892d888e3fc70cf0587.jpeg",
|
||||
"joined": "2022-10-15 15:18:50"
|
||||
},
|
||||
"languages": [
|
||||
{
|
||||
"id": "he",
|
||||
"name": "Hebrew"
|
||||
}
|
||||
],
|
||||
"translated": 5404,
|
||||
"target": 4717,
|
||||
"approved": 5437,
|
||||
"voted": 0,
|
||||
"positiveVotes": 12,
|
||||
"negativeVotes": 0,
|
||||
"winning": 5395
|
||||
},
|
||||
{
|
||||
"user": {
|
||||
"id": "15491798",
|
||||
@@ -44,13 +22,57 @@
|
||||
"name": "Danish"
|
||||
}
|
||||
],
|
||||
"translated": 5353,
|
||||
"target": 5159,
|
||||
"approved": 5371,
|
||||
"translated": 5893,
|
||||
"target": 5686,
|
||||
"approved": 5911,
|
||||
"voted": 0,
|
||||
"positiveVotes": 0,
|
||||
"negativeVotes": 0,
|
||||
"winning": 5353
|
||||
"winning": 5893
|
||||
},
|
||||
{
|
||||
"user": {
|
||||
"id": "15492732",
|
||||
"username": "hillaliy",
|
||||
"fullName": "Yossi Hillali (hillaliy)",
|
||||
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15492732/medium/0bae17b421604892d888e3fc70cf0587.jpeg",
|
||||
"joined": "2022-10-15 15:18:50"
|
||||
},
|
||||
"languages": [
|
||||
{
|
||||
"id": "he",
|
||||
"name": "Hebrew"
|
||||
}
|
||||
],
|
||||
"translated": 5815,
|
||||
"target": 5068,
|
||||
"approved": 5848,
|
||||
"voted": 0,
|
||||
"positiveVotes": 12,
|
||||
"negativeVotes": 0,
|
||||
"winning": 5806
|
||||
},
|
||||
{
|
||||
"user": {
|
||||
"id": "15554645",
|
||||
"username": "crendasien",
|
||||
"fullName": "Nicole (crendasien)",
|
||||
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15554645/medium/598ab1d4aaf6b8dccd5ba16be92da7b9.jpeg",
|
||||
"joined": "2022-11-28 14:18:44"
|
||||
},
|
||||
"languages": [
|
||||
{
|
||||
"id": "it",
|
||||
"name": "Italian"
|
||||
}
|
||||
],
|
||||
"translated": 5288,
|
||||
"target": 5378,
|
||||
"approved": 5613,
|
||||
"voted": 0,
|
||||
"positiveVotes": 11,
|
||||
"negativeVotes": 0,
|
||||
"winning": 5285
|
||||
},
|
||||
{
|
||||
"user": {
|
||||
@@ -90,28 +112,6 @@
|
||||
"negativeVotes": 1,
|
||||
"winning": 5074
|
||||
},
|
||||
{
|
||||
"user": {
|
||||
"id": "15554645",
|
||||
"username": "crendasien",
|
||||
"fullName": "Nicole (crendasien)",
|
||||
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15554645/medium/598ab1d4aaf6b8dccd5ba16be92da7b9.jpeg",
|
||||
"joined": "2022-11-28 14:18:44"
|
||||
},
|
||||
"languages": [
|
||||
{
|
||||
"id": "it",
|
||||
"name": "Italian"
|
||||
}
|
||||
],
|
||||
"translated": 4910,
|
||||
"target": 5000,
|
||||
"approved": 5235,
|
||||
"voted": 0,
|
||||
"positiveVotes": 11,
|
||||
"negativeVotes": 0,
|
||||
"winning": 4907
|
||||
},
|
||||
{
|
||||
"user": {
|
||||
"id": "12701640",
|
||||
@@ -130,35 +130,13 @@
|
||||
"name": "Spanish"
|
||||
}
|
||||
],
|
||||
"translated": 4446,
|
||||
"target": 4685,
|
||||
"translated": 4822,
|
||||
"target": 5078,
|
||||
"approved": 0,
|
||||
"voted": 166,
|
||||
"positiveVotes": 24,
|
||||
"positiveVotes": 30,
|
||||
"negativeVotes": 0,
|
||||
"winning": 963
|
||||
},
|
||||
{
|
||||
"user": {
|
||||
"id": "15674593",
|
||||
"username": "Marty88",
|
||||
"fullName": "Marty (Marty88)",
|
||||
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15674593/medium/492b1509d52bd2809dea768121217125.jpeg",
|
||||
"joined": "2023-02-08 16:28:53"
|
||||
},
|
||||
"languages": [
|
||||
{
|
||||
"id": "sk",
|
||||
"name": "Slovak"
|
||||
}
|
||||
],
|
||||
"translated": 4302,
|
||||
"target": 3955,
|
||||
"approved": 3732,
|
||||
"voted": 0,
|
||||
"positiveVotes": 0,
|
||||
"negativeVotes": 0,
|
||||
"winning": 3726
|
||||
"winning": 1017
|
||||
},
|
||||
{
|
||||
"user": {
|
||||
@@ -174,13 +152,13 @@
|
||||
"name": "German"
|
||||
}
|
||||
],
|
||||
"translated": 4245,
|
||||
"target": 4326,
|
||||
"approved": 3964,
|
||||
"translated": 4652,
|
||||
"target": 4751,
|
||||
"approved": 4371,
|
||||
"voted": 0,
|
||||
"positiveVotes": 25,
|
||||
"negativeVotes": 0,
|
||||
"winning": 3685
|
||||
"winning": 4092
|
||||
},
|
||||
{
|
||||
"user": {
|
||||
@@ -196,8 +174,8 @@
|
||||
"name": "Swedish"
|
||||
}
|
||||
],
|
||||
"translated": 4142,
|
||||
"target": 3889,
|
||||
"translated": 4557,
|
||||
"target": 4273,
|
||||
"approved": 0,
|
||||
"voted": 0,
|
||||
"positiveVotes": 0,
|
||||
@@ -218,8 +196,74 @@
|
||||
"name": "Turkish"
|
||||
}
|
||||
],
|
||||
"translated": 3845,
|
||||
"target": 3244,
|
||||
"translated": 4384,
|
||||
"target": 3701,
|
||||
"approved": 0,
|
||||
"voted": 0,
|
||||
"positiveVotes": 0,
|
||||
"negativeVotes": 0,
|
||||
"winning": 0
|
||||
},
|
||||
{
|
||||
"user": {
|
||||
"id": "15674593",
|
||||
"username": "Marty88",
|
||||
"fullName": "Marty (Marty88)",
|
||||
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15674593/medium/492b1509d52bd2809dea768121217125.jpeg",
|
||||
"joined": "2023-02-08 16:28:53"
|
||||
},
|
||||
"languages": [
|
||||
{
|
||||
"id": "sk",
|
||||
"name": "Slovak"
|
||||
}
|
||||
],
|
||||
"translated": 4347,
|
||||
"target": 3995,
|
||||
"approved": 3777,
|
||||
"voted": 0,
|
||||
"positiveVotes": 0,
|
||||
"negativeVotes": 0,
|
||||
"winning": 3771
|
||||
},
|
||||
{
|
||||
"user": {
|
||||
"id": "15709853",
|
||||
"username": "RJSkudra",
|
||||
"fullName": "RJS (RJSkudra)",
|
||||
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15709853/medium/c3abf2774913dc4e81fb261d36d7668c.png",
|
||||
"joined": "2023-04-08 13:07:46"
|
||||
},
|
||||
"languages": [
|
||||
{
|
||||
"id": "lv",
|
||||
"name": "Latvian"
|
||||
}
|
||||
],
|
||||
"translated": 4280,
|
||||
"target": 3758,
|
||||
"approved": 4195,
|
||||
"voted": 0,
|
||||
"positiveVotes": 0,
|
||||
"negativeVotes": 0,
|
||||
"winning": 4184
|
||||
},
|
||||
{
|
||||
"user": {
|
||||
"id": "16077170",
|
||||
"username": "Topbcy",
|
||||
"fullName": "Turbo (Topbcy)",
|
||||
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16077170/medium/d3aed33ea56330338756cfcd89477cfe.jpeg",
|
||||
"joined": "2023-10-29 07:14:20"
|
||||
},
|
||||
"languages": [
|
||||
{
|
||||
"id": "zh-TW",
|
||||
"name": "Chinese Traditional"
|
||||
}
|
||||
],
|
||||
"translated": 4171,
|
||||
"target": 6555,
|
||||
"approved": 0,
|
||||
"voted": 0,
|
||||
"positiveVotes": 0,
|
||||
@@ -240,14 +284,36 @@
|
||||
"name": "Hungarian"
|
||||
}
|
||||
],
|
||||
"translated": 3734,
|
||||
"target": 3409,
|
||||
"translated": 4135,
|
||||
"target": 3788,
|
||||
"approved": 0,
|
||||
"voted": 0,
|
||||
"positiveVotes": 0,
|
||||
"negativeVotes": 0,
|
||||
"winning": 0
|
||||
},
|
||||
{
|
||||
"user": {
|
||||
"id": "15617065",
|
||||
"username": "somerlev",
|
||||
"fullName": "somerlev",
|
||||
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15617065/medium/f4b13513e311ec902d90b2f718412c55.jpg",
|
||||
"joined": "2023-01-01 15:03:01"
|
||||
},
|
||||
"languages": [
|
||||
{
|
||||
"id": "ru",
|
||||
"name": "Russian"
|
||||
}
|
||||
],
|
||||
"translated": 3866,
|
||||
"target": 3432,
|
||||
"approved": 4640,
|
||||
"voted": 160,
|
||||
"positiveVotes": 0,
|
||||
"negativeVotes": 0,
|
||||
"winning": 3655
|
||||
},
|
||||
{
|
||||
"user": {
|
||||
"id": "15644717",
|
||||
@@ -262,35 +328,35 @@
|
||||
"name": "Chinese Simplified"
|
||||
}
|
||||
],
|
||||
"translated": 3296,
|
||||
"target": 5128,
|
||||
"approved": 3666,
|
||||
"translated": 3836,
|
||||
"target": 5983,
|
||||
"approved": 4206,
|
||||
"voted": 1,
|
||||
"positiveVotes": 1,
|
||||
"negativeVotes": 2,
|
||||
"winning": 2873
|
||||
"winning": 3413
|
||||
},
|
||||
{
|
||||
"user": {
|
||||
"id": "15709853",
|
||||
"username": "RJSkudra",
|
||||
"fullName": "RJS (RJSkudra)",
|
||||
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15709853/medium/c3abf2774913dc4e81fb261d36d7668c.png",
|
||||
"joined": "2023-04-08 13:07:46"
|
||||
"id": "15677023",
|
||||
"username": "Spillebulle",
|
||||
"fullName": "Spillebulle",
|
||||
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15677023/medium/096cf68fccf4b666954a0a57a974af64_default.png",
|
||||
"joined": "2023-02-08 02:51:18"
|
||||
},
|
||||
"languages": [
|
||||
{
|
||||
"id": "lv",
|
||||
"name": "Latvian"
|
||||
"id": "no",
|
||||
"name": "Norwegian"
|
||||
}
|
||||
],
|
||||
"translated": 3074,
|
||||
"target": 2734,
|
||||
"approved": 2987,
|
||||
"translated": 3234,
|
||||
"target": 3063,
|
||||
"approved": 4451,
|
||||
"voted": 0,
|
||||
"positiveVotes": 0,
|
||||
"negativeVotes": 0,
|
||||
"winning": 2980
|
||||
"winning": 3225
|
||||
},
|
||||
{
|
||||
"user": {
|
||||
@@ -306,14 +372,40 @@
|
||||
"name": "Vietnamese"
|
||||
}
|
||||
],
|
||||
"translated": 2929,
|
||||
"target": 4087,
|
||||
"approved": 4,
|
||||
"translated": 3001,
|
||||
"target": 4174,
|
||||
"approved": 23,
|
||||
"voted": 0,
|
||||
"positiveVotes": 0,
|
||||
"negativeVotes": 0,
|
||||
"winning": 4
|
||||
},
|
||||
{
|
||||
"user": {
|
||||
"id": "15875457",
|
||||
"username": "raelyan",
|
||||
"fullName": "Raelyan (raelyan)",
|
||||
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15875457/medium/2f4fda1d1aaa5dcc79b328baf3f03151.jpeg",
|
||||
"joined": "2023-06-14 12:51:04"
|
||||
},
|
||||
"languages": [
|
||||
{
|
||||
"id": "gl",
|
||||
"name": "Galician"
|
||||
},
|
||||
{
|
||||
"id": "es-ES",
|
||||
"name": "Spanish"
|
||||
}
|
||||
],
|
||||
"translated": 2924,
|
||||
"target": 3268,
|
||||
"approved": 3791,
|
||||
"voted": 5,
|
||||
"positiveVotes": 0,
|
||||
"negativeVotes": 0,
|
||||
"winning": 2901
|
||||
},
|
||||
{
|
||||
"user": {
|
||||
"id": "15428592",
|
||||
@@ -336,54 +428,6 @@
|
||||
"negativeVotes": 0,
|
||||
"winning": 2681
|
||||
},
|
||||
{
|
||||
"user": {
|
||||
"id": "15875457",
|
||||
"username": "raelyan",
|
||||
"fullName": "Raelyan (raelyan)",
|
||||
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15875457/medium/2f4fda1d1aaa5dcc79b328baf3f03151.jpeg",
|
||||
"joined": "2023-06-14 12:51:04"
|
||||
},
|
||||
"languages": [
|
||||
{
|
||||
"id": "gl",
|
||||
"name": "Galician"
|
||||
},
|
||||
{
|
||||
"id": "es-ES",
|
||||
"name": "Spanish"
|
||||
}
|
||||
],
|
||||
"translated": 2740,
|
||||
"target": 3061,
|
||||
"approved": 3553,
|
||||
"voted": 5,
|
||||
"positiveVotes": 0,
|
||||
"negativeVotes": 0,
|
||||
"winning": 2717
|
||||
},
|
||||
{
|
||||
"user": {
|
||||
"id": "15617065",
|
||||
"username": "somerlev",
|
||||
"fullName": "somerlev",
|
||||
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15617065/medium/f4b13513e311ec902d90b2f718412c55.jpg",
|
||||
"joined": "2023-01-01 15:03:01"
|
||||
},
|
||||
"languages": [
|
||||
{
|
||||
"id": "ru",
|
||||
"name": "Russian"
|
||||
}
|
||||
],
|
||||
"translated": 2688,
|
||||
"target": 2379,
|
||||
"approved": 2987,
|
||||
"voted": 160,
|
||||
"positiveVotes": 0,
|
||||
"negativeVotes": 0,
|
||||
"winning": 2557
|
||||
},
|
||||
{
|
||||
"user": {
|
||||
"id": "15419914",
|
||||
@@ -402,8 +446,8 @@
|
||||
"name": "German"
|
||||
}
|
||||
],
|
||||
"translated": 2474,
|
||||
"target": 2463,
|
||||
"translated": 2607,
|
||||
"target": 2595,
|
||||
"approved": 0,
|
||||
"voted": 27,
|
||||
"positiveVotes": 0,
|
||||
@@ -412,25 +456,25 @@
|
||||
},
|
||||
{
|
||||
"user": {
|
||||
"id": "15677023",
|
||||
"username": "Spillebulle",
|
||||
"fullName": "Spillebulle",
|
||||
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15677023/medium/096cf68fccf4b666954a0a57a974af64_default.png",
|
||||
"joined": "2023-02-08 02:51:18"
|
||||
"id": "15865139",
|
||||
"username": "Beardy",
|
||||
"fullName": "Beardy",
|
||||
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15865139/medium/fca6b9d2b3f52e286d1568f52b83b6a0_default.png",
|
||||
"joined": "2023-06-07 06:24:20"
|
||||
},
|
||||
"languages": [
|
||||
{
|
||||
"id": "no",
|
||||
"name": "Norwegian"
|
||||
"id": "el",
|
||||
"name": "Greek"
|
||||
}
|
||||
],
|
||||
"translated": 2342,
|
||||
"target": 2195,
|
||||
"approved": 2342,
|
||||
"voted": 0,
|
||||
"translated": 2386,
|
||||
"target": 2567,
|
||||
"approved": 0,
|
||||
"voted": 3,
|
||||
"positiveVotes": 0,
|
||||
"negativeVotes": 0,
|
||||
"winning": 2338
|
||||
"winning": 0
|
||||
},
|
||||
{
|
||||
"user": {
|
||||
@@ -498,28 +542,6 @@
|
||||
"negativeVotes": 0,
|
||||
"winning": 0
|
||||
},
|
||||
{
|
||||
"user": {
|
||||
"id": "15865139",
|
||||
"username": "Beardy",
|
||||
"fullName": "Beardy",
|
||||
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15865139/medium/fca6b9d2b3f52e286d1568f52b83b6a0_default.png",
|
||||
"joined": "2023-06-07 06:24:20"
|
||||
},
|
||||
"languages": [
|
||||
{
|
||||
"id": "el",
|
||||
"name": "Greek"
|
||||
}
|
||||
],
|
||||
"translated": 1975,
|
||||
"target": 2118,
|
||||
"approved": 0,
|
||||
"voted": 3,
|
||||
"positiveVotes": 0,
|
||||
"negativeVotes": 0,
|
||||
"winning": 0
|
||||
},
|
||||
{
|
||||
"user": {
|
||||
"id": "15149958",
|
||||
@@ -534,11 +556,11 @@
|
||||
"name": "French"
|
||||
}
|
||||
],
|
||||
"translated": 1720,
|
||||
"target": 1943,
|
||||
"translated": 1753,
|
||||
"target": 1978,
|
||||
"approved": 1103,
|
||||
"voted": 20,
|
||||
"positiveVotes": 8,
|
||||
"positiveVotes": 16,
|
||||
"negativeVotes": 0,
|
||||
"winning": 774
|
||||
},
|
||||
@@ -659,6 +681,10 @@
|
||||
"id": "ru",
|
||||
"name": "Russian"
|
||||
},
|
||||
{
|
||||
"id": "sk",
|
||||
"name": "Slovak"
|
||||
},
|
||||
{
|
||||
"id": "sl",
|
||||
"name": "Slovenian"
|
||||
@@ -671,6 +697,10 @@
|
||||
"id": "sv-SE",
|
||||
"name": "Swedish"
|
||||
},
|
||||
{
|
||||
"id": "tr",
|
||||
"name": "Turkish"
|
||||
},
|
||||
{
|
||||
"id": "uk",
|
||||
"name": "Ukrainian"
|
||||
@@ -680,12 +710,12 @@
|
||||
"name": "Vietnamese"
|
||||
}
|
||||
],
|
||||
"translated": 1461,
|
||||
"target": 1547,
|
||||
"translated": 1576,
|
||||
"target": 1691,
|
||||
"approved": 1463,
|
||||
"voted": 0,
|
||||
"positiveVotes": 189,
|
||||
"negativeVotes": 20,
|
||||
"negativeVotes": 21,
|
||||
"winning": 1215
|
||||
},
|
||||
{
|
||||
@@ -708,7 +738,7 @@
|
||||
"voted": 0,
|
||||
"positiveVotes": 0,
|
||||
"negativeVotes": 0,
|
||||
"winning": 0
|
||||
"winning": 351
|
||||
},
|
||||
{
|
||||
"user": {
|
||||
@@ -832,6 +862,32 @@
|
||||
"negativeVotes": 1,
|
||||
"winning": 0
|
||||
},
|
||||
{
|
||||
"user": {
|
||||
"id": "15977271",
|
||||
"username": "tagaishi",
|
||||
"fullName": "tagaishi",
|
||||
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15977271/medium/eade504c83a5a1ff831c80a538fbdb44_default.png",
|
||||
"joined": "2023-08-22 07:09:16"
|
||||
},
|
||||
"languages": [
|
||||
{
|
||||
"id": "zh-CN",
|
||||
"name": "Chinese Simplified"
|
||||
},
|
||||
{
|
||||
"id": "fr",
|
||||
"name": "French"
|
||||
}
|
||||
],
|
||||
"translated": 588,
|
||||
"target": 693,
|
||||
"approved": 0,
|
||||
"voted": 2,
|
||||
"positiveVotes": 2,
|
||||
"negativeVotes": 0,
|
||||
"winning": 95
|
||||
},
|
||||
{
|
||||
"user": {
|
||||
"id": "15925879",
|
||||
@@ -850,7 +906,7 @@
|
||||
"target": 711,
|
||||
"approved": 0,
|
||||
"voted": 1,
|
||||
"positiveVotes": 12,
|
||||
"positiveVotes": 16,
|
||||
"negativeVotes": 0,
|
||||
"winning": 153
|
||||
},
|
||||
@@ -940,7 +996,7 @@
|
||||
"voted": 0,
|
||||
"positiveVotes": 0,
|
||||
"negativeVotes": 0,
|
||||
"winning": 198
|
||||
"winning": 250
|
||||
},
|
||||
{
|
||||
"user": {
|
||||
@@ -986,6 +1042,28 @@
|
||||
"negativeVotes": 0,
|
||||
"winning": 0
|
||||
},
|
||||
{
|
||||
"user": {
|
||||
"id": "15454038",
|
||||
"username": "sebekmartin",
|
||||
"fullName": "Martin Sebek (sebekmartin)",
|
||||
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15454038/medium/bcfb44598cdfd1d7cd4eb35812538962.jpeg",
|
||||
"joined": "2023-10-08 09:26:03"
|
||||
},
|
||||
"languages": [
|
||||
{
|
||||
"id": "cs",
|
||||
"name": "Czech"
|
||||
}
|
||||
],
|
||||
"translated": 393,
|
||||
"target": 355,
|
||||
"approved": 0,
|
||||
"voted": 0,
|
||||
"positiveVotes": 0,
|
||||
"negativeVotes": 0,
|
||||
"winning": 0
|
||||
},
|
||||
{
|
||||
"user": {
|
||||
"id": "13330448",
|
||||
@@ -1030,32 +1108,6 @@
|
||||
"negativeVotes": 3,
|
||||
"winning": 119
|
||||
},
|
||||
{
|
||||
"user": {
|
||||
"id": "15977271",
|
||||
"username": "tagaishi",
|
||||
"fullName": "tagaishi",
|
||||
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15977271/medium/eade504c83a5a1ff831c80a538fbdb44_default.png",
|
||||
"joined": "2023-08-22 07:09:16"
|
||||
},
|
||||
"languages": [
|
||||
{
|
||||
"id": "zh-CN",
|
||||
"name": "Chinese Simplified"
|
||||
},
|
||||
{
|
||||
"id": "fr",
|
||||
"name": "French"
|
||||
}
|
||||
],
|
||||
"translated": 328,
|
||||
"target": 395,
|
||||
"approved": 0,
|
||||
"voted": 2,
|
||||
"positiveVotes": 2,
|
||||
"negativeVotes": 0,
|
||||
"winning": 95
|
||||
},
|
||||
{
|
||||
"user": {
|
||||
"id": "15685239",
|
||||
@@ -1124,22 +1176,22 @@
|
||||
},
|
||||
{
|
||||
"user": {
|
||||
"id": "14949159",
|
||||
"username": "f1refa11",
|
||||
"fullName": "FireFall (f1refa11)",
|
||||
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14949159/medium/fd2ae63b8eb4462200ba96abf943c1b9.png",
|
||||
"joined": "2023-09-06 14:55:13"
|
||||
"id": "7795",
|
||||
"username": "zielmann",
|
||||
"fullName": "Luke (zielmann)",
|
||||
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/7795/medium/ad22b8b8d5eb33e4154d53a454c862fd_default.png",
|
||||
"joined": "2023-10-12 09:50:59"
|
||||
},
|
||||
"languages": [
|
||||
{
|
||||
"id": "ru",
|
||||
"name": "Russian"
|
||||
"id": "pl",
|
||||
"name": "Polish"
|
||||
}
|
||||
],
|
||||
"translated": 228,
|
||||
"target": 203,
|
||||
"translated": 266,
|
||||
"target": 258,
|
||||
"approved": 0,
|
||||
"voted": 0,
|
||||
"voted": 7,
|
||||
"positiveVotes": 0,
|
||||
"negativeVotes": 0,
|
||||
"winning": 0
|
||||
@@ -1158,14 +1210,58 @@
|
||||
"name": "Chinese Simplified"
|
||||
}
|
||||
],
|
||||
"translated": 210,
|
||||
"target": 339,
|
||||
"translated": 264,
|
||||
"target": 429,
|
||||
"approved": 0,
|
||||
"voted": 0,
|
||||
"positiveVotes": 4,
|
||||
"negativeVotes": 0,
|
||||
"winning": 126
|
||||
},
|
||||
{
|
||||
"user": {
|
||||
"id": "16084674",
|
||||
"username": "ai5d02sb",
|
||||
"fullName": "ai5d02sb",
|
||||
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16084674/medium/7c8119fe2a5ca71bb15f636916a42b95_default.png",
|
||||
"joined": "2023-11-02 15:47:09"
|
||||
},
|
||||
"languages": [
|
||||
{
|
||||
"id": "fr",
|
||||
"name": "French"
|
||||
}
|
||||
],
|
||||
"translated": 264,
|
||||
"target": 275,
|
||||
"approved": 0,
|
||||
"voted": 12,
|
||||
"positiveVotes": 0,
|
||||
"negativeVotes": 0,
|
||||
"winning": 0
|
||||
},
|
||||
{
|
||||
"user": {
|
||||
"id": "14949159",
|
||||
"username": "f1refa11",
|
||||
"fullName": "FireFall (f1refa11)",
|
||||
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14949159/medium/fd2ae63b8eb4462200ba96abf943c1b9.png",
|
||||
"joined": "2023-09-06 14:55:13"
|
||||
},
|
||||
"languages": [
|
||||
{
|
||||
"id": "ru",
|
||||
"name": "Russian"
|
||||
}
|
||||
],
|
||||
"translated": 228,
|
||||
"target": 203,
|
||||
"approved": 0,
|
||||
"voted": 0,
|
||||
"positiveVotes": 0,
|
||||
"negativeVotes": 0,
|
||||
"winning": 134
|
||||
},
|
||||
{
|
||||
"user": {
|
||||
"id": "13641407",
|
||||
@@ -1208,7 +1304,7 @@
|
||||
"voted": 0,
|
||||
"positiveVotes": 54,
|
||||
"negativeVotes": 3,
|
||||
"winning": 20
|
||||
"winning": 17
|
||||
},
|
||||
{
|
||||
"user": {
|
||||
@@ -1232,6 +1328,28 @@
|
||||
"negativeVotes": 3,
|
||||
"winning": 75
|
||||
},
|
||||
{
|
||||
"user": {
|
||||
"id": "14934947",
|
||||
"username": "djismgaming",
|
||||
"fullName": "Ismael (djismgaming)",
|
||||
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14934947/medium/f5a8570713c34ab0f7d5405d105e2a9a.jpeg",
|
||||
"joined": "2023-11-12 08:36:15"
|
||||
},
|
||||
"languages": [
|
||||
{
|
||||
"id": "es-ES",
|
||||
"name": "Spanish"
|
||||
}
|
||||
],
|
||||
"translated": 164,
|
||||
"target": 181,
|
||||
"approved": 0,
|
||||
"voted": 6,
|
||||
"positiveVotes": 0,
|
||||
"negativeVotes": 0,
|
||||
"winning": 0
|
||||
},
|
||||
{
|
||||
"user": {
|
||||
"id": "12580457",
|
||||
@@ -1922,28 +2040,6 @@
|
||||
"negativeVotes": 0,
|
||||
"winning": 0
|
||||
},
|
||||
{
|
||||
"user": {
|
||||
"id": "7795",
|
||||
"username": "zielmann",
|
||||
"fullName": "Luke (zielmann)",
|
||||
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/7795/medium/ad22b8b8d5eb33e4154d53a454c862fd_default.png",
|
||||
"joined": "2023-10-12 09:50:59"
|
||||
},
|
||||
"languages": [
|
||||
{
|
||||
"id": "pl",
|
||||
"name": "Polish"
|
||||
}
|
||||
],
|
||||
"translated": 4,
|
||||
"target": 4,
|
||||
"approved": 0,
|
||||
"voted": 6,
|
||||
"positiveVotes": 0,
|
||||
"negativeVotes": 0,
|
||||
"winning": 0
|
||||
},
|
||||
{
|
||||
"user": {
|
||||
"id": "15643771",
|
||||
@@ -2672,23 +2768,6 @@
|
||||
"negativeVotes": 0,
|
||||
"winning": 0
|
||||
},
|
||||
{
|
||||
"user": {
|
||||
"id": "15454038",
|
||||
"username": "sebekmartin",
|
||||
"fullName": "Martin Sebek (sebekmartin)",
|
||||
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15454038/medium/bcfb44598cdfd1d7cd4eb35812538962.jpeg",
|
||||
"joined": "2023-10-08 09:26:03"
|
||||
},
|
||||
"languages": [],
|
||||
"translated": 0,
|
||||
"target": 0,
|
||||
"approved": 0,
|
||||
"voted": 0,
|
||||
"positiveVotes": 0,
|
||||
"negativeVotes": 0,
|
||||
"winning": 0
|
||||
},
|
||||
{
|
||||
"user": {
|
||||
"id": "16051620",
|
||||
@@ -2727,6 +2806,23 @@
|
||||
"positiveVotes": 0,
|
||||
"negativeVotes": 0,
|
||||
"winning": 0
|
||||
},
|
||||
{
|
||||
"user": {
|
||||
"id": "16097722",
|
||||
"username": "explosiveparrot",
|
||||
"fullName": "explosiveparrot",
|
||||
"avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16097722/medium/7762f80fc1da63f5b2eb87de9d640324_default.png",
|
||||
"joined": "2023-11-10 21:23:11"
|
||||
},
|
||||
"languages": [],
|
||||
"translated": 0,
|
||||
"target": 0,
|
||||
"approved": 0,
|
||||
"voted": 0,
|
||||
"positiveVotes": 0,
|
||||
"negativeVotes": 0,
|
||||
"winning": 0
|
||||
}
|
||||
]
|
||||
}
|
||||
513
data/default.json
Normal file
513
data/default.json
Normal file
@@ -0,0 +1,513 @@
|
||||
{
|
||||
"schemaVersion": 2,
|
||||
"configProperties": {
|
||||
"name": "default"
|
||||
},
|
||||
"categories": [],
|
||||
"wrappers": [
|
||||
{
|
||||
"id": "default",
|
||||
"position": 0
|
||||
}
|
||||
],
|
||||
"apps": [
|
||||
{
|
||||
"id": "5df743d9-5cb1-457c-85d2-64ff86855652",
|
||||
"name": "Documentation",
|
||||
"url": "https://homarr.dev",
|
||||
"behaviour": {
|
||||
"onClickUrl": "https://homarr.dev",
|
||||
"externalUrl": "https://homarr.dev",
|
||||
"isOpeningNewTab": true
|
||||
},
|
||||
"network": {
|
||||
"enabledStatusChecker": false,
|
||||
"statusCodes": [
|
||||
"200"
|
||||
]
|
||||
},
|
||||
"appearance": {
|
||||
"iconUrl": "/imgs/logo/logo.png",
|
||||
"appNameStatus": "normal",
|
||||
"positionAppName": "column",
|
||||
"lineClampAppName": 1
|
||||
},
|
||||
"integration": {
|
||||
"type": null,
|
||||
"properties": []
|
||||
},
|
||||
"area": {
|
||||
"type": "wrapper",
|
||||
"properties": {
|
||||
"id": "default"
|
||||
}
|
||||
},
|
||||
"shape": {
|
||||
"md": {
|
||||
"location": {
|
||||
"x": 5,
|
||||
"y": 1
|
||||
},
|
||||
"size": {
|
||||
"width": 1,
|
||||
"height": 1
|
||||
}
|
||||
},
|
||||
"sm": {
|
||||
"location": {
|
||||
"x": 0,
|
||||
"y": 1
|
||||
},
|
||||
"size": {
|
||||
"width": 1,
|
||||
"height": 2
|
||||
}
|
||||
},
|
||||
"lg": {
|
||||
"location": {
|
||||
"x": 6,
|
||||
"y": 1
|
||||
},
|
||||
"size": {
|
||||
"width": 2,
|
||||
"height": 2
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "47af36c0-47c1-4e5b-bfc7-ad645ee6a337",
|
||||
"name": "Discord",
|
||||
"url": "https://discord.com/invite/aCsmEV5RgA",
|
||||
"behaviour": {
|
||||
"onClickUrl": "https://discord.com/invite/aCsmEV5RgA",
|
||||
"isOpeningNewTab": true,
|
||||
"externalUrl": "https://discord.com/invite/aCsmEV5RgA",
|
||||
"tooltipDescription": "Join our Discord server! We're waiting for your ideas and feedback. "
|
||||
},
|
||||
"network": {
|
||||
"enabledStatusChecker": false,
|
||||
"statusCodes": [
|
||||
"200"
|
||||
]
|
||||
},
|
||||
"appearance": {
|
||||
"iconUrl": "https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/discord.png",
|
||||
"appNameStatus": "normal",
|
||||
"positionAppName": "row-reverse",
|
||||
"lineClampAppName": 1
|
||||
},
|
||||
"integration": {
|
||||
"type": null,
|
||||
"properties": []
|
||||
},
|
||||
"area": {
|
||||
"type": "wrapper",
|
||||
"properties": {
|
||||
"id": "default"
|
||||
}
|
||||
},
|
||||
"shape": {
|
||||
"md": {
|
||||
"location": {
|
||||
"x": 3,
|
||||
"y": 1
|
||||
},
|
||||
"size": {
|
||||
"width": 1,
|
||||
"height": 1
|
||||
}
|
||||
},
|
||||
"sm": {
|
||||
"location": {
|
||||
"x": 1,
|
||||
"y": 4
|
||||
},
|
||||
"size": {
|
||||
"width": 1,
|
||||
"height": 1
|
||||
}
|
||||
},
|
||||
"lg": {
|
||||
"location": {
|
||||
"x": 4,
|
||||
"y": 0
|
||||
},
|
||||
"size": {
|
||||
"width": 2,
|
||||
"height": 1
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "47af36c0-47c1-4e5b-bfc7-ad645ee6a330",
|
||||
"name": "Contribute",
|
||||
"url": "https://github.com/ajnart/homarr",
|
||||
"behaviour": {
|
||||
"onClickUrl": "https://github.com/ajnart/homarr",
|
||||
"externalUrl": "https://github.com/ajnart/homarr",
|
||||
"isOpeningNewTab": true,
|
||||
"tooltipDescription": ""
|
||||
},
|
||||
"network": {
|
||||
"enabledStatusChecker": false,
|
||||
"statusCodes": []
|
||||
},
|
||||
"appearance": {
|
||||
"iconUrl": "https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/github.png",
|
||||
"appNameStatus": "normal",
|
||||
"positionAppName": "row-reverse",
|
||||
"lineClampAppName": 2
|
||||
},
|
||||
"integration": {
|
||||
"type": null,
|
||||
"properties": []
|
||||
},
|
||||
"area": {
|
||||
"type": "wrapper",
|
||||
"properties": {
|
||||
"id": "default"
|
||||
}
|
||||
},
|
||||
"shape": {
|
||||
"md": {
|
||||
"location": {
|
||||
"x": 3,
|
||||
"y": 2
|
||||
},
|
||||
"size": {
|
||||
"width": 2,
|
||||
"height": 1
|
||||
}
|
||||
},
|
||||
"sm": {
|
||||
"location": {
|
||||
"x": 1,
|
||||
"y": 3
|
||||
},
|
||||
"size": {
|
||||
"width": 2,
|
||||
"height": 1
|
||||
}
|
||||
},
|
||||
"lg": {
|
||||
"location": {
|
||||
"x": 2,
|
||||
"y": 0
|
||||
},
|
||||
"size": {
|
||||
"width": 2,
|
||||
"height": 1
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "47af36c0-47c1-4e5b-bfc7-ad645ee6a990",
|
||||
"name": "Donate",
|
||||
"url": "https://ko-fi.com/ajnart",
|
||||
"behaviour": {
|
||||
"onClickUrl": "https://ko-fi.com/ajnart",
|
||||
"externalUrl": "https://ko-fi.com/ajnart",
|
||||
"isOpeningNewTab": true,
|
||||
"tooltipDescription": "Please consider making a donation"
|
||||
},
|
||||
"network": {
|
||||
"enabledStatusChecker": false,
|
||||
"statusCodes": [
|
||||
"200"
|
||||
]
|
||||
},
|
||||
"appearance": {
|
||||
"iconUrl": "https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/ko-fi.png",
|
||||
"appNameStatus": "normal",
|
||||
"positionAppName": "row-reverse",
|
||||
"lineClampAppName": 1
|
||||
},
|
||||
"integration": {
|
||||
"type": null,
|
||||
"properties": []
|
||||
},
|
||||
"area": {
|
||||
"type": "wrapper",
|
||||
"properties": {
|
||||
"id": "default"
|
||||
}
|
||||
},
|
||||
"shape": {
|
||||
"md": {
|
||||
"location": {
|
||||
"x": 4,
|
||||
"y": 1
|
||||
},
|
||||
"size": {
|
||||
"width": 1,
|
||||
"height": 1
|
||||
}
|
||||
},
|
||||
"sm": {
|
||||
"location": {
|
||||
"x": 2,
|
||||
"y": 4
|
||||
},
|
||||
"size": {
|
||||
"width": 1,
|
||||
"height": 1
|
||||
}
|
||||
},
|
||||
"lg": {
|
||||
"location": {
|
||||
"x": 6,
|
||||
"y": 0
|
||||
},
|
||||
"size": {
|
||||
"width": 2,
|
||||
"height": 1
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"widgets": [
|
||||
{
|
||||
"id": "e3004052-6b83-480e-b458-56e8ccdca5f0",
|
||||
"type": "weather",
|
||||
"properties": {
|
||||
"displayInFahrenheit": false,
|
||||
"location": {
|
||||
"name": "Paris",
|
||||
"latitude": 48.85341,
|
||||
"longitude": 2.3488
|
||||
},
|
||||
"displayCityName": true
|
||||
},
|
||||
"area": {
|
||||
"type": "wrapper",
|
||||
"properties": {
|
||||
"id": "default"
|
||||
}
|
||||
},
|
||||
"shape": {
|
||||
"md": {
|
||||
"location": {
|
||||
"x": 5,
|
||||
"y": 0
|
||||
},
|
||||
"size": {
|
||||
"width": 1,
|
||||
"height": 1
|
||||
}
|
||||
},
|
||||
"sm": {
|
||||
"location": {
|
||||
"x": 2,
|
||||
"y": 0
|
||||
},
|
||||
"size": {
|
||||
"width": 1,
|
||||
"height": 1
|
||||
}
|
||||
},
|
||||
"lg": {
|
||||
"location": {
|
||||
"x": 0,
|
||||
"y": 0
|
||||
},
|
||||
"size": {
|
||||
"width": 2,
|
||||
"height": 1
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "971aa859-8570-49a1-8d34-dd5c7b3638d1",
|
||||
"type": "date",
|
||||
"properties": {
|
||||
"display24HourFormat": true,
|
||||
"dateFormat": "hide",
|
||||
"enableTimezone": false,
|
||||
"timezoneLocation": {
|
||||
"name": "Paris",
|
||||
"latitude": 48.85341,
|
||||
"longitude": 2.3488
|
||||
},
|
||||
"titleState": "city"
|
||||
},
|
||||
"area": {
|
||||
"type": "wrapper",
|
||||
"properties": {
|
||||
"id": "default"
|
||||
}
|
||||
},
|
||||
"shape": {
|
||||
"sm": {
|
||||
"location": {
|
||||
"x": 1,
|
||||
"y": 0
|
||||
},
|
||||
"size": {
|
||||
"width": 1,
|
||||
"height": 1
|
||||
}
|
||||
},
|
||||
"md": {
|
||||
"location": {
|
||||
"x": 4,
|
||||
"y": 0
|
||||
},
|
||||
"size": {
|
||||
"width": 1,
|
||||
"height": 1
|
||||
}
|
||||
},
|
||||
"lg": {
|
||||
"location": {
|
||||
"x": 8,
|
||||
"y": 0
|
||||
},
|
||||
"size": {
|
||||
"width": 2,
|
||||
"height": 1
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "f252768d-9e69-491b-b6b4-8cad04fa30e8",
|
||||
"type": "date",
|
||||
"properties": {
|
||||
"display24HourFormat": true,
|
||||
"dateFormat": "hide",
|
||||
"enableTimezone": true,
|
||||
"timezoneLocation": {
|
||||
"name": "Tokyo",
|
||||
"latitude": 35.6895,
|
||||
"longitude": 139.69171
|
||||
},
|
||||
"titleState": "city"
|
||||
},
|
||||
"area": {
|
||||
"type": "wrapper",
|
||||
"properties": {
|
||||
"id": "default"
|
||||
}
|
||||
},
|
||||
"shape": {
|
||||
"sm": {
|
||||
"location": {
|
||||
"x": 0,
|
||||
"y": 0
|
||||
},
|
||||
"size": {
|
||||
"width": 1,
|
||||
"height": 1
|
||||
}
|
||||
},
|
||||
"md": {
|
||||
"location": {
|
||||
"x": 3,
|
||||
"y": 0
|
||||
},
|
||||
"size": {
|
||||
"width": 1,
|
||||
"height": 1
|
||||
}
|
||||
},
|
||||
"lg": {
|
||||
"location": {
|
||||
"x": 8,
|
||||
"y": 1
|
||||
},
|
||||
"size": {
|
||||
"width": 2,
|
||||
"height": 1
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "86b1921f-efa7-410f-92dd-79553bf3264d",
|
||||
"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>"
|
||||
},
|
||||
"area": {
|
||||
"type": "wrapper",
|
||||
"properties": {
|
||||
"id": "default"
|
||||
}
|
||||
},
|
||||
"shape": {
|
||||
"sm": {
|
||||
"location": {
|
||||
"x": 0,
|
||||
"y": 0
|
||||
},
|
||||
"size": {
|
||||
"width": 3,
|
||||
"height": 2
|
||||
}
|
||||
},
|
||||
"md": {
|
||||
"location": {
|
||||
"x": 0,
|
||||
"y": 0
|
||||
},
|
||||
"size": {
|
||||
"width": 3,
|
||||
"height": 4
|
||||
}
|
||||
},
|
||||
"lg": {
|
||||
"location": {
|
||||
"x": 0,
|
||||
"y": 1
|
||||
},
|
||||
"size": {
|
||||
"width": 6,
|
||||
"height": 3
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"settings": {
|
||||
"common": {
|
||||
"searchEngine": {
|
||||
"type": "google",
|
||||
"properties": {}
|
||||
}
|
||||
},
|
||||
"customization": {
|
||||
"layout": {
|
||||
"enabledLeftSidebar": false,
|
||||
"enabledRightSidebar": false,
|
||||
"enabledDocker": false,
|
||||
"enabledPing": false,
|
||||
"enabledSearchbar": true
|
||||
},
|
||||
"pageTitle": "Homarr ⭐️",
|
||||
"logoImageUrl": "/imgs/logo/logo.png",
|
||||
"faviconUrl": "/imgs/favicon/favicon-squared.png",
|
||||
"backgroundImageUrl": "",
|
||||
"customCss": "",
|
||||
"colors": {
|
||||
"primary": "red",
|
||||
"secondary": "yellow",
|
||||
"shade": 7
|
||||
},
|
||||
"appOpacity": 100,
|
||||
"gridstack": {
|
||||
"columnCountSmall": 3,
|
||||
"columnCountMedium": 6,
|
||||
"columnCountLarge": 10
|
||||
}
|
||||
},
|
||||
"access": {
|
||||
"allowGuests": false
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -5,6 +5,8 @@ import dotenv from 'dotenv';
|
||||
import { drizzle } from 'drizzle-orm/better-sqlite3';
|
||||
import { migrate } from 'drizzle-orm/better-sqlite3/migrator';
|
||||
|
||||
const migrationsFolder = process.argv[2] ?? '../drizzle';
|
||||
|
||||
dotenv.config({ path: __dirname + '/../.env' });
|
||||
|
||||
const sqlite = new Database(process.env.DATABASE_URL!.replace('file:', ''));
|
||||
@@ -12,7 +14,7 @@ const sqlite = new Database(process.env.DATABASE_URL!.replace('file:', ''));
|
||||
const db = drizzle(sqlite);
|
||||
|
||||
const migrateDatabase = async () => {
|
||||
await migrate(db, { migrationsFolder: './drizzle' });
|
||||
await migrate(db, { migrationsFolder });
|
||||
};
|
||||
|
||||
migrateDatabase();
|
||||
15
drizzle/migrate/package.json
Normal file
15
drizzle/migrate/package.json
Normal file
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"license": "MIT",
|
||||
"description": "This package.json is used for the migration script the dependencies are only installed within the Dockerfile.",
|
||||
"scripts": {
|
||||
"db:migrate": "ts-node ./migrate.ts"
|
||||
},
|
||||
"dependencies": {
|
||||
"@types/better-sqlite3": "^7.6.7",
|
||||
"better-sqlite3": "8.6.0",
|
||||
"drizzle-orm": "^0.28.6",
|
||||
"dotenv": "^16.3.1",
|
||||
"ts-node": "^10.9.1",
|
||||
"typescript": "^5.2.2"
|
||||
}
|
||||
}
|
||||
10
package.json
10
package.json
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "homarr",
|
||||
"version": "0.14.0",
|
||||
"version": "0.14.3",
|
||||
"description": "Homarr - A homepage for your server.",
|
||||
"license": "MIT",
|
||||
"repository": {
|
||||
@@ -24,7 +24,7 @@
|
||||
"test:coverage": "SKIP_ENV_VALIDATION=1 vitest run --coverage",
|
||||
"docker:build": "turbo build && docker build . -t homarr:local-dev",
|
||||
"docker:start": "docker run -p 7575:7575 --name homarr-development homarr:local-dev",
|
||||
"db:migrate": "ts-node src/migrate.ts"
|
||||
"db:migrate": "dotenv ts-node drizzle/migrate/migrate.ts ./drizzle"
|
||||
},
|
||||
"dependencies": {
|
||||
"@auth/drizzle-adapter": "^0.3.2",
|
||||
@@ -75,7 +75,6 @@
|
||||
"axios": "^1.0.0",
|
||||
"bcryptjs": "^2.4.3",
|
||||
"better-sqlite3": "^8.6.0",
|
||||
"browser-geo-tz": "^0.0.4",
|
||||
"consola": "^3.0.0",
|
||||
"cookies": "^0.8.0",
|
||||
"cookies-next": "^2.1.1",
|
||||
@@ -91,6 +90,10 @@
|
||||
"html-entities": "^2.3.3",
|
||||
"i18next": "^22.5.1",
|
||||
"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-auth": "^4.23.0",
|
||||
"next-i18next": "^14.0.0",
|
||||
@@ -127,6 +130,7 @@
|
||||
"@vitest/coverage-c8": "^0.33.0",
|
||||
"@vitest/coverage-v8": "^0.34.5",
|
||||
"@vitest/ui": "^0.34.4",
|
||||
"dotenv-cli": "^7.3.0",
|
||||
"eslint": "^8.0.1",
|
||||
"eslint-config-next": "^13.4.5",
|
||||
"eslint-plugin-promise": "^6.0.0",
|
||||
|
||||
@@ -51,5 +51,7 @@
|
||||
"attributes": {
|
||||
"width": "宽度",
|
||||
"height": "高度"
|
||||
}
|
||||
},
|
||||
"public": "公开",
|
||||
"restricted": "限制"
|
||||
}
|
||||
@@ -1,25 +1,26 @@
|
||||
{
|
||||
"modal": {
|
||||
"title": "添加新磁贴",
|
||||
"text": "磁贴是 Homarr 的主要组成元素。它们被用来显示你的应用程序和其他信息。您可以根据需要增加任意数量的磁贴。"
|
||||
},
|
||||
"widgetDescription": "组件与您的应用交互,为您提供更多的应用程序控制。它们在使用前通常需要额外的配置。",
|
||||
"goBack": "上一步",
|
||||
"actionIcon": {
|
||||
"tooltip": "添加磁贴"
|
||||
},
|
||||
"apps": "应用",
|
||||
"app": {
|
||||
"defaultName": "您的应用"
|
||||
},
|
||||
"widgets": "组件",
|
||||
"categories": "分类",
|
||||
"category": {
|
||||
"newName": "新分类名称",
|
||||
"defaultName": "新建分类",
|
||||
"created": {
|
||||
"title": "分类已创建",
|
||||
"message": "已创建分类\"{{name}}\""
|
||||
}
|
||||
"modal": {
|
||||
"title": "添加新磁贴",
|
||||
"text": "磁贴是 Homarr 的主要组成元素。它们被用来显示你的应用程序和其他信息。您可以根据需要增加任意数量的磁贴。"
|
||||
},
|
||||
"widgetDescription": "组件与您的应用交互,为您提供更多的应用程序控制。它们在使用前通常需要额外的配置。",
|
||||
"goBack": "上一步",
|
||||
"actionIcon": {
|
||||
"tooltip": "添加磁贴"
|
||||
},
|
||||
"apps": "应用",
|
||||
"app": {
|
||||
"defaultName": "您的应用"
|
||||
},
|
||||
"widgets": "组件",
|
||||
"categories": "分类",
|
||||
"category": {
|
||||
"newName": "新分类名称",
|
||||
"defaultName": "新建分类",
|
||||
"created": {
|
||||
"title": "分类已创建",
|
||||
"message": "已创建分类\"{{name}}\""
|
||||
}
|
||||
},
|
||||
"importFromDocker": ""
|
||||
}
|
||||
|
||||
@@ -1,7 +1,4 @@
|
||||
{
|
||||
"experimentalNote": {
|
||||
"label": "这是 Homarr 的一项实验性功能。请在 <gh>GitHub</gh> 或 <dc>Discord</dc>上报告任何问题。"
|
||||
},
|
||||
"search": {
|
||||
"label": "搜索",
|
||||
"engines": {
|
||||
@@ -14,9 +11,9 @@
|
||||
"actions": {
|
||||
"avatar": {
|
||||
"switchTheme": "切换主题",
|
||||
"preferences": "用户首选项",
|
||||
"defaultBoard": "默认仪表盘",
|
||||
"manage": "管理",
|
||||
"preferences": "用户选项",
|
||||
"defaultBoard": "默认面板",
|
||||
"manage": "管理中心",
|
||||
"logout": "注销 {{username}}",
|
||||
"login": "登录"
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
"key": "快捷键",
|
||||
"action": "操作",
|
||||
"keybinds": "热键绑定",
|
||||
"translators": "翻译 ({{count}})",
|
||||
"translators": "翻译者 ({{count}})",
|
||||
"translatorsDescription": "感谢这些人,Homarr 现已支持 {{languages}} 种语言!想要帮助将 Homarr 翻译成您的语言吗?请阅读<a>此处</a>了解如何执行此操作 。",
|
||||
"contributors": "贡献者 ({{count}})",
|
||||
"contributorsDescription": "这些人构建了让 homarr 工作的代码!想帮助建造 Homarr 吗?请阅读<a>此处</a>了解如何操作",
|
||||
|
||||
@@ -1,13 +1,21 @@
|
||||
{
|
||||
"metaTitle": "用户",
|
||||
"pageTitle": "管理用户",
|
||||
"text": "通过账号,您可以配置谁可以编辑您的面板。Homarr的未来版本将对权限和面板进行更精细地控制。",
|
||||
"buttons": {
|
||||
"create": "创建"
|
||||
},
|
||||
"filter": {
|
||||
"roles": {
|
||||
"all": "全部",
|
||||
"normal": "普通",
|
||||
"admin": "管理员",
|
||||
"owner": "所有者"
|
||||
}
|
||||
},
|
||||
"table": {
|
||||
"header": {
|
||||
"user": "用户"
|
||||
"user": "用户",
|
||||
"email": "邮箱"
|
||||
}
|
||||
},
|
||||
"tooltips": {
|
||||
|
||||
55
public/locales/cn/manage/users/edit.json
Normal file
55
public/locales/cn/manage/users/edit.json
Normal 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": "我知道此操作是永久性的,所有帐户数据都将丢失。"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -4,6 +4,13 @@
|
||||
"description": "显示当前的日期和时间。",
|
||||
"settings": {
|
||||
"title": "日期和时间组件设置",
|
||||
"timezone": {
|
||||
"label": "",
|
||||
"info": ""
|
||||
},
|
||||
"customTitle": {
|
||||
"label": ""
|
||||
},
|
||||
"display24HourFormat": {
|
||||
"label": "全时显示(24 小时)"
|
||||
},
|
||||
@@ -13,18 +20,12 @@
|
||||
"hide": "隐藏日期"
|
||||
}
|
||||
},
|
||||
"enableTimezone": {
|
||||
"label": "显示自定义时区"
|
||||
},
|
||||
"timezoneLocation": {
|
||||
"label": "时区位置"
|
||||
},
|
||||
"titleState": {
|
||||
"label": "城市名称",
|
||||
"info": "如果激活时区选项,则可显示城市名称和时区代码。<br/>您也可以只显示城市,甚至不显示。",
|
||||
"label": "",
|
||||
"info": "",
|
||||
"data": {
|
||||
"both": "城市和时区",
|
||||
"city": "仅城市",
|
||||
"both": "",
|
||||
"city": "",
|
||||
"none": "无"
|
||||
}
|
||||
}
|
||||
|
||||
17
public/locales/cn/modules/smart-home/entity-state.json
Normal file
17
public/locales/cn/modules/smart-home/entity-state.json
Normal 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": "显示名称"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -41,12 +41,22 @@
|
||||
},
|
||||
"table": {
|
||||
"header": {
|
||||
"isCompleted": "正在下载",
|
||||
"name": "名称",
|
||||
"dateAdded": "已添加到",
|
||||
"size": "大小",
|
||||
"download": "下载",
|
||||
"upload": "上传",
|
||||
"estimatedTimeOfArrival": "剩余时间",
|
||||
"progress": "进度"
|
||||
"progress": "进度",
|
||||
"totalUploaded": "上传总量",
|
||||
"totalDownloaded": "下载总量",
|
||||
"ratio": "分享率",
|
||||
"seeds": "种子数(已连接)",
|
||||
"peers": "用户数(已连接)",
|
||||
"label": "标签",
|
||||
"state": "状态",
|
||||
"stateMessage": "状态信息"
|
||||
},
|
||||
"item": {
|
||||
"text": "由 {{appName}}, {{ratio}} 管理的比率"
|
||||
|
||||
@@ -18,10 +18,33 @@
|
||||
"background": {
|
||||
"label": "背景"
|
||||
},
|
||||
"backgroundImageAttachment": {
|
||||
"label": "背景图片附件",
|
||||
"options": {
|
||||
"fixed": "固定 - 背景保持在同一位置(推荐)",
|
||||
"scroll": "滚动 - 背景随鼠标滚动"
|
||||
}
|
||||
},
|
||||
"backgroundImageSize": {
|
||||
"label": "背景图像大小",
|
||||
"options": {
|
||||
"cover": "覆盖 - 通过裁剪多余的空间,将图像缩放得尽可能小以覆盖整个窗口。 (推荐使用)",
|
||||
"contain": "包含 - 在不裁剪或拉伸图像的情况下,在容器内尽可能大地缩放图像。"
|
||||
}
|
||||
},
|
||||
"backgroundImageRepeat": {
|
||||
"label": "背景图片附件",
|
||||
"options": {
|
||||
"repeat": "重复 - 根据需要重复图像,以覆盖整个背景图像绘制区域。",
|
||||
"no-repeat": "无重复 - 图像不重复且可能不会填满整个空间(推荐)",
|
||||
"repeat-x": "重复 X - 与 \"重复 \"相同,但只在水平轴上重复。",
|
||||
"repeat-y": "重复 Y - 与 \"重复 \"相同,但只在垂直轴上重复。"
|
||||
}
|
||||
},
|
||||
"customCSS": {
|
||||
"label": "自定义 CSS",
|
||||
"description": "只推荐有经验的用户使用 CSS 自定义面板",
|
||||
"placeholder": "自定义 CSS 将在最后应用",
|
||||
"applying": "应用CSS中..."
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -51,5 +51,7 @@
|
||||
"attributes": {
|
||||
"width": "crwdns3910:0crwdne3910:0",
|
||||
"height": "crwdns3912:0crwdne3912:0"
|
||||
}
|
||||
},
|
||||
"public": "crwdns4034:0crwdne4034:0",
|
||||
"restricted": "crwdns4036:0crwdne4036:0"
|
||||
}
|
||||
@@ -1,25 +1,26 @@
|
||||
{
|
||||
"modal": {
|
||||
"title": "crwdns1989:0crwdne1989:0",
|
||||
"text": "crwdns2293:0crwdne2293:0"
|
||||
},
|
||||
"widgetDescription": "crwdns2295:0crwdne2295:0",
|
||||
"goBack": "crwdns1995:0crwdne1995:0",
|
||||
"actionIcon": {
|
||||
"tooltip": "crwdns1997:0crwdne1997:0"
|
||||
},
|
||||
"apps": "crwdns3231:0crwdne3231:0",
|
||||
"app": {
|
||||
"defaultName": "crwdns3233:0crwdne3233:0"
|
||||
},
|
||||
"widgets": "crwdns3235:0crwdne3235:0",
|
||||
"categories": "crwdns3237:0crwdne3237:0",
|
||||
"category": {
|
||||
"newName": "crwdns3239:0crwdne3239:0",
|
||||
"defaultName": "crwdns3241:0crwdne3241:0",
|
||||
"created": {
|
||||
"title": "crwdns3243:0crwdne3243:0",
|
||||
"message": "crwdns3245:0{{name}}crwdne3245:0"
|
||||
}
|
||||
"modal": {
|
||||
"title": "crwdns1989:0crwdne1989:0",
|
||||
"text": "crwdns2293:0crwdne2293:0"
|
||||
},
|
||||
"widgetDescription": "crwdns2295:0crwdne2295:0",
|
||||
"goBack": "crwdns1995:0crwdne1995:0",
|
||||
"actionIcon": {
|
||||
"tooltip": "crwdns1997:0crwdne1997:0"
|
||||
},
|
||||
"apps": "crwdns3231:0crwdne3231:0",
|
||||
"app": {
|
||||
"defaultName": "crwdns3233:0crwdne3233:0"
|
||||
},
|
||||
"widgets": "crwdns3235:0crwdne3235:0",
|
||||
"categories": "crwdns3237:0crwdne3237:0",
|
||||
"category": {
|
||||
"newName": "crwdns3239:0crwdne3239:0",
|
||||
"defaultName": "crwdns3241:0crwdne3241:0",
|
||||
"created": {
|
||||
"title": "crwdns3243:0crwdne3243:0",
|
||||
"message": "crwdns3245:0{{name}}crwdne3245:0"
|
||||
}
|
||||
},
|
||||
"importFromDocker": "crwdns4138:0crwdne4138:0"
|
||||
}
|
||||
|
||||
@@ -1,7 +1,4 @@
|
||||
{
|
||||
"experimentalNote": {
|
||||
"label": "crwdns3445:0crwdne3445:0"
|
||||
},
|
||||
"search": {
|
||||
"label": "crwdns3447:0crwdne3447:0",
|
||||
"engines": {
|
||||
|
||||
@@ -1,13 +1,21 @@
|
||||
{
|
||||
"metaTitle": "crwdns3789:0crwdne3789:0",
|
||||
"pageTitle": "crwdns3791:0crwdne3791:0",
|
||||
"text": "crwdns3793:0crwdne3793:0",
|
||||
"buttons": {
|
||||
"create": "crwdns3795:0crwdne3795:0"
|
||||
},
|
||||
"filter": {
|
||||
"roles": {
|
||||
"all": "crwdns4114:0crwdne4114:0",
|
||||
"normal": "crwdns4116:0crwdne4116:0",
|
||||
"admin": "crwdns4118:0crwdne4118:0",
|
||||
"owner": "crwdns4120:0crwdne4120:0"
|
||||
}
|
||||
},
|
||||
"table": {
|
||||
"header": {
|
||||
"user": "crwdns3797:0crwdne3797:0"
|
||||
"user": "crwdns3797:0crwdne3797:0",
|
||||
"email": "crwdns4122:0crwdne4122:0"
|
||||
}
|
||||
},
|
||||
"tooltips": {
|
||||
|
||||
55
public/locales/cr/manage/users/edit.json
Normal file
55
public/locales/cr/manage/users/edit.json
Normal 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"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -4,6 +4,13 @@
|
||||
"description": "crwdns2341:0crwdne2341:0",
|
||||
"settings": {
|
||||
"title": "crwdns2343:0crwdne2343:0",
|
||||
"timezone": {
|
||||
"label": "crwdns4124:0crwdne4124:0",
|
||||
"info": "crwdns4126:0crwdne4126:0"
|
||||
},
|
||||
"customTitle": {
|
||||
"label": "crwdns4128:0crwdne4128:0"
|
||||
},
|
||||
"display24HourFormat": {
|
||||
"label": "crwdns1430:0crwdne1430:0"
|
||||
},
|
||||
@@ -13,18 +20,12 @@
|
||||
"hide": "crwdns3057:0crwdne3057:0"
|
||||
}
|
||||
},
|
||||
"enableTimezone": {
|
||||
"label": "crwdns3059:0crwdne3059:0"
|
||||
},
|
||||
"timezoneLocation": {
|
||||
"label": "crwdns3061:0crwdne3061:0"
|
||||
},
|
||||
"titleState": {
|
||||
"label": "crwdns3063:0crwdne3063:0",
|
||||
"info": "crwdns3065:0crwdne3065:0",
|
||||
"label": "crwdns4130:0crwdne4130:0",
|
||||
"info": "crwdns4132:0crwdne4132:0",
|
||||
"data": {
|
||||
"both": "crwdns3067:0crwdne3067:0",
|
||||
"city": "crwdns3069:0crwdne3069:0",
|
||||
"both": "crwdns4134:0crwdne4134:0",
|
||||
"city": "crwdns4136:0crwdne4136:0",
|
||||
"none": "crwdns3071:0crwdne3071:0"
|
||||
}
|
||||
}
|
||||
|
||||
17
public/locales/cr/modules/smart-home/entity-state.json
Normal file
17
public/locales/cr/modules/smart-home/entity-state.json
Normal 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"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -41,12 +41,22 @@
|
||||
},
|
||||
"table": {
|
||||
"header": {
|
||||
"isCompleted": "crwdns4052:0crwdne4052:0",
|
||||
"name": "crwdns2225:0crwdne2225:0",
|
||||
"dateAdded": "crwdns4054:0crwdne4054:0",
|
||||
"size": "crwdns2227:0crwdne2227:0",
|
||||
"download": "crwdns2229:0crwdne2229:0",
|
||||
"upload": "crwdns2231:0crwdne2231: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": {
|
||||
"text": "crwdns2461:0{{appName}}crwdnd2461:0{{ratio}}crwdne2461:0"
|
||||
|
||||
@@ -18,10 +18,33 @@
|
||||
"background": {
|
||||
"label": "crwdns1628:0crwdne1628:0"
|
||||
},
|
||||
"backgroundImageAttachment": {
|
||||
"label": "crwdns4010:0crwdne4010:0",
|
||||
"options": {
|
||||
"fixed": "crwdns4012:0crwdne4012:0",
|
||||
"scroll": "crwdns4014:0crwdne4014:0"
|
||||
}
|
||||
},
|
||||
"backgroundImageSize": {
|
||||
"label": "crwdns4016:0crwdne4016:0",
|
||||
"options": {
|
||||
"cover": "crwdns4018:0crwdne4018:0",
|
||||
"contain": "crwdns4020:0crwdne4020:0"
|
||||
}
|
||||
},
|
||||
"backgroundImageRepeat": {
|
||||
"label": "crwdns4022:0crwdne4022:0",
|
||||
"options": {
|
||||
"repeat": "crwdns4024:0crwdne4024:0",
|
||||
"no-repeat": "crwdns4032:0crwdne4032:0",
|
||||
"repeat-x": "crwdns4028:0crwdne4028:0",
|
||||
"repeat-y": "crwdns4030:0crwdne4030:0"
|
||||
}
|
||||
},
|
||||
"customCSS": {
|
||||
"label": "crwdns1702:0crwdne1702:0",
|
||||
"description": "crwdns2723:0crwdne2723:0",
|
||||
"placeholder": "crwdns2389:0crwdne2389:0",
|
||||
"applying": "crwdns2561:0crwdne2561:0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
"title": "crwdns3821:0crwdne3821:0",
|
||||
"alerts": {
|
||||
"notConfigured": {
|
||||
"text": "crwdns3823:0crwdne3823:0"
|
||||
"text": "crwdns4008:0crwdne4008:0"
|
||||
}
|
||||
},
|
||||
"modals": {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"header": {
|
||||
"customize": ""
|
||||
"customize": "Přizpůsobit plochu"
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"metaTitle": "",
|
||||
"metaTitle": "Přizpůsobení {{name}} plochy",
|
||||
"pageTitle": "Přizpůsobení {{name}} plochy",
|
||||
"backToBoard": "Zpět na plochu",
|
||||
"settings": {
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
{
|
||||
"save": "",
|
||||
"save": "Uložit",
|
||||
"apply": "",
|
||||
"insert": "",
|
||||
"about": "",
|
||||
"cancel": "",
|
||||
"close": "",
|
||||
"back": "",
|
||||
"back": "Zpět",
|
||||
"delete": "",
|
||||
"ok": "",
|
||||
"edit": "",
|
||||
"next": "",
|
||||
"next": "Další",
|
||||
"previous": "",
|
||||
"confirm": "",
|
||||
"enabled": "",
|
||||
@@ -17,13 +17,13 @@
|
||||
"enableAll": "",
|
||||
"disableAll": "",
|
||||
"version": "",
|
||||
"changePosition": "",
|
||||
"changePosition": "Změnit pozici",
|
||||
"remove": "",
|
||||
"removeConfirm": "",
|
||||
"createItem": "",
|
||||
"sections": {
|
||||
"settings": "",
|
||||
"dangerZone": ""
|
||||
"dangerZone": "Nebezpečná zóna"
|
||||
},
|
||||
"secrets": {
|
||||
"apiKey": "",
|
||||
@@ -44,12 +44,14 @@
|
||||
},
|
||||
"seeMore": "",
|
||||
"position": {
|
||||
"left": "",
|
||||
"left": "Vlevo",
|
||||
"center": "",
|
||||
"right": ""
|
||||
"right": "Vpravo"
|
||||
},
|
||||
"attributes": {
|
||||
"width": "",
|
||||
"height": ""
|
||||
}
|
||||
},
|
||||
"public": "",
|
||||
"restricted": "Omezené"
|
||||
}
|
||||
@@ -1,25 +1,26 @@
|
||||
{
|
||||
"modal": {
|
||||
"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."
|
||||
},
|
||||
"widgetDescription": "",
|
||||
"goBack": "",
|
||||
"actionIcon": {
|
||||
"tooltip": ""
|
||||
},
|
||||
"apps": "Aplikace",
|
||||
"app": {
|
||||
"defaultName": ""
|
||||
},
|
||||
"widgets": "Widgety",
|
||||
"categories": "Kategorie",
|
||||
"category": {
|
||||
"newName": "",
|
||||
"defaultName": "",
|
||||
"created": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
}
|
||||
"modal": {
|
||||
"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."
|
||||
},
|
||||
"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": "Přejít zpět na předchozí stránku",
|
||||
"actionIcon": {
|
||||
"tooltip": "Přidat dlaždici"
|
||||
},
|
||||
"apps": "Aplikace",
|
||||
"app": {
|
||||
"defaultName": "Vaše aplikace"
|
||||
},
|
||||
"widgets": "Widgety",
|
||||
"categories": "Kategorie",
|
||||
"category": {
|
||||
"newName": "Název nové kategorie",
|
||||
"defaultName": "Nová kategorie",
|
||||
"created": {
|
||||
"title": "Kategorie vytvořena",
|
||||
"message": "Kategorie \"{{name}}\" byla vytvořena"
|
||||
}
|
||||
},
|
||||
"importFromDocker": ""
|
||||
}
|
||||
|
||||
@@ -1,7 +1,4 @@
|
||||
{
|
||||
"experimentalNote": {
|
||||
"label": ""
|
||||
},
|
||||
"search": {
|
||||
"label": "Vyhledat",
|
||||
"engines": {
|
||||
@@ -17,7 +14,7 @@
|
||||
"preferences": "Uživatelská nastavení",
|
||||
"defaultBoard": "Výchozí plocha",
|
||||
"manage": "Spravovat",
|
||||
"logout": "Odhlásit z {{username}}",
|
||||
"logout": "Odhlásit {{username}}",
|
||||
"login": ""
|
||||
}
|
||||
},
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
"help": {
|
||||
"title": "Nápověda",
|
||||
"items": {
|
||||
"documentation": "",
|
||||
"documentation": "Dokumentace",
|
||||
"report": "Nahlášení problému/chyby",
|
||||
"discord": "Komunitní Discord",
|
||||
"contribute": "Zapojte se"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"description": "",
|
||||
"addToDashboard": "",
|
||||
"addToDashboard": "Přidat na plochu",
|
||||
"tip": "",
|
||||
"key": "",
|
||||
"action": "",
|
||||
|
||||
@@ -1,64 +1,64 @@
|
||||
{
|
||||
"tabs": {
|
||||
"general": "",
|
||||
"behaviour": "",
|
||||
"general": "Obecné",
|
||||
"behaviour": "Chování",
|
||||
"network": "",
|
||||
"appearance": "",
|
||||
"integration": ""
|
||||
"appearance": "Vzhled",
|
||||
"integration": "Integrace"
|
||||
},
|
||||
"general": {
|
||||
"appname": {
|
||||
"label": "",
|
||||
"description": ""
|
||||
"label": "Název aplikace",
|
||||
"description": "Zobrazuje se s aplikací na ploše."
|
||||
},
|
||||
"internalAddress": {
|
||||
"label": "",
|
||||
"description": "",
|
||||
"label": "Interní adresa",
|
||||
"description": "Interní IP adresa aplikace.",
|
||||
"troubleshoot": {
|
||||
"label": "",
|
||||
"header": "",
|
||||
"label": "Narazili jste na problém?",
|
||||
"header": "Zde je seznam nejčastějších chyb a jejich řešení:",
|
||||
"lines": {
|
||||
"nothingAfterPort": "",
|
||||
"protocolCheck": "",
|
||||
"preferIP": "",
|
||||
"enablePings": "",
|
||||
"wget": "",
|
||||
"iframe": "",
|
||||
"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": "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": "Doporučuje se používat přímo Ip adresu stroje nebo kontejneru, se kterým se snažíte komunikovat.",
|
||||
"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": "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": "Pokud jde o iframe, ty by měly vždy používat stejný protokol (http/s) jako Homarr.",
|
||||
"clearCache": ""
|
||||
},
|
||||
"footer": ""
|
||||
"footer": "Pro řešení dalších problémů se obraťte na náš {{discord}}."
|
||||
}
|
||||
},
|
||||
"externalAddress": {
|
||||
"label": "",
|
||||
"description": ""
|
||||
"label": "Veřejná adresa",
|
||||
"description": "URL která bude otevřena po kliknutí na aplikaci."
|
||||
}
|
||||
},
|
||||
"behaviour": {
|
||||
"isOpeningNewTab": {
|
||||
"label": "",
|
||||
"description": ""
|
||||
"label": "Otevřít na nové kartě",
|
||||
"description": "Otevřete aplikaci na nové kartě místo aktuální."
|
||||
},
|
||||
"tooltipDescription": {
|
||||
"label": "",
|
||||
"label": "Popis aplikace",
|
||||
"description": ""
|
||||
},
|
||||
"customProtocolWarning": ""
|
||||
},
|
||||
"network": {
|
||||
"statusChecker": {
|
||||
"label": "",
|
||||
"description": ""
|
||||
"label": "Kontrola stavu",
|
||||
"description": "Kontroluje, zda je aplikace online pomocí jednoduchého HTTP(S) požadavku."
|
||||
},
|
||||
"statusCodes": {
|
||||
"label": "",
|
||||
"description": ""
|
||||
"label": "Stavové kódy HTTP",
|
||||
"description": "Stavové kódy HTTP, které jsou považovány jako online."
|
||||
}
|
||||
},
|
||||
"appearance": {
|
||||
"icon": {
|
||||
"label": "",
|
||||
"description": "",
|
||||
"label": "Ikona aplikace",
|
||||
"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": {
|
||||
"title": "",
|
||||
"text": ""
|
||||
@@ -69,38 +69,38 @@
|
||||
}
|
||||
},
|
||||
"appNameFontSize": {
|
||||
"label": "",
|
||||
"description": ""
|
||||
"label": "Velikost písma názvu aplikace",
|
||||
"description": "Nastavte velikost písma zobrazení názvu aplikace na dlaždici."
|
||||
},
|
||||
"appNameStatus": {
|
||||
"label": "",
|
||||
"description": "",
|
||||
"label": "Stav názvu aplikace",
|
||||
"description": "Zvolte, kde se má název zobrazit, pokud se vůbec má zobrazit.",
|
||||
"dropdown": {
|
||||
"normal": "",
|
||||
"hover": "",
|
||||
"hidden": ""
|
||||
"normal": "Zobrazení názvu pouze na dlaždici",
|
||||
"hover": "Zobrazení názvu pouze při najetí myší",
|
||||
"hidden": "Nezobrazovat vůbec"
|
||||
}
|
||||
},
|
||||
"positionAppName": {
|
||||
"label": "",
|
||||
"description": "",
|
||||
"label": "Pozice názvu aplikace",
|
||||
"description": "Pozice názvu aplikace vzhledem k ikoně.",
|
||||
"dropdown": {
|
||||
"top": "",
|
||||
"right": "",
|
||||
"bottom": "",
|
||||
"left": ""
|
||||
"top": "Nahoře",
|
||||
"right": "Vpravo",
|
||||
"bottom": "Dole",
|
||||
"left": "Vlevo"
|
||||
}
|
||||
},
|
||||
"lineClampAppName": {
|
||||
"label": "",
|
||||
"description": ""
|
||||
"label": "Řádky názvu aplikace",
|
||||
"description": "Určuje, na kolik řádků se má maximálně vejít váš nadpis. Nastavte 0 pro neomezený počet."
|
||||
}
|
||||
},
|
||||
"integration": {
|
||||
"type": {
|
||||
"label": "",
|
||||
"description": "",
|
||||
"placeholder": "",
|
||||
"label": "Nastavení propojení",
|
||||
"description": "Konfigurace integrace, která bude použita pro připojení k vaší aplikaci.",
|
||||
"placeholder": "Vyberte integraci",
|
||||
"defined": "",
|
||||
"undefined": "",
|
||||
"public": "",
|
||||
|
||||
@@ -8,22 +8,22 @@
|
||||
"categories": "Kategorie"
|
||||
},
|
||||
"buttons": {
|
||||
"view": ""
|
||||
"view": "Zobrazit plochu"
|
||||
},
|
||||
"menu": {
|
||||
"setAsDefault": "",
|
||||
"setAsDefault": "Nastavit jako výchozí plochu",
|
||||
"delete": {
|
||||
"label": "",
|
||||
"disabled": ""
|
||||
"label": "Trvale smazat",
|
||||
"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": {
|
||||
"fileSystem": "",
|
||||
"default": ""
|
||||
"fileSystem": "Souborový systém",
|
||||
"default": "Výchozí"
|
||||
}
|
||||
},
|
||||
"buttons": {
|
||||
"create": ""
|
||||
"create": "Vytvořit novou plochu"
|
||||
},
|
||||
"modals": {
|
||||
"delete": {
|
||||
@@ -31,13 +31,13 @@
|
||||
"text": ""
|
||||
},
|
||||
"create": {
|
||||
"title": "",
|
||||
"text": "",
|
||||
"title": "Vytvořit plochu",
|
||||
"text": "Název nelze po vytvoření plochy změnit.",
|
||||
"form": {
|
||||
"name": {
|
||||
"label": ""
|
||||
},
|
||||
"submit": ""
|
||||
"submit": "Vytvořit"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,13 +1,21 @@
|
||||
{
|
||||
"metaTitle": "Uživatelé",
|
||||
"pageTitle": "Správa uživatelů",
|
||||
"text": "",
|
||||
"buttons": {
|
||||
"create": ""
|
||||
"create": "Vytvořit"
|
||||
},
|
||||
"filter": {
|
||||
"roles": {
|
||||
"all": "",
|
||||
"normal": "",
|
||||
"admin": "",
|
||||
"owner": ""
|
||||
}
|
||||
},
|
||||
"table": {
|
||||
"header": {
|
||||
"user": ""
|
||||
"user": "Uživatel",
|
||||
"email": "E-mail"
|
||||
}
|
||||
},
|
||||
"tooltips": {
|
||||
|
||||
@@ -1,25 +1,25 @@
|
||||
{
|
||||
"metaTitle": "",
|
||||
"metaTitle": "Vytvořit uživatele",
|
||||
"steps": {
|
||||
"account": {
|
||||
"title": "",
|
||||
"title": "První krok",
|
||||
"text": "",
|
||||
"username": {
|
||||
"label": ""
|
||||
},
|
||||
"email": {
|
||||
"label": ""
|
||||
"label": "E-mail"
|
||||
}
|
||||
},
|
||||
"security": {
|
||||
"title": "",
|
||||
"title": "Druhý krok",
|
||||
"text": "",
|
||||
"password": {
|
||||
"label": ""
|
||||
}
|
||||
},
|
||||
"finish": {
|
||||
"title": "",
|
||||
"title": "Potvrzení",
|
||||
"text": "",
|
||||
"card": {
|
||||
"title": "",
|
||||
@@ -30,7 +30,7 @@
|
||||
"property": "",
|
||||
"value": "",
|
||||
"username": "",
|
||||
"email": "",
|
||||
"email": "E-mail",
|
||||
"password": ""
|
||||
},
|
||||
"notSet": "",
|
||||
|
||||
55
public/locales/cs/manage/users/edit.json
Normal file
55
public/locales/cs/manage/users/edit.json
Normal 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": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -20,11 +20,11 @@
|
||||
},
|
||||
"modals": {
|
||||
"create": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"title": "Vytvořit pozvánku",
|
||||
"description": "Po vypršení platnosti pozvánka přestane být platná a příjemce pozvánky si nebude moci vytvořit účet.",
|
||||
"form": {
|
||||
"expires": "",
|
||||
"submit": ""
|
||||
"expires": "Datum konce platnosti",
|
||||
"submit": "Vytvořit"
|
||||
}
|
||||
},
|
||||
"copy": {
|
||||
@@ -44,5 +44,5 @@
|
||||
"description": ""
|
||||
}
|
||||
},
|
||||
"noInvites": ""
|
||||
"noInvites": "Zatím zde nejsou žádné pozvánky."
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"descriptor": {
|
||||
"name": "",
|
||||
"description": "",
|
||||
"name": "Záložka",
|
||||
"description": "Zobrazí statický seznam textů nebo odkazů",
|
||||
"settings": {
|
||||
"title": "",
|
||||
"name": {
|
||||
@@ -35,7 +35,7 @@
|
||||
},
|
||||
"name": "",
|
||||
"url": "",
|
||||
"newTab": "",
|
||||
"newTab": "Otevřít na nové kartě",
|
||||
"hideHostname": "",
|
||||
"hideIcon": "",
|
||||
"delete": ""
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"descriptor": {
|
||||
"name": "",
|
||||
"description": "",
|
||||
"name": "Kalendář",
|
||||
"description": "Zobrazí kalendář s nadcházejícími vydáními z podporovaných integrací.",
|
||||
"settings": {
|
||||
"title": "",
|
||||
"radarrReleaseType": {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"descriptor": {
|
||||
"name": "",
|
||||
"description": "",
|
||||
"name": "Dash.",
|
||||
"description": "Zobrazuje grafy z externího Dash. Instance uvnitř Homarru.",
|
||||
"settings": {
|
||||
"title": "",
|
||||
"dashName": {
|
||||
@@ -82,7 +82,7 @@
|
||||
}
|
||||
},
|
||||
"card": {
|
||||
"title": "",
|
||||
"title": "Dash.",
|
||||
"errors": {
|
||||
"noService": "",
|
||||
"noInformation": "",
|
||||
|
||||
@@ -1,9 +1,16 @@
|
||||
{
|
||||
"descriptor": {
|
||||
"name": "",
|
||||
"description": "",
|
||||
"name": "Datum a čas",
|
||||
"description": "Zobrazuje aktuální datum a čas.",
|
||||
"settings": {
|
||||
"title": "",
|
||||
"timezone": {
|
||||
"label": "",
|
||||
"info": ""
|
||||
},
|
||||
"customTitle": {
|
||||
"label": ""
|
||||
},
|
||||
"display24HourFormat": {
|
||||
"label": ""
|
||||
},
|
||||
@@ -13,12 +20,6 @@
|
||||
"hide": ""
|
||||
}
|
||||
},
|
||||
"enableTimezone": {
|
||||
"label": ""
|
||||
},
|
||||
"timezoneLocation": {
|
||||
"label": ""
|
||||
},
|
||||
"titleState": {
|
||||
"label": "",
|
||||
"info": "",
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"descriptor": {
|
||||
"name": "",
|
||||
"description": ""
|
||||
"name": "Rychlost stahování",
|
||||
"description": "Zobrazuje rychlost stahování a odesílání z podporovaných integrací."
|
||||
},
|
||||
"card": {
|
||||
"table": {
|
||||
@@ -18,7 +18,7 @@
|
||||
}
|
||||
},
|
||||
"lineChart": {
|
||||
"title": "",
|
||||
"title": "Aktuální rychlost stahování",
|
||||
"download": "",
|
||||
"upload": "",
|
||||
"timeSpan": "",
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"descriptor": {
|
||||
"name": "",
|
||||
"description": "",
|
||||
"name": "Ovládání DNS hole",
|
||||
"description": "Ovládejte PiHole nebo AdGuard z plochy",
|
||||
"settings": {
|
||||
"title": "",
|
||||
"showToggleAllButtons": {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"descriptor": {
|
||||
"name": "",
|
||||
"description": "",
|
||||
"name": "Shrnutí DNS hole",
|
||||
"description": "Zobrazuje důležitá data ze služby PiHole nebo AdGuard",
|
||||
"settings": {
|
||||
"title": "",
|
||||
"usePiHoleColors": {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"descriptor": {
|
||||
"name": "",
|
||||
"description": "",
|
||||
"name": "iFrame",
|
||||
"description": "Vložte jakýkoli obsah z internetu. Některé webové stránky mohou omezit přístup.",
|
||||
"settings": {
|
||||
"title": "",
|
||||
"embedUrl": {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"descriptor": {
|
||||
"name": "",
|
||||
"description": "",
|
||||
"name": "Žádosti o média",
|
||||
"description": "Podívejte se na seznam všech požadavků na média z vaší instance Overseerr nebo Jellyseerr",
|
||||
"settings": {
|
||||
"title": "",
|
||||
"replaceLinksWithExternalHost": {
|
||||
@@ -14,7 +14,7 @@
|
||||
},
|
||||
"noRequests": "",
|
||||
"state": {
|
||||
"approved": "",
|
||||
"approved": "Schváleno",
|
||||
"pendingApproval": "",
|
||||
"declined": ""
|
||||
},
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"descriptor": {
|
||||
"name": "",
|
||||
"description": "",
|
||||
"name": "Statistiky požadavků na média",
|
||||
"description": "Statistiky vašich požadavků na média",
|
||||
"settings": {
|
||||
"title": "",
|
||||
"replaceLinksWithExternalHost": {
|
||||
@@ -13,15 +13,15 @@
|
||||
}
|
||||
},
|
||||
"mediaStats": {
|
||||
"title": "",
|
||||
"pending": "",
|
||||
"tvRequests": "",
|
||||
"movieRequests": "",
|
||||
"approved": "",
|
||||
"totalRequests": ""
|
||||
"title": "Statistiky médií",
|
||||
"pending": "Čeká na schválení",
|
||||
"tvRequests": "Požadavky seriálů",
|
||||
"movieRequests": "Požadavky filmů",
|
||||
"approved": "Již schváleno",
|
||||
"totalRequests": "Celkem"
|
||||
},
|
||||
"userStats": {
|
||||
"title": "",
|
||||
"requests": ""
|
||||
"title": "Top uživatelé",
|
||||
"requests": "Požadavků: {{number}}"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,18 +1,18 @@
|
||||
{
|
||||
"descriptor": {
|
||||
"name": "",
|
||||
"description": "",
|
||||
"name": "Mediální server",
|
||||
"description": "Interagujte se svým mediálním serverem Jellyfin nebo Plex",
|
||||
"settings": {
|
||||
"title": ""
|
||||
}
|
||||
},
|
||||
"loading": "",
|
||||
"loading": "Načítání streamů",
|
||||
"card": {
|
||||
"table": {
|
||||
"header": {
|
||||
"session": "",
|
||||
"user": "",
|
||||
"currentlyPlaying": ""
|
||||
"session": "Relace",
|
||||
"user": "Uživatel",
|
||||
"currentlyPlaying": "Právě přehráváno"
|
||||
}
|
||||
},
|
||||
"errors": {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"descriptor": {
|
||||
"name": "",
|
||||
"description": "",
|
||||
"name": "Zápisník",
|
||||
"description": "Interaktivní widget založený na Markdownu, do kterého si můžete zapisovat poznámky!",
|
||||
"settings": {
|
||||
"title": "",
|
||||
"showToolbar": {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"descriptor": {
|
||||
"name": "",
|
||||
"description": "",
|
||||
"name": "RSS Widget",
|
||||
"description": "RSS widget umožňuje zobrazit RSS kanály na vaší nástěnce.",
|
||||
"settings": {
|
||||
"title": "",
|
||||
"rssFeedUrl": {
|
||||
|
||||
17
public/locales/cs/modules/smart-home/entity-state.json
Normal file
17
public/locales/cs/modules/smart-home/entity-state.json
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"entityNotFound": "",
|
||||
"descriptor": {
|
||||
"name": "",
|
||||
"description": "",
|
||||
"settings": {
|
||||
"title": "",
|
||||
"entityId": {
|
||||
"label": "",
|
||||
"info": ""
|
||||
},
|
||||
"displayName": {
|
||||
"label": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"descriptor": {
|
||||
"name": "",
|
||||
"description": "",
|
||||
"name": "Torrenty",
|
||||
"description": "Zobrazuje seznam torrentů z podporovaných klientů Torrent.",
|
||||
"settings": {
|
||||
"title": "",
|
||||
"refreshInterval": {
|
||||
@@ -35,18 +35,28 @@
|
||||
"card": {
|
||||
"footer": {
|
||||
"error": "",
|
||||
"lastUpdated": "",
|
||||
"ratioGlobal": "",
|
||||
"ratioWithFilter": ""
|
||||
"lastUpdated": "Naposledy aktualizováno před {{time}}",
|
||||
"ratioGlobal": "Obecný poměr",
|
||||
"ratioWithFilter": "Filtrovaný poměr"
|
||||
},
|
||||
"table": {
|
||||
"header": {
|
||||
"isCompleted": "",
|
||||
"name": "",
|
||||
"dateAdded": "",
|
||||
"size": "",
|
||||
"download": "",
|
||||
"upload": "",
|
||||
"estimatedTimeOfArrival": "",
|
||||
"progress": ""
|
||||
"progress": "",
|
||||
"totalUploaded": "",
|
||||
"totalDownloaded": "",
|
||||
"ratio": "",
|
||||
"seeds": "",
|
||||
"peers": "",
|
||||
"label": "",
|
||||
"state": "",
|
||||
"stateMessage": ""
|
||||
},
|
||||
"item": {
|
||||
"text": ""
|
||||
@@ -57,7 +67,7 @@
|
||||
}
|
||||
},
|
||||
"lineChart": {
|
||||
"title": "",
|
||||
"title": "Aktuální rychlost stahování",
|
||||
"download": "",
|
||||
"upload": "",
|
||||
"timeSpan": "",
|
||||
@@ -75,8 +85,8 @@
|
||||
}
|
||||
},
|
||||
"loading": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
"title": "Načítání",
|
||||
"description": "Navazování spojení"
|
||||
},
|
||||
"popover": {
|
||||
"introductionPrefix": "",
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"descriptor": {
|
||||
"name": "",
|
||||
"description": ""
|
||||
"name": "Usenet",
|
||||
"description": "Umožňuje zobrazit a spravovat instanci Usenetu."
|
||||
},
|
||||
"card": {
|
||||
"errors": {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"descriptor": {
|
||||
"name": "",
|
||||
"description": "",
|
||||
"name": "Streamování videa",
|
||||
"description": "Vložte video stream nebo video z kamery nebo webové stránky",
|
||||
"settings": {
|
||||
"title": "",
|
||||
"FeedUrl": {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"descriptor": {
|
||||
"name": "",
|
||||
"description": "",
|
||||
"name": "Počasí",
|
||||
"description": "Zobrazuje aktuální informace o počasí na nastaveném místě.",
|
||||
"settings": {
|
||||
"title": "",
|
||||
"displayInFahrenheit": {
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
"description": "Upravte názvy, logo a PWA"
|
||||
},
|
||||
"appereance": {
|
||||
"name": "",
|
||||
"name": "Vzhled",
|
||||
"description": "Přizpůsobte pozadí, barvy a zobrazení aplikací"
|
||||
},
|
||||
"accessibility": {
|
||||
@@ -22,7 +22,7 @@
|
||||
"description": ""
|
||||
},
|
||||
"access": {
|
||||
"name": "",
|
||||
"name": "Oprávnění",
|
||||
"description": "Nastavte, kdo má přístup k Vaší ploše"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,10 +18,33 @@
|
||||
"background": {
|
||||
"label": "Pozadí"
|
||||
},
|
||||
"backgroundImageAttachment": {
|
||||
"label": "",
|
||||
"options": {
|
||||
"fixed": "",
|
||||
"scroll": ""
|
||||
}
|
||||
},
|
||||
"backgroundImageSize": {
|
||||
"label": "",
|
||||
"options": {
|
||||
"cover": "",
|
||||
"contain": ""
|
||||
}
|
||||
},
|
||||
"backgroundImageRepeat": {
|
||||
"label": "",
|
||||
"options": {
|
||||
"repeat": "",
|
||||
"no-repeat": "",
|
||||
"repeat-x": "",
|
||||
"repeat-y": ""
|
||||
}
|
||||
},
|
||||
"customCSS": {
|
||||
"label": "Vlastní CSS",
|
||||
"description": "Dále si můžete přizpůsobit ovládací panel pomocí CSS, doporučujeme pouze zkušeným uživatelům",
|
||||
"placeholder": "",
|
||||
"applying": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,13 +7,13 @@
|
||||
},
|
||||
"modals": {
|
||||
"selectBoard": {
|
||||
"title": "",
|
||||
"text": "",
|
||||
"title": "Vyberte plochu",
|
||||
"text": "Vyberte plochu, na kterou chcete přidat aplikace pro vybrané Docker kontejnery.",
|
||||
"form": {
|
||||
"board": {
|
||||
"label": ""
|
||||
"label": "Plocha"
|
||||
},
|
||||
"submit": ""
|
||||
"submit": "Přidat aplikace"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@@ -1,48 +1,48 @@
|
||||
{
|
||||
"metaTitle": "",
|
||||
"pageTitle": "",
|
||||
"metaTitle": "Předvolby",
|
||||
"pageTitle": "Vaše předvolby",
|
||||
"boards": {
|
||||
"defaultBoard": {
|
||||
"label": ""
|
||||
"label": "Výchozí plocha"
|
||||
}
|
||||
},
|
||||
"accessibility": {
|
||||
"title": "",
|
||||
"disablePulse": {
|
||||
"label": "",
|
||||
"description": ""
|
||||
"label": "Vypnout pulsování pingu",
|
||||
"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": {
|
||||
"label": "",
|
||||
"description": ""
|
||||
"label": "Nahraďte tečky pingu ikonami",
|
||||
"description": "Pro barvoslepé uživatele mohou být body pingu nerozpoznatelné. Toto nahradí indikátory ikonami"
|
||||
}
|
||||
},
|
||||
"localization": {
|
||||
"language": {
|
||||
"label": ""
|
||||
"label": "Jazyk"
|
||||
},
|
||||
"firstDayOfWeek": {
|
||||
"label": "",
|
||||
"label": "První den v týdnu",
|
||||
"options": {
|
||||
"monday": "",
|
||||
"saturday": "",
|
||||
"sunday": ""
|
||||
"monday": "Pondělí",
|
||||
"saturday": "Sobota",
|
||||
"sunday": "Neděle"
|
||||
}
|
||||
}
|
||||
},
|
||||
"searchEngine": {
|
||||
"title": "",
|
||||
"custom": "",
|
||||
"title": "Vyhledávač",
|
||||
"custom": "Vlastní",
|
||||
"newTab": {
|
||||
"label": ""
|
||||
"label": "Otevřít výsledky hledání v nové záložce"
|
||||
},
|
||||
"autoFocus": {
|
||||
"label": "",
|
||||
"description": ""
|
||||
"label": "Zaměřit na vyhledávací panel po načtení stránky.",
|
||||
"description": "Při přechodu na stránky plochy se automaticky zaměří vyhledávací panel. Funguje pouze na stolních počítačích."
|
||||
},
|
||||
"template": {
|
||||
"label": "",
|
||||
"description": ""
|
||||
"label": "Adresa URL dotazu",
|
||||
"description": "Použijte %s jako zástupný znak pro dotaz"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -51,5 +51,7 @@
|
||||
"attributes": {
|
||||
"width": "Bredde",
|
||||
"height": "Højde"
|
||||
}
|
||||
},
|
||||
"public": "Offentlig",
|
||||
"restricted": "Begrænset"
|
||||
}
|
||||
@@ -1,25 +1,26 @@
|
||||
{
|
||||
"modal": {
|
||||
"title": "Tilføj et nyt felt",
|
||||
"text": "Felter er det vigtigste element i Homarr. De bruges til at vise dine apps og andre oplysninger. Du kan tilføje så mange felter, som du ønsker."
|
||||
},
|
||||
"widgetDescription": "Widgets interagerer med dine apps for at give dig mere kontrol over dine programmer. De kræver normalt nogle få konfigurationer, før de kan bruges.",
|
||||
"goBack": "Gå tilbage til det forrige trin",
|
||||
"actionIcon": {
|
||||
"tooltip": "Tilføj et felt"
|
||||
},
|
||||
"apps": "Apps",
|
||||
"app": {
|
||||
"defaultName": "Din app"
|
||||
},
|
||||
"widgets": "Widgets",
|
||||
"categories": "Kategorier",
|
||||
"category": {
|
||||
"newName": "Navn på ny kategori",
|
||||
"defaultName": "Ny kategori",
|
||||
"created": {
|
||||
"title": "Kategorien er oprettet",
|
||||
"message": "Kategorien \"{{name}}\" er blevet oprettet"
|
||||
}
|
||||
"modal": {
|
||||
"title": "Tilføj et nyt felt",
|
||||
"text": "Felter er det vigtigste element i Homarr. De bruges til at vise dine apps og andre oplysninger. Du kan tilføje så mange felter, som du ønsker."
|
||||
},
|
||||
"widgetDescription": "Widgets interagerer med dine apps for at give dig mere kontrol over dine programmer. De kræver normalt nogle få konfigurationer, før de kan bruges.",
|
||||
"goBack": "Gå tilbage til det forrige trin",
|
||||
"actionIcon": {
|
||||
"tooltip": "Tilføj et felt"
|
||||
},
|
||||
"apps": "Apps",
|
||||
"app": {
|
||||
"defaultName": "Din app"
|
||||
},
|
||||
"widgets": "Widgets",
|
||||
"categories": "Kategorier",
|
||||
"category": {
|
||||
"newName": "Navn på ny kategori",
|
||||
"defaultName": "Ny kategori",
|
||||
"created": {
|
||||
"title": "Kategorien er oprettet",
|
||||
"message": "Kategorien \"{{name}}\" er blevet oprettet"
|
||||
}
|
||||
},
|
||||
"importFromDocker": "Importer fra docker"
|
||||
}
|
||||
|
||||
@@ -1,7 +1,4 @@
|
||||
{
|
||||
"experimentalNote": {
|
||||
"label": "Dette er en eksperimentel funktion i Homarr. Rapporter venligst eventuelle problemer på <gh>GitHub</gh> eller <dc>Discord</dc>."
|
||||
},
|
||||
"search": {
|
||||
"label": "Søg",
|
||||
"engines": {
|
||||
|
||||
@@ -1,13 +1,21 @@
|
||||
{
|
||||
"metaTitle": "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": {
|
||||
"create": "Opret"
|
||||
},
|
||||
"filter": {
|
||||
"roles": {
|
||||
"all": "Alle",
|
||||
"normal": "Normal",
|
||||
"admin": "Admin",
|
||||
"owner": "Ejer"
|
||||
}
|
||||
},
|
||||
"table": {
|
||||
"header": {
|
||||
"user": "Bruger"
|
||||
"user": "Bruger",
|
||||
"email": "E-mail"
|
||||
}
|
||||
},
|
||||
"tooltips": {
|
||||
|
||||
55
public/locales/da/manage/users/edit.json
Normal file
55
public/locales/da/manage/users/edit.json
Normal 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."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -4,6 +4,13 @@
|
||||
"description": "Viser aktuel dag og klokkeslæt.",
|
||||
"settings": {
|
||||
"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": {
|
||||
"label": "Vis fuld tid (24-timer)"
|
||||
},
|
||||
@@ -13,18 +20,12 @@
|
||||
"hide": "Skjul dato"
|
||||
}
|
||||
},
|
||||
"enableTimezone": {
|
||||
"label": "Vis en brugerdefineret tidszone"
|
||||
},
|
||||
"timezoneLocation": {
|
||||
"label": "Tidszone Lokation"
|
||||
},
|
||||
"titleState": {
|
||||
"label": "Byens 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.",
|
||||
"label": "Urets titel",
|
||||
"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": {
|
||||
"both": "By og tidszone",
|
||||
"city": "Kun by",
|
||||
"both": "Titel og tidszone",
|
||||
"city": "Kun titel",
|
||||
"none": "Intet"
|
||||
}
|
||||
}
|
||||
|
||||
17
public/locales/da/modules/smart-home/entity-state.json
Normal file
17
public/locales/da/modules/smart-home/entity-state.json
Normal 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"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -41,12 +41,22 @@
|
||||
},
|
||||
"table": {
|
||||
"header": {
|
||||
"isCompleted": "Downloader",
|
||||
"name": "Navn",
|
||||
"dateAdded": "Tilføjet den",
|
||||
"size": "Størrelse",
|
||||
"download": "Down",
|
||||
"upload": "Up",
|
||||
"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": {
|
||||
"text": "Administreret af {{appName}}, {{ratio}} ratio"
|
||||
|
||||
@@ -18,10 +18,33 @@
|
||||
"background": {
|
||||
"label": "Baggrund"
|
||||
},
|
||||
"backgroundImageAttachment": {
|
||||
"label": "Vedhæftning af baggrundsbillede",
|
||||
"options": {
|
||||
"fixed": "Fast - Baggrunden forbliver i samme position (anbefales)",
|
||||
"scroll": "Scroll - Baggrunden scroller med musen"
|
||||
}
|
||||
},
|
||||
"backgroundImageSize": {
|
||||
"label": "Baggrundsbilledets størrelse",
|
||||
"options": {
|
||||
"cover": "Cover - Skalerer billedet så lille som muligt for at dække hele vinduet ved at beskære for overskydende materiale. (anbefalede)",
|
||||
"contain": "Indehold - Skalerer billedet så stort som muligt i dets ramme uden at beskære eller strække billedet."
|
||||
}
|
||||
},
|
||||
"backgroundImageRepeat": {
|
||||
"label": "Vedhæftning af baggrundsbillede",
|
||||
"options": {
|
||||
"repeat": "Gentag - Billedet gentages så meget som nødvendigt for at dække hele baggrundsbilledets maleområde.",
|
||||
"no-repeat": "Ingen gentagelse - Billedet gentages ikke og fylder muligvis ikke hele rummet (anbefales)",
|
||||
"repeat-x": "Gentag X - Samme som 'Gentag' men kun på vandret akse.",
|
||||
"repeat-y": "Gentag Y - Samme som 'Gentag' men kun på lodret akse."
|
||||
}
|
||||
},
|
||||
"customCSS": {
|
||||
"label": "Tilpasset CSS",
|
||||
"description": "Yderligere, tilpasse dit dashboard ved hjælp af CSS, anbefales kun til erfarne brugere",
|
||||
"placeholder": "Brugerdefineret CSS vil blive anvendt sidst",
|
||||
"applying": "Anvender CSS..."
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
"title": "Docker",
|
||||
"alerts": {
|
||||
"notConfigured": {
|
||||
"text": "Din Homarr-instans har ikke Docker konfigureret, eller den har fejlet i at hente containere. Se i dokumentationen, hvordan du sætter integrationen op."
|
||||
"text": "Din Homarr-instans har ikke Docker konfigureret, eller den har ikke kunne hente containere. Se venligst dokumentationen for, hvordan du opsætter integrationen."
|
||||
}
|
||||
},
|
||||
"modals": {
|
||||
|
||||
@@ -51,5 +51,7 @@
|
||||
"attributes": {
|
||||
"width": "Breite",
|
||||
"height": "Höhe"
|
||||
}
|
||||
},
|
||||
"public": "Öffentlich sichtbar",
|
||||
"restricted": "Eingeschränkt"
|
||||
}
|
||||
@@ -1,25 +1,26 @@
|
||||
{
|
||||
"modal": {
|
||||
"title": "Neue Kachel hinzufügen",
|
||||
"text": "Kacheln sind das Hauptelement von Homarr. Sie werden verwendet, um Ihre Anwendungen und andere Informationen anzuzeigen. Sie können so viele Kacheln hinzufügen, wie Sie möchten."
|
||||
},
|
||||
"widgetDescription": "Widgets interagieren mit Ihren Anwendungen, um Ihnen mehr Kontrolle über sie zu geben. Sie erfordern in der Regel eine zusätzliche Konfiguration vor der Verwendung.",
|
||||
"goBack": "Zurück auf die vorherige Seite",
|
||||
"actionIcon": {
|
||||
"tooltip": "Kachel hinzufügen"
|
||||
},
|
||||
"apps": "Apps",
|
||||
"app": {
|
||||
"defaultName": "Ihre Apps"
|
||||
},
|
||||
"widgets": "Widgets",
|
||||
"categories": "Kategorien",
|
||||
"category": {
|
||||
"newName": "Name der Kategorie",
|
||||
"defaultName": "Neue Kategorie",
|
||||
"created": {
|
||||
"title": "Kategorie erstellt",
|
||||
"message": "Die Kategorie \"{{name}}\" wurde erstellt"
|
||||
}
|
||||
"modal": {
|
||||
"title": "Neue Kachel hinzufügen",
|
||||
"text": "Kacheln sind das Hauptelement von Homarr. Sie werden verwendet, um Ihre Anwendungen und andere Informationen anzuzeigen. Sie können so viele Kacheln hinzufügen, wie Sie möchten."
|
||||
},
|
||||
"widgetDescription": "Widgets interagieren mit Ihren Anwendungen, um Ihnen mehr Kontrolle über sie zu geben. Sie erfordern in der Regel eine zusätzliche Konfiguration vor der Verwendung.",
|
||||
"goBack": "Zurück auf die vorherige Seite",
|
||||
"actionIcon": {
|
||||
"tooltip": "Kachel hinzufügen"
|
||||
},
|
||||
"apps": "Apps",
|
||||
"app": {
|
||||
"defaultName": "Ihre Apps"
|
||||
},
|
||||
"widgets": "Widgets",
|
||||
"categories": "Kategorien",
|
||||
"category": {
|
||||
"newName": "Name der Kategorie",
|
||||
"defaultName": "Neue Kategorie",
|
||||
"created": {
|
||||
"title": "Kategorie erstellt",
|
||||
"message": "Die Kategorie \"{{name}}\" wurde erstellt"
|
||||
}
|
||||
},
|
||||
"importFromDocker": "Aus Docker importieren"
|
||||
}
|
||||
|
||||
@@ -1,7 +1,4 @@
|
||||
{
|
||||
"experimentalNote": {
|
||||
"label": "Dies ist eine experimentelle Funktion von Homarr. Bitte melde Probleme auf <gh>GitHub</gh> oder <dc>Discord</dc>."
|
||||
},
|
||||
"search": {
|
||||
"label": "Suchen",
|
||||
"engines": {
|
||||
|
||||
@@ -1,13 +1,21 @@
|
||||
{
|
||||
"metaTitle": "Benutzer",
|
||||
"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": {
|
||||
"create": "Erstellen"
|
||||
},
|
||||
"filter": {
|
||||
"roles": {
|
||||
"all": "Alle",
|
||||
"normal": "Normal",
|
||||
"admin": "Admin",
|
||||
"owner": "Eigentümer"
|
||||
}
|
||||
},
|
||||
"table": {
|
||||
"header": {
|
||||
"user": "Benutzer"
|
||||
"user": "Benutzer",
|
||||
"email": "E-Mail"
|
||||
}
|
||||
},
|
||||
"tooltips": {
|
||||
|
||||
55
public/locales/de/manage/users/edit.json
Normal file
55
public/locales/de/manage/users/edit.json
Normal 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."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -4,6 +4,13 @@
|
||||
"description": "Zeigt das aktuelle Datum und die Uhrzeit an.",
|
||||
"settings": {
|
||||
"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": {
|
||||
"label": "24-Stunden Format"
|
||||
},
|
||||
@@ -13,18 +20,12 @@
|
||||
"hide": "Daten ausblenden"
|
||||
}
|
||||
},
|
||||
"enableTimezone": {
|
||||
"label": "Benutzerdefinierte Zeitzone anzeigen"
|
||||
},
|
||||
"timezoneLocation": {
|
||||
"label": "Standort der Zeitzone"
|
||||
},
|
||||
"titleState": {
|
||||
"label": "Stadt",
|
||||
"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.",
|
||||
"label": "Titel der Uhr",
|
||||
"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": {
|
||||
"both": "Stadt und Zeitzone",
|
||||
"city": "Nur Stadt",
|
||||
"both": "Name und Zeitzone",
|
||||
"city": "Nur Name",
|
||||
"none": "Keine"
|
||||
}
|
||||
}
|
||||
|
||||
17
public/locales/de/modules/smart-home/entity-state.json
Normal file
17
public/locales/de/modules/smart-home/entity-state.json
Normal 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"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -41,12 +41,22 @@
|
||||
},
|
||||
"table": {
|
||||
"header": {
|
||||
"isCompleted": "Herunterladen",
|
||||
"name": "Name",
|
||||
"dateAdded": "Hinzugefügt am",
|
||||
"size": "Größe",
|
||||
"download": "Down",
|
||||
"upload": "Up",
|
||||
"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": {
|
||||
"text": "Verwaltet von {{appName}}, {{ratio}} ratio"
|
||||
|
||||
@@ -18,10 +18,33 @@
|
||||
"background": {
|
||||
"label": "Hintergrund"
|
||||
},
|
||||
"backgroundImageAttachment": {
|
||||
"label": "Anhang des Hintergrundbildes",
|
||||
"options": {
|
||||
"fixed": "Fixiert - Hintergrund bleibt in der gleichen Position (empfohlen)",
|
||||
"scroll": "Scrollen – Scrollt mit der Maus im Hintergrund"
|
||||
}
|
||||
},
|
||||
"backgroundImageSize": {
|
||||
"label": "Hintergrundbild-Größe",
|
||||
"options": {
|
||||
"cover": "Abdecken - Skaliert das Bild so klein wie möglich, um das gesamte Fenster abzudecken, indem überschüssiger Platz abgeschnitten wird. (empfohlen)",
|
||||
"contain": "Einschließen – Skaliert das Bild innerhalb seines Containers so groß wie möglich, ohne das Bild zu beschneiden oder zu strecken."
|
||||
}
|
||||
},
|
||||
"backgroundImageRepeat": {
|
||||
"label": "Anhang des Hintergrundbildes",
|
||||
"options": {
|
||||
"repeat": "Wiederholen - Das Bild wird so oft wiederholt, bis es den gesamten Bereich des Hintergrundbildes abdeckt.",
|
||||
"no-repeat": "Keine Wiederholung – Das Bild wird nicht wiederholt und füllt möglicherweise nicht den gesamten Raum aus (empfohlen)",
|
||||
"repeat-x": "Wiederholen X – Wie „Wiederholen“, jedoch nur auf der horizontalen Achse.",
|
||||
"repeat-y": "Wiederholen Y – Wie „Wiederholen“, jedoch nur auf der vertikalen Achse."
|
||||
}
|
||||
},
|
||||
"customCSS": {
|
||||
"label": "Benutzerdefiniertes CSS",
|
||||
"description": "Außerdem können Sie Ihr Dashboard mittels CSS anpassen, dies wird nur für erfahrene Benutzer empfohlen",
|
||||
"placeholder": "Benutzerdefiniertes CSS wird zuletzt angewendet",
|
||||
"applying": "CSS wird übernommen..."
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
"title": "Docker",
|
||||
"alerts": {
|
||||
"notConfigured": {
|
||||
"text": "Auf Ihrer Homarr-Instanz ist Docker nicht konfiguriert oder es ist nicht möglich, Container zu erkennen. Bitte lesen Sie in der Dokumentation nach, wie Sie diese Integration einrichten können."
|
||||
"text": "Auf Ihrer Homarr-Instanz ist Docker nicht konfiguriert oder es war nicht möglich, Container abzurufen. Bitte lesen Sie in der Dokumentation nach, wie Sie diese Integration einrichten können."
|
||||
}
|
||||
},
|
||||
"modals": {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"save": "Αποθήκευση",
|
||||
"apply": "",
|
||||
"insert": "",
|
||||
"apply": "Εφαρμογή",
|
||||
"insert": "Εισαγωγή",
|
||||
"about": "Σχετικά",
|
||||
"cancel": "Ακύρωση",
|
||||
"close": "Κλείσιμο",
|
||||
@@ -45,11 +45,13 @@
|
||||
"seeMore": "Δείτε περισσότερα...",
|
||||
"position": {
|
||||
"left": "Αριστερά",
|
||||
"center": "",
|
||||
"center": "Κέντρο",
|
||||
"right": "Δεξιά"
|
||||
},
|
||||
"attributes": {
|
||||
"width": "Πλάτος",
|
||||
"height": "Ύψος"
|
||||
}
|
||||
},
|
||||
"public": "Δημόσιο",
|
||||
"restricted": "Περιορισμένη πρόσβαση"
|
||||
}
|
||||
@@ -1,25 +1,26 @@
|
||||
{
|
||||
"modal": {
|
||||
"title": "Προσθήκη νέου πλακιδίου",
|
||||
"text": "Τα πλακάκια είναι το κύριο στοιχείο του Homarr. Χρησιμοποιούνται για την εμφάνιση των εφαρμογών σας και άλλων πληροφοριών. Μπορείτε να προσθέσετε όσα πλακίδια θέλετε."
|
||||
},
|
||||
"widgetDescription": "Τα widgets αλληλεπιδρούν με τις εφαρμογές σας, για να σας παρέχουν περισσότερο έλεγχο των εφαρμογών σας. Συνήθως απαιτούν πρόσθετες ρυθμίσεις πριν από τη χρήση.",
|
||||
"goBack": "Επιστροφή στο προηγούμενο βήμα",
|
||||
"actionIcon": {
|
||||
"tooltip": "Προσθέστε ένα πλακίδιο"
|
||||
},
|
||||
"apps": "Εφαρμογές",
|
||||
"app": {
|
||||
"defaultName": "Η Εφαρμογή Σας"
|
||||
},
|
||||
"widgets": "Widgets",
|
||||
"categories": "Κατηγορίες",
|
||||
"category": {
|
||||
"newName": "Όνομα νέας κατηγορίας",
|
||||
"defaultName": "Νέα Κατηγορία",
|
||||
"created": {
|
||||
"title": "Η κατηγορία δημιουργήθηκε",
|
||||
"message": "Η κατηγορία \"{{name}}\" έχει δημιουργηθεί"
|
||||
}
|
||||
"modal": {
|
||||
"title": "Προσθήκη νέου πλακιδίου",
|
||||
"text": "Τα πλακάκια είναι το κύριο στοιχείο του Homarr. Χρησιμοποιούνται για την εμφάνιση των εφαρμογών σας και άλλων πληροφοριών. Μπορείτε να προσθέσετε όσα πλακίδια θέλετε."
|
||||
},
|
||||
"widgetDescription": "Τα widgets αλληλεπιδρούν με τις εφαρμογές σας, για να σας παρέχουν περισσότερο έλεγχο των εφαρμογών σας. Συνήθως απαιτούν πρόσθετες ρυθμίσεις πριν από τη χρήση.",
|
||||
"goBack": "Επιστροφή στο προηγούμενο βήμα",
|
||||
"actionIcon": {
|
||||
"tooltip": "Προσθέστε ένα πλακίδιο"
|
||||
},
|
||||
"apps": "Εφαρμογές",
|
||||
"app": {
|
||||
"defaultName": "Η Εφαρμογή Σας"
|
||||
},
|
||||
"widgets": "Widgets",
|
||||
"categories": "Κατηγορίες",
|
||||
"category": {
|
||||
"newName": "Όνομα νέας κατηγορίας",
|
||||
"defaultName": "Νέα Κατηγορία",
|
||||
"created": {
|
||||
"title": "Η κατηγορία δημιουργήθηκε",
|
||||
"message": "Η κατηγορία \"{{name}}\" έχει δημιουργηθεί"
|
||||
}
|
||||
},
|
||||
"importFromDocker": ""
|
||||
}
|
||||
|
||||
@@ -1,7 +1,4 @@
|
||||
{
|
||||
"experimentalNote": {
|
||||
"label": "Αυτή είναι μια πειραματική λειτουργία του Homarr. Αναφέρετε τυχόν προβλήματα στο <gh>GitHub</gh> ή στο <dc>Discord</dc>."
|
||||
},
|
||||
"search": {
|
||||
"label": "Αναζήτηση",
|
||||
"engines": {
|
||||
|
||||
@@ -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": "Εστίαση στο πλαίσιο αναζήτησης",
|
||||
|
||||
@@ -1,13 +1,21 @@
|
||||
{
|
||||
"metaTitle": "Χρήστες",
|
||||
"pageTitle": "Διαχείριση χρηστών",
|
||||
"text": "Χρησιμοποιώντας τους χρήστες, μπορείτε να ρυθμίσετε ποιος μπορεί να επεξεργάζεται τους πίνακές σας. Οι μελλοντικές εκδόσεις του Homarr θα έχουν ακόμα πιο λεπτομερή έλεγχο των δικαιωμάτων και των πινάκων.",
|
||||
"buttons": {
|
||||
"create": "Δημιουργία"
|
||||
},
|
||||
"filter": {
|
||||
"roles": {
|
||||
"all": "",
|
||||
"normal": "",
|
||||
"admin": "",
|
||||
"owner": ""
|
||||
}
|
||||
},
|
||||
"table": {
|
||||
"header": {
|
||||
"user": "Χρήστης"
|
||||
"user": "Χρήστης",
|
||||
"email": "E-Mail"
|
||||
}
|
||||
},
|
||||
"tooltips": {
|
||||
|
||||
55
public/locales/el/manage/users/edit.json
Normal file
55
public/locales/el/manage/users/edit.json
Normal 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": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -4,6 +4,13 @@
|
||||
"description": "Εμφανίζει την τρέχουσα ημερομηνία και ώρα.",
|
||||
"settings": {
|
||||
"title": "Ρυθμίσεις για το widget ημερομηνίας και ώρας",
|
||||
"timezone": {
|
||||
"label": "",
|
||||
"info": ""
|
||||
},
|
||||
"customTitle": {
|
||||
"label": ""
|
||||
},
|
||||
"display24HourFormat": {
|
||||
"label": "Εμφάνιση πλήρης ώρας(24-ώρο)"
|
||||
},
|
||||
@@ -13,18 +20,12 @@
|
||||
"hide": "Απόκρυψη Ημερομηνίας"
|
||||
}
|
||||
},
|
||||
"enableTimezone": {
|
||||
"label": "Εμφάνιση προσαρμοσμένης ζώνης ώρας"
|
||||
},
|
||||
"timezoneLocation": {
|
||||
"label": "Τοποθεσία Ζώνης Ώρας"
|
||||
},
|
||||
"titleState": {
|
||||
"label": "Τίτλος πόλης",
|
||||
"info": "Σε περίπτωση που ενεργοποιήσετε την επιλογή Ζώνη Ώρας, μπορεί να εμφανιστεί το όνομα της πόλης και ο κωδικός ζώνης ώρας.<br/>Μπορείτε επίσης να δείξετε την πόλη μόνο ή ακόμη και να μη δείξετε τίποτα.",
|
||||
"label": "",
|
||||
"info": "",
|
||||
"data": {
|
||||
"both": "Πόλη και ζώνη ώρας",
|
||||
"city": "Πόλη μόνο",
|
||||
"both": "",
|
||||
"city": "",
|
||||
"none": "Κανένα"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,8 +21,8 @@
|
||||
"metrics": {
|
||||
"domainsOnAdlist": "Domains σε λίστες διαφημίσεων",
|
||||
"queriesToday": "Σημερινά queries",
|
||||
"queriesBlockedTodayPercentage": "",
|
||||
"queriesBlockedToday": ""
|
||||
"queriesBlockedTodayPercentage": "Σημερινοί αποκλεισμοί",
|
||||
"queriesBlockedToday": "Σημερινοί αποκλεισμοί"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
"label": "Εμφάνιση γραμμής εργαλείων για να σας βοηθήσει να γράψετε σημάνσεις"
|
||||
},
|
||||
"allowReadOnlyCheck": {
|
||||
"label": ""
|
||||
"label": "Να επιτρέπεται η επιλογή σε λειτουργία μόνο ανάγνωσης"
|
||||
},
|
||||
"content": {
|
||||
"label": "Το περιεχόμενο του σημειωματάριου"
|
||||
@@ -17,43 +17,43 @@
|
||||
},
|
||||
"card": {
|
||||
"controls": {
|
||||
"bold": "",
|
||||
"italic": "",
|
||||
"strikethrough": "",
|
||||
"underline": "",
|
||||
"colorText": "",
|
||||
"colorHighlight": "",
|
||||
"code": "",
|
||||
"clear": "",
|
||||
"heading": "",
|
||||
"align": "",
|
||||
"blockquote": "",
|
||||
"horizontalLine": "",
|
||||
"bulletList": "",
|
||||
"orderedList": "",
|
||||
"checkList": "",
|
||||
"increaseIndent": "",
|
||||
"decreaseIndent": "",
|
||||
"link": "",
|
||||
"unlink": "",
|
||||
"image": "",
|
||||
"addTable": "",
|
||||
"deleteTable": "",
|
||||
"colorCell": "",
|
||||
"mergeCell": "",
|
||||
"addColumnLeft": "",
|
||||
"addColumnRight": "",
|
||||
"deleteColumn": "",
|
||||
"addRowTop": "",
|
||||
"addRowBelow": "",
|
||||
"deleteRow": ""
|
||||
"bold": "Έντονη γραφή",
|
||||
"italic": "Πλάγια γραφή",
|
||||
"strikethrough": "Διαγραμμισμένο Κείμενο",
|
||||
"underline": "Υπογραμμισμένο Κείμενο",
|
||||
"colorText": "Έγχρωμο κείμενο",
|
||||
"colorHighlight": "Έγχρωμο κείμενο επισήμανσης",
|
||||
"code": "Κωδικός",
|
||||
"clear": "Εκκαθάριση μορφοποίησης",
|
||||
"heading": "Επικεφαλίδα {{level}}",
|
||||
"align": "Στοίχιση κειμένου: {{position}}",
|
||||
"blockquote": "Μπλοκ κειμένου παράθεσης",
|
||||
"horizontalLine": "Οριζόντια γραμμή",
|
||||
"bulletList": "Λίστα με κουκκίδες",
|
||||
"orderedList": "Ταξινομημένη λίστα",
|
||||
"checkList": "Λίστα ελέγχου",
|
||||
"increaseIndent": "Αύξηση εσοχής",
|
||||
"decreaseIndent": "Μείωση εσοχής",
|
||||
"link": "Σύνδεσμος",
|
||||
"unlink": "Αφαίρεση συνδέσμου",
|
||||
"image": "Ενσωμάτωση εικόνας",
|
||||
"addTable": "Προσθήκη πίνακα",
|
||||
"deleteTable": "Διαγραφή πίνακα",
|
||||
"colorCell": "Χρώμα κελιού",
|
||||
"mergeCell": "Εναλλαγή συγχώνευσης κελιού",
|
||||
"addColumnLeft": "Προσθήκη στήλης πριν",
|
||||
"addColumnRight": "Προσθήκη στήλης μετά",
|
||||
"deleteColumn": "Διαγραφή στήλης",
|
||||
"addRowTop": "Προσθήκη γραμμής πριν",
|
||||
"addRowBelow": "Προσθήκη γραμμής μετά",
|
||||
"deleteRow": "Διαγραφή γραμμής"
|
||||
},
|
||||
"modals": {
|
||||
"clearColor": "",
|
||||
"source": "",
|
||||
"widthPlaceholder": "",
|
||||
"columns": "",
|
||||
"rows": ""
|
||||
"clearColor": "Καθαρισμός χρώματος",
|
||||
"source": "Πηγή",
|
||||
"widthPlaceholder": "Τιμή σε % ή εικονοστοιχεία",
|
||||
"columns": "Στήλες",
|
||||
"rows": "Γραμμές"
|
||||
}
|
||||
}
|
||||
}
|
||||
17
public/locales/el/modules/smart-home/entity-state.json
Normal file
17
public/locales/el/modules/smart-home/entity-state.json
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"entityNotFound": "Η οντότητα δε βρέθηκε",
|
||||
"descriptor": {
|
||||
"name": "Οντότητα Home Assistant",
|
||||
"description": "Τρέχουσα κατάσταση μιας οντότητας στο Home Assistant",
|
||||
"settings": {
|
||||
"title": "Κατάσταση οντότητας",
|
||||
"entityId": {
|
||||
"label": "Αναγνωριστικό οντότητας",
|
||||
"info": "Μοναδικό αναγνωριστικό οντότητας στο Home Assistant. Αντιγράψτε κάνοντας κλικ στην οντότητα > Κάντε κλικ στο εικονίδιο με το γρανάζι > Κάντε κλικ στο κουμπί αντιγραφής στο 'Αναγνωριστικό οντότητας'. Ορισμένες προσαρμοσμένες οντότητες ενδέχεται να μην υποστηρίζονται."
|
||||
},
|
||||
"displayName": {
|
||||
"label": "Εμφανιζόμενο όνομα"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user