Compare commits
157 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1cc4ae5c03 | ||
|
|
4fa51821ef | ||
|
|
4bafe6bfe7 | ||
|
|
184aa5eca6 | ||
|
|
a9df79642d | ||
|
|
e23e25890a | ||
|
|
28bd849af7 | ||
|
|
918585c3e2 | ||
|
|
0906420584 | ||
|
|
18bd9c856d | ||
|
|
93379145ac | ||
|
|
9c81d34d66 | ||
|
|
b51fcdb342 | ||
|
|
db2501633d | ||
|
|
5cd940f3cc | ||
|
|
1bc19e7857 | ||
|
|
83e3800ddf | ||
|
|
34ef216f3f | ||
|
|
46a57c1cf2 | ||
|
|
78527cb375 | ||
|
|
508f687491 | ||
|
|
9a8ea9e1fe | ||
|
|
b1ae5f700e | ||
|
|
f0a67d9a29 | ||
|
|
5d113ea280 | ||
|
|
d45ae5fab9 | ||
|
|
02249d20c2 | ||
|
|
cefa0d8fde | ||
|
|
4933b4f60d | ||
|
|
a60053e6c4 | ||
|
|
6756838d5f | ||
|
|
74fe7a7a28 | ||
|
|
824f4b8acc | ||
|
|
a6ea9ac333 | ||
|
|
a87bda7810 | ||
|
|
a8f00f5242 | ||
|
|
6268db182e | ||
|
|
6f077f1c5e | ||
|
|
ff21033b0c | ||
|
|
6fdf1dfaa8 | ||
|
|
f1e0b9236c | ||
|
|
4da75134ed | ||
|
|
957ba4e058 | ||
|
|
732ef95bd9 | ||
|
|
7fb8a18a1e | ||
|
|
0dc16977a5 | ||
|
|
ffc9387edb | ||
|
|
b911e8b56f | ||
|
|
52ca28d0ec | ||
|
|
684ce37f4d | ||
|
|
5bae5bf04d | ||
|
|
c701f723cf | ||
|
|
33da630db5 | ||
|
|
e57af4ae10 | ||
|
|
c7992260f0 | ||
|
|
6717bcf8b4 | ||
|
|
60bca7412c | ||
|
|
bd280d171b | ||
|
|
0089d396c4 | ||
|
|
c4669ca516 | ||
|
|
35e8c76120 | ||
|
|
6d6750c665 | ||
|
|
209119f14c | ||
|
|
a99555c1d0 | ||
|
|
e208693806 | ||
|
|
514d4a145d | ||
|
|
c1d0299c40 | ||
|
|
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 | ||
|
|
dfcb899013 | ||
|
|
5522abdfb6 | ||
|
|
312e2c8297 | ||
|
|
7f46fafbb9 | ||
|
|
5a8a378a2e | ||
|
|
fe63c03372 | ||
|
|
c88cd3c05e | ||
|
|
eadfa4a10f | ||
|
|
5aefd0962f | ||
|
|
da7c111438 | ||
|
|
669d311b0c | ||
|
|
228c51299b | ||
|
|
57975f3030 | ||
|
|
f4e737b4a1 | ||
|
|
a933406ef8 | ||
|
|
a30d6f6f7b | ||
|
|
34074b1c92 | ||
|
|
f7ab929bcb | ||
|
|
21dcde44a1 | ||
|
|
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 |
@@ -11,4 +11,4 @@ NEXTAUTH_SECRET="anything"
|
||||
# Disable analytics
|
||||
NEXT_PUBLIC_DISABLE_ANALYTICS="true"
|
||||
|
||||
DEFAULT_COLOR_SCHEME="light"
|
||||
DEFAULT_COLOR_SCHEME="light"
|
||||
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 days without activity. We mark issues to help prioritise and close dead issues. Can you confirm that this issue is still relevant on the latest version? I'll remove the stale label as soon as there is further activity on this issue. Thank you 🙏"
|
||||
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
|
||||
|
||||
36
Dockerfile
36
Dockerfile
@@ -1,4 +1,4 @@
|
||||
FROM node:20.5-slim
|
||||
FROM node:20.2.0-slim
|
||||
WORKDIR /app
|
||||
|
||||
# Define node.js environment variables
|
||||
@@ -17,30 +17,50 @@ COPY yarn.lock ./temp_yarn.lock
|
||||
COPY .next/standalone ./
|
||||
COPY .next/static ./.next/static
|
||||
COPY ./scripts/run.sh ./scripts/run.sh
|
||||
RUN chmod +x ./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"]
|
||||
|
||||
59
README.md
59
README.md
@@ -25,7 +25,7 @@
|
||||
<strong>Demo ✨</strong>
|
||||
</a>
|
||||
•
|
||||
<a href="https://homarr.dev/docs/introduction/installation">
|
||||
<a href="https://homarr.dev/docs/getting-started/installation/">
|
||||
<strong>Install 💻</strong>
|
||||
</a> •
|
||||
<a href="https://translate.homarr.dev/">
|
||||
@@ -53,34 +53,46 @@ Simplify the management of your server with Homarr - a sleek, modern dashboard t
|
||||
- 🦞 Comprehensive built-in icon picker with over 7000 icons
|
||||
- 🐳 Easy deployment with Docker, unRAID, and Synology
|
||||
- 🚀 Compatible with any major consumer hardware (x86, Raspberry Pi, old laptops, ...)
|
||||
- 💵 Free and Open-Source - your data stays on your device. No telemetry data.
|
||||
|
||||
<br/>
|
||||
<br/>
|
||||
|
||||

|
||||
|
||||
Homarr has a [built-in collection of widgets and integrations](https://homarr.dev/docs/integrations/), that connect to your applications and enable you to control them directly from the dashboard.
|
||||
Each widget and integration has a comprehensive documentation for your comfort.
|
||||
Homarr will integrate with the following applications of yours:
|
||||
Homarr has a [built-in collection of widgets and integrations](https://homarr.dev/docs/category/integrations), that connect to your applications and enable you to control them directly from the dashboard.
|
||||
Each widget and integration has a comprehensive documentation
|
||||
Homarr will integrate with the following applications:
|
||||
|
||||
- 📥 Torrent clients
|
||||
- [Deluge](https://homarr.dev/docs/integrations/#deluge)
|
||||
- [Transmission](https://homarr.dev/docs/integrations/#transmission)
|
||||
- [qBittorent](https://homarr.dev/docs/integrations/#qbittorrent-integration)
|
||||
- 📥 Usenet clients
|
||||
- [SABnzbd](https://homarr.dev/docs/integrations/#sabnzbd)
|
||||
- [NZBGet](https://homarr.dev/docs/integrations/#nzbget)
|
||||
- 📚 Media collection managers
|
||||
- [Sonarr](https://homarr.dev/docs/integrations/#sonarr)
|
||||
- [Radarr](https://homarr.dev/docs/integrations/#radarr)
|
||||
- [Lidarr](https://homarr.dev/docs/integrations/#lidarr)
|
||||
- [Readarr](https://homarr.dev/docs/integrations/#readarr)
|
||||
- 🎞️ Media request managers
|
||||
- [Overseerr](https://homarr.dev/docs/integrations/#overseerr--jellyseerr)
|
||||
- [Jellyseerr](https://homarr.dev/docs/integrations/#overseerr--jellyseerr)
|
||||
- 🔌 [Dash.](https://homarr.dev/docs/integrations/#dash)
|
||||
- 🐳 [Docker](https://homarr.dev/docs/integrations/#docker)
|
||||
📥 Torrent clients
|
||||
- [Deluge](https://homarr.dev/docs/integrations/torrent#deluge)
|
||||
- [Transmission](https://homarr.dev/docs/integrations/torrent#transmission)
|
||||
- [qBittorent](https://homarr.dev/docs/integrations/torrent#qbittorrent-integration)
|
||||
|
||||
📥 Usenet clients
|
||||
- [SABnzbd](https://homarr.dev/docs/integrations/usenet#sabnzbd)
|
||||
- [NZBGet](https://homarr.dev/docs/integrations/usenet#nzbget)
|
||||
|
||||
📺 Media servers
|
||||
- [Plex](https://homarr.dev/docs/integrations/usenet#nzbget)
|
||||
- [Jellyfin](https://homarr.dev/docs/integrations/usenet#nzbget)
|
||||
|
||||
📚 Media collection managers
|
||||
- [Sonarr](https://homarr.dev/docs/integrations/servarr#sonarr)
|
||||
- [Radarr](https://homarr.dev/docs/integrations/servarr#radarr)
|
||||
- [Lidarr](https://homarr.dev/docs/integrations/servarr#lidarr)
|
||||
- [Readarr](https://homarr.dev/docs/integrations/servarr#readarr)
|
||||
|
||||
🎞️ Media request managers
|
||||
- [Overseerr](https://homarr.dev/docs/integrations/media-requester)
|
||||
- [Jellyseerr](https://homarr.dev/docs/integrations/media-requester)
|
||||
|
||||
🚫 DNS ad-blockers
|
||||
- [Pihole](https://homarr.dev/docs/integrations/dns#pihole)
|
||||
- [AdGuard Home](https://homarr.dev/docs/integrations/dns#adguard-home)
|
||||
|
||||
Other integrations
|
||||
- [🔌 Dash.](https://homarr.dev/docs/integrations/hardware)
|
||||
- [🐳 Docker](https://homarr.dev/docs/integrations/containers)
|
||||
|
||||
We're constantly adding new integrations and widgets, which will enhance your experience even further.
|
||||
|
||||
@@ -98,7 +110,7 @@ https://user-images.githubusercontent.com/30572287/217098893-5880e7de-13d0-42c5-
|
||||
|
||||
Since we are updating Homarr very frequently, we recommend reading our official installation guides:
|
||||
|
||||
<a href="https://homarr.dev/docs/introduction/installation">
|
||||
<a href="https://homarr.dev/docs/getting-started/installation/">
|
||||
<img src="docs/installation-button.png" width="200" />
|
||||
</a>
|
||||
|
||||
@@ -123,3 +135,4 @@ You can also support us by helping with [translating the entire project](https:/
|
||||
All contributions, regardless of their size or scope, are welcome and highly appreciated! Thank you ❤️
|
||||
|
||||

|
||||
[](https://argos-ci.com?utm_source=%5Bhomarr%5D&utm_campaign=oss)
|
||||
|
||||
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/getting-started/after-the-installation\">getting started guide</a> first. To edit this board you must enter the edit mode - only administrators can do this. Adding an app is the first step you should take. You can do this by clicking the <code>Add tile</code> button at the top right and select <code>App</code>. After you provided an internal URL, external URL and selected an icon you can drag it around when holding down the left mouse button. Make it bigger or smaller using the drag icon at the bottom right. When you're happy with it's position, you <strong>must exit edit mode to save your board</strong>. Adding widgets works the same way but may require additional configuration - read the documentation for more information.</p><p>To remove this widget, you must log in to your administrator account and click on the menu to delete it.</p><p><strong><u>Your TODO list:</u></strong></p><ul data-type=\"taskList\"><li data-checked=\"false\" data-type=\"taskItem\"><label><input type=\"checkbox\"><span></span></label><div><p>Read the <a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://homarr.dev\">documentation</a></p></div></li><li data-checked=\"false\" data-type=\"taskItem\"><label><input type=\"checkbox\"><span></span></label><div><p>Add your <em>first app</em></p></div></li><li data-checked=\"false\" data-type=\"taskItem\"><label><input type=\"checkbox\"><span></span></label><div><p><em>Resize </em>and <em>drag</em> your app to a different position</p></div></li><li data-checked=\"false\" data-type=\"taskItem\"><label><input type=\"checkbox\"><span></span></label><div><p>Add the <em>clock widget</em> to your dashboard</p></div></li><li data-checked=\"false\" data-type=\"taskItem\"><label><input type=\"checkbox\"><span></span></label><div><p>Create a <em>new user</em></p></div></li></ul>"
|
||||
},
|
||||
"area": {
|
||||
"type": "wrapper",
|
||||
"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"
|
||||
}
|
||||
}
|
||||
@@ -33,6 +33,8 @@ module.exports = {
|
||||
'tw',
|
||||
'uk',
|
||||
'vi',
|
||||
'et',
|
||||
'lt',
|
||||
],
|
||||
|
||||
localeDetection: false,
|
||||
|
||||
@@ -6,6 +6,11 @@ const withBundleAnalyzer = require('@next/bundle-analyzer')({
|
||||
});
|
||||
|
||||
module.exports = withBundleAnalyzer({
|
||||
webpack: (config) => {
|
||||
// for dynamic loading of auth providers
|
||||
config.experiments = { ...config.experiments, topLevelAwait: true };
|
||||
return config;
|
||||
},
|
||||
images: {
|
||||
domains: ['cdn.jsdelivr.net'],
|
||||
},
|
||||
|
||||
16
package.json
16
package.json
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "homarr",
|
||||
"version": "0.14.0",
|
||||
"version": "0.15.0",
|
||||
"description": "Homarr - A homepage for your server.",
|
||||
"license": "MIT",
|
||||
"repository": {
|
||||
@@ -24,10 +24,9 @@
|
||||
"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",
|
||||
"@ctrl/deluge": "^4.1.0",
|
||||
"@ctrl/qbittorrent": "^6.0.0",
|
||||
"@ctrl/shared-torrent": "^4.1.1",
|
||||
@@ -75,7 +74,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",
|
||||
@@ -84,6 +82,7 @@
|
||||
"dotenv": "^16.3.1",
|
||||
"drizzle-kit": "^0.19.13",
|
||||
"drizzle-orm": "^0.28.6",
|
||||
"drizzle-zod": "^0.5.1",
|
||||
"fily-publish-gridstack": "^0.0.13",
|
||||
"flag-icons": "^6.9.2",
|
||||
"framer-motion": "^10.0.0",
|
||||
@@ -91,9 +90,13 @@
|
||||
"html-entities": "^2.3.3",
|
||||
"i18next": "^22.5.1",
|
||||
"immer": "^10.0.2",
|
||||
"js-file-download": "^0.4.12",
|
||||
"ldapjs": "^3.0.5",
|
||||
"mantine-react-table": "^1.3.4",
|
||||
"next": "13.4.12",
|
||||
"next-auth": "^4.23.0",
|
||||
"next-i18next": "^14.0.0",
|
||||
"nextjs-cors": "^2.2.0",
|
||||
"nzbget-api": "^0.0.3",
|
||||
"prismjs": "^1.29.0",
|
||||
"react": "^18.2.0",
|
||||
@@ -102,6 +105,8 @@
|
||||
"react-simple-code-editor": "^0.13.1",
|
||||
"rss-parser": "^3.12.0",
|
||||
"sabnzbd-api": "^1.5.0",
|
||||
"swagger-ui-react": "^5.11.0",
|
||||
"trpc-openapi": "^1.2.0",
|
||||
"uuid": "^9.0.0",
|
||||
"xml-js": "^1.6.11",
|
||||
"xss": "^1.0.14",
|
||||
@@ -116,9 +121,11 @@
|
||||
"@types/better-sqlite3": "^7.6.5",
|
||||
"@types/cookies": "^0.7.7",
|
||||
"@types/dockerode": "^3.3.9",
|
||||
"@types/ldapjs": "^3.0.2",
|
||||
"@types/node": "18.17.8",
|
||||
"@types/prismjs": "^1.26.0",
|
||||
"@types/react": "^18.2.11",
|
||||
"@types/swagger-ui-react": "^4.18.3",
|
||||
"@types/umami": "^0.1.4",
|
||||
"@types/uuid": "^9.0.0",
|
||||
"@types/video.js": "^7.3.51",
|
||||
@@ -127,6 +134,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",
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
"previous": "上一步",
|
||||
"confirm": "确认",
|
||||
"enabled": "已启用",
|
||||
"duplicate": "复制",
|
||||
"disabled": "已禁用",
|
||||
"enableAll": "全部启用",
|
||||
"disableAll": "全部禁用",
|
||||
@@ -51,5 +52,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": "从 docker 导入"
|
||||
}
|
||||
|
||||
@@ -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": "登录"
|
||||
}
|
||||
|
||||
@@ -25,7 +25,8 @@
|
||||
"tools": {
|
||||
"title": "工具",
|
||||
"items": {
|
||||
"docker": "Docker"
|
||||
"docker": "Docker",
|
||||
"api": "API"
|
||||
}
|
||||
},
|
||||
"about": {
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
"key": "快捷键",
|
||||
"action": "操作",
|
||||
"keybinds": "热键绑定",
|
||||
"translators": "翻译 ({{count}})",
|
||||
"translators": "翻译者 ({{count}})",
|
||||
"translatorsDescription": "感谢这些人,Homarr 现已支持 {{languages}} 种语言!想要帮助将 Homarr 翻译成您的语言吗?请阅读<a>此处</a>了解如何执行此操作 。",
|
||||
"contributors": "贡献者 ({{count}})",
|
||||
"contributorsDescription": "这些人构建了让 homarr 工作的代码!想帮助建造 Homarr 吗?请阅读<a>此处</a>了解如何操作",
|
||||
@@ -17,7 +17,7 @@
|
||||
},
|
||||
"metrics": {
|
||||
"configurationSchemaVersion": "配置模式版本",
|
||||
"version": "版本",
|
||||
"version": "当前版本",
|
||||
"nodeEnvironment": "节点环境",
|
||||
"i18n": "I18n 翻译空间已加载",
|
||||
"locales": "I18n 本地语言已配置",
|
||||
|
||||
@@ -15,6 +15,19 @@
|
||||
"delete": {
|
||||
"label": "永久删除",
|
||||
"disabled": "删除功能被禁用,因为较旧的 Homarr 组件不允许删除默认配置。将来可能会删除。"
|
||||
},
|
||||
"duplicate": "复制",
|
||||
"rename": {
|
||||
"label": "重命名",
|
||||
"modal": {
|
||||
"title": "重命名面板 {{name}}",
|
||||
"fields": {
|
||||
"name": {
|
||||
"label": "新名称",
|
||||
"placeholder": "新面板名称"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"badges": {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"metaTitle": "管理",
|
||||
"metaTitle": "管理中心",
|
||||
"hero": {
|
||||
"title": "欢迎回来,{{username}}!",
|
||||
"fallbackUsername": "匿名",
|
||||
|
||||
@@ -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,19 +20,13 @@
|
||||
"hide": "隐藏日期"
|
||||
}
|
||||
},
|
||||
"enableTimezone": {
|
||||
"label": "显示自定义时区"
|
||||
},
|
||||
"timezoneLocation": {
|
||||
"label": "时区位置"
|
||||
},
|
||||
"titleState": {
|
||||
"label": "城市名称",
|
||||
"info": "如果激活时区选项,则可显示城市名称和时区代码。<br/>您也可以只显示城市,甚至不显示。",
|
||||
"label": "时钟标题",
|
||||
"info": "自定义标题和时区代码可以显示在 widget 上。<br/>您还可以单独显示城市、不显示、<br/>,甚至在同时选择了城市和时区但未提供标题时单独显示时区。",
|
||||
"data": {
|
||||
"both": "城市和时区",
|
||||
"city": "仅城市",
|
||||
"none": "无"
|
||||
"both": "标题和时区",
|
||||
"city": "仅标题",
|
||||
"none": "不显示"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
37
public/locales/cn/modules/health-monitoring.json
Normal file
37
public/locales/cn/modules/health-monitoring.json
Normal file
@@ -0,0 +1,37 @@
|
||||
{
|
||||
"descriptor": {
|
||||
"name": "系统健康监测",
|
||||
"description": "关于NAS的信息",
|
||||
"settings": {
|
||||
"title": "系统健康监测",
|
||||
"fahrenheit": {
|
||||
"label": "华氏度"
|
||||
}
|
||||
}
|
||||
},
|
||||
"cpu": {
|
||||
"label": "CPU",
|
||||
"load": "平均负载",
|
||||
"minute": "{{minute}} 分钟"
|
||||
},
|
||||
"memory": {
|
||||
"label": "内存",
|
||||
"totalMem": "内存总量: {{total}}GB",
|
||||
"available": "可用: {{available}}GB - {{percentage}}%"
|
||||
},
|
||||
"fileSystem": {
|
||||
"label": "文件系统",
|
||||
"available": "可用: {{available}} - {{percentage}}%"
|
||||
},
|
||||
"info": {
|
||||
"uptime": "运行时间",
|
||||
"updates": "更新",
|
||||
"reboot": "重启"
|
||||
},
|
||||
"errors": {
|
||||
"general": {
|
||||
"title": "找不到您的 NAS",
|
||||
"text": "连接到您的NAS时出现了问题。请验证您的配置/集成。"
|
||||
}
|
||||
}
|
||||
}
|
||||
19
public/locales/cn/modules/indexer-manager.json
Normal file
19
public/locales/cn/modules/indexer-manager.json
Normal file
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"descriptor": {
|
||||
"name": "索引管理器状态",
|
||||
"description": "有关索引器的状态",
|
||||
"settings": {
|
||||
"title": "索引管理器状态"
|
||||
}
|
||||
},
|
||||
"indexersStatus": {
|
||||
"title": "索引管理器",
|
||||
"testAllButton": "测试全部"
|
||||
},
|
||||
"errors": {
|
||||
"general": {
|
||||
"title": "无法找到索引管理器",
|
||||
"text": "连接索引管理器时出现问题。请验证您的配置/集成。"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -16,7 +16,9 @@
|
||||
"state": {
|
||||
"approved": "已批准",
|
||||
"pendingApproval": "待批准",
|
||||
"declined": "已拒绝"
|
||||
"declined": "已拒绝",
|
||||
"available": "可用",
|
||||
"partial": "部分"
|
||||
},
|
||||
"tooltips": {
|
||||
"approve": "批准请求",
|
||||
|
||||
@@ -17,6 +17,15 @@
|
||||
},
|
||||
"textLinesClamp": {
|
||||
"label": "文字线条"
|
||||
},
|
||||
"sortByPublishDateAscending": {
|
||||
"label": "按发布日期排序(升序)"
|
||||
},
|
||||
"sortPostsWithoutPublishDateToTheTop": {
|
||||
"label": "将没有发布日期的文章置顶"
|
||||
},
|
||||
"maximumAmountOfPosts": {
|
||||
"label": "最大文章数量"
|
||||
}
|
||||
},
|
||||
"card": {
|
||||
|
||||
29
public/locales/cn/modules/smart-home/entity-state.json
Normal file
29
public/locales/cn/modules/smart-home/entity-state.json
Normal file
@@ -0,0 +1,29 @@
|
||||
{
|
||||
"entityNotFound": "未找到实体",
|
||||
"descriptor": {
|
||||
"name": "家庭助理实体",
|
||||
"description": "家庭助理中实体的当前状态",
|
||||
"settings": {
|
||||
"title": "实体状态",
|
||||
"entityId": {
|
||||
"label": "实体 ID",
|
||||
"info": "家庭助理中的唯一实体 ID。通过单击实体 > 单击齿轮图标 > 单击“实体 ID”处的复制按钮进行复制。某些自定义实体可能不受支持。"
|
||||
},
|
||||
"appendUnit": {
|
||||
"label": "附加测量单位",
|
||||
"info": "将测量单位属性附加到实体状态。"
|
||||
},
|
||||
"automationId": {
|
||||
"label": "可选自动化 ID",
|
||||
"info": "您唯一的自动化 ID。总是以 automation.XXXXX 开头。如果未设置,小部件将不可点击,只能显示状态。点击后,实体状态将被刷新。"
|
||||
},
|
||||
"displayName": {
|
||||
"label": "显示名称"
|
||||
},
|
||||
"displayFriendlyName": {
|
||||
"label": "显示友好名称",
|
||||
"info": "显示来自家庭助理的友好名称,而不是显示名称"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
16
public/locales/cn/modules/smart-home/trigger-automation.json
Normal file
16
public/locales/cn/modules/smart-home/trigger-automation.json
Normal file
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"descriptor": {
|
||||
"name": "家庭助理自动化",
|
||||
"description": "执行自动化",
|
||||
"settings": {
|
||||
"title": "执行自动化",
|
||||
"automationId": {
|
||||
"label": "自动化 ID",
|
||||
"info": "您唯一的自动化 ID。总是以 automation.XXXXX 开头。"
|
||||
},
|
||||
"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中..."
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
"previous": "crwdns3375:0crwdne3375:0",
|
||||
"confirm": "crwdns3377:0crwdne3377:0",
|
||||
"enabled": "crwdns2883:0crwdne2883:0",
|
||||
"duplicate": "crwdns4174:0crwdne4174:0",
|
||||
"disabled": "crwdns2885:0crwdne2885:0",
|
||||
"enableAll": "crwdns2887:0crwdne2887:0",
|
||||
"disableAll": "crwdns2889:0crwdne2889:0",
|
||||
@@ -51,5 +52,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": {
|
||||
|
||||
@@ -25,7 +25,8 @@
|
||||
"tools": {
|
||||
"title": "crwdns3525:0crwdne3525:0",
|
||||
"items": {
|
||||
"docker": "crwdns3527:0crwdne3527:0"
|
||||
"docker": "crwdns3527:0crwdne3527:0",
|
||||
"api": "crwdns4172:0crwdne4172:0"
|
||||
}
|
||||
},
|
||||
"about": {
|
||||
|
||||
@@ -15,6 +15,19 @@
|
||||
"delete": {
|
||||
"label": "crwdns3543:0crwdne3543:0",
|
||||
"disabled": "crwdns3545:0crwdne3545:0"
|
||||
},
|
||||
"duplicate": "crwdns4162:0crwdne4162:0",
|
||||
"rename": {
|
||||
"label": "crwdns4164:0crwdne4164:0",
|
||||
"modal": {
|
||||
"title": "crwdns4166:0{{name}}crwdne4166:0",
|
||||
"fields": {
|
||||
"name": {
|
||||
"label": "crwdns4168:0crwdne4168:0",
|
||||
"placeholder": "crwdns4170:0crwdne4170:0"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"badges": {
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
}
|
||||
|
||||
37
public/locales/cr/modules/health-monitoring.json
Normal file
37
public/locales/cr/modules/health-monitoring.json
Normal file
@@ -0,0 +1,37 @@
|
||||
{
|
||||
"descriptor": {
|
||||
"name": "crwdns4202:0crwdne4202:0",
|
||||
"description": "crwdns4204:0crwdne4204:0",
|
||||
"settings": {
|
||||
"title": "crwdns4206:0crwdne4206:0",
|
||||
"fahrenheit": {
|
||||
"label": "crwdns4208:0crwdne4208:0"
|
||||
}
|
||||
}
|
||||
},
|
||||
"cpu": {
|
||||
"label": "crwdns4210:0crwdne4210:0",
|
||||
"load": "crwdns4212:0crwdne4212:0",
|
||||
"minute": "crwdns4214:0{{minute}}crwdne4214:0"
|
||||
},
|
||||
"memory": {
|
||||
"label": "crwdns4216:0crwdne4216:0",
|
||||
"totalMem": "crwdns4218:0{{total}}crwdne4218:0",
|
||||
"available": "crwdns4220:0{{available}}crwdnd4220:0{{percentage}}crwdne4220:0"
|
||||
},
|
||||
"fileSystem": {
|
||||
"label": "crwdns4222:0crwdne4222:0",
|
||||
"available": "crwdns4224:0{{available}}crwdnd4224:0{{percentage}}crwdne4224:0"
|
||||
},
|
||||
"info": {
|
||||
"uptime": "crwdns4226:0crwdne4226:0",
|
||||
"updates": "crwdns4228:0crwdne4228:0",
|
||||
"reboot": "crwdns4230:0crwdne4230:0"
|
||||
},
|
||||
"errors": {
|
||||
"general": {
|
||||
"title": "crwdns4232:0crwdne4232:0",
|
||||
"text": "crwdns4234:0crwdne4234:0"
|
||||
}
|
||||
}
|
||||
}
|
||||
19
public/locales/cr/modules/indexer-manager.json
Normal file
19
public/locales/cr/modules/indexer-manager.json
Normal file
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"descriptor": {
|
||||
"name": "crwdns4188:0crwdne4188:0",
|
||||
"description": "crwdns4190:0crwdne4190:0",
|
||||
"settings": {
|
||||
"title": "crwdns4192:0crwdne4192:0"
|
||||
}
|
||||
},
|
||||
"indexersStatus": {
|
||||
"title": "crwdns4194:0crwdne4194:0",
|
||||
"testAllButton": "crwdns4196:0crwdne4196:0"
|
||||
},
|
||||
"errors": {
|
||||
"general": {
|
||||
"title": "crwdns4198:0crwdne4198:0",
|
||||
"text": "crwdns4200:0crwdne4200:0"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -16,7 +16,9 @@
|
||||
"state": {
|
||||
"approved": "crwdns2765:0crwdne2765:0",
|
||||
"pendingApproval": "crwdns2767:0crwdne2767:0",
|
||||
"declined": "crwdns2769:0crwdne2769:0"
|
||||
"declined": "crwdns2769:0crwdne2769:0",
|
||||
"available": "crwdns4140:0crwdne4140:0",
|
||||
"partial": "crwdns4142:0crwdne4142:0"
|
||||
},
|
||||
"tooltips": {
|
||||
"approve": "crwdns2893:0crwdne2893:0",
|
||||
|
||||
@@ -17,6 +17,15 @@
|
||||
},
|
||||
"textLinesClamp": {
|
||||
"label": "crwdns2933:0crwdne2933:0"
|
||||
},
|
||||
"sortByPublishDateAscending": {
|
||||
"label": "crwdns4160:0crwdne4160:0"
|
||||
},
|
||||
"sortPostsWithoutPublishDateToTheTop": {
|
||||
"label": "crwdns4176:0crwdne4176:0"
|
||||
},
|
||||
"maximumAmountOfPosts": {
|
||||
"label": "crwdns4178:0crwdne4178:0"
|
||||
}
|
||||
},
|
||||
"card": {
|
||||
|
||||
29
public/locales/cr/modules/smart-home/entity-state.json
Normal file
29
public/locales/cr/modules/smart-home/entity-state.json
Normal file
@@ -0,0 +1,29 @@
|
||||
{
|
||||
"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"
|
||||
},
|
||||
"appendUnit": {
|
||||
"label": "crwdns4180:0crwdne4180:0",
|
||||
"info": "crwdns4182:0crwdne4182:0"
|
||||
},
|
||||
"automationId": {
|
||||
"label": "crwdns4156:0crwdne4156:0",
|
||||
"info": "crwdns4158:0crwdne4158:0"
|
||||
},
|
||||
"displayName": {
|
||||
"label": "crwdns4050:0crwdne4050:0"
|
||||
},
|
||||
"displayFriendlyName": {
|
||||
"label": "crwdns4184:0crwdne4184:0",
|
||||
"info": "crwdns4186:0crwdne4186:0"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
16
public/locales/cr/modules/smart-home/trigger-automation.json
Normal file
16
public/locales/cr/modules/smart-home/trigger-automation.json
Normal file
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"descriptor": {
|
||||
"name": "crwdns4144:0crwdne4144:0",
|
||||
"description": "crwdns4146:0crwdne4146:0",
|
||||
"settings": {
|
||||
"title": "crwdns4148:0crwdne4148:0",
|
||||
"automationId": {
|
||||
"label": "crwdns4150:0crwdne4150:0",
|
||||
"info": "crwdns4152:0crwdne4152:0"
|
||||
},
|
||||
"displayName": {
|
||||
"label": "crwdns4154:0crwdne4154: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,35 +1,35 @@
|
||||
{
|
||||
"metaTitle": "",
|
||||
"title": "",
|
||||
"text": "",
|
||||
"metaTitle": "Vytvořit účet",
|
||||
"title": "Vytvořit účet",
|
||||
"text": "Prosím uveďte níže své přihlašovací údaje",
|
||||
"form": {
|
||||
"fields": {
|
||||
"username": {
|
||||
"label": ""
|
||||
"label": "Uživatelské jméno"
|
||||
},
|
||||
"password": {
|
||||
"label": ""
|
||||
"label": "Heslo"
|
||||
},
|
||||
"passwordConfirmation": {
|
||||
"label": ""
|
||||
"label": "Potvrďte heslo"
|
||||
}
|
||||
},
|
||||
"buttons": {
|
||||
"submit": ""
|
||||
"submit": "Vytvořit účet"
|
||||
}
|
||||
},
|
||||
"notifications": {
|
||||
"loading": {
|
||||
"title": "",
|
||||
"text": ""
|
||||
"title": "Vytváření účtu",
|
||||
"text": "Čekejte prosím"
|
||||
},
|
||||
"success": {
|
||||
"title": "",
|
||||
"text": ""
|
||||
"title": "Účet byl vytvořen",
|
||||
"text": "Váš účet byl úspěšně vytvořen"
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"text": ""
|
||||
"title": "Chyba",
|
||||
"text": "Něco se nepodařilo, objevila se následující chyba: {{error}}"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,20 +1,20 @@
|
||||
{
|
||||
"metaTitle": "",
|
||||
"title": "",
|
||||
"text": "",
|
||||
"metaTitle": "Přihlásit se",
|
||||
"title": "Vítejte zpět!",
|
||||
"text": "Zadejte prosím Vaše přihlašovací údaje",
|
||||
"form": {
|
||||
"fields": {
|
||||
"username": {
|
||||
"label": ""
|
||||
"label": "Uživatelské jméno"
|
||||
},
|
||||
"password": {
|
||||
"label": ""
|
||||
"label": "Heslo"
|
||||
}
|
||||
},
|
||||
"buttons": {
|
||||
"submit": ""
|
||||
"submit": "Přihlásit se"
|
||||
},
|
||||
"afterLoginRedirection": ""
|
||||
"afterLoginRedirection": "Po přihlášení budete přesměrováni na {{url}}"
|
||||
},
|
||||
"alert": ""
|
||||
"alert": "Vaše přihlašovací údaje jsou nesprávné nebo tento účet neexistuje. Zkuste to prosím znovu."
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"header": {
|
||||
"customize": ""
|
||||
"customize": "Přizpůsobit plochu"
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"metaTitle": "",
|
||||
"pageTitle": "Přizpůsobení {{name}} plochy",
|
||||
"metaTitle": "Přizpůsobení {{name}} plochy",
|
||||
"pageTitle": "Přizpůsobení plochy {{name}}",
|
||||
"backToBoard": "Zpět na plochu",
|
||||
"settings": {
|
||||
"appearance": {
|
||||
@@ -9,21 +9,21 @@
|
||||
}
|
||||
},
|
||||
"save": {
|
||||
"button": "",
|
||||
"note": ""
|
||||
"button": "Uložit změny",
|
||||
"note": "Pozor, máte neuložené změny!"
|
||||
},
|
||||
"notifications": {
|
||||
"pending": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
"title": "Ukládání přizpůsobení",
|
||||
"message": "Počkejte prosím, než vaše přizpůsobení uložíme"
|
||||
},
|
||||
"success": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
"title": "Přizpůsobení uloženo",
|
||||
"message": "Vaše přizpůsobení bylo úspěšně uloženo"
|
||||
},
|
||||
"error": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
"title": "Chyba",
|
||||
"message": "Nelze uložit změny"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,55 +1,58 @@
|
||||
{
|
||||
"save": "",
|
||||
"apply": "",
|
||||
"insert": "",
|
||||
"about": "",
|
||||
"cancel": "",
|
||||
"close": "",
|
||||
"back": "",
|
||||
"delete": "",
|
||||
"ok": "",
|
||||
"edit": "",
|
||||
"next": "",
|
||||
"previous": "",
|
||||
"confirm": "",
|
||||
"enabled": "",
|
||||
"disabled": "",
|
||||
"enableAll": "",
|
||||
"disableAll": "",
|
||||
"version": "",
|
||||
"changePosition": "",
|
||||
"remove": "",
|
||||
"removeConfirm": "",
|
||||
"createItem": "",
|
||||
"save": "Uložit",
|
||||
"apply": "Použít",
|
||||
"insert": "Vložit",
|
||||
"about": "O aplikaci",
|
||||
"cancel": "Zrušit",
|
||||
"close": "Zavřít",
|
||||
"back": "Zpět",
|
||||
"delete": "Odstranit",
|
||||
"ok": "OK",
|
||||
"edit": "Upravit",
|
||||
"next": "Další",
|
||||
"previous": "Zpět",
|
||||
"confirm": "Potvrdit",
|
||||
"enabled": "Zapnuto",
|
||||
"duplicate": "Duplikovat",
|
||||
"disabled": "Vypnuto",
|
||||
"enableAll": "Aktivovat vše",
|
||||
"disableAll": "Zakázat vše",
|
||||
"version": "Verze",
|
||||
"changePosition": "Změnit pozici",
|
||||
"remove": "Odstranit",
|
||||
"removeConfirm": "Jste si jisti, že chcete odstranit {{item}}?",
|
||||
"createItem": "+ vytvořit {{item}}",
|
||||
"sections": {
|
||||
"settings": "",
|
||||
"dangerZone": ""
|
||||
"settings": "Nastavení",
|
||||
"dangerZone": "Nebezpečná zóna"
|
||||
},
|
||||
"secrets": {
|
||||
"apiKey": "",
|
||||
"username": "",
|
||||
"password": ""
|
||||
"apiKey": "API klíč",
|
||||
"username": "Uživatelské jméno",
|
||||
"password": "Heslo"
|
||||
},
|
||||
"tip": "",
|
||||
"tip": "Tip: ",
|
||||
"time": {
|
||||
"seconds": "",
|
||||
"minutes": "",
|
||||
"hours": ""
|
||||
"seconds": "vteřiny",
|
||||
"minutes": "minuty",
|
||||
"hours": "hodiny"
|
||||
},
|
||||
"loading": "",
|
||||
"loading": "Načítám...",
|
||||
"breakPoints": {
|
||||
"small": "malý",
|
||||
"medium": "střední",
|
||||
"large": "velký"
|
||||
},
|
||||
"seeMore": "",
|
||||
"seeMore": "Zobrazit více...",
|
||||
"position": {
|
||||
"left": "",
|
||||
"center": "",
|
||||
"right": ""
|
||||
"left": "Vlevo",
|
||||
"center": "Střed",
|
||||
"right": "Vpravo"
|
||||
},
|
||||
"attributes": {
|
||||
"width": "",
|
||||
"height": ""
|
||||
}
|
||||
"width": "Šířka",
|
||||
"height": "Výška"
|
||||
},
|
||||
"public": "Veřejné",
|
||||
"restricted": "Omezené"
|
||||
}
|
||||
@@ -1,25 +1,25 @@
|
||||
{
|
||||
"modals": {
|
||||
"blockedPopups": {
|
||||
"title": "",
|
||||
"text": "",
|
||||
"title": "Vyskakovací okna jsou zablokována",
|
||||
"text": "Váš prohlížeč zablokoval Homarr přístup k jeho API. Nejčastěji je to způsobeno blokátory reklam nebo odepřenými oprávněními. Homarr nemůže automaticky žádat o oprávnění.",
|
||||
"list": {
|
||||
"browserPermission": "",
|
||||
"adBlockers": "",
|
||||
"otherBrowser": ""
|
||||
"browserPermission": "Klikněte na ikonu nastavení webu vedle adresy URL a zkontrolujte oprávnění. Povolte vyskakovací okna a přesměrování",
|
||||
"adBlockers": "Zakažte v prohlížeči blokátory reklam a bezpečnostní nástroje",
|
||||
"otherBrowser": "Zkuste jiný webový prohlížeč"
|
||||
}
|
||||
}
|
||||
},
|
||||
"actions": {
|
||||
"category": {
|
||||
"openAllInNewTab": ""
|
||||
"openAllInNewTab": "Otevřít na nové kartě"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"moveUp": "",
|
||||
"moveDown": "",
|
||||
"addCategory": "",
|
||||
"addAbove": "",
|
||||
"addBelow": ""
|
||||
"moveUp": "Posunout nahoru",
|
||||
"moveDown": "Posunout dolů",
|
||||
"addCategory": "Přidat kategorii {{location}}",
|
||||
"addAbove": "nad",
|
||||
"addBelow": "pod"
|
||||
}
|
||||
}
|
||||
@@ -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": "Importovat z dockeru"
|
||||
}
|
||||
|
||||
@@ -1 +1,5 @@
|
||||
{}
|
||||
{
|
||||
"title": "Přístup odepřen",
|
||||
"text": "Nemáte dostatečná oprávnění pro přístup k této stránce. Pokud se domníváte, že se jedná o chybu, kontaktujte, prosím, svého správce.",
|
||||
"switchAccount": "Přepněte na jiný účet"
|
||||
}
|
||||
@@ -1 +1,5 @@
|
||||
{}
|
||||
{
|
||||
"title": "Stránka nenalezena",
|
||||
"text": "Tato stránka nebyla nalezena. Platnost adresy URL této stránky možná vypršela, adresa URL je neplatná nebo nemáte požadovaná oprávnění pro přístup k této stránce.",
|
||||
"button": "Přejít domů"
|
||||
}
|
||||
@@ -1,14 +1,11 @@
|
||||
{
|
||||
"experimentalNote": {
|
||||
"label": ""
|
||||
},
|
||||
"search": {
|
||||
"label": "Vyhledat",
|
||||
"engines": {
|
||||
"web": "",
|
||||
"youtube": "",
|
||||
"torrent": "",
|
||||
"movie": ""
|
||||
"web": "Hledat {{query}} na internetu",
|
||||
"youtube": "Hledat {{query}} na YouTube",
|
||||
"torrent": "Hledat {{query}} torrenty",
|
||||
"movie": "Hledat {{query}} na {{app}}"
|
||||
}
|
||||
},
|
||||
"actions": {
|
||||
@@ -17,14 +14,14 @@
|
||||
"preferences": "Uživatelská nastavení",
|
||||
"defaultBoard": "Výchozí plocha",
|
||||
"manage": "Spravovat",
|
||||
"logout": "Odhlásit z {{username}}",
|
||||
"login": ""
|
||||
"logout": "Odhlásit uživatele {{username}}",
|
||||
"login": "Přihlásit se"
|
||||
}
|
||||
},
|
||||
"modals": {
|
||||
"movie": {
|
||||
"title": "",
|
||||
"topResults": ""
|
||||
"topResults": "{{count}} výsledků pro <b>{{search}}</b>."
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"description": "",
|
||||
"description": "V režimu úprav můžete upravovat dlaždice a konfigurovat aplikace. Změny se uloží až po opuštění režimu úprav.",
|
||||
"button": {
|
||||
"disabled": "",
|
||||
"enabled": ""
|
||||
"disabled": "Vstoupit do režimu úprav",
|
||||
"enabled": "Ukončit a uložit"
|
||||
},
|
||||
"popover": {
|
||||
"title": "Režim úprav je povolen pro velikost <1>{{size}}</1>",
|
||||
"text": "Nyní můžete upravovat a configurovat Vaše aplikace. Změny <strong>nejsou uloženy</strong> dokud neopustíte režim úprav"
|
||||
"text": "Nyní můžete upravovat a konfigurovat Vaše aplikace. Změny <strong>nejsou uloženy</strong> dokud neopustíte režim úprav"
|
||||
},
|
||||
"unloadEvent": ""
|
||||
"unloadEvent": "Ukončete režim úprav pro uložení změn"
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
@@ -25,11 +25,12 @@
|
||||
"tools": {
|
||||
"title": "Nástroje",
|
||||
"items": {
|
||||
"docker": ""
|
||||
"docker": "Docker",
|
||||
"api": "API"
|
||||
}
|
||||
},
|
||||
"about": {
|
||||
"title": ""
|
||||
"title": "O aplikaci"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1 +1,3 @@
|
||||
{}
|
||||
{
|
||||
"title": "{{position}} postranní panel"
|
||||
}
|
||||
|
||||
@@ -1,30 +1,30 @@
|
||||
{
|
||||
"description": "",
|
||||
"addToDashboard": "",
|
||||
"tip": "",
|
||||
"key": "",
|
||||
"action": "",
|
||||
"keybinds": "",
|
||||
"translators": "",
|
||||
"translatorsDescription": "",
|
||||
"contributors": "",
|
||||
"contributorsDescription": "",
|
||||
"description": "Homarr je <strong>elegantní</strong>, <strong>moderní</strong> plocha, která vám poskytne všechny aplikace a služby na dosah ruky. S aplikací Homarr máte přístup ke všemu na jednom místě a můžete vše pohodlně ovládat. Homarr se hladce integruje s aplikacemi, které jste si přidali, poskytuje Vám cenné informace a dává Vám plnou kontrolu. Instalace je snadná a Homarr podporuje širokou škálu metod nasazení.",
|
||||
"addToDashboard": "Přidat na plochu",
|
||||
"tip": "Mod odkazuje na Vaši modifikační klávesu, je to Ctrl a klávesa Command/Super/Windows",
|
||||
"key": "Klávesová zkratka",
|
||||
"action": "Akce",
|
||||
"keybinds": "Klávesové zkratky",
|
||||
"translators": "Překladatelé ({{count}})",
|
||||
"translatorsDescription": "Díky těmto lidem je Homarr dostupný v {{languages}} jazycích! Chcete pomoci přeložit Homarr do svého jazyka? Přečtěte si, jak na to, <a>zde</a>.",
|
||||
"contributors": "Přispěvatelé ({{count}})",
|
||||
"contributorsDescription": "Tito lidé vytvořili kód, díky kterému funguje homarr! Chcete pomoci vybudovat Homarr? Přečtěte si, jak na to, <a>zde</a>",
|
||||
"actions": {
|
||||
"toggleTheme": "",
|
||||
"focusSearchBar": "",
|
||||
"openDocker": "",
|
||||
"toggleEdit": ""
|
||||
"toggleTheme": "Přepne světlý/tmavý motiv",
|
||||
"focusSearchBar": "Zaměří na vyhledávací panel",
|
||||
"openDocker": "Otevře Docker widget",
|
||||
"toggleEdit": "Přepne režim úprav"
|
||||
},
|
||||
"metrics": {
|
||||
"configurationSchemaVersion": "",
|
||||
"version": "",
|
||||
"nodeEnvironment": "",
|
||||
"i18n": "",
|
||||
"locales": "",
|
||||
"experimental_disableEditMode": ""
|
||||
"configurationSchemaVersion": "Verze konfiguračního schématu",
|
||||
"version": "Verze",
|
||||
"nodeEnvironment": "Prostředí uzlu",
|
||||
"i18n": "Načteny jmenné prostory překladu I18n",
|
||||
"locales": "Nakonfigurováno I18n jazyků",
|
||||
"experimental_disableEditMode": "<b>EXPERIMENTÁLNÍ</b>: Zakázat režim úprav"
|
||||
},
|
||||
"version": {
|
||||
"new": "",
|
||||
"dropdown": ""
|
||||
"new": "Nová verze: {{newVersion}}",
|
||||
"dropdown": "Verze {{newVersion}} je nyní dostupná! Vaše aktuální verze je {{currentVersion}}"
|
||||
}
|
||||
}
|
||||
@@ -1,128 +1,128 @@
|
||||
{
|
||||
"tabs": {
|
||||
"general": "",
|
||||
"behaviour": "",
|
||||
"network": "",
|
||||
"appearance": "",
|
||||
"integration": ""
|
||||
"general": "Obecné",
|
||||
"behaviour": "Chování",
|
||||
"network": "Síť",
|
||||
"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": "",
|
||||
"clearCache": ""
|
||||
"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": "Některé informace jsou zaznamenány v mezipaměti, takže integrace nemusí fungovat, pokud nevymažete mezipaměť v obecných možnostech aplikace Homarr."
|
||||
},
|
||||
"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": "",
|
||||
"description": ""
|
||||
"label": "Popis aplikace",
|
||||
"description": "Zadaný text se zobrazí po najetí na aplikaci.\nPoužijte jej k tomu, abyste uživatelům poskytli více informací o své aplikaci, nebo jej nechte prázdný, aby se nic nezobrazovalo."
|
||||
},
|
||||
"customProtocolWarning": ""
|
||||
"customProtocolWarning": "Používá se nestandardní protokol. To může vyžadovat předinstalované aplikace a může přinést bezpečnostní rizika. Ujistěte se, že vaše adresa je bezpečná a důvěryhodná."
|
||||
},
|
||||
"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": ""
|
||||
"title": "Nebyly nalezeny žádné výsledky",
|
||||
"text": "Zkuste použít konkrétnější vyhledávací výraz. Pokud nemůžete najít požadovanou ikonu, vložte adresu URL obrázku Vaší žádané ikony"
|
||||
},
|
||||
"noItems": {
|
||||
"title": "",
|
||||
"text": ""
|
||||
"title": "Načítám externí ikony",
|
||||
"text": "Může to chvíli trvat"
|
||||
}
|
||||
},
|
||||
"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, resp. má-li 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 název 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": "",
|
||||
"defined": "",
|
||||
"undefined": "",
|
||||
"public": "",
|
||||
"private": "",
|
||||
"explanationPrivate": "",
|
||||
"explanationPublic": ""
|
||||
"label": "Nastavení integrace",
|
||||
"description": "Konfigurace integrace, která bude použita pro připojení k vaší aplikaci.",
|
||||
"placeholder": "Vyberte integraci",
|
||||
"defined": "Definováno",
|
||||
"undefined": "Nedefinovaný",
|
||||
"public": "Veřejné",
|
||||
"private": "Soukromý",
|
||||
"explanationPrivate": "Soukromé heslo/API klíč se na server odešle pouze jednou. Po obnovení stránky se již nikdy neodešle.",
|
||||
"explanationPublic": "Veřejný secret se vždy odešle klientovi a je přístupný prostřednictvím API. Neměl by obsahovat žádné důvěrné hodnoty, jako jsou uživatelská jména, hesla, tokeny, certifikáty a podobně!"
|
||||
},
|
||||
"secrets": {
|
||||
"description": "",
|
||||
"warning": "",
|
||||
"clear": "",
|
||||
"save": "",
|
||||
"update": ""
|
||||
"description": "Chcete-li aktualizovat API klíč, zadejte novou hodnotu a klikněte na tlačítko uložit. Chcete-li API klíč vymazat, použijte tlačítko vymazat.",
|
||||
"warning": "Vaše přihlašovací údaje slouží jako přístup k vašim integracím a <strong> nikdy</strong> byste je neměli sdílet s nikým jiným. Tým Homarr Vás nikdy nebude žádat o Vaše přihlašovací údaje. Dbejte na to, abyste svá <strong>hesla bezpečně ukládali a spravovali</strong>.",
|
||||
"clear": "Vymazat heslo/klíč",
|
||||
"save": "Uložit heslo/klíč",
|
||||
"update": "Aktualizovat heslo/klíč"
|
||||
}
|
||||
},
|
||||
"validation": {
|
||||
"popover": "",
|
||||
"name": "",
|
||||
"noUrl": "",
|
||||
"invalidUrl": "",
|
||||
"noIconUrl": "",
|
||||
"noExternalUri": "",
|
||||
"invalidExternalUri": ""
|
||||
"popover": "Váš formulář obsahuje neplatná data. Proto jej nelze uložit. Vyřešte prosím všechny problémy a znovu uložte změny",
|
||||
"name": "Jméno aplikace je nutné vyplnit",
|
||||
"noUrl": "URL je nutné vyplnit",
|
||||
"invalidUrl": "URL je nutné vyplnit",
|
||||
"noIconUrl": "Toto pole je nutné vyplnit",
|
||||
"noExternalUri": "Je vyžadována externí URI",
|
||||
"invalidExternalUri": "Externí URI není platná URI"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1 +1,8 @@
|
||||
{}
|
||||
{
|
||||
"xPosition": "Poloha osy X",
|
||||
"width": "Šířka",
|
||||
"height": "Výška",
|
||||
"yPosition": "Poloha osy Y",
|
||||
"zeroOrHigher": "0 a vyšší",
|
||||
"betweenXandY": "Mezi {{min}} a {{max}}"
|
||||
}
|
||||
@@ -8,36 +8,49 @@
|
||||
"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."
|
||||
},
|
||||
"duplicate": "Duplikovat",
|
||||
"rename": {
|
||||
"label": "Přejmenovat",
|
||||
"modal": {
|
||||
"title": "Přejmenovat plochu {{name}}",
|
||||
"fields": {
|
||||
"name": {
|
||||
"label": "Nové jméno",
|
||||
"placeholder": "Nové jméno plochy"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"badges": {
|
||||
"fileSystem": "",
|
||||
"default": ""
|
||||
"fileSystem": "Souborový systém",
|
||||
"default": "Výchozí"
|
||||
}
|
||||
},
|
||||
"buttons": {
|
||||
"create": ""
|
||||
"create": "Vytvořit novou plochu"
|
||||
},
|
||||
"modals": {
|
||||
"delete": {
|
||||
"title": "",
|
||||
"text": ""
|
||||
"title": "Odstranit plochu",
|
||||
"text": "Jste si jisti, že chcete tuto plochu smazat? Tuto akci nelze vrátit zpět a vaše data budou trvale ztracena."
|
||||
},
|
||||
"create": {
|
||||
"title": "",
|
||||
"text": "",
|
||||
"title": "Vytvořit plochu",
|
||||
"text": "Jméno nelze po vytvoření plochy změnit.",
|
||||
"form": {
|
||||
"name": {
|
||||
"label": ""
|
||||
"label": "Název"
|
||||
},
|
||||
"submit": ""
|
||||
"submit": "Vytvořit"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
"metaTitle": "Spravovat",
|
||||
"hero": {
|
||||
"title": "Vítej zpět, {{username}}",
|
||||
"fallbackUsername": "",
|
||||
"fallbackUsername": "Anonymní",
|
||||
"subtitle": "Vítejte ve Vašem Centru aplikací. Organizujte, optimalizujte a ovládněte!"
|
||||
},
|
||||
"quickActions": {
|
||||
|
||||
@@ -1,36 +1,44 @@
|
||||
{
|
||||
"metaTitle": "Uživatelé",
|
||||
"pageTitle": "Správa uživatelů",
|
||||
"text": "",
|
||||
"buttons": {
|
||||
"create": ""
|
||||
"create": "Vytvořit"
|
||||
},
|
||||
"filter": {
|
||||
"roles": {
|
||||
"all": "Všichni",
|
||||
"normal": "Uživatelé",
|
||||
"admin": "Administrátoři",
|
||||
"owner": "Vlastníci"
|
||||
}
|
||||
},
|
||||
"table": {
|
||||
"header": {
|
||||
"user": ""
|
||||
"user": "Uživatel",
|
||||
"email": "E-mail"
|
||||
}
|
||||
},
|
||||
"tooltips": {
|
||||
"deleteUser": "",
|
||||
"demoteAdmin": "",
|
||||
"promoteToAdmin": ""
|
||||
"deleteUser": "Vymazat uživatele",
|
||||
"demoteAdmin": "Zrušit oprávnění správce",
|
||||
"promoteToAdmin": "Povýšit na správce"
|
||||
},
|
||||
"modals": {
|
||||
"delete": {
|
||||
"title": "",
|
||||
"text": ""
|
||||
"title": "Vymazat uživatele {{name}}",
|
||||
"text": "Jste si jisti, že chcete vymazat uživatele {{name}}? Tím se odstraní data spojená s tímto účtem, ale ne panely vytvořené tímto uživatelem."
|
||||
},
|
||||
"change-role": {
|
||||
"promote": {
|
||||
"title": "",
|
||||
"text": ""
|
||||
"title": "Povýšit uživatele {{name}} na správce",
|
||||
"text": "Jste si jisti, že chcete uživatele {{name}} povýšit na správce? Tím získá uživatel přístup ke všem prostředkům ve vaší instanci Homarr."
|
||||
},
|
||||
"demote": {
|
||||
"title": "",
|
||||
"text": ""
|
||||
"title": "Zrušit oprávnění správce pro uživatele {{name}}",
|
||||
"text": "Jste si jisti, že chcete zrušit oprávnění správce pro uživatele {{name}}? Tím ztratí přístup ke všem prostředkům ve vaší instanci Homarr."
|
||||
},
|
||||
"confirm": ""
|
||||
"confirm": "Potvrdit"
|
||||
}
|
||||
},
|
||||
"searchDoesntMatch": ""
|
||||
"searchDoesntMatch": "Vašemu vyhledávání neodpovídají žádné záznamy. Prosím, upravte svůj filtr."
|
||||
}
|
||||
@@ -1,52 +1,52 @@
|
||||
{
|
||||
"metaTitle": "",
|
||||
"metaTitle": "Vytvořit uživatele",
|
||||
"steps": {
|
||||
"account": {
|
||||
"title": "",
|
||||
"text": "",
|
||||
"title": "První krok",
|
||||
"text": "Tvorba účtu",
|
||||
"username": {
|
||||
"label": ""
|
||||
"label": "Uživatelské jméno"
|
||||
},
|
||||
"email": {
|
||||
"label": ""
|
||||
"label": "E-mail"
|
||||
}
|
||||
},
|
||||
"security": {
|
||||
"title": "",
|
||||
"text": "",
|
||||
"title": "Druhý krok",
|
||||
"text": "Heslo",
|
||||
"password": {
|
||||
"label": ""
|
||||
"label": "Heslo"
|
||||
}
|
||||
},
|
||||
"finish": {
|
||||
"title": "",
|
||||
"text": "",
|
||||
"title": "Potvrzení",
|
||||
"text": "Uložit do databáze",
|
||||
"card": {
|
||||
"title": "",
|
||||
"text": ""
|
||||
"title": "Zkontrolujte, co jste vyplnili",
|
||||
"text": "Po odeslání dat se uživatel bude moci přihlásit. Jste si jisti, že chcete tohoto uživatele uložit do databáze?"
|
||||
},
|
||||
"table": {
|
||||
"header": {
|
||||
"property": "",
|
||||
"value": "",
|
||||
"username": "",
|
||||
"email": "",
|
||||
"password": ""
|
||||
"property": "Vlastnosti",
|
||||
"value": "Hodnoty",
|
||||
"username": "Uživatelské jméno",
|
||||
"email": "E-mail",
|
||||
"password": "Heslo"
|
||||
},
|
||||
"notSet": "",
|
||||
"valid": ""
|
||||
"notSet": "Nenastaveno",
|
||||
"valid": "Platné"
|
||||
},
|
||||
"failed": ""
|
||||
"failed": "Vytvoření uživatele se nezdařilo: {{error}}"
|
||||
},
|
||||
"completed": {
|
||||
"alert": {
|
||||
"title": "",
|
||||
"text": ""
|
||||
"title": "Uživatel byl úspěšně vytvořen",
|
||||
"text": "Uživatel byl vytvořen v databázi. Nyní se může přihlásit."
|
||||
}
|
||||
}
|
||||
},
|
||||
"buttons": {
|
||||
"generateRandomPassword": "",
|
||||
"createAnother": ""
|
||||
"generateRandomPassword": "Vygenerovat náhodné heslo",
|
||||
"createAnother": "Vytvořit dalšího uživatele"
|
||||
}
|
||||
}
|
||||
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": "Uživatel {{username}}",
|
||||
"back": "Zpět na správu uživatelů",
|
||||
"sections": {
|
||||
"general": {
|
||||
"title": "Obecné",
|
||||
"inputs": {
|
||||
"username": {
|
||||
"label": "Uživatelské jméno"
|
||||
},
|
||||
"eMail": {
|
||||
"label": "E-mail"
|
||||
}
|
||||
}
|
||||
},
|
||||
"security": {
|
||||
"title": "Bezpečnost",
|
||||
"inputs": {
|
||||
"password": {
|
||||
"label": "Nové heslo"
|
||||
},
|
||||
"terminateExistingSessions": {
|
||||
"label": "Ukončit stávající relace",
|
||||
"description": "Přinutit uživatele, aby se znovu přihlásil na svých zařízeních"
|
||||
},
|
||||
"confirm": {
|
||||
"label": "Potvrdit",
|
||||
"description": "Heslo bude aktualizováno. Akci nelze vrátit zpět."
|
||||
}
|
||||
}
|
||||
},
|
||||
"roles": {
|
||||
"title": "Role",
|
||||
"currentRole": "Současná role: ",
|
||||
"badges": {
|
||||
"owner": "Vlastník",
|
||||
"admin": "Administrátor",
|
||||
"normal": "Normální"
|
||||
}
|
||||
},
|
||||
"deletion": {
|
||||
"title": "Smazání účtu",
|
||||
"inputs": {
|
||||
"confirmUsername": {
|
||||
"label": "Potvrďte uživatelské jméno",
|
||||
"description": "Pro potvrzení smazání zadejte uživatelské jméno"
|
||||
},
|
||||
"confirm": {
|
||||
"label": "Trvale smazat",
|
||||
"description": "Jsem si vědom toho, že tato akce je trvalá a všechna data účtu budou ztracena."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,48 +1,48 @@
|
||||
{
|
||||
"metaTitle": "",
|
||||
"metaTitle": "Pozvánky uživatelů",
|
||||
"pageTitle": "Správa pozvánek uživatelů",
|
||||
"description": "Pomocí pozvánek můžete pozvat uživatele do instance služby Homarr. Pozvánka je platná pouze po určitou dobu a lze ji použít pouze jednou. Platnost musí být v rozmezí od 5 minut do 12 měsíců od vytvoření.",
|
||||
"description": "Pomocí pozvánek můžete pozvat uživatele do Homarra. Pozvánka je platná pouze po určitou dobu a lze ji použít pouze jednou. Platnost pozvánky musí být v rozmezí od 5 minut do 12 měsíců od vytvoření.",
|
||||
"button": {
|
||||
"createInvite": "Vytvořit pozvánku",
|
||||
"deleteInvite": ""
|
||||
"deleteInvite": "Odstranit pozvánku"
|
||||
},
|
||||
"table": {
|
||||
"header": {
|
||||
"id": "ID",
|
||||
"creator": "Vytvořil",
|
||||
"creator": "Vytvořil/a",
|
||||
"expires": "Expiruje",
|
||||
"action": "Akce"
|
||||
},
|
||||
"data": {
|
||||
"expiresAt": "",
|
||||
"expiresAt": "vypršela {{at}}",
|
||||
"expiresIn": "za {{in}}"
|
||||
}
|
||||
},
|
||||
"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": {
|
||||
"title": "",
|
||||
"description": "",
|
||||
"invitationLink": "",
|
||||
"title": "Kopírovat pozvánku",
|
||||
"description": "Vaše pozvánka byla vygenerována. Po zavření tohoto okna <b>již nebude možné tento odkaz zkopírovat</b>. Pokud si již nepřejete uvedenou osobu pozvat, můžete tuto pozvánku kdykoli smazat.",
|
||||
"invitationLink": "Odkaz na pozvánku",
|
||||
"details": {
|
||||
"id": "ID",
|
||||
"token": ""
|
||||
"token": "Token"
|
||||
},
|
||||
"button": {
|
||||
"close": ""
|
||||
"close": "Zkopírovat odkaz a zavřít"
|
||||
}
|
||||
},
|
||||
"delete": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
"title": "Odstranit pozvánku",
|
||||
"description": "Jste si jisti, že chcete tuto pozvánku smazat? Uživatelé s tímto odkazem již nebudou moci pomocí tohoto odkazu vytvořit účet."
|
||||
}
|
||||
},
|
||||
"noInvites": ""
|
||||
"noInvites": "Zatím zde nejsou žádné pozvánky."
|
||||
}
|
||||
@@ -1,43 +1,43 @@
|
||||
{
|
||||
"descriptor": {
|
||||
"name": "",
|
||||
"description": "",
|
||||
"name": "Záložky",
|
||||
"description": "Zobrazí statický seznam textů nebo odkazů",
|
||||
"settings": {
|
||||
"title": "",
|
||||
"title": "Nastavení widgetu",
|
||||
"name": {
|
||||
"label": "",
|
||||
"info": ""
|
||||
"label": "Název widgetu",
|
||||
"info": "Ponechte prázdné, aby název zůstal skrytý."
|
||||
},
|
||||
"items": {
|
||||
"label": ""
|
||||
"label": "Položky"
|
||||
},
|
||||
"layout": {
|
||||
"label": "Rozložení",
|
||||
"data": {
|
||||
"autoGrid": "",
|
||||
"horizontal": "",
|
||||
"vertical": ""
|
||||
"autoGrid": "Automatická mřížka",
|
||||
"horizontal": "Horizontální",
|
||||
"vertical": "Vertikální"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"card": {
|
||||
"noneFound": {
|
||||
"title": "",
|
||||
"text": ""
|
||||
"title": "Seznam záložek je prázdný",
|
||||
"text": "Přidejte nové položky do tohoto seznamu v režimu úprav"
|
||||
}
|
||||
},
|
||||
"item": {
|
||||
"validation": {
|
||||
"length": "",
|
||||
"invalidLink": "",
|
||||
"errorMsg": ""
|
||||
"length": "Délka musí být mezi {{shortest}} a {{longest}}",
|
||||
"invalidLink": "Neplatný odkaz",
|
||||
"errorMsg": "Neuloženo, protože došlo k chybám. Prosím, zkontrolujte vyplněné informace"
|
||||
},
|
||||
"name": "",
|
||||
"url": "",
|
||||
"newTab": "",
|
||||
"hideHostname": "",
|
||||
"hideIcon": "",
|
||||
"delete": ""
|
||||
"name": "Název",
|
||||
"url": "URL",
|
||||
"newTab": "Otevřít na nové kartě",
|
||||
"hideHostname": "Skrýt název hostitele",
|
||||
"hideIcon": "Skrýt ikonu",
|
||||
"delete": "Odstranit"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,31 +1,31 @@
|
||||
{
|
||||
"descriptor": {
|
||||
"name": "",
|
||||
"description": "",
|
||||
"name": "Kalendář",
|
||||
"description": "Zobrazí kalendář s nadcházejícími vydáními z podporovaných integrací.",
|
||||
"settings": {
|
||||
"title": "",
|
||||
"title": "Nastavení pro widget kalendáře",
|
||||
"radarrReleaseType": {
|
||||
"label": "",
|
||||
"label": "Typ vydání filmu pro Radarr",
|
||||
"data": {
|
||||
"inCinemas": "",
|
||||
"physicalRelease": "",
|
||||
"digitalRelease": ""
|
||||
"inCinemas": "V Kinech",
|
||||
"physicalRelease": "Fyzické",
|
||||
"digitalRelease": "Digitální"
|
||||
}
|
||||
},
|
||||
"hideWeekDays": {
|
||||
"label": ""
|
||||
"label": "Skrýt názvy dnů"
|
||||
},
|
||||
"showUnmonitored": {
|
||||
"label": ""
|
||||
"label": "Zobrazovat nemonitorované položky"
|
||||
},
|
||||
"fontSize": {
|
||||
"label": "",
|
||||
"label": "Velikost písma",
|
||||
"data": {
|
||||
"xs": "",
|
||||
"sm": "",
|
||||
"md": "",
|
||||
"lg": "",
|
||||
"xl": ""
|
||||
"xs": "Extra malé",
|
||||
"sm": "Malé",
|
||||
"md": "Střední",
|
||||
"lg": "Velké",
|
||||
"xl": "Extra velké"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"buttons": {
|
||||
"play": "",
|
||||
"request": ""
|
||||
"play": "Přehrát",
|
||||
"request": "Vyžádat"
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"settings": {
|
||||
"label": ""
|
||||
"label": "Nastavení"
|
||||
},
|
||||
"errors": {
|
||||
"unmappedOptions": {
|
||||
|
||||
@@ -1,117 +1,117 @@
|
||||
{
|
||||
"descriptor": {
|
||||
"name": "",
|
||||
"description": "",
|
||||
"name": "Dash.",
|
||||
"description": "Zobrazuje grafy z externí Dash. Instance uvnitř Homarru.",
|
||||
"settings": {
|
||||
"title": "",
|
||||
"title": "Nastavení pro Dash. widget",
|
||||
"dashName": {
|
||||
"label": ""
|
||||
"label": "Dash. jméno"
|
||||
},
|
||||
"url": {
|
||||
"label": ""
|
||||
"label": "Dash. URL"
|
||||
},
|
||||
"usePercentages": {
|
||||
"label": ""
|
||||
"label": "Zobrazovat procenta"
|
||||
},
|
||||
"columns": {
|
||||
"label": ""
|
||||
"label": "Počet sloupců"
|
||||
},
|
||||
"graphHeight": {
|
||||
"label": ""
|
||||
"label": "Výška grafů"
|
||||
},
|
||||
"graphsOrder": {
|
||||
"label": "",
|
||||
"label": "Grafy (seřazené)",
|
||||
"storage": {
|
||||
"label": "",
|
||||
"label": "Úložiště",
|
||||
"enabled": {
|
||||
"label": ""
|
||||
"label": "Zobrazovat ve widgetu"
|
||||
},
|
||||
"span": {
|
||||
"label": ""
|
||||
"label": "Rozpětí sloupce"
|
||||
},
|
||||
"compactView": {
|
||||
"label": ""
|
||||
"label": "Zobrazit jako text (kompaktní)"
|
||||
},
|
||||
"multiView": {
|
||||
"label": ""
|
||||
"label": "Zobrazit jako zobrazení pro více disků"
|
||||
}
|
||||
},
|
||||
"network": {
|
||||
"label": "",
|
||||
"label": "Síť",
|
||||
"enabled": {
|
||||
"label": ""
|
||||
"label": "Zobrazovat ve widgetu"
|
||||
},
|
||||
"span": {
|
||||
"label": ""
|
||||
"label": "Rozpětí sloupce"
|
||||
},
|
||||
"compactView": {
|
||||
"label": ""
|
||||
"label": "Zobrazit jako text (kompaktní)"
|
||||
}
|
||||
},
|
||||
"cpu": {
|
||||
"label": "",
|
||||
"label": "Procesor",
|
||||
"enabled": {
|
||||
"label": ""
|
||||
"label": "Zobrazovat ve widgetu"
|
||||
},
|
||||
"span": {
|
||||
"label": ""
|
||||
"label": "Rozpětí sloupce"
|
||||
},
|
||||
"multiView": {
|
||||
"label": ""
|
||||
"label": "Zobrazit jako zobrazení pro více jader procesoru"
|
||||
}
|
||||
},
|
||||
"ram": {
|
||||
"label": "",
|
||||
"label": "RAM",
|
||||
"enabled": {
|
||||
"label": ""
|
||||
"label": "Zobrazovat ve widgetu"
|
||||
},
|
||||
"span": {
|
||||
"label": ""
|
||||
"label": "Rozpětí sloupce"
|
||||
}
|
||||
},
|
||||
"gpu": {
|
||||
"label": "",
|
||||
"label": "Grafická karta",
|
||||
"enabled": {
|
||||
"label": ""
|
||||
"label": "Zobrazovat ve widgetu"
|
||||
},
|
||||
"span": {
|
||||
"label": ""
|
||||
"label": "Rozpětí sloupce"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"card": {
|
||||
"title": "",
|
||||
"title": "Dash.",
|
||||
"errors": {
|
||||
"noService": "",
|
||||
"noInformation": "",
|
||||
"noService": "Nebyla nalezena žádná služba Dash. Přidejte ji prosím na svou Homarr plochu nebo nastavte URL aplikace Dash. v možnostech modulu",
|
||||
"noInformation": "Nepodařilo se získat informace z dash. - používáte nejnovější verzi?",
|
||||
"protocolDowngrade": {
|
||||
"title": "",
|
||||
"text": ""
|
||||
"title": "Zjištěn downgrade protokolu",
|
||||
"text": "Připojení k vaší instanci Dash. používá protokol HTTP. To představuje bezpečnostní riziko, protože protokol HTTP není šifrovaný a útočníci by mohli toto připojení zneužít. Ujistěte se, že Dash. používá HTTPS, nebo snižte úroveň Homarr na HTTP (nedoporučujeme)."
|
||||
}
|
||||
},
|
||||
"graphs": {
|
||||
"storage": {
|
||||
"title": "",
|
||||
"label": ""
|
||||
"title": "Úložiště",
|
||||
"label": "Úložiště:"
|
||||
},
|
||||
"network": {
|
||||
"title": "",
|
||||
"label": "",
|
||||
"title": "Síť",
|
||||
"label": "Síť:",
|
||||
"metrics": {
|
||||
"download": "",
|
||||
"upload": ""
|
||||
"download": "Stahování",
|
||||
"upload": "Nahrávání"
|
||||
}
|
||||
},
|
||||
"cpu": {
|
||||
"title": ""
|
||||
"title": "Procesor"
|
||||
},
|
||||
"ram": {
|
||||
"title": ""
|
||||
"title": "RAM"
|
||||
},
|
||||
"gpu": {
|
||||
"title": ""
|
||||
"title": "Grafická karta"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,31 +1,32 @@
|
||||
{
|
||||
"descriptor": {
|
||||
"name": "",
|
||||
"description": "",
|
||||
"name": "Datum a čas",
|
||||
"description": "Zobrazuje aktuální datum a čas.",
|
||||
"settings": {
|
||||
"title": "",
|
||||
"title": "Nastavení widgetu Datum a čas",
|
||||
"timezone": {
|
||||
"label": "Časové pásmo",
|
||||
"info": "Vyberte název svého časového pásma, najdete jej zde: "
|
||||
},
|
||||
"customTitle": {
|
||||
"label": "Název města nebo vlastní název"
|
||||
},
|
||||
"display24HourFormat": {
|
||||
"label": ""
|
||||
"label": "Zobrazit ve 24hodinovém formátu"
|
||||
},
|
||||
"dateFormat": {
|
||||
"label": "",
|
||||
"label": "Formátování data",
|
||||
"data": {
|
||||
"hide": ""
|
||||
"hide": "Skrýt datum"
|
||||
}
|
||||
},
|
||||
"enableTimezone": {
|
||||
"label": ""
|
||||
},
|
||||
"timezoneLocation": {
|
||||
"label": ""
|
||||
},
|
||||
"titleState": {
|
||||
"label": "",
|
||||
"info": "",
|
||||
"label": "Popis hodin",
|
||||
"info": "Na widgetu lze zobrazit vlastní název a kód časové zóny.<br/>Můžete také zobrazit pouze město, nezobrazit nic,<br/>nebo dokonce zobrazit pouze časové pásmo, pokud je jsou obě informace zadány, ale není zadán vlastní název.",
|
||||
"data": {
|
||||
"both": "",
|
||||
"city": "",
|
||||
"none": ""
|
||||
"both": "Název a časové pásmo",
|
||||
"city": "Pouze název",
|
||||
"none": "Žádný"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,34 +1,34 @@
|
||||
{
|
||||
"descriptor": {
|
||||
"name": "",
|
||||
"description": ""
|
||||
"name": "Rychlost stahování",
|
||||
"description": "Zobrazuje rychlost stahování a odesílání z podporovaných integrací."
|
||||
},
|
||||
"card": {
|
||||
"table": {
|
||||
"header": {
|
||||
"name": "",
|
||||
"size": "",
|
||||
"download": "",
|
||||
"upload": "",
|
||||
"estimatedTimeOfArrival": "",
|
||||
"progress": ""
|
||||
"name": "Název",
|
||||
"size": "Velikost",
|
||||
"download": "Stahování",
|
||||
"upload": "Nahrávání",
|
||||
"estimatedTimeOfArrival": "Odhadovaný čas",
|
||||
"progress": "Postup"
|
||||
},
|
||||
"body": {
|
||||
"nothingFound": ""
|
||||
"nothingFound": "Nebyly nalezeny žádné torrenty"
|
||||
}
|
||||
},
|
||||
"lineChart": {
|
||||
"title": "",
|
||||
"download": "",
|
||||
"upload": "",
|
||||
"timeSpan": "",
|
||||
"totalDownload": "",
|
||||
"totalUpload": ""
|
||||
"title": "Aktuální rychlost stahování",
|
||||
"download": "Stahování: {{download}}",
|
||||
"upload": "Nahrávání: {{upload}}",
|
||||
"timeSpan": "před {{seconds}} sekundami",
|
||||
"totalDownload": "Stahování: {{download}}/s",
|
||||
"totalUpload": "Nahrávání: {{upload}}/s"
|
||||
},
|
||||
"errors": {
|
||||
"noDownloadClients": {
|
||||
"title": "",
|
||||
"text": ""
|
||||
"title": "Nebyl nalezen žádný podporovaný klient pro stahování!",
|
||||
"text": "Chcete-li zobrazit aktuální stahování, přidejte službu stahování"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,17 +1,17 @@
|
||||
{
|
||||
"descriptor": {
|
||||
"name": "",
|
||||
"description": "",
|
||||
"name": "Ovládání DNS hole",
|
||||
"description": "Ovládejte PiHole nebo AdGuard z plochy",
|
||||
"settings": {
|
||||
"title": "",
|
||||
"title": "Nastavení DNS hole",
|
||||
"showToggleAllButtons": {
|
||||
"label": ""
|
||||
"label": "Zobrazit tlačítka \"Povolit/Zakázat vše\""
|
||||
}
|
||||
},
|
||||
"errors": {
|
||||
"general": {
|
||||
"title": "",
|
||||
"text": ""
|
||||
"title": "Nepodařilo se najít DNS hole",
|
||||
"text": "Došlo k problému s připojením k Vaší DNS Hole. Ověřte prosím svou konfiguraci/integraci."
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,28 +1,28 @@
|
||||
{
|
||||
"descriptor": {
|
||||
"name": "",
|
||||
"description": "",
|
||||
"name": "Souhrn DNS hole",
|
||||
"description": "Zobrazuje důležitá data ze služby PiHole nebo AdGuard",
|
||||
"settings": {
|
||||
"title": "",
|
||||
"title": "Nastavení pro souhrn DNS Hole",
|
||||
"usePiHoleColors": {
|
||||
"label": ""
|
||||
"label": "Používat barvy z PiHole"
|
||||
},
|
||||
"layout": {
|
||||
"label": "Rozložení",
|
||||
"data": {
|
||||
"grid": "",
|
||||
"row": "",
|
||||
"column": ""
|
||||
"grid": "2x2",
|
||||
"row": "Horizontální",
|
||||
"column": "Vertikální"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"card": {
|
||||
"metrics": {
|
||||
"domainsOnAdlist": "",
|
||||
"queriesToday": "",
|
||||
"queriesBlockedTodayPercentage": "",
|
||||
"queriesBlockedToday": ""
|
||||
"domainsOnAdlist": "Domény na adlistech",
|
||||
"queriesToday": "Dotazů dnes",
|
||||
"queriesBlockedTodayPercentage": "Zablokováno dnes",
|
||||
"queriesBlockedToday": "Zablokováno dnes"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,83 +1,83 @@
|
||||
{
|
||||
"descriptor": {
|
||||
"name": "",
|
||||
"description": ""
|
||||
"name": "Docker",
|
||||
"description": "Umožňuje snadno zobrazit a spravovat všechny Docker kontejnery."
|
||||
},
|
||||
"search": {
|
||||
"placeholder": ""
|
||||
"placeholder": "Vyhledávejte podle kontejneru nebo názvu snímku"
|
||||
},
|
||||
"table": {
|
||||
"header": {
|
||||
"name": "",
|
||||
"image": "",
|
||||
"ports": "",
|
||||
"state": ""
|
||||
"name": "Název",
|
||||
"image": "Obraz",
|
||||
"ports": "Porty",
|
||||
"state": "Status"
|
||||
},
|
||||
"body": {
|
||||
"portCollapse": ""
|
||||
"portCollapse": "+ dalších {{ports}}"
|
||||
},
|
||||
"states": {
|
||||
"running": "",
|
||||
"created": "",
|
||||
"stopped": "",
|
||||
"unknown": ""
|
||||
"running": "Běží",
|
||||
"created": "Vytvořený",
|
||||
"stopped": "Zastavený",
|
||||
"unknown": "Neznámý"
|
||||
}
|
||||
},
|
||||
"actionBar": {
|
||||
"addService": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
"title": "Přidat aplikaci",
|
||||
"message": "Přidat aplikaci do Homarra"
|
||||
},
|
||||
"restart": {
|
||||
"title": ""
|
||||
"title": "Restartovat"
|
||||
},
|
||||
"stop": {
|
||||
"title": ""
|
||||
"title": "Zastavit"
|
||||
},
|
||||
"start": {
|
||||
"title": ""
|
||||
"title": "Spustit"
|
||||
},
|
||||
"refreshData": {
|
||||
"title": ""
|
||||
"title": "Aktualizovat data"
|
||||
},
|
||||
"remove": {
|
||||
"title": ""
|
||||
"title": "Odstranit"
|
||||
},
|
||||
"addToHomarr": {
|
||||
"title": ""
|
||||
"title": "Přidat do Homarra"
|
||||
}
|
||||
},
|
||||
"actions": {
|
||||
"start": {
|
||||
"start": "",
|
||||
"end": ""
|
||||
"start": "Startuje",
|
||||
"end": "Zastaven"
|
||||
},
|
||||
"stop": {
|
||||
"start": "",
|
||||
"end": ""
|
||||
"start": "Zastavování",
|
||||
"end": "Zastavený"
|
||||
},
|
||||
"restart": {
|
||||
"start": "",
|
||||
"end": ""
|
||||
"start": "Restartování",
|
||||
"end": "Restartován"
|
||||
},
|
||||
"remove": {
|
||||
"start": "",
|
||||
"end": ""
|
||||
"start": "Odstraňování",
|
||||
"end": "Odstraněn"
|
||||
}
|
||||
},
|
||||
"errors": {
|
||||
"integrationFailed": {
|
||||
"title": "",
|
||||
"message": ""
|
||||
"title": "Integrace Dockeru selhala",
|
||||
"message": "Zapomněli jste připojit Docker socket?"
|
||||
},
|
||||
"unknownError": {
|
||||
"title": ""
|
||||
"title": "Došlo k chybě"
|
||||
},
|
||||
"oneServiceAtATime": {
|
||||
"title": ""
|
||||
"title": "Přidávejte, prosím, vždy jen jednu aplikaci nebo službu!"
|
||||
}
|
||||
},
|
||||
"actionIcon": {
|
||||
"tooltip": ""
|
||||
"tooltip": "Docker"
|
||||
}
|
||||
}
|
||||
|
||||
37
public/locales/cs/modules/health-monitoring.json
Normal file
37
public/locales/cs/modules/health-monitoring.json
Normal file
@@ -0,0 +1,37 @@
|
||||
{
|
||||
"descriptor": {
|
||||
"name": "Monitorování stavu systému",
|
||||
"description": "Informace o Vaší NAS",
|
||||
"settings": {
|
||||
"title": "Monitorování stavu systému",
|
||||
"fahrenheit": {
|
||||
"label": "Stupně Fahrenheit"
|
||||
}
|
||||
}
|
||||
},
|
||||
"cpu": {
|
||||
"label": "Procesor",
|
||||
"load": "Průměrné zatížení",
|
||||
"minute": "{{minute}} minut"
|
||||
},
|
||||
"memory": {
|
||||
"label": "Pamět",
|
||||
"totalMem": "Celková paměť: {{total}}GB",
|
||||
"available": "K dispozici: {{available}}GB - {{percentage}}%"
|
||||
},
|
||||
"fileSystem": {
|
||||
"label": "Souborový systém",
|
||||
"available": "K dispozici: {{available}} - {{percentage}}%"
|
||||
},
|
||||
"info": {
|
||||
"uptime": "Doba provozu",
|
||||
"updates": "Aktualizace",
|
||||
"reboot": "Restartovat"
|
||||
},
|
||||
"errors": {
|
||||
"general": {
|
||||
"title": "Nepodařilo se najít Vaší NAS",
|
||||
"text": "Došlo k problému s připojením k Vaší NAS. Ověřte prosím svou konfiguraci/integraci."
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,45 +1,45 @@
|
||||
{
|
||||
"descriptor": {
|
||||
"name": "",
|
||||
"description": "",
|
||||
"name": "iFrame",
|
||||
"description": "Vložte jakýkoli obsah z internetu. Některé webové stránky mohou omezit přístup.",
|
||||
"settings": {
|
||||
"title": "",
|
||||
"title": "Nastavení iFrame",
|
||||
"embedUrl": {
|
||||
"label": ""
|
||||
"label": "Embed URL"
|
||||
},
|
||||
"allowFullScreen": {
|
||||
"label": ""
|
||||
"label": "Povolit celou obrazovku"
|
||||
},
|
||||
"allowTransparency": {
|
||||
"label": ""
|
||||
"label": "Povolit průhlednost"
|
||||
},
|
||||
"allowScrolling": {
|
||||
"label": ""
|
||||
"label": "Povolit posouvání"
|
||||
},
|
||||
"allowPayment": {
|
||||
"label": ""
|
||||
"label": "Povolit platbu"
|
||||
},
|
||||
"allowAutoPlay": {
|
||||
"label": ""
|
||||
"label": "Povolit automatické přehrávání"
|
||||
},
|
||||
"allowMicrophone": {
|
||||
"label": ""
|
||||
"label": "Povolit mikrofon"
|
||||
},
|
||||
"allowCamera": {
|
||||
"label": ""
|
||||
"label": "Povolit kameru"
|
||||
},
|
||||
"allowGeolocation": {
|
||||
"label": ""
|
||||
"label": "Povolit polohu"
|
||||
}
|
||||
}
|
||||
},
|
||||
"card": {
|
||||
"errors": {
|
||||
"noUrl": {
|
||||
"title": "",
|
||||
"text": ""
|
||||
"title": "Neplatná URL adresa",
|
||||
"text": "Ujistěte se, že jste v konfiguraci widgetu zadali platnou URL adresu"
|
||||
},
|
||||
"browserSupport": ""
|
||||
"browserSupport": "Váš prohlížeč nepodporuje iFrame. Aktualizujte, prosím, svůj prohlížeč."
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
19
public/locales/cs/modules/indexer-manager.json
Normal file
19
public/locales/cs/modules/indexer-manager.json
Normal file
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"descriptor": {
|
||||
"name": "Stav správce indexeru",
|
||||
"description": "Stav Vašich indexerů",
|
||||
"settings": {
|
||||
"title": "Stav správce indexeru"
|
||||
}
|
||||
},
|
||||
"indexersStatus": {
|
||||
"title": "Správce indexeru",
|
||||
"testAllButton": "Otestovat vše"
|
||||
},
|
||||
"errors": {
|
||||
"general": {
|
||||
"title": "Nepodařilo se najít správce indexeru",
|
||||
"text": "Došlo k problému s připojením k Vašemu správci indexeru. Ověřte prosím svou konfiguraci/integraci."
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,33 +1,35 @@
|
||||
{
|
||||
"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": "",
|
||||
"title": "Nastavení seznamu Žádostí o média",
|
||||
"replaceLinksWithExternalHost": {
|
||||
"label": ""
|
||||
"label": "Nahradit odkazy externím hostitelem"
|
||||
},
|
||||
"openInNewTab": {
|
||||
"label": ""
|
||||
"label": "Otevírat odkazy v nové kartě"
|
||||
}
|
||||
}
|
||||
},
|
||||
"noRequests": "",
|
||||
"noRequests": "Nebyly nalezeny žádné požadavky. Zkontrolujte, zda jste aplikace správně nakonfigurovali.",
|
||||
"state": {
|
||||
"approved": "",
|
||||
"pendingApproval": "",
|
||||
"declined": ""
|
||||
"approved": "Schváleno",
|
||||
"pendingApproval": "Čeká na schválení",
|
||||
"declined": "Zamítnuto",
|
||||
"available": "K dispozici",
|
||||
"partial": "Částečně dostupné"
|
||||
},
|
||||
"tooltips": {
|
||||
"approve": "",
|
||||
"decline": "",
|
||||
"approving": ""
|
||||
"approve": "Schválit žádosti",
|
||||
"decline": "Zamítnout žádosti",
|
||||
"approving": "Schvaluji žádosti..."
|
||||
},
|
||||
"mutation": {
|
||||
"approving": "",
|
||||
"declining": "",
|
||||
"request": "",
|
||||
"approved": "",
|
||||
"declined": ""
|
||||
"approving": "Probíhá schvalování",
|
||||
"declining": "Probíhá zamítnutí",
|
||||
"request": "žádosti...",
|
||||
"approved": "Žádost byla schválena!",
|
||||
"declined": "Žádost byla zamítnuta!"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,27 +1,27 @@
|
||||
{
|
||||
"descriptor": {
|
||||
"name": "",
|
||||
"description": "",
|
||||
"name": "Statistiky požadavků na média",
|
||||
"description": "Statistiky vašich požadavků na média",
|
||||
"settings": {
|
||||
"title": "",
|
||||
"title": "Statistiky požadavků médií",
|
||||
"replaceLinksWithExternalHost": {
|
||||
"label": ""
|
||||
"label": "Nahradit odkazy externím hostitelem"
|
||||
},
|
||||
"openInNewTab": {
|
||||
"label": ""
|
||||
"label": "Otevírat odkazy v nové kartě"
|
||||
}
|
||||
}
|
||||
},
|
||||
"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,24 +1,24 @@
|
||||
{
|
||||
"descriptor": {
|
||||
"name": "",
|
||||
"description": "",
|
||||
"name": "Mediální server",
|
||||
"description": "Interagujte se svým mediálním serverem Jellyfin nebo Plex",
|
||||
"settings": {
|
||||
"title": ""
|
||||
"title": "Nastavení widgetu serveru médií"
|
||||
}
|
||||
},
|
||||
"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": {
|
||||
"general": {
|
||||
"title": "",
|
||||
"text": ""
|
||||
"title": "Nelze načíst obsah",
|
||||
"text": "Nelze načíst informace ze serveru. Pro více informací se podívejte do logů"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,59 +1,59 @@
|
||||
{
|
||||
"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": "",
|
||||
"title": "Nastavení widgetu zápisníku",
|
||||
"showToolbar": {
|
||||
"label": ""
|
||||
"label": "Zobrazovat panel nástroju, který Vám pomůže s formátováním textu"
|
||||
},
|
||||
"allowReadOnlyCheck": {
|
||||
"label": ""
|
||||
"label": "Povolit kontrolu v režimu pouze pro čtení"
|
||||
},
|
||||
"content": {
|
||||
"label": ""
|
||||
"label": "Obsah zápisníku"
|
||||
}
|
||||
}
|
||||
},
|
||||
"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": "Tučné",
|
||||
"italic": "Kurzíva",
|
||||
"strikethrough": "Přeškrtnuté",
|
||||
"underline": "Podtržení",
|
||||
"colorText": "Barva písma",
|
||||
"colorHighlight": "Barevné zvýraznění textu",
|
||||
"code": "Kód",
|
||||
"clear": "Vymazat formátování",
|
||||
"heading": "Nadpis {{level}}",
|
||||
"align": "Zarovnat text: {{position}}",
|
||||
"blockquote": "Citace",
|
||||
"horizontalLine": "Vodorovná čára",
|
||||
"bulletList": "Odrážkový seznam",
|
||||
"orderedList": "Číslovaný seznam",
|
||||
"checkList": "Zaškrtávací seznam",
|
||||
"increaseIndent": "Zvětšit odsazení",
|
||||
"decreaseIndent": "Zmenšit odsazení",
|
||||
"link": "Vložit odkaz",
|
||||
"unlink": "Odstranit odkaz",
|
||||
"image": "Vložit obrázek",
|
||||
"addTable": "Přidat tabulku",
|
||||
"deleteTable": "Odstranit tabulku",
|
||||
"colorCell": "Barva výplně",
|
||||
"mergeCell": "Sloučit buňky",
|
||||
"addColumnLeft": "Přidat sloupec před",
|
||||
"addColumnRight": "Přidat sloupec za",
|
||||
"deleteColumn": "Odstranit sloupec",
|
||||
"addRowTop": "Přidat řádek nad",
|
||||
"addRowBelow": "Přidat řádek pod",
|
||||
"deleteRow": "Odstranit řádek"
|
||||
},
|
||||
"modals": {
|
||||
"clearColor": "",
|
||||
"source": "",
|
||||
"widthPlaceholder": "",
|
||||
"columns": "",
|
||||
"rows": ""
|
||||
"clearColor": "Odstranit barvu",
|
||||
"source": "Zdroj",
|
||||
"widthPlaceholder": "Hodnota v % nebo pixelech",
|
||||
"columns": "Sloupce",
|
||||
"rows": "Řádky"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,28 +1,28 @@
|
||||
{
|
||||
"descriptor": {
|
||||
"name": "",
|
||||
"description": ""
|
||||
"name": "Overseerr",
|
||||
"description": "Umožňuje vyhledávat a přidávat média z mediálního serveru Overseerr nebo Jellyseerr."
|
||||
},
|
||||
"popup": {
|
||||
"item": {
|
||||
"buttons": {
|
||||
"askFor": "",
|
||||
"cancel": "",
|
||||
"request": ""
|
||||
"askFor": "Požádat o {{title}}",
|
||||
"cancel": "Zrušit",
|
||||
"request": "Vyžádat"
|
||||
},
|
||||
"alerts": {
|
||||
"automaticApproval": {
|
||||
"title": "",
|
||||
"text": ""
|
||||
"title": "Používám API klíč",
|
||||
"text": "Tato žádost bude automaticky schválena"
|
||||
}
|
||||
}
|
||||
},
|
||||
"seasonSelector": {
|
||||
"caption": "",
|
||||
"caption": "Zaškrtněte sezóny, které chcete stáhnout",
|
||||
"table": {
|
||||
"header": {
|
||||
"season": "",
|
||||
"numberOfEpisodes": ""
|
||||
"season": "Sezóna",
|
||||
"numberOfEpisodes": "Počet epizod"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
{
|
||||
"descriptor": {
|
||||
"name": "",
|
||||
"description": ""
|
||||
"name": "Ping",
|
||||
"description": "Zobrazuje indikátor statusu podle kódu HTTP odpovědi dané URL."
|
||||
},
|
||||
"states": {
|
||||
"online": "",
|
||||
"offline": "",
|
||||
"loading": ""
|
||||
"online": "Online {{response}}",
|
||||
"offline": "Offline {{response}}",
|
||||
"loading": "Načítám..."
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,29 +1,38 @@
|
||||
{
|
||||
"descriptor": {
|
||||
"name": "",
|
||||
"description": "",
|
||||
"name": "RSS Widget",
|
||||
"description": "RSS widget umožňuje zobrazit RSS kanály na vaší nástěnce.",
|
||||
"settings": {
|
||||
"title": "",
|
||||
"title": "Nastavení pro RSS widget",
|
||||
"rssFeedUrl": {
|
||||
"label": "",
|
||||
"description": ""
|
||||
"label": "Adresy URL kanálů RSS",
|
||||
"description": "Adresy URL kanálů RSS, které chcete zobrazit."
|
||||
},
|
||||
"refreshInterval": {
|
||||
"label": ""
|
||||
"label": "Interval obnovení (v minutách)"
|
||||
},
|
||||
"dangerousAllowSanitizedItemContent": {
|
||||
"label": "",
|
||||
"info": ""
|
||||
"label": "Povolit formátování HTML (nebezpečné)",
|
||||
"info": "Povolení formátování HTML zvenčí by mohlo být nebezpečné.<br/>Ujistěte se, že kanál RSS pochází z důvěryhodného zdroje."
|
||||
},
|
||||
"textLinesClamp": {
|
||||
"label": ""
|
||||
"label": "Svorka textových řádků"
|
||||
},
|
||||
"sortByPublishDateAscending": {
|
||||
"label": "Seřadit podle data zveřejnění (vzestupně)"
|
||||
},
|
||||
"sortPostsWithoutPublishDateToTheTop": {
|
||||
"label": "Umístit příspěvky bez data zveřejnění navrch"
|
||||
},
|
||||
"maximumAmountOfPosts": {
|
||||
"label": "Maximální počet příspěvků"
|
||||
}
|
||||
},
|
||||
"card": {
|
||||
"errors": {
|
||||
"general": {
|
||||
"title": "",
|
||||
"text": ""
|
||||
"title": "Nepodařilo se načíst kanál RSS",
|
||||
"text": "Vyskytl se problém s načítáním kanálu RSS. Ujistěte se, že jste správně nakonfigurovali kanál RSS pomocí platné adresy URL. Adresy URL by měly odpovídat oficiální specifikaci. Po aktualizaci kanálu bude možná nutné znovu načíst plochu."
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,30 +1,30 @@
|
||||
{
|
||||
"descriptor": {
|
||||
"name": "",
|
||||
"description": ""
|
||||
"name": "Vyhledávací panel",
|
||||
"description": "Vyhledávací panel, který Vám umožňuje vyhledávat ve vlastním vyhledávači, na YouTube a na podporovaných integracích."
|
||||
},
|
||||
"input": {
|
||||
"placeholder": ""
|
||||
"placeholder": "Vyhledat online..."
|
||||
},
|
||||
"switched-to": "",
|
||||
"switched-to": "Přepnuto na",
|
||||
"searchEngines": {
|
||||
"search": {
|
||||
"name": "",
|
||||
"description": ""
|
||||
"name": "Web",
|
||||
"description": "Vyhledat..."
|
||||
},
|
||||
"youtube": {
|
||||
"name": "",
|
||||
"description": ""
|
||||
"name": "YouTube",
|
||||
"description": "Vyhledat na YouTube"
|
||||
},
|
||||
"torrents": {
|
||||
"name": "",
|
||||
"description": ""
|
||||
"name": "Torrenty",
|
||||
"description": "Hledat torrenty"
|
||||
},
|
||||
"overseerr": {
|
||||
"name": "",
|
||||
"description": ""
|
||||
"name": "Overseerr",
|
||||
"description": "Hledat mezi filmy a TV pořady na Overseerr"
|
||||
}
|
||||
},
|
||||
"tip": "",
|
||||
"switchedSearchEngine": ""
|
||||
"tip": "Vyhledávací panel můžete vybrat pomocí klávesové zkratky ",
|
||||
"switchedSearchEngine": "Přepnutí na vyhledávání pomocí {{searchEngine}}"
|
||||
}
|
||||
|
||||
29
public/locales/cs/modules/smart-home/entity-state.json
Normal file
29
public/locales/cs/modules/smart-home/entity-state.json
Normal file
@@ -0,0 +1,29 @@
|
||||
{
|
||||
"entityNotFound": "Entita nenalezena",
|
||||
"descriptor": {
|
||||
"name": "Entita Home Assistant",
|
||||
"description": "Aktuální stav entity v Home Assistant",
|
||||
"settings": {
|
||||
"title": "Stav entity",
|
||||
"entityId": {
|
||||
"label": "ID entity",
|
||||
"info": "Jedinečné ID entity v aplikaci Home Assistant. Zkopírujte kliknutím na entitu > klikněte na ikonu ozubeného kolečka > klikněte na tlačítko kopírovat \"ID entity\". Některé vlastní entity nemusí být podporovány."
|
||||
},
|
||||
"appendUnit": {
|
||||
"label": "Přidat měrnou jednotku",
|
||||
"info": "Přidávat atribut měrné jednotky ke stavu entity."
|
||||
},
|
||||
"automationId": {
|
||||
"label": "Volitelné ID automatizace",
|
||||
"info": "Vaše unikátní ID automatizace. Vždy začíná s automation.XXXXX. Pokud nebude nastaveno, na widget nebude možné kliknout a bude možné zobrazit pouze stav. Po kliknutí bude stav entity obnoven."
|
||||
},
|
||||
"displayName": {
|
||||
"label": "Zobrazovaný název"
|
||||
},
|
||||
"displayFriendlyName": {
|
||||
"label": "Zobrazovat čitelné jméno",
|
||||
"info": "Zobrazovat přátelské jméno z Home Assistantu místo zobrazovaného jména"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
16
public/locales/cs/modules/smart-home/trigger-automation.json
Normal file
16
public/locales/cs/modules/smart-home/trigger-automation.json
Normal file
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"descriptor": {
|
||||
"name": "Automatizace Home Assistanta",
|
||||
"description": "Spustí automatizaci",
|
||||
"settings": {
|
||||
"title": "Spustí automatizaci",
|
||||
"automationId": {
|
||||
"label": "ID automatizace",
|
||||
"info": "Vaše unikátní ID automatizace. Vždy začíná s automation.XXXXX."
|
||||
},
|
||||
"displayName": {
|
||||
"label": "Zobrazovaný název"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,92 +1,102 @@
|
||||
{
|
||||
"descriptor": {
|
||||
"name": "",
|
||||
"description": "",
|
||||
"name": "Torrenty",
|
||||
"description": "Zobrazuje seznam torrentů z podporovaných klientů Torrent.",
|
||||
"settings": {
|
||||
"title": "",
|
||||
"title": "Nastavení pro widget Torrentů",
|
||||
"refreshInterval": {
|
||||
"label": ""
|
||||
"label": "Interval obnovení (v sekundách)"
|
||||
},
|
||||
"displayCompletedTorrents": {
|
||||
"label": ""
|
||||
"label": "Zobrazit dokončené torrenty"
|
||||
},
|
||||
"displayActiveTorrents": {
|
||||
"label": ""
|
||||
"label": "Zobrazit aktivní torrenty"
|
||||
},
|
||||
"speedLimitOfActiveTorrents": {
|
||||
"label": ""
|
||||
"label": "Rychlost nahrávání, aby byl torrent považován za aktivní (kB/s)"
|
||||
},
|
||||
"displayStaleTorrents": {
|
||||
"label": ""
|
||||
"label": "Zobrazovat neaktivní torrenty"
|
||||
},
|
||||
"labelFilterIsWhitelist": {
|
||||
"label": ""
|
||||
"label": "Seznam štítků je whitelist (místo blacklistu)"
|
||||
},
|
||||
"labelFilter": {
|
||||
"label": "",
|
||||
"description": ""
|
||||
"label": "Seznam štítků",
|
||||
"description": "Když je zaškrtnuta možnost \"je whitelist\", bude se chovat jako whitelist. Pokud možnost není zaškrtnutá, bude se chovat jako blacklist. Nebude dělat nic, když zůstane prázdný"
|
||||
},
|
||||
"displayRatioWithFilter": {
|
||||
"label": "",
|
||||
"info": ""
|
||||
"label": "Zobrazení filtrovaného poměru seznamu torrentů",
|
||||
"info": "Pokud je vypnuto, zobrazí se pouze obecný poměr. Obecný poměr bude stále používat štítky, pokud jsou nastaveny"
|
||||
}
|
||||
}
|
||||
},
|
||||
"card": {
|
||||
"footer": {
|
||||
"error": "",
|
||||
"lastUpdated": "",
|
||||
"ratioGlobal": "",
|
||||
"ratioWithFilter": ""
|
||||
"error": "Chyba",
|
||||
"lastUpdated": "Naposledy aktualizováno před {{time}}",
|
||||
"ratioGlobal": "Obecný poměr",
|
||||
"ratioWithFilter": "Filtrovaný poměr"
|
||||
},
|
||||
"table": {
|
||||
"header": {
|
||||
"name": "",
|
||||
"size": "",
|
||||
"download": "",
|
||||
"upload": "",
|
||||
"estimatedTimeOfArrival": "",
|
||||
"progress": ""
|
||||
"isCompleted": "Stahování",
|
||||
"name": "Název",
|
||||
"dateAdded": "Přidáno dne",
|
||||
"size": "Velikost",
|
||||
"download": "Stahování",
|
||||
"upload": "Nahrávání",
|
||||
"estimatedTimeOfArrival": "Odhadovaný čas",
|
||||
"progress": "Postup",
|
||||
"totalUploaded": "Celkem nahráno",
|
||||
"totalDownloaded": "Celkem staženo",
|
||||
"ratio": "Poměr",
|
||||
"seeds": "Seeds (připojení)",
|
||||
"peers": "Peers (připojení)",
|
||||
"label": "Popis",
|
||||
"state": "Status",
|
||||
"stateMessage": "Zpráva stavu"
|
||||
},
|
||||
"item": {
|
||||
"text": ""
|
||||
"text": "Spravováno aplikací {{appName}}, poměr {{ratio}}"
|
||||
},
|
||||
"body": {
|
||||
"nothingFound": "",
|
||||
"filterHidingItems": ""
|
||||
"nothingFound": "Nebyly nalezeny žádné torrenty",
|
||||
"filterHidingItems": "{{count}} položek je skryto Vašimi filtry"
|
||||
}
|
||||
},
|
||||
"lineChart": {
|
||||
"title": "",
|
||||
"download": "",
|
||||
"upload": "",
|
||||
"timeSpan": "",
|
||||
"totalDownload": "",
|
||||
"totalUpload": ""
|
||||
"title": "Aktuální rychlost stahování",
|
||||
"download": "Stahování: {{download}}",
|
||||
"upload": "Nahrávání: {{upload}}",
|
||||
"timeSpan": "před {{seconds}} sekundami",
|
||||
"totalDownload": "Stahování: {{download}}/s",
|
||||
"totalUpload": "Nahrávání: {{upload}}/s"
|
||||
},
|
||||
"errors": {
|
||||
"noDownloadClients": {
|
||||
"title": "",
|
||||
"text": ""
|
||||
"title": "Nebyl nalezen žádný podporovaný Torrent klient!",
|
||||
"text": "Přidejte podporovaného Torrent klienta pro zobrazení aktuálně stahovaných souborů"
|
||||
},
|
||||
"generic": {
|
||||
"title": "",
|
||||
"text": ""
|
||||
"title": "Došlo k neočekávané chybě",
|
||||
"text": "Nelze komunikovat s Vašimi klienty Torrentu. Zkontrolujte prosím Vaši konfiguraci"
|
||||
}
|
||||
},
|
||||
"loading": {
|
||||
"title": "",
|
||||
"description": ""
|
||||
"title": "Načítání",
|
||||
"description": "Navazování spojení"
|
||||
},
|
||||
"popover": {
|
||||
"introductionPrefix": "",
|
||||
"introductionPrefix": "Spravuje",
|
||||
"metrics": {
|
||||
"queuePosition": "",
|
||||
"progress": "",
|
||||
"totalSelectedSize": "",
|
||||
"state": "",
|
||||
"ratio": "",
|
||||
"completed": ""
|
||||
"queuePosition": "Pozice ve frontě - {{position}}",
|
||||
"progress": "Postup - {{progress}}%",
|
||||
"totalSelectedSize": "Celkem - {{totalSize}}",
|
||||
"state": "Stav - {{state}}",
|
||||
"ratio": "Poměr -",
|
||||
"completed": "Hotovo"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user