mirror of
https://github.com/Lissy93/dashy.git
synced 2025-09-25 18:58:48 +02:00
Merge branch 'master' into ref/admin
This commit is contained in:
commit
1e585b78ad
@ -198,7 +198,7 @@ Both sections and items can have an icon associated with them, defined under the
|
||||
|
||||
The following icon types are supported:
|
||||
- **Favicon** - Automatically fetch an apps icon from its Favicon or logo image
|
||||
- **Icon Packs** - Use any icon from [font-awesome], [simple-icons] or [material icons]
|
||||
- **Icon Packs** - Use any icon from [font-awesome], [simple-icons], [selfh.st/icons], or [material icons]
|
||||
- **Emoji** - Any valid emoji can be used as an icon
|
||||
- **Generative** - Unique, auto-generated images for easily identifying services
|
||||
- **URL** - Pass the URL of any valid image in to have it fetched and rendered
|
||||
@ -209,6 +209,7 @@ The following icon types are supported:
|
||||
[font-awesome]: https://fontawesome.com/icons
|
||||
[simple-icons]: https://simpleicons.org/
|
||||
[material icons]: https://github.com/Templarian/MaterialDesign
|
||||
[selfh.st/icons]: https://selfh.st/icons
|
||||
[dashboard-icons]: https://github.com/WalkxCode/dashboard-icons
|
||||
|
||||
|
||||
@ -417,13 +418,14 @@ Dashy supports multiple languages and locales. When available, your language sho
|
||||
- 🇵🇱 **Polish**: `pl` - Contributed by **[@skaarj1989](https://github.com/skaarj1989)**
|
||||
- 🇵🇹 **Portuguese**: `pt` - Contributed by **[@LeoColman](https://github.com/LeoColman)**
|
||||
- 🛰️ **Galician**: `gl` - Contributed by **[@pvillaverde](https://github.com/pvillaverde)**
|
||||
- 🇷🇺 **Russian**: `ru` - _Auto-generated_
|
||||
- 🇷🇺 **Russian**: `ru` -Contributed by **[@sasetz](https://github.com/sasetz)**
|
||||
- 🇸🇰 **Slovak**: `sk` - Contributed by **[@Smexhy](https://github.com/Smexhy)**
|
||||
- 🇸🇮 **Slovenian**: `sl` - Contributed by **[@UrekD](https://github.com/UrekD)**
|
||||
- 🇪🇸 **Spanish**: `es` - Contributed by **[@lu4t](https://github.com/lu4t)**
|
||||
- 🇸🇪 **Swedish**: `sv` - Contributed by **[@BOZG](https://github.com/BOZG)**
|
||||
- 🇹🇼 **Traditional Chinese**: `zh-TW` - Contributed by **[@stanly0726](https://github.com/stanly0726)**
|
||||
- 🇹🇷 **Turkish**: `tr` - Contributed by **[@imsakg](https://github.com/imsakg)**
|
||||
- 🇺🇦 **Ukrainian**: `uk` - Contributed by **[@allozavrr](https://github.com/allozavrr)**
|
||||
- 🏴☠️ **Pirate**: `pirate` - Contributed by **[@Lissy93](https://github.com/lissy93)**
|
||||
|
||||
#### Add your Language
|
||||
@ -525,7 +527,6 @@ Huge thanks to the sponsors helping to support Dashy's development!
|
||||
|
||||

|
||||
|
||||
|
||||
#### Contributors
|
||||
[](./docs/credits.md)
|
||||
|
||||
|
File diff suppressed because one or more lines are too long
Before Width: | Height: | Size: 36 MiB After Width: | Height: | Size: 39 MiB |
@ -286,6 +286,7 @@ appConfig:
|
||||
clientId: [registered client id]
|
||||
endpoint: [OIDC endpoint]
|
||||
scope: [The scope(s) to request from the OIDC provider]
|
||||
adminGroup: admin
|
||||
```
|
||||
|
||||
Because Dashy is a SPA, a [public client](https://datatracker.ietf.org/doc/html/rfc6749#section-2.1) registration with PKCE is needed.
|
||||
|
@ -204,6 +204,8 @@ For more info, see the **[Authentication Docs](/docs/authentication.md)**
|
||||
--- | --- | --- | ---
|
||||
**`clientId`** | `string` | Required | The client id registered in the OIDC server
|
||||
**`endpoint`** | `string` | Required | The URL of the OIDC server that should be used.
|
||||
**`adminRole`** | `string` | _Optional_ | The role that will be considered as admin.
|
||||
**`adminGroup`** | `string` | _Optional_ | The group that will be considered as admin.
|
||||
**`scope`** | `string` | Required | The scope(s) to request from the OIDC provider
|
||||
|
||||
**[⬆️ Back to Top](#configuring)**
|
||||
@ -322,7 +324,7 @@ For more info, see the **[Authentication Docs](/docs/authentication.md)**
|
||||
|
||||
**Field** | **Type** | **Required**| **Description**
|
||||
--- | --- | --- | ---
|
||||
**`icon`** | `string` | _Optional_ | The icon for a given item or section. <br>See [Icon Docs](/docs/icons.md) for all available supported icon types, including: auto-fetched favicons, generative icons, emoji icons, home-lab service logos, font-awesome, simple-icons, material icons, and icons specified by URL
|
||||
**`icon`** | `string` | _Optional_ | The icon for a given item or section. <br>See [Icon Docs](/docs/icons.md) for all available supported icon types, including: auto-fetched favicons, generative icons, emoji icons, home-lab service logos, font-awesome, simple-icons, material icons, selfh.st icons, and icons specified by URL
|
||||
|
||||
**[⬆️ Back to Top](#configuring)**
|
||||
|
||||
|
@ -4,6 +4,7 @@
|
||||
|
||||

|
||||
|
||||
|
||||
## Contributors
|
||||
|
||||

|
||||
|
@ -7,6 +7,7 @@ Both sections and items can have an icon, which is specified using the `icon` at
|
||||
- [Simple Icons](#simple-icons)
|
||||
- [Generative Icons](#generative-icons)
|
||||
- [Emoji Icons](#emoji-icons)
|
||||
- [selfh.st Icons](#selfhst-icons)
|
||||
- [Home-Lab Icons](#home-lab-icons)
|
||||
- [Material Icons](#material-design-icons)
|
||||
- [Icons by URL](#icons-by-url)
|
||||
@ -63,7 +64,7 @@ Font-Awesome has a wide variety of free icons, but you can also use their pro ic
|
||||
|
||||
## Simple Icons
|
||||
|
||||
[SimpleIcons.org](https://simpleicons.org/) is a collection of 2000+ high quality, free and open source brand and logo SVG icons. Usage of which is very similar to font-awesome icons. First find the glyph you want to use on the [website](https://simpleicons.org/), then just set your icon the the simple icon slug, prefixed with `si-`.
|
||||
[SimpleIcons.org](https://simpleicons.org/) is a collection of 2000+ high quality, free and open source brand and logo SVG icons. Usage of which is very similar to font-awesome icons. First find the glyph you want to use on the [website](https://simpleicons.org/), then just set your icon to the simple icon slug, prefixed with `si-`.
|
||||
|
||||
<p align="center">
|
||||
<img width="580" src="https://i.ibb.co/MVhkXfC/simple-icons-example.png" />
|
||||
@ -109,6 +110,18 @@ For example, these will all render the same rocket (🚀) emoji: `icon: ':rocket
|
||||
|
||||
---
|
||||
|
||||
## selfh.st Icons
|
||||
|
||||
The [selfh.st](https://selfh.st/) project provides a set of icons, originally for self-hosted services, but now expanded to include a wide variety of services. These icons can be used by specifying the icon name (without extension and with all spaces replaced with -) preceded by `sh-`. See https://selfh.st/icons/ for a full list of all available icons. For example, the Home Assistant icon is `sh-home-assistant`.
|
||||
|
||||
Note: These icons are fetched from the jsdelivr CDN, so if you require offline access, the [Local Icons](#local-icons) method may be a better option for you.
|
||||
|
||||
<p align="center">
|
||||
<img width="580" src="https://i.ibb.co/pfy09LH/Screenshot-from-2025-01-08-22-04-21.png" />
|
||||
</p>
|
||||
|
||||
---
|
||||
|
||||
## Home-Lab Icons
|
||||
|
||||
The [dashboard-icons](https://github.com/walkxcode/Dashboard-Icons) repo by [@WalkxCode](https://github.com/WalkxCode) provides a comprehensive collection of 360+ high-quality PNG icons for commonly self-hosted services. Dashy natively supports these icons, and you can use them just by specifying the icon name (without extension) preceded by `hl-`. See [here](https://github.com/walkxcode/Dashboard-Icons/tree/main/png) for a full list of all available icons. Note that these are fetched and cached straight from GitHub, so if you require offline access, the [Local Icons](#local-icons) method may be a better option for you.
|
||||
|
149
docs/widgets.md
149
docs/widgets.md
@ -1298,6 +1298,155 @@ In other words: Private, noncomercial, moderate use of the API is tolerated. The
|
||||
|
||||
---
|
||||
|
||||
### Custom List
|
||||
|
||||
Renders custom schema-compliant JOSN in a list.
|
||||
|
||||
#### Options
|
||||
**Field** | **Type** | **Required** | **Description**
|
||||
--- | --- | --- | ---
|
||||
**`url`** | `text` | Required | A string containing the url of a json file.
|
||||
**`title`** | `text` | optional | A title for the widget. Can be helpful if stacking multiple lists in the same section.
|
||||
**`daysForNew`** | `number` | Optional | Used to highlight new items.
|
||||
|
||||
#### Json Schema
|
||||
The input file should comply with the following schema:
|
||||
```json
|
||||
{
|
||||
"$schema": "http://json-schema.org/draft-04/schema#",
|
||||
"type": "array",
|
||||
"items": [
|
||||
{
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"link": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"text": {
|
||||
"type": "string"
|
||||
},
|
||||
"url": {
|
||||
"type": "string"
|
||||
},
|
||||
"title": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"text",
|
||||
"url",
|
||||
"title"
|
||||
]
|
||||
},
|
||||
"value": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"text": {
|
||||
"type": "string"
|
||||
},
|
||||
"title": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"text",
|
||||
"title"
|
||||
]
|
||||
},
|
||||
"date": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"link",
|
||||
"value",
|
||||
"date"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
Example: This json data was generated by a data worflow that gets the new releases of a few projects from GitHub. The system used to build the data workflow is n8n.
|
||||
|
||||
```json
|
||||
[
|
||||
{
|
||||
"link": {
|
||||
"text": "jellyfin/jellyfin",
|
||||
"url": "https://github.com/jellyfin/jellyfin/releases/tag/v10.10.7",
|
||||
"title": ""
|
||||
},
|
||||
"value": {
|
||||
"text": "v10.10.7",
|
||||
"title": "2025-04-05"
|
||||
},
|
||||
"date": "2025-04-05T19:14:59Z"
|
||||
},
|
||||
{
|
||||
"link": {
|
||||
"text": "jellyfin/jellyfin-web",
|
||||
"url": "https://github.com/jellyfin/jellyfin-web/releases/tag/v10.10.7",
|
||||
"title": ""
|
||||
},
|
||||
"value": {
|
||||
"text": "v10.10.7",
|
||||
"title": "2025-04-05"
|
||||
},
|
||||
"date": "2025-04-05T19:15:00Z"
|
||||
},
|
||||
{
|
||||
"link": {
|
||||
"text": "lissy93/dashy",
|
||||
"url": "https://github.com/Lissy93/dashy/releases/tag/3.1.1",
|
||||
"title": ""
|
||||
},
|
||||
"value": {
|
||||
"text": "3.1.1",
|
||||
"title": "2024-05-30"
|
||||
},
|
||||
"date": "2024-05-30T17:20:53Z"
|
||||
},
|
||||
{
|
||||
"link": {
|
||||
"text": "VSCodium/vscodium",
|
||||
"url": "https://github.com/VSCodium/vscodium/releases/tag/1.102.14746",
|
||||
"title": ""
|
||||
},
|
||||
"value": {
|
||||
"text": "1.102.14746",
|
||||
"title": "2025-07-16"
|
||||
},
|
||||
"date": "2025-07-16T18:27:49Z"
|
||||
}
|
||||
]
|
||||
```
|
||||
#### Notes
|
||||
- This widget is designed to render data generated by another system that complies with the schema. The example JSON data above was generated using a n8n workflow, and other ETL or workflow systems can generate similar results.
|
||||
- To avoid requests to a different system in each refresh, you can save the input files locally in the user-data folder inside your Dashy installation.
|
||||
- To use json files from a different domain, remember to add `useProxy: true` to the widget configuration. I have not tested this use case because I save all my input data locally on the Dashy server. Please open a ticket if you have an issue in this use case.
|
||||
|
||||
#### Example
|
||||
|
||||
This widget renders a json file that from a `json-data` directory inside the `user-data` directory on the Dashy server.
|
||||
```yaml
|
||||
- type: custom-list
|
||||
options:
|
||||
url: /json-data/github-releases.json
|
||||
title: 'Github Releases'
|
||||
daysForNew: 5
|
||||
```
|
||||
|
||||
#### Info
|
||||
|
||||
- **CORS**: 🟢 Not needed for files hosted inside the `user-data` directory. Use `useProxy: true` to bypass CORS restrictions when using data from a different server.
|
||||
- **Auth**: 🟢 Not Required
|
||||
- **Price**: 🟢 Free
|
||||
- **Host**: user defined
|
||||
- **Privacy**: depends on the user defined host.
|
||||
|
||||
---
|
||||
|
||||
### Custom search
|
||||
|
||||
Allows web search using multiple user-defined search engines and other websites.
|
||||
|
@ -35,7 +35,7 @@
|
||||
"remedial": "^1.0.8",
|
||||
"rss-parser": "3.13.0",
|
||||
"rsup-progress": "^3.2.0",
|
||||
"simple-icons": "^12.2.0",
|
||||
"simple-icons": "^14.4.0",
|
||||
"v-jsoneditor": "^1.4.5",
|
||||
"v-tooltip": "^2.1.3",
|
||||
"vue": "^2.7.0",
|
||||
|
@ -147,6 +147,7 @@ const app = express()
|
||||
.use(ENDPOINTS.statusCheck, (req, res) => {
|
||||
try {
|
||||
statusCheck(req.url, async (results) => {
|
||||
res.setHeader('Content-Type', 'application/json');
|
||||
await res.end(results);
|
||||
});
|
||||
} catch (e) {
|
||||
|
10
src/App.vue
10
src/App.vue
@ -155,11 +155,21 @@ export default {
|
||||
e.preventDefault();
|
||||
return 'You may have unsaved edits. Are you sure you want to exit the page?';
|
||||
},
|
||||
/* Detect and apply theme based on OS preference */
|
||||
applyThemeBasedOnOSPreference() {
|
||||
const prefersDark = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches;
|
||||
const osTheme = prefersDark ? this.appConfig.nightTheme : this.appConfig.dayTheme;
|
||||
if (osTheme) {
|
||||
this.$store.commit(Keys.SET_THEME, osTheme);
|
||||
this.updateTheme(osTheme);
|
||||
}
|
||||
},
|
||||
},
|
||||
/* Basic initialization tasks on app load */
|
||||
async mounted() {
|
||||
await this.$store.dispatch(Keys.INITIALIZE_CONFIG); // Initialize config before moving on
|
||||
this.applyLanguage(); // Apply users local language
|
||||
this.applyThemeBasedOnOSPreference(); // Apply theme based on OS preference
|
||||
this.hideSplash(); // Hide the splash screen, if visible
|
||||
if (this.appConfig.customCss) { // Inject users custom CSS, if present
|
||||
const cleanedCss = this.appConfig.customCss.replace(/<\/?[^>]+(>|$)/g, '');
|
||||
|
@ -2,7 +2,7 @@
|
||||
"home": {
|
||||
"no-results": "Ingen søgeresultater",
|
||||
"no-data": "Ingen data konfigureret",
|
||||
"no-items-section": "Ingen genstander at vise endnu"
|
||||
"no-items-section": "Ingen genstande at vise endnu"
|
||||
},
|
||||
"search": {
|
||||
"search-label": "Søg",
|
||||
@ -20,7 +20,7 @@
|
||||
"remember-me-hour": "4 timer",
|
||||
"remember-me-day": "1 dag",
|
||||
"remember-me-week": "1 uge",
|
||||
"remember-me-long-time": "en lang tid",
|
||||
"remember-me-long-time": "lang tid",
|
||||
"error-missing-username": "Mangler brugernavn",
|
||||
"error-missing-password": "Manglende adgangskode",
|
||||
"error-incorrect-username": "Bruger ikke fundet",
|
||||
@ -54,7 +54,7 @@
|
||||
"reset-config-msg-l3": "Er du sikker på at du vil fortsætte?",
|
||||
"data-cleared-msg": "Data blev succesfuldt ryddet",
|
||||
"actions-label": "Handlinger",
|
||||
"copy-config-label": "Kopiera Config",
|
||||
"copy-config-label": "Kopiere Config",
|
||||
"data-copied-msg": "Konfigurationen er blevet kopieret til clipboard",
|
||||
"reset-config-label": "Nulstil konfiguration",
|
||||
"css-save-btn": "Gem ændringer",
|
||||
@ -95,7 +95,7 @@
|
||||
"language-switcher": {
|
||||
"title": "Skift applikationssprog",
|
||||
"dropdown-label": "Valg en sprog",
|
||||
"save-button": "Gemme",
|
||||
"save-button": "Gem",
|
||||
"success-msg": "Sprog opdateret til"
|
||||
},
|
||||
"theme-maker": {
|
||||
@ -104,17 +104,17 @@
|
||||
"reset-button": "Nulstil styles for",
|
||||
"show-all-button": "Vis alle variabler",
|
||||
"change-fonts-button": "Skift skrifttyper",
|
||||
"save-button": "Gemme",
|
||||
"cancel-button": "Ophæve",
|
||||
"saved-toast": "{theme} opdateret med succes",
|
||||
"save-button": "Gem",
|
||||
"cancel-button": "Annuller",
|
||||
"saved-toast": "{theme} opdateret succesfuldt",
|
||||
"copied-toast": "Temadata for {theme} kopieret til udklipsholder",
|
||||
"reset-toast": "Tilpassede farver for {theme} fjernet"
|
||||
},
|
||||
"config-editor": {
|
||||
"save-location-label": "Gemme beliggenhed",
|
||||
"location-local-label": "Anbringe lokalt",
|
||||
"save-location-label": "Lokation for gem",
|
||||
"location-local-label": "Gem lokalt",
|
||||
"location-disk-label": "Skriv ændringer til konfigurationsfil",
|
||||
"save-button": "Gemme ændringer",
|
||||
"save-button": "Gem ændringer",
|
||||
"preview-button": "Forhåndsvisning af ændringer",
|
||||
"valid-label": "Konfigurationen er gyldig",
|
||||
"status-success-msg": "Opgave fuldført",
|
||||
@ -155,7 +155,7 @@
|
||||
"password-label-update": "Skriv dit kodeord",
|
||||
"backup-button-setup": "Sikkerhedskopiering",
|
||||
"backup-button-update": "Opdater sikkerhedskopiering",
|
||||
"backup-id-label": "Din sikkerhedskopi-ID",
|
||||
"backup-id-label": "Dit sikkerhedskopi-ID",
|
||||
"backup-id-note": "Dette bruges til at gendanne fra sikkerhedskopier senere. Så gem det sammen med din adgangskode et sikkert sted.",
|
||||
"restore-title": "Gendan en sikkerhedskopi",
|
||||
"restore-id-label": "Gendan-ID",
|
||||
@ -165,7 +165,7 @@
|
||||
"backup-error-unknown": "Kan ikke behandle anmodningen",
|
||||
"backup-error-password": "Forkert kodeord. Indtast venligst din nuværende adgangskode.",
|
||||
"backup-success-msg": "Afsluttet med succes",
|
||||
"restore-success-msg": "Konfiguration gendan med succes"
|
||||
"restore-success-msg": "Konfiguration gendannet med succes"
|
||||
},
|
||||
"menu": {
|
||||
"open-section-title": "Åbn i",
|
||||
@ -174,9 +174,9 @@
|
||||
"modal": "Pop-Up Modal",
|
||||
"workspace": "Arbejdsrumsvisning",
|
||||
"options-section-title": "Muligheder",
|
||||
"edit-item": "Redigere",
|
||||
"edit-item": "Rediger",
|
||||
"move-item": "Kopier eller flyt",
|
||||
"remove-item": "Fjerne"
|
||||
"remove-item": "Fjern"
|
||||
},
|
||||
"context-menus": {
|
||||
"item": {
|
||||
@ -187,14 +187,14 @@
|
||||
"workspace": "Arbejdsrumsvisning",
|
||||
"clipboard": "Kopier til udklipsholder",
|
||||
"options-section-title": "Muligheder",
|
||||
"edit-item": "Redigere",
|
||||
"edit-item": "Rediger",
|
||||
"move-item": "Kopier eller flyt",
|
||||
"remove-item": "Fjerne",
|
||||
"copied-toast": "URL er blevet kopieret til udklipsholder"
|
||||
},
|
||||
"section": {
|
||||
"open-section": "Åbn sektion",
|
||||
"edit-section": "Redigere",
|
||||
"edit-section": "Rediger",
|
||||
"expand-collapse": "Udvid / Skjul",
|
||||
"move-section": "Flytte til",
|
||||
"remove-section": "Fjerne"
|
||||
@ -206,35 +206,35 @@
|
||||
"edit-site-data-subheading": "Rediger webstedsdata",
|
||||
"edit-page-info-btn": "Rediger sideoplysninger",
|
||||
"edit-page-info-tooltip": "Apptitel, beskrivelse, navigationslinks, sidefodstekst osv.",
|
||||
"edit-app-config-btn": "Redigere appkonfiguration",
|
||||
"edit-app-config-btn": "Rediger appkonfiguration",
|
||||
"edit-app-config-tooltip": "Alle andre appkonfigurationsmuligheder",
|
||||
"edit-pages-btn": "Redigere sider",
|
||||
"edit-pages-btn": "Rediger sider",
|
||||
"edit-pages-tooltip": "Tilføj eller fjern yderligere visninger",
|
||||
"config-save-methods-subheading": "Indstillinger for lagring af konfiguration",
|
||||
"save-locally-btn": "Gemme lokalt",
|
||||
"save-locally-btn": "Gem lokalt",
|
||||
"save-locally-tooltip": "Gem konfigurationen lokalt i browserlageret. Dette vil ikke påvirke din konfigurationsfil, men ændringer vil kun blive gemt på denne enhed",
|
||||
"save-disk-btn": "Gemme til disk",
|
||||
"save-disk-btn": "Gem til disk",
|
||||
"save-disk-tooltip": "Gem konfigurationen i filen conf.yml på disken. Dette vil sikkerhedskopiere og derefter overskrive din eksisterende konfiguration",
|
||||
"export-config-btn": "Exportere konfiguration",
|
||||
"export-config-btn": "Exporter konfiguration",
|
||||
"export-config-tooltip": "Se og eksporter ny konfiguration, enten til en fil eller til udklipsholder",
|
||||
"cloud-backup-btn": "Sikkerhedskopier til cloud",
|
||||
"cloud-backup-tooltip": "Gem krypteret backup af konfiguration til cloud",
|
||||
"edit-raw-config-btn": "Rediger rå konfiguration",
|
||||
"edit-raw-config-tooltip": "Se og rediger rå config via JSON-editor",
|
||||
"cancel-changes-btn": "Avbryd redigering",
|
||||
"cancel-changes-btn": "Afbryd redigering",
|
||||
"cancel-changes-tooltip": "Nulstil aktuelle ændringer, og afslut redigeringstilstand. Dette vil ikke påvirke din gemte konfiguration",
|
||||
"edit-mode-name": "Redigeringstilstand",
|
||||
"edit-mode-subtitle": "Du er i redigeringstilstand",
|
||||
"edit-mode-description": "Det betyder, at du kan foretage ændringer i din konfiguration og se resultaterne, men indtil du gemmer, vil ingen af dine ændringer blive bevaret.",
|
||||
"save-stage-btn": "Gemme",
|
||||
"cancel-stage-btn": "Avbryd",
|
||||
"save-stage-btn": "Gem",
|
||||
"cancel-stage-btn": "Afbryd",
|
||||
"save-locally-warning": "Hvis du fortsætter, vil ændringer kun blive gemt i din browser. Du bør eksportere en kopi af din konfiguration til brug på andre maskiner. Vil du fortsætte?"
|
||||
},
|
||||
"edit-item": {
|
||||
"missing-title-err": "En varetitel er påkrævet"
|
||||
},
|
||||
"edit-section": {
|
||||
"edit-section-title": "Redigere sektion",
|
||||
"edit-section-title": "Rediger sektion",
|
||||
"add-section-title": "Tilføj ny sektion",
|
||||
"edit-tooltip": "Klik for at redigere, eller højreklik for at få flere muligheder",
|
||||
"remove-confirm": "Er du sikker på, at du vil fjerne denne sektion? Denne handling kan fortrydes senere."
|
||||
@ -273,11 +273,11 @@
|
||||
"cpu-chart-title": "CPU-historie",
|
||||
"mem-chart-title": "Hukommelsesbrug",
|
||||
"mem-breakdown-title": "Hukommelsesnedbrydning",
|
||||
"load-chart-title": "Systeminlæsning"
|
||||
"load-chart-title": "Systemindlæsning"
|
||||
},
|
||||
"glances": {
|
||||
"disk-space-free": "Ledig",
|
||||
"disk-space-used": "I bruk",
|
||||
"disk-space-used": "I brug",
|
||||
"disk-mount-point": "Mount Point",
|
||||
"disk-file-system": "Filsystem",
|
||||
"disk-io-read": "Læs",
|
||||
@ -329,7 +329,7 @@
|
||||
"disk-space": "Diskudrymme",
|
||||
"dnd": "Forstyr ikke",
|
||||
"email": "email",
|
||||
"enabled": "aktivert",
|
||||
"enabled": "aktiveret",
|
||||
"federated-shares-ucfirst": "Fødereret deler",
|
||||
"federated-shares": "fødereret deler",
|
||||
"files": "fil{plural}",
|
||||
@ -363,7 +363,7 @@
|
||||
"other": "andet",
|
||||
"overall": "Samlet set",
|
||||
"private-link": "privat link",
|
||||
"public-link": "publik link",
|
||||
"public-link": "offentlig link",
|
||||
"quota-enabled": "Diskkvote er {not} aktiveret for denne bruger",
|
||||
"received": "modtaget",
|
||||
"scripts": "scripts",
|
||||
@ -371,7 +371,7 @@
|
||||
"started": "Startede",
|
||||
"storages-by-type": "Opbevaring efter type",
|
||||
"storages": "Opbevaring{plural}",
|
||||
"strings-use": "strings brug",
|
||||
"strings-use": "tråde brug",
|
||||
"tasks": "Opgaver",
|
||||
"total-files": "samlede filer",
|
||||
"total-users": "samlede bruger",
|
||||
@ -379,7 +379,7 @@
|
||||
"until": "Så længe",
|
||||
"updates-available-for": "Opdateringer er tilgængelige for",
|
||||
"updates-available": "opdatering{plural} tilgængelig",
|
||||
"used": "brugd",
|
||||
"used": "brugt",
|
||||
"user": "bruger",
|
||||
"using": "ved brug af",
|
||||
"version": "version",
|
||||
|
@ -1,7 +1,7 @@
|
||||
{
|
||||
"home": {
|
||||
"no-results": "Ingen søkeresultater",
|
||||
"no-data": "Ingen data konfigurert"
|
||||
"no-data": "Ingen data tilgjengelig"
|
||||
},
|
||||
"search": {
|
||||
"search-label": "Søk",
|
||||
@ -43,7 +43,7 @@
|
||||
"cloud-sync-button": "Aktiver skysynkronisering",
|
||||
"edit-cloud-sync-button": "Rediger skysynkronisering",
|
||||
"rebuild-app-button": "Bygg program",
|
||||
"change-language-button": "Endre appspråk",
|
||||
"change-language-button": "Endre språk",
|
||||
"reset-settings-button": "Tilbakestill lokale innstillinger",
|
||||
"app-info-button": "Appinfo",
|
||||
"backup-note": "Det anbefales å ta en sikkerhetskopi av konfigurasjonen din før du gjør endringer.",
|
||||
@ -91,7 +91,7 @@
|
||||
"unsupported-version-l2": "For den beste opplevelsen og de siste sikkerhetsoppdateringene, vennligst oppdater til"
|
||||
},
|
||||
"language-switcher": {
|
||||
"title": "Endre applikasjonsspråk",
|
||||
"title": "Endre språk",
|
||||
"dropdown-label": "Velg et språk",
|
||||
"save-button": "Lagre",
|
||||
"success-msg": "Språk oppdatert til"
|
||||
@ -115,7 +115,7 @@
|
||||
"valid-label": "Konfigurasjon er gyldig",
|
||||
"status-success-msg": "Oppgaven fullført",
|
||||
"status-fail-msg": "Oppgaven mislyktes",
|
||||
"success-msg-disk": "Konfigurasjonsfil skrevet til disk med hell",
|
||||
"success-msg-disk": "Konfigurasjonsfil skrevet til disk vellykket",
|
||||
"success-msg-local": "Lokale endringer er lagret",
|
||||
"success-note-l1": "Appen bør bygge om automatisk.",
|
||||
"success-note-l2": "Dette kan ta opptil et minutt.",
|
||||
@ -131,10 +131,10 @@
|
||||
"rebuild-note-l1": "En ombygging er nødvendig for at endringer skrevet i conf.yml-filen skal tre i kraft.",
|
||||
"rebuild-note-l2": "Dette bør skje automatisk, men hvis det ikke har blitt gjort, kan du manuelt utløse det her.",
|
||||
"rebuild-note-l3": "Dette er ikke nødvendig for endringer som er lagret lokalt.",
|
||||
"rebuild-button": "Start Build",
|
||||
"rebuilding-status-1": "Building ...",
|
||||
"rebuild-button": "Start Bygging",
|
||||
"rebuilding-status-1": "Bygger ...",
|
||||
"rebuilding-status-2": "Dette kan ta noen minutter",
|
||||
"error-permission": "Du har ikke tillatelse til å utløse denne handlingen",
|
||||
"error-permission": "Du har ikke tillatelse til å utføre denne handlingen",
|
||||
"success-msg": "Byggingen er fullført",
|
||||
"fail-msg": "Byggoperasjonen mislyktes",
|
||||
"reload-note": "En sideinnlasting er nå nødvendig for at endringer skal tre i kraft",
|
||||
|
@ -1,50 +1,96 @@
|
||||
{
|
||||
"home": {
|
||||
"no-results": "Нет Результатов Поиска",
|
||||
"no-data": "Данные не настроены"
|
||||
"no-results": "Нет результатов",
|
||||
"no-data": "Данные не настроены",
|
||||
"no-items-section": "Данные загружаются"
|
||||
},
|
||||
"search": {
|
||||
"search-label": "Поиск",
|
||||
"search-placeholder": "Начните вводить, чтобы отфильтровать",
|
||||
"clear-search-tooltip": "Очистить поиск",
|
||||
"search-placeholder": "Начните вводить фильтр",
|
||||
"clear-search-tooltip": "Очистить",
|
||||
"enter-to-search-web": "Нажмите \"Ввод\" для поиска в Интернете"
|
||||
},
|
||||
"splash-screen": {
|
||||
"loading": "Загрузка"
|
||||
},
|
||||
"login": {
|
||||
"title": "Даши",
|
||||
"title": "Dashy",
|
||||
"guest-label": "Гостевой доступ",
|
||||
"username-label": "Имя пользователя",
|
||||
"password-label": "Пароль",
|
||||
"login-button": "Авторизоваться",
|
||||
"remember-me-label": "Помни меня за",
|
||||
"login-button": "Войти",
|
||||
"remember-me-label": "Запомнить меня на",
|
||||
"remember-me-never": "Никогда",
|
||||
"remember-me-hour": "4 часа",
|
||||
"remember-me-day": "1 день",
|
||||
"remember-me-week": "1 неделя",
|
||||
"remember-me-week": "1 неделю",
|
||||
"remember-me-long-time": "Надолго",
|
||||
"error-missing-username": "Отсутствует имя пользователя",
|
||||
"error-missing-password": "Отсутствует пароль",
|
||||
"error-incorrect-username": "Пользователь не найден",
|
||||
"error-incorrect-password": "Неверный пароль",
|
||||
"success-message": "Вход в систему...",
|
||||
"logout-message": "Вышли из",
|
||||
"already-logged-in-title": "Уже вошли в систему",
|
||||
"logout-message": "Вы вышли из системы",
|
||||
"already-logged-in-title": "Вы уже вошли в систему",
|
||||
"already-logged-in-text": "Вы вошли как",
|
||||
"proceed-to-dashboard": "Перейти на панель управления",
|
||||
"proceed-to-dashboard": "Перейти к панели управления",
|
||||
"log-out-button": "Выйти",
|
||||
"proceed-guest-button": "Продолжить как гость"
|
||||
"proceed-guest-button": "Продолжить как гость",
|
||||
"guest-intro-1": "Этот экземпляр приложения имеет гостевой доступ.",
|
||||
"guest-intro-2": "Гости имеют имеют доступ к панелям управления только для чтения, так что они не могут записать изменения на диск.",
|
||||
"error": "Ошибка",
|
||||
"error-no-user-configured": "Аутентификация отключена или не было настроено ни одного пользователя.",
|
||||
"error-go-home-button": "Домой",
|
||||
"logged-in-guest": "Вы вошли как гость, переадресация...",
|
||||
"error-guest-access": "Гостевой доступ запрещён"
|
||||
},
|
||||
"app-info": {
|
||||
"title": "Информация о Приложении",
|
||||
"error-log": "Журнал Ошибок",
|
||||
"no-errors": "Ошибок не зафиксировано",
|
||||
"help-support": "Помощь и Поддержка",
|
||||
"help-support-description" : "Для получения поддержки в запуске и настройке Dashy, обратитесь за помощью на",
|
||||
"help-support-discussions": "страницу Discussions",
|
||||
"support-dashy": "Поддержать Dashy",
|
||||
"support-dashy-description": "Если вы хотите поддержать проект, пожалуйста посетите страницу",
|
||||
"support-dashy-link": "Contributions",
|
||||
"report-bug": "Сообщить об ошибке",
|
||||
"report-bug-description": "Если вы считаете, что нашли ошибку, пожалуйста",
|
||||
"report-bug-link": "сообщите о проблеме",
|
||||
"more-info": "Больше информации",
|
||||
"source": "Исходный код",
|
||||
"documentation": "Документация",
|
||||
"privacy-and-security": "Приватность и Безопасность",
|
||||
"privacy-and-security-l1": "Для получения подробной информации о том, как Dashy управляет вашими данными, см.",
|
||||
"privacy-and-security-privacy-policy": "Политика Приватности",
|
||||
"privacy-and-security-advice": "Для получения рекомендаций по обеспечению безопасности вашей панели управления вы можете обратиться к",
|
||||
"privacy-and-security-advice-link": "Документации по Управлению",
|
||||
"privacy-and-security-security-issue": "Если вы обнаружили потенциальную проблему безопасности, сообщите о ней, в соответствии с нашей",
|
||||
"privacy-and-security-security-policy": "Политикой Безопасности",
|
||||
"license": "Лицензия",
|
||||
"license-under": "Лицензировано под",
|
||||
"licence-third-party": "Лицензии на модули сторонних производителей см.",
|
||||
"licence-third-party-link": "Legal",
|
||||
"list-contributors": "Чтобы посмотреть полный список авторов и благодарностей, см.",
|
||||
"list-contributors-link": "Credits",
|
||||
"version": "Версия"
|
||||
},
|
||||
"config": {
|
||||
"main-tab": "Главное меню",
|
||||
"view-config-tab": "Просмотр конфигурации",
|
||||
"view-config-tab": "Посмотреть конфигурацию",
|
||||
"edit-config-tab": "Изменить конфигурацию",
|
||||
"custom-css-tab": "Пользовательские стили",
|
||||
"custom-css-tab": "Пользовательский CSS",
|
||||
"heading": "Варианты конфигурации",
|
||||
"download-config-button": "Скачать конфигурацию",
|
||||
"edit-config-button": "Изменить конфигурацию",
|
||||
"edit-css-button": "Редактировать собственный CSS",
|
||||
"edit-css-button": "Редактировать пользовательский CSS",
|
||||
"cloud-sync-button": "Включить облачную синхронизацию",
|
||||
"edit-cloud-sync-button": "Изменить Cloud Sync",
|
||||
"rebuild-app-button": "Восстановить приложение",
|
||||
"change-language-button": "Изменить язык приложения",
|
||||
"edit-cloud-sync-button": "Изменить облачную синхронизацию",
|
||||
"rebuild-app-button": "Пересобрать приложение",
|
||||
"change-language-button": "Выбрать язык",
|
||||
"reset-settings-button": "Сбросить локальные настройки",
|
||||
"disabled-note": "Некоторые пункты конфигурации были отключены вашим администратором",
|
||||
"small-screen-note": "Вы используете слишком маленький дисплей, некоторые страницы могут не быть оптимальны",
|
||||
"app-info-button": "Информация о приложении",
|
||||
"backup-note": "Перед внесением изменений рекомендуется сделать резервную копию вашей конфигурации.",
|
||||
"reset-config-msg-l1": "Это удалит все пользовательские настройки из локального хранилища, но не повлияет на ваш файл conf.yml.",
|
||||
@ -52,69 +98,77 @@
|
||||
"reset-config-msg-l3": "Вы уверены, что хотите продолжить?",
|
||||
"data-cleared-msg": "Данные успешно очищены",
|
||||
"actions-label": "Действия",
|
||||
"copy-config-label": "Копировать конфигурацию",
|
||||
"copy-config-label": "Скопировать конфигурацию",
|
||||
"data-copied-msg": "Конфиг скопирован в буфер обмена",
|
||||
"reset-config-label": "Сбросить конфигурацию",
|
||||
"css-save-btn": "Сохранить изменения",
|
||||
"css-note-label": "Примечание",
|
||||
"css-note-l1": "Вам нужно будет обновить страницу, чтобы изменения вступили в силу.",
|
||||
"css-note-l2": "Переопределения стилей хранятся только локально, поэтому рекомендуется сделать копию вашего CSS.",
|
||||
"css-note-l3": "Чтобы удалить все пользовательские стили, удалите содержимое и нажмите «Сохранить изменения»."
|
||||
"css-note-l3": "Чтобы удалить все пользовательские стили, удалите содержимое и нажмите «Сохранить изменения».",
|
||||
"custom-css": {
|
||||
"title": "Пользовательский CSS",
|
||||
"base-theme": "Базовая Тема"
|
||||
}
|
||||
},
|
||||
"alternate-views": {
|
||||
"alternate-view-heading": "Переключить вид",
|
||||
"default": "Дефолт",
|
||||
"default": "По умолчанию",
|
||||
"workspace": "Рабочая среда",
|
||||
"minimal": "Минимальный"
|
||||
},
|
||||
"settings": {
|
||||
"theme-label": "Тема",
|
||||
"layout-label": "Макет",
|
||||
"layout-label": "Сетка",
|
||||
"layout-auto": "Авто",
|
||||
"layout-horizontal": "По горизонтали",
|
||||
"layout-vertical": "Вертикальный",
|
||||
"layout-horizontal": "Горизонтальная",
|
||||
"layout-vertical": "Вертикальная",
|
||||
"item-size-label": "Размер элемента",
|
||||
"item-size-small": "Небольшой",
|
||||
"item-size-medium": "Середина",
|
||||
"item-size-small": "Маленький",
|
||||
"item-size-medium": "Средний",
|
||||
"item-size-large": "Большой",
|
||||
"config-launcher-label": "Конфиг",
|
||||
"config-launcher-tooltip": "Обновить конфигурацию",
|
||||
"config-launcher-label": "Конфигурация",
|
||||
"config-launcher-tooltip": "Редактировать конфигурацию",
|
||||
"sign-out-tooltip": "Выход",
|
||||
"sign-in-tooltip": "Авторизоваться",
|
||||
"sign-in-welcome": "Здравствуйте, {username}!"
|
||||
"sign-in-welcome": "Здравствуйте, {username}!",
|
||||
"hide": "Скрыть",
|
||||
"open": "Открыть"
|
||||
},
|
||||
"updates": {
|
||||
"app-version-note": "Даши версия",
|
||||
"up-to-date": "Своевременно",
|
||||
"app-version-note": "Dashy версия",
|
||||
"up-to-date": "Последняя версия",
|
||||
"out-of-date": "Доступно обновление",
|
||||
"unsupported-version-l1": "Вы используете неподдерживаемую версию Dashy",
|
||||
"unsupported-version-l2": "Для оптимальной работы и получения последних исправлений безопасности, пожалуйста, обновите до"
|
||||
"unsupported-version-l2": "Для оптимальной работы и получения последних исправлений безопасности, пожалуйста, обновите приложение до версии"
|
||||
},
|
||||
"language-switcher": {
|
||||
"title": "Изменить язык приложения",
|
||||
"title": "Выбрать язык приложения",
|
||||
"dropdown-label": "Выберите язык",
|
||||
"save-button": "Сохранить",
|
||||
"success-msg": "Язык обновлен до"
|
||||
"success-msg": "Выбран язык: "
|
||||
},
|
||||
"theme-maker": {
|
||||
"title": "Конфигуратор темы",
|
||||
"export-button": "Экспорт пользовательских переменных",
|
||||
"reset-button": "Сбросить стили для",
|
||||
"reset-button": "Сбросить стили для темы",
|
||||
"show-all-button": "Показать все переменные",
|
||||
"change-fonts-button": "Выбрать шрифты",
|
||||
"save-button": "Сохранить",
|
||||
"cancel-button": "Отмена",
|
||||
"saved-toast": "{theme} Обновлено успешно",
|
||||
"copied-toast": "Данные темы для {theme} скопированы в буфер обмена",
|
||||
"reset-toast": "Пользовательские цвета для {theme} удалены"
|
||||
"saved-toast": "Тема {theme} успешно обновлена",
|
||||
"copied-toast": "Данные для темы {theme} скопированы в буфер обмена",
|
||||
"reset-toast": "Пользовательские цвета для темы {theme} удалены"
|
||||
},
|
||||
"config-editor": {
|
||||
"save-location-label": "Сохранить местоположение",
|
||||
"location-local-label": "Применять локально",
|
||||
"location-disk-label": "Запись изменений в файл конфигурации",
|
||||
"save-location-label": "Место сохранения",
|
||||
"location-local-label": "Применить локально",
|
||||
"location-disk-label": "Записать изменения в файл конфигурации на диск",
|
||||
"save-button": "Сохранить изменения",
|
||||
"valid-label": "Конфигурация действительна",
|
||||
"preview-button": "Предпросмотр",
|
||||
"valid-label": "Конфигурация верна",
|
||||
"status-success-msg": "Задача завершена",
|
||||
"status-fail-msg": "Сбой задачи",
|
||||
"status-fail-msg": "Задача была провалена",
|
||||
"success-msg-disk": "Файл конфигурации успешно записан на диск",
|
||||
"success-msg-local": "Локальные изменения успешно сохранены",
|
||||
"success-note-l1": "Приложение должно перестроиться автоматически.",
|
||||
@ -123,38 +177,39 @@
|
||||
"error-msg-save-mode": "Пожалуйста, выберите режим сохранения: локальный или файл",
|
||||
"error-msg-cannot-save": "Произошла ошибка при сохранении конфигурации",
|
||||
"error-msg-bad-json": "Ошибка в JSON, возможно, неверный формат",
|
||||
"warning-msg-validation": "Предупреждение о проверке",
|
||||
"warning-msg-validation": "Предупреждение валидатора",
|
||||
"not-admin-note": "Вы не можете записать измененные на диск, потому что вы не вошли в систему как администратор"
|
||||
},
|
||||
"app-rebuild": {
|
||||
"title": "Восстановить приложение",
|
||||
"rebuild-note-l1": "Чтобы изменения, записанные в файл conf.yml, вступили в силу, требуется перестройка.",
|
||||
"rebuild-note-l2": "Это должно произойти автоматически, но если этого не произошло, вы можете запустить это вручную здесь.",
|
||||
"rebuild-note-l3": "Это не требуется для изменений, хранящихся локально.",
|
||||
"title": "Пересобрать приложение",
|
||||
"rebuild-note-l1": "Чтобы изменения, записанные в файл conf.yml, вступили в силу, требуется пересборка.",
|
||||
"rebuild-note-l2": "Это должно произойти автоматически, но если этого не произошло, вы можете запустить её вручную здесь.",
|
||||
"rebuild-note-l3": "Заметьте, что эта функция доступна только для экземпляров приложения, которые запущены с помощью Node или Docker, но не для тех, которые запущенны статично",
|
||||
"rebuild-button": "Начать сборку",
|
||||
"rebuilding-status-1": "Строительство...",
|
||||
"rebuilding-status-1": "Сборка...",
|
||||
"rebuilding-status-2": "Это может занять несколько минут",
|
||||
"error-permission": "У вас нет разрешения запускать это действие",
|
||||
"error-permission": "У вас нет разрешения на запуск этого действия",
|
||||
"success-msg": "Сборка успешно завершена",
|
||||
"fail-msg": "Не удалось выполнить операцию сборки",
|
||||
"reload-note": "Теперь требуется перезагрузка страницы, чтобы изменения вступили в силу.",
|
||||
"reload-note": "Теперь нужно перезагрузить страницу, чтобы изменения вступили в силу.",
|
||||
"reload-button": "Перезагрузить страницу"
|
||||
},
|
||||
"cloud-sync": {
|
||||
"title": "Резервное копирование и восстановление в облаке",
|
||||
"intro-l1": "Резервное копирование и восстановление в облако - это дополнительная функция, которая позволяет вам загрузить свою конфигурацию в Интернет, а затем восстановить ее на любом другом устройстве или экземпляре Dashy.",
|
||||
"intro-l2": "Все данные полностью зашифрованы с помощью AES с использованием вашего пароля в качестве ключа.",
|
||||
"title": "Облачная конфигурация",
|
||||
"intro-l1": "Облачная конфигурация - это дополнительная функция, которая позволяет вам загрузить свою конфигурацию в Интернет, а затем восстановить ее на любом другом устройстве или экземпляре Dashy.",
|
||||
"intro-l2": "Все данные полностью зашифрованы с помощью сквозного шифрования, используя AES и ваш пароль в качестве ключа.",
|
||||
"intro-l3": "Для получения дополнительной информации см.",
|
||||
"backup-title-setup": "Сделать резервную копию",
|
||||
"intro-docs": "документацию",
|
||||
"backup-title-setup": "Создать резервную копию",
|
||||
"backup-title-update": "Обновить резервную копию",
|
||||
"password-label-setup": "Выберите пароль",
|
||||
"password-label-update": "Введите ваш пароль",
|
||||
"backup-button-setup": "Резервное копирование",
|
||||
"backup-button-setup": "Создать резервную копию",
|
||||
"backup-button-update": "Обновить резервную копию",
|
||||
"backup-id-label": "Ваш резервный идентификатор",
|
||||
"backup-id-note": "Это используется для восстановления из резервных копий позже. Так что храните его вместе со своим паролем в надежном месте.",
|
||||
"backup-id-note": "Он используется для восстановления из резервных копий позже. Так что сохраните его вместе со своим паролем в надежном месте.",
|
||||
"restore-title": "Восстановить резервную копию",
|
||||
"restore-id-label": "Восстановить ID",
|
||||
"restore-id-label": "Восстановить резервный идентификатор",
|
||||
"restore-password-label": "Пароль",
|
||||
"restore-button": "Восстановить",
|
||||
"backup-missing-password": "Отсутствует пароль",
|
||||
@ -164,9 +219,167 @@
|
||||
"restore-success-msg": "Конфигурация успешно восстановлена"
|
||||
},
|
||||
"menu": {
|
||||
"sametab": "Открыть в текущей вкладке",
|
||||
"newtab": "Открыть в новой вкладке",
|
||||
"modal": "Открыть в модальном всплывающем окне",
|
||||
"workspace": "Открыть в представлении рабочей области"
|
||||
"open-section-title": "Открыть в",
|
||||
"sametab": "Текущей вкладке",
|
||||
"newtab": "Новой вкладке",
|
||||
"modal": "Всплывающем окне",
|
||||
"workspace": "Рабочей области",
|
||||
"options-section-title": "Настройки",
|
||||
"edit-item": "Редактировать",
|
||||
"move-item": "Скопировать или переместить",
|
||||
"remove-item": "Удалить"
|
||||
},
|
||||
"context-menus": {
|
||||
"item": {
|
||||
"open-section-title": "Открыть в",
|
||||
"sametab": "Текущей вкладке",
|
||||
"newtab": "Новой вкладке",
|
||||
"modal": "Всплывающем окне",
|
||||
"workspace": "Рабочей области",
|
||||
"clipboard": "Копировать в буфер обмена",
|
||||
"options-section-title": "Настройки",
|
||||
"edit-item": "Редактировать",
|
||||
"move-item": "Скопировать или переместить",
|
||||
"remove-item": "Удалить",
|
||||
"copied-toast": "Ссылка была скопирована в буфер обмена"
|
||||
},
|
||||
"section": {
|
||||
"open-section": "Открыть секцию",
|
||||
"edit-section": "Редактировать",
|
||||
"expand-collapse": "Раскрыть / Свернуть",
|
||||
"move-section": "Переместить в",
|
||||
"remove-section": "Удалить"
|
||||
}
|
||||
},
|
||||
"footer": {
|
||||
"dev-by": "Разработано ",
|
||||
"licensed-under": "Лицензировано под",
|
||||
"get-the": "Получите",
|
||||
"source-code": "Исходный код"
|
||||
},
|
||||
"interactive-editor": {
|
||||
"menu": {
|
||||
"start-editing-tooltip": "Войти в режим редактирования",
|
||||
"edit-site-data-subheading": "Редактировать параметры сайта",
|
||||
"edit-page-info-btn": "Редактировать страницу",
|
||||
"edit-page-info-tooltip": "Заголовок приложения, описание, ссылки, текст снизу страницы и т. д.",
|
||||
"edit-app-config-btn": "Редактировать конфигурацию",
|
||||
"edit-app-config-tooltip": "Конфигурация всего остального приложения",
|
||||
"edit-pages-btn": "Редактировать страницы",
|
||||
"edit-pages-tooltip": "Добавить или удалить дополнительные страницы панели управления",
|
||||
"config-save-methods-subheading": "Сохранить конфигурацию",
|
||||
"save-locally-btn": "Локально",
|
||||
"save-locally-tooltip": "Сохранить конфигурацию локально, в хранилище браузера. Это не повлияет на ваш конфигурационный файл на диске, но изменения останутся на этом устройстве",
|
||||
"save-disk-btn": "На диск",
|
||||
"save-disk-tooltip": "Сначала создастся резервная копия текущей конфигурации, а затем она перезапишется новой версией",
|
||||
"export-config-btn": "Экспорт конфигурации",
|
||||
"export-config-tooltip": "Просмотреть и экспортировать новую конфигурацию, либо как файл, либо в буфер обмена",
|
||||
"cloud-backup-btn": "Облачное сохранение",
|
||||
"cloud-backup-tooltip": "Сохранить зашифрованный файл конфигурации в облачное хранилище",
|
||||
"edit-raw-config-btn": "Редактировать JSON конфигурации",
|
||||
"edit-raw-config-tooltip": "Просмотреть и редактировать файл конфигурации напрямую, через редактор JSON",
|
||||
"cancel-changes-btn": "Сбросить изменения",
|
||||
"cancel-changes-tooltip": "Сбросить текущие изменения и выйти из режима редактирования. Это не изменит сохранённую конфигурацию",
|
||||
"edit-mode-name": "Режим редактирования",
|
||||
"edit-mode-subtitle": "Вы находитесь в режиме редактирования",
|
||||
"edit-mode-description": "Это означает, что вы сможете делать изменения вашей конфигурации и просматривать их результат, но они не вступят в силу, пока вы не сохраните их",
|
||||
"save-stage-btn": "Сохранить",
|
||||
"cancel-stage-btn": "Отмена",
|
||||
"save-locally-warning": "Если вы продолжите, изменения будут сохранены только в вашем браузере. Чтобы использовать новую конфигурацию на других устройствах, экспортируйте её. Продолжить?"
|
||||
},
|
||||
"edit-item": {
|
||||
"missing-title-err": "Отсутствует заголовок элемента"
|
||||
},
|
||||
"edit-section": {
|
||||
"edit-section-title": "Редактировать секцию",
|
||||
"add-section-title": "Добавить новую секцию",
|
||||
"edit-tooltip": "Нажмите ЛКМ, чтобы редактировать или ПКМ для дополнительных опций",
|
||||
"remove-confirm": "Вы уверены, что хотите удалить эту секцию? Это действие можно отменить позже"
|
||||
},
|
||||
"edit-app-config": {
|
||||
"warning-msg-title": "Продолжайте с осторожностью",
|
||||
"warning-msg-l1": "Следующие настройки предназначены для продвинутой настройки приложения.",
|
||||
"warning-msg-l2": "Если вы сомневаетесь в том, что значит то или иное поле, пожалуйста ознакомьтесь с",
|
||||
"warning-msg-docs": "документацией",
|
||||
"warning-msg-l3": "для избежания непредвиденных последствий."
|
||||
},
|
||||
"export": {
|
||||
"export-title": "Экспорт конфигурации",
|
||||
"copy-clipboard-btn": "Скопировано в буфер обмена",
|
||||
"copy-clipboard-tooltip": "Скопировать всю конфигурацию приложения, в формате YAML",
|
||||
"download-file-btn": "Скачать как файл",
|
||||
"download-file-tooltip": "Скачать файл конфигурации на ваше устройство в формате YAML",
|
||||
"view-title": "Просмотреть конфигурацию"
|
||||
}
|
||||
},
|
||||
"critical-error": {
|
||||
"title": "Ошибка загрузки конфигурации",
|
||||
"subtitle": "Приложение не смогло загрузиться из-за ошибки в конфигурации.",
|
||||
"sub-ensure-that": "Удостоверьтесь, что",
|
||||
"sub-error-details": "Сведения об ошибке",
|
||||
"sub-next-steps": "Следующие шаги",
|
||||
"ignore-button": "Игнорировать критические ошибки"
|
||||
},
|
||||
"widgets": {
|
||||
"general": {
|
||||
"loading": "Загрузка...",
|
||||
"show-more": "Развернуть сведения",
|
||||
"cpu-details": "Сведения о ЦПУ",
|
||||
"mem-details": "Сведения о памяти",
|
||||
"show-less": "Показать меньше",
|
||||
"open-link": "Продолжить чтение"
|
||||
},
|
||||
"pi-hole": {
|
||||
"status-heading": "Статус"
|
||||
},
|
||||
"stat-ping": {
|
||||
"up": "Онлайн",
|
||||
"down": "Оффлайн"
|
||||
},
|
||||
"net-data": {
|
||||
"cpu-chart-title": "История ЦПУ",
|
||||
"mem-chart-title": "Использование памяти",
|
||||
"mem-breakdown-title": "Подробности об использовании памяти",
|
||||
"load-chart-title": "Нагрузка системы"
|
||||
},
|
||||
"glances": {
|
||||
"disk-space-free": "Свободно",
|
||||
"disk-space-used": "Использовано",
|
||||
"disk-mount-point": "Путь монитрования",
|
||||
"disk-file-system": "Файловая система",
|
||||
"disk-io-read": "Чтение",
|
||||
"disk-io-write": "Запись",
|
||||
"system-load-desc": "Количество процессов, ожидающих в очереди запуска, усреднённое между всеми ядрами процессора"
|
||||
},
|
||||
"system-info": {
|
||||
"uptime": "Время работы"
|
||||
},
|
||||
"flight-data": {
|
||||
"arrivals": "Прибытия",
|
||||
"departures": "Отправления"
|
||||
},
|
||||
"tfl-status": {
|
||||
"good-service-all": "Хорошее обслуживание на всех линиях",
|
||||
"good-service-rest": "Хорошее обслуживание на всех остальных линиях"
|
||||
},
|
||||
"synology-download": {
|
||||
"download": "Скачивание",
|
||||
"upload": "Загрузка",
|
||||
"downloaded": "Скачано",
|
||||
"uploaded": "Загружено",
|
||||
"remaining": "Остаётся",
|
||||
"up": "Вверх",
|
||||
"down": "Вниз"
|
||||
},
|
||||
"gluetun-status": {
|
||||
"vpn-ip": "VPN IP",
|
||||
"country": "Страна",
|
||||
"region": "Регион",
|
||||
"city": "Город",
|
||||
"post-code": "Индекс",
|
||||
"location": "Местоположение",
|
||||
"timezone": "Часовой пояс",
|
||||
"organization": "Организация"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -10,6 +10,9 @@
|
||||
"clear-search-tooltip":"Rensa sök",
|
||||
"enter-to-search-web":"Tryck på retur för att söka på webben"
|
||||
},
|
||||
"splash-screen": {
|
||||
"loading": "Laddar"
|
||||
},
|
||||
"login":{
|
||||
"title":"Dashy",
|
||||
"username-label":"Användarnamn",
|
||||
@ -83,7 +86,9 @@
|
||||
"config-launcher-tooltip":"Uppdatera konfiguration",
|
||||
"sign-out-tooltip":"Logga ut",
|
||||
"sign-in-tooltip":"Logga in",
|
||||
"sign-in-welcome":"Hej {username}!"
|
||||
"sign-in-welcome":"Hej {username}!",
|
||||
"hide": "Göm",
|
||||
"open": "Öppna"
|
||||
},
|
||||
"updates":{
|
||||
"app-version-note":"Dashy-version",
|
||||
@ -185,14 +190,17 @@
|
||||
"newtab":"Ny flik",
|
||||
"modal":"Pop-Up Modal",
|
||||
"workspace":"Workspace View",
|
||||
"clipboard": "Kopiera till urklipp",
|
||||
"options-section-title":"Alternativ",
|
||||
"edit-item":"Redigera",
|
||||
"move-item":"Kopiera eller flytta",
|
||||
"remove-item":"Ta bort"
|
||||
"remove-item":"Ta bort",
|
||||
"copied-toast": "URLen har blivit kopierad till urklipp"
|
||||
},
|
||||
"section":{
|
||||
"open-section":"Öppna sektion",
|
||||
"edit-section":"Redigera",
|
||||
"expand-collapse": "Expandera / Minimera",
|
||||
"move-section":"Flytta till",
|
||||
"remove-section":"Ta bort"
|
||||
}
|
||||
@ -205,6 +213,8 @@
|
||||
"edit-page-info-tooltip":"Appnamn, beskrivning, navigeringslänkar, sidfotstext, etc",
|
||||
"edit-app-config-btn":"Redigera appkonfiguration",
|
||||
"edit-app-config-tooltip":"Övriga appkonfigurationsalternativ",
|
||||
"edit-pages-btn": "Editera sidor",
|
||||
"edit-pages-tooltip": "Lägg till eller ta bort ytterligare vyer",
|
||||
"config-save-methods-subheading":"Alternativ för konfigurationssparande",
|
||||
"save-locally-btn":"Spara lokalt",
|
||||
"save-locally-tooltip":"Spara konfigurationen lokalt, till webbläsarens lagring. Detta påverkar inte din konfigurationsfil, men ändringarna sparas bara på denna enhet",
|
||||
@ -269,6 +279,15 @@
|
||||
"mem-breakdown-title":"Memory Breakdown",
|
||||
"load-chart-title":"System Load"
|
||||
},
|
||||
"glances": {
|
||||
"disk-space-free": "Ledigt",
|
||||
"disk-space-used": "Utnyttjat",
|
||||
"disk-mount-point": "Mount Point",
|
||||
"disk-file-system": "Filsystem",
|
||||
"disk-io-read": "Läs",
|
||||
"disk-io-write": "Skriv",
|
||||
"system-load-desc": "Antal processer som väntar i run-queue, i genomsnitt över alla kärnor"
|
||||
},
|
||||
"system-info":{
|
||||
"uptime":"Uptime"
|
||||
},
|
||||
@ -279,6 +298,87 @@
|
||||
"tfl-status":{
|
||||
"good-service-all":"God service på alla linjer",
|
||||
"good-service-rest":"God Service på övriga linjer"
|
||||
},
|
||||
"gluetun-status": {
|
||||
"vpn-ip": "VPN IP",
|
||||
"country": "Land",
|
||||
"region": "Region",
|
||||
"city": "Stad",
|
||||
"post-code": "Postnummer",
|
||||
"location": "Plats",
|
||||
"timezone": "Tidszon",
|
||||
"organization": "Organisation"
|
||||
},
|
||||
"nextcloud": {
|
||||
"active": "aktiv",
|
||||
"and": "och",
|
||||
"applications": "applikationer",
|
||||
"available": "Tillgänglig",
|
||||
"away": "Borta",
|
||||
"cache-full": "CACHE FULL",
|
||||
"chat-room": "chattrum",
|
||||
"delete-all": "Ta bort alla",
|
||||
"delete-notification": "Ta bort notifikationer",
|
||||
"disabled": "Inaktiverad",
|
||||
"disk-quota": "Disk Quota",
|
||||
"disk-space": "Diskutrymme",
|
||||
"dnd": "Stör ej",
|
||||
"email": "mejl",
|
||||
"enabled": "aktiverad",
|
||||
"federated-shares-ucfirst": "Federated shares",
|
||||
"federated-shares": "federated shares",
|
||||
"files": "file{plural}",
|
||||
"free": "ledig",
|
||||
"groups": "grupper",
|
||||
"hit-rate": "hit rate",
|
||||
"hits": "hits",
|
||||
"home": "hem",
|
||||
"in": "in",
|
||||
"keys": "nycklar",
|
||||
"last-24-hours": "senaste 24 timmarna",
|
||||
"last-5-minutes": "under de senaste 5 minuterna",
|
||||
"last-hour": "under den senaste timmen",
|
||||
"last-login": "Senaste inlogg",
|
||||
"last-restart": "Senaste omstart",
|
||||
"load-averages": "Genomsnittlig belastning över alla CPU kärnor",
|
||||
"local-shares": "Local shares",
|
||||
"local": "local",
|
||||
"max-keys": "maximalt antal nycklar",
|
||||
"memory-used": "memory used",
|
||||
"memory-utilisation": "memory utilization",
|
||||
"memory": "minne",
|
||||
"misses": "misses",
|
||||
"no-notifications": "Inga notifieringar",
|
||||
"no-pending-updates": "Inga avvacktande uppdateringar",
|
||||
"nothing-to-show": "Inget att visa för tillfället",
|
||||
"of-which": "av vilket",
|
||||
"of": "av",
|
||||
"offline": "Offline",
|
||||
"online": "Online",
|
||||
"other": "other",
|
||||
"overall": "Totalt",
|
||||
"private-link": "privat länk",
|
||||
"public-link": "publik länk",
|
||||
"quota-enabled": "Disk Quota är {not}aktiverat för denna användare",
|
||||
"received": "mottaget",
|
||||
"scripts": "skript",
|
||||
"sent": "skickat",
|
||||
"started": "Startat",
|
||||
"storages-by-type": "Lagring efter typ",
|
||||
"storages": "lagring{plural}",
|
||||
"strings-use": "strings use",
|
||||
"tasks": "Uppgifter",
|
||||
"total-files": "totalt antal filer",
|
||||
"total-users": "totalt antal användare",
|
||||
"total": "totalt",
|
||||
"until": "Tills",
|
||||
"updates-available-for": "Uppdateringar är tillgängliga för",
|
||||
"updates-available": "uppdatering{plural} tillgänglig",
|
||||
"used": "använt",
|
||||
"user": "användare",
|
||||
"using": "använder",
|
||||
"version": "version",
|
||||
"wasted": "onödig"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,446 +0,0 @@
|
||||
{
|
||||
"home": {
|
||||
"no-results": "Немає результатів пошуку",
|
||||
"no-data": "Дані не налаштовано",
|
||||
"no-items-section": "Поки що немає елементів для показу"
|
||||
},
|
||||
"search": {
|
||||
"search-label": "Пошук",
|
||||
"search-placeholder": "Почніть друкувати для фільтрування",
|
||||
"clear-search-tooltip": "Очистити пошук",
|
||||
"enter-to-search-web": "Натисніть enter для пошуку в Інтернеті"
|
||||
},
|
||||
"splash-screen": {
|
||||
"loading": "Завантаження"
|
||||
},
|
||||
"login": {
|
||||
"title": "Dashy",
|
||||
"guest-label": "Гостьовий доступ",
|
||||
"username-label": "Ім'я користувача",
|
||||
"password-label": "Пароль",
|
||||
"login-button": "Увійти",
|
||||
"remember-me-label": "Запам'ятати мене для",
|
||||
"remember-me-never": "Ніколи не запамʼятовувати",
|
||||
"remember-me-hour": "4 години",
|
||||
"remember-me-day": "1 день",
|
||||
"remember-me-week": "1 тиждень",
|
||||
"remember-me-long-time": "Довгий час",
|
||||
"error-missing-username": "Відсутнє ім'я користувача",
|
||||
"error-missing-password": "Відсутній пароль",
|
||||
"error-incorrect-username": "Користувача не знайдено",
|
||||
"error-incorrect-password": "Неправильний пароль",
|
||||
"success-message": "Вхід...",
|
||||
"logout-message": "Вихід",
|
||||
"already-logged-in-title": "Вхід вже виконано",
|
||||
"already-logged-in-text": "Ви ввійшли як",
|
||||
"proceed-to-dashboard": "Перейти до інформаційної панелі",
|
||||
"log-out-button": "Вийти",
|
||||
"proceed-guest-button": "Продовжити як гість",
|
||||
"guest-intro-1": "Цей інстанс має гостьовий доступ.",
|
||||
"guest-intro-2": "Гості мають доступ лише для перегляду до інформаційних панелей, тому не можуть записати жодних змін на диск.",
|
||||
"error": "Помилка",
|
||||
"error-no-user-configured": "Автентифікацію не ввімкнено, або користувачі не налаштовані",
|
||||
"error-go-home-button": "Повернутися додому",
|
||||
"logged-in-guest": "Увійшли як гість, переспрямування...",
|
||||
"error-guest-access": "Гостьовий доступ заборонено"
|
||||
},
|
||||
"app-info": {
|
||||
"title": "Інформація про програму",
|
||||
"error-log": "Журнал помилок",
|
||||
"no-errors": "Останніх помилок не виявлено",
|
||||
"help-support": "Допомога та підтримка",
|
||||
"help-support-description": "Щоб отримати підтримку щодо запуску чи налаштування Dashy, див.",
|
||||
"help-support-discussions": "Обговорення",
|
||||
"support-dashy": "Підтримка Dashy",
|
||||
"support-dashy-description": "Щоб дізнатися, як ви можете взяти участь, перегляньте",
|
||||
"support-dashy-link": "Сторінка внесків",
|
||||
"report-bug": "Повідомити про помилку",
|
||||
"report-bug-description": "Якщо ви вважаєте, що знайшли помилку, будь ласка",
|
||||
"report-bug-link": "повідомте про проблему",
|
||||
"more-info": "Докладніше",
|
||||
"source": "Джерело",
|
||||
"documentation": "Документація",
|
||||
"privacy-and-security": "Конфіденційність та безпека",
|
||||
"privacy-and-security-l1": "Для детальної інформації про те, як Dashy керує вашими даними, див.",
|
||||
"privacy-and-security-privacy-policy": "Політика конфіденційності",
|
||||
"privacy-and-security-advice": "Щоб отримати поради щодо захисту вашої інформаційної панелі, ви можете звернутися до розділу",
|
||||
"privacy-and-security-advice-link": "Документи керування",
|
||||
"privacy-and-security-security-issue": "Якщо ви виявили потенційну проблему з безпекою, повідомте про це до розділу",
|
||||
"privacy-and-security-security-policy": "Політика безпеки",
|
||||
"license": "Ліцензія",
|
||||
"license-under": "Ліцензія згідно",
|
||||
"licence-third-party": "Ліцензії на сторонні модулі див.",
|
||||
"licence-third-party-link": "Юридична інформація",
|
||||
"list-contributors": "Повний список співавторів та подяки див.",
|
||||
"list-contributors-link": "Кредити",
|
||||
"version": "Версія"
|
||||
},
|
||||
"config": {
|
||||
"main-tab": "Головне меню",
|
||||
"view-config-tab": "Переглянути конфігурацію",
|
||||
"edit-config-tab": "Редагувати конфігурацію",
|
||||
"custom-css-tab": "Власні стилі",
|
||||
"heading": "Параметри конфігурації",
|
||||
"download-config-button": "Переглянути / Експортувати конфігурацію",
|
||||
"edit-config-button": "Редагувати конфігурацію",
|
||||
"edit-css-button": "Редагувати власний CSS",
|
||||
"cloud-sync-button": "Увімкнути хмарну синхронізацію",
|
||||
"edit-cloud-sync-button": "Редагувати хмарну синхронізацію",
|
||||
"rebuild-app-button": "Перебудувати програму",
|
||||
"change-language-button": "Змінити мову програми",
|
||||
"reset-settings-button": "Скинути локальні налаштування",
|
||||
"disabled-note": "Деякі функції конфігурації були відключені вашим адміністратором",
|
||||
"small-screen-note": "Ви використовуєте дуже маленький екран, і деякі екрани в цьому меню можуть бути не найкращими",
|
||||
"app-info-button": "Інформація про програму",
|
||||
"backup-note": "Рекомендовано зробити резервну копію конфігурації перед внесенням змін.",
|
||||
"reset-config-msg-l1": "Це видалить усі налаштування користувача з локального сховища, але не вплине на ваш файл 'conf.yml'.",
|
||||
"reset-config-msg-l2": "Ви повинні спочатку створити резервну копію будь-яких змін, які ви внесли локально, якщо ви хочете використовувати їх у майбутньому.",
|
||||
"reset-config-msg-l3": "Ви впевнені, що бажаєте продовжити?",
|
||||
"data-cleared-msg": "Дані успішно видалено",
|
||||
"actions-label": "Дії",
|
||||
"copy-config-label": "Копіювати конфігурацію",
|
||||
"data-copied-msg": "Конфігурацію скопійовано до буфера обміну",
|
||||
"reset-config-label": "Скинути конфігурацію",
|
||||
"css-save-btn": "Зберегти зміни",
|
||||
"css-note-label": "Примітка",
|
||||
"css-note-l1": "Вам потрібно буде оновити сторінку, щоб ваші зміни набули чинності.",
|
||||
"css-note-l2": "Заміни стилів зберігаються лише локально, тому рекомендується зробити копію вашого CSS.",
|
||||
"css-note-l3": "Щоб видалити всі спеціальні стилі, видаліть вміст та натисніть Зберегти зміни",
|
||||
"custom-css": {
|
||||
"title": "Власні стилі",
|
||||
"base-theme": "Базова тема"
|
||||
}
|
||||
},
|
||||
"alternate-views": {
|
||||
"alternate-view-heading": "Змінити перегляд",
|
||||
"default": "За замовчуванням",
|
||||
"workspace": "Робоча область",
|
||||
"minimal": "Мінімальний"
|
||||
},
|
||||
"settings": {
|
||||
"theme-label": "Тема",
|
||||
"layout-label": "Макет",
|
||||
"layout-auto": "Авто",
|
||||
"layout-horizontal": "Горизонтально",
|
||||
"layout-vertical": "Вертикально",
|
||||
"item-size-label": "Розмір",
|
||||
"item-size-small": "Маленький",
|
||||
"item-size-medium": "Середній",
|
||||
"item-size-large": "Великий",
|
||||
"config-launcher-label": "Конфіг",
|
||||
"config-launcher-tooltip": "Оновити конфігурацію",
|
||||
"sign-out-tooltip": "Вийти",
|
||||
"sign-in-tooltip": "Увійти",
|
||||
"sign-in-welcome": "Привіт {username}!",
|
||||
"hide": "Приховати",
|
||||
"open": "Відкрити"
|
||||
},
|
||||
"updates": {
|
||||
"app-version-note": "Версія Dashy",
|
||||
"up-to-date": "Оновити",
|
||||
"out-of-date": "Оновлення доступне",
|
||||
"unsupported-version-l1": "Ви використовуєте непідтримувану версію Dashy",
|
||||
"unsupported-version-l2": "Для найкращого досвіду та останніх виправлень безпеки, будь ласка, оновіться"
|
||||
},
|
||||
"language-switcher": {
|
||||
"title": "Змінити мову програми",
|
||||
"dropdown-label": "Оберіть мову",
|
||||
"save-button": "Зберегти",
|
||||
"success-msg": "Мову оновлено"
|
||||
},
|
||||
"theme-maker": {
|
||||
"title": "Конфігуратор теми",
|
||||
"export-button": "Експорт змінних користувача",
|
||||
"reset-button": "Скинути стилі",
|
||||
"show-all-button": "Показати всі змінні",
|
||||
"change-fonts-button": "Змінити шрифти",
|
||||
"save-button": "Зберегти",
|
||||
"cancel-button": "Скасувати",
|
||||
"saved-toast": "{theme} успішно оновлена",
|
||||
"copied-toast": "Дані теми для {theme} скопійовано в буфер обміну",
|
||||
"reset-toast": "Кольори користувача для {theme} видалено"
|
||||
},
|
||||
"config-editor": {
|
||||
"save-location-label": "Зберегти розташування",
|
||||
"location-local-label": "Застосувати локально",
|
||||
"location-disk-label": "Записати зміни до файлу конфігурації",
|
||||
"save-button": "Зберегти зміни",
|
||||
"preview-button": "Попередній перегляд змін",
|
||||
"valid-label": "Конфігурація дійсна",
|
||||
"status-success-msg": "Завдання виконано",
|
||||
"status-fail-msg": "Завдання не виконано",
|
||||
"success-msg-disk": "Файл конфігурації успішно записаний на диск",
|
||||
"success-msg-local": "Локальні зміни успішно збережено",
|
||||
"success-note-l1": "Програма повинна автоматично перебудуватися.",
|
||||
"success-note-l2": "Це може зайняти до хвилини.",
|
||||
"success-note-l3": "Вам потрібно буде оновити сторінку, щоб зміни набули чинності.",
|
||||
"error-msg-save-mode": "Будь ласка, виберіть режим збереження: локальний або файловий",
|
||||
"error-msg-cannot-save": "Під час збереження конфігурації сталася помилка",
|
||||
"error-msg-bad-json": "Помилка в JSON, можливо, неправильний формат",
|
||||
"warning-msg-validation": "Попередження про перевірку",
|
||||
"not-admin-note": "Ви не можете записати зміни на диск, оскільки ви не увійшли як адміністратор"
|
||||
},
|
||||
"app-rebuild": {
|
||||
"title": "Перебудувати програму",
|
||||
"rebuild-note-l1": "Перебудова потрібна, щоб зміни, записані у файл conf.yml, набули чинності.",
|
||||
"rebuild-note-l2": "Це має статися автоматично, але якщо цього не сталося, ви можете запустити це звідси вручну.",
|
||||
"rebuild-note-l3": "Це не потрібно для змін, які зберігаються локально.",
|
||||
"rebuild-button": "Почати збірку",
|
||||
"rebuilding-status-1": "Збираємо...",
|
||||
"rebuilding-status-2": "Це може зайняти кілька хвилин",
|
||||
"error-permission": "У вас немає дозволу ініціювати цю дію",
|
||||
"success-msg": "Збірку завершено успішно",
|
||||
"fail-msg": "Помилка операції збирання",
|
||||
"reload-note": "Тепер потрібно перезавантажити сторінку, щоб зміни набули чинності",
|
||||
"reload-button": "Перезавантажити сторінку"
|
||||
},
|
||||
"cloud-sync": {
|
||||
"title": "Резервне копіювання та відновлення в хмарі",
|
||||
"intro-l1": "Резервне копіювання та відновлення в хмарі є додатковою функцією, яка дає змогу завантажити вашу конфігурацію в Інтернет, а потім відновити її на будь-якому іншому пристрої чи екземплярі Dashy.",
|
||||
"intro-l2": "Усі дані повністю зашифровані за допомогою AES із використанням вашого пароля як ключа.",
|
||||
"intro-l3": "Для отримання додаткової інформації див.",
|
||||
"intro-docs": "документи",
|
||||
"backup-title-setup": "Створити резервну копію",
|
||||
"backup-title-update": "Оновити резервну копію",
|
||||
"password-label-setup": "Оберіть пароль",
|
||||
"password-label-update": "Введіть свій пароль",
|
||||
"backup-button-setup": "Резервна копія",
|
||||
"backup-button-update": "Оновити резервну копію",
|
||||
"backup-id-label": "Ваш ID резервної копії",
|
||||
"backup-id-note": "Це використовується для відновлення з резервних копій пізніше. Тож має зберігатися разом із паролем у безпечному місці.",
|
||||
"restore-title": "Відновити резервну копію",
|
||||
"restore-id-label": "Відновити ID",
|
||||
"restore-password-label": "Пароль",
|
||||
"restore-button": "Відновити",
|
||||
"backup-missing-password": "Відсутній пароль",
|
||||
"backup-error-unknown": "Неможливо обробити запит",
|
||||
"backup-error-password": "Неправильний пароль. Будь ласка введіть поточний пароль.",
|
||||
"backup-success-msg": "Успішно завершено",
|
||||
"restore-success-msg": "Конфігурацію успішно відновлено"
|
||||
},
|
||||
"menu": {
|
||||
"open-section-title": "Відкрити в",
|
||||
"sametab": "Поточна вкладка",
|
||||
"newtab": "Нова вкладка",
|
||||
"modal": "Модальне спливаюче вікно",
|
||||
"workspace": "Перегляд робочої області",
|
||||
"options-section-title": "Параметри",
|
||||
"edit-item": "Редагувати",
|
||||
"move-item": "Копіювати або перемістити",
|
||||
"remove-item": "Видалити"
|
||||
},
|
||||
"context-menus": {
|
||||
"item": {
|
||||
"open-section-title": "Відкрити в",
|
||||
"sametab": "Поточна вкладка",
|
||||
"newtab": "Нова вкладка",
|
||||
"modal": "Модальне спливаюче вікно",
|
||||
"workspace": "Перегляд робочої області",
|
||||
"clipboard": "Копіювати до буфера обміну",
|
||||
"options-section-title": "Параметри",
|
||||
"edit-item": "Редагувати",
|
||||
"move-item": "Копіювати або перемістити",
|
||||
"remove-item": "Видалити",
|
||||
"copied-toast": "URL скопійовано до буфера обміну"
|
||||
},
|
||||
"section": {
|
||||
"open-section": "Відкрити розділ",
|
||||
"edit-section": "Редагувати",
|
||||
"expand-collapse": "Розгорнути / Згорнути",
|
||||
"move-section": "Перемістити до",
|
||||
"remove-section": "Видалити"
|
||||
}
|
||||
},
|
||||
"footer": {
|
||||
"dev-by": "Розроблено",
|
||||
"licensed-under": "Ліцензія згідно",
|
||||
"get-the": "Отримати",
|
||||
"source-code": "вихідний код"
|
||||
},
|
||||
"interactive-editor": {
|
||||
"menu": {
|
||||
"start-editing-tooltip": "Увійти в інтерактивний редактор",
|
||||
"edit-site-data-subheading": "Редагувати дані сайту",
|
||||
"edit-page-info-btn": "Редагувати інформацію про сторінку",
|
||||
"edit-page-info-tooltip": "Назва програми, опис, навігаційні посилання, текст нижнього колонтитула тощо",
|
||||
"edit-app-config-btn": "Редагувати конфігурацію програми",
|
||||
"edit-app-config-tooltip": "Усі інші параметри конфігурації програми",
|
||||
"edit-pages-btn": "Редагувати сторінки",
|
||||
"edit-pages-tooltip": "Додати або видалити додаткові перегляди",
|
||||
"config-save-methods-subheading": "Параметри збереження конфігурації",
|
||||
"save-locally-btn": "Зберегти локально",
|
||||
"save-locally-tooltip": "Зберегти конфігурацію локально у сховище браузера. Це не вплине на файл конфігурації, але зміни буде збережено лише на цьому пристрої",
|
||||
"save-disk-btn": "Зберегти на диск",
|
||||
"save-disk-tooltip": "Збережіть конфігурацію у файл conf.yml на диску. Це створить резервну копію, а потім перезапише існуючу конфігурацію",
|
||||
"export-config-btn": "Експорт конфігурації",
|
||||
"export-config-tooltip": "Переглянути та експортувати нову конфігурацію у файл або в буфер обміну",
|
||||
"cloud-backup-btn": "Резервне копіювання у хмару",
|
||||
"cloud-backup-tooltip": "Зберегти зашифровану резервну копію конфігурації у хмару",
|
||||
"edit-raw-config-btn": "Редагувати необроблену конфігурацію",
|
||||
"edit-raw-config-tooltip": "Переглянути та змінити необроблену конфігурацію за допомогою редактора JSON",
|
||||
"cancel-changes-btn": "Скасувати редагування",
|
||||
"cancel-changes-tooltip": "Скинути поточні зміни та вийти з режиму редагування. Це не вплине на вашу збережену конфігурацію",
|
||||
"edit-mode-name": "Режим редагування",
|
||||
"edit-mode-subtitle": "Ви перебуваєте в режимі редагування",
|
||||
"edit-mode-description": "Це означає, що ви можете вносити зміни до конфігурації та переглядати результати, але поки ви не оберете збереження, жодні ваші зміни не будуть записані.",
|
||||
"save-stage-btn": "Зберегти",
|
||||
"cancel-stage-btn": "Скасувати",
|
||||
"save-locally-warning": "Якщо ви продовжите, зміни буде збережено лише у вашому браузері. Вам слід експортувати копію вашої конфігурації для використання на інших машинах. Бажаєте продовжити?"
|
||||
},
|
||||
"edit-item": {
|
||||
"missing-title-err": "Потрібна назва елемента"
|
||||
},
|
||||
"edit-section": {
|
||||
"edit-section-title": "Редагувати розділ",
|
||||
"add-section-title": "Додати новий розділ",
|
||||
"edit-tooltip": "Натисніть, щоб редагувати, або клацніть правою кнопкою миші, щоб отримати додаткові параметри",
|
||||
"remove-confirm": "Ви впевнені, що хочете видалити цей розділ? Цю дію можна скасувати пізніше."
|
||||
},
|
||||
"edit-app-config": {
|
||||
"warning-msg-title": "Дійте з обережністю",
|
||||
"warning-msg-l1": "Ці параметри призначені для розширеної конфігурації програми.",
|
||||
"warning-msg-l2": "Якщо ви не впевнені щодо будь-якого значення, зверніться до",
|
||||
"warning-msg-docs": "Документація",
|
||||
"warning-msg-l3": ", щоб уникнути небажаних наслідків."
|
||||
},
|
||||
"export": {
|
||||
"export-title": "Експорт конфігурації",
|
||||
"copy-clipboard-btn": "Копіювати до буфера обміну",
|
||||
"copy-clipboard-tooltip": "Скопіювати всі конфігурації програми до системного буфера обміну у форматі YAML",
|
||||
"download-file-btn": "Завантажити як файл",
|
||||
"download-file-tooltip": "Завантажте всю конфігурацію програми на свій пристрій у файлі YAML",
|
||||
"view-title": "Переглянути конфігурацію"
|
||||
}
|
||||
},
|
||||
"widgets": {
|
||||
"general": {
|
||||
"loading": "Завантаження...",
|
||||
"show-more": "Розгорнути детальніше",
|
||||
"show-less": "Показати менше",
|
||||
"open-link": "Продовжити читання"
|
||||
},
|
||||
"pi-hole": {
|
||||
"status-heading": "Статус"
|
||||
},
|
||||
"stat-ping": {
|
||||
"up": "Онлайн",
|
||||
"down": "Офлайн"
|
||||
},
|
||||
"net-data": {
|
||||
"cpu-chart-title": "Історія CPU",
|
||||
"mem-chart-title": "Використання пам'яті",
|
||||
"mem-breakdown-title": "Переривання пам'яті",
|
||||
"load-chart-title": "Завантаження системи"
|
||||
},
|
||||
"glances": {
|
||||
"disk-space-free": "Вільно",
|
||||
"disk-space-used": "Використано",
|
||||
"disk-mount-point": "Точка монтування",
|
||||
"disk-file-system": "Файлова система",
|
||||
"disk-io-read": "Читання",
|
||||
"disk-io-write": "Запис",
|
||||
"system-load-desc": "Середня кількість процесів, що очікують у черзі виконання, для всіх ядер"
|
||||
},
|
||||
"system-info": {
|
||||
"uptime": "Час роботи"
|
||||
},
|
||||
"flight-data": {
|
||||
"arrivals": "Прибуття",
|
||||
"departures": "Відправлення"
|
||||
},
|
||||
"tfl-status": {
|
||||
"good-service-all": "Якісний сервіс на всіх лініях",
|
||||
"good-service-rest": "Якісний сервіс на всіх інших лініях"
|
||||
},
|
||||
"synology-download": {
|
||||
"download": "Завантажити (Download)",
|
||||
"upload": "Вивантажити (Upload)",
|
||||
"downloaded": "Завантажено",
|
||||
"uploaded": "Вивантажено",
|
||||
"remaining": "Залишилося",
|
||||
"up": "Вгору",
|
||||
"down": "Вниз"
|
||||
},
|
||||
"gluetun-status": {
|
||||
"vpn-ip": "VPN IP",
|
||||
"country": "Країна",
|
||||
"region": "Регіон",
|
||||
"city": "Місто",
|
||||
"post-code": "Поштовий індекс",
|
||||
"location": "Розташування",
|
||||
"timezone": "Часовий пояс",
|
||||
"organization": "Організація"
|
||||
},
|
||||
"nextcloud": {
|
||||
"active": "активно",
|
||||
"and": "і",
|
||||
"applications": "програми",
|
||||
"available": "доступно",
|
||||
"away": "відсутнє",
|
||||
"cache-full": "КЕШ ЗАПОВНЕНИЙ",
|
||||
"chat-room": "кімната чату",
|
||||
"delete-all": "Видалити все",
|
||||
"delete-notification": "Видалити сповіщення",
|
||||
"disabled": "вимкнено",
|
||||
"disk-quota": "Дискова квота",
|
||||
"disk-space": "Простір на диску",
|
||||
"dnd": "Не турбувати",
|
||||
"email": "електронна пошта",
|
||||
"enabled": "увімкнено",
|
||||
"federated-shares-ucfirst": "Об'єднані спільні ресурси",
|
||||
"federated-shares": "об'єднані спільні ресурси",
|
||||
"files": "файл{множина}",
|
||||
"free": "вільний",
|
||||
"groups": "групи",
|
||||
"hit-rate": "швидкість процесів",
|
||||
"hits": "процеси",
|
||||
"home": "дім",
|
||||
"in": "у",
|
||||
"keys": "ключі",
|
||||
"last-24-hours": "за останні 24 години",
|
||||
"last-5-minutes": "останні 5 хвилин",
|
||||
"last-hour": "за останню годину",
|
||||
"last-login": "Останній вхід",
|
||||
"last-restart": "Останній перезапуск",
|
||||
"load-averages": "Завантажити середні значення для всіх ядер ЦПУ",
|
||||
"local-shares": "Локальні спільні ресурси",
|
||||
"local": "локальний",
|
||||
"max-keys": "макс. ключі",
|
||||
"memory-used": "використана пам'ять",
|
||||
"memory-utilisation": "використання пам'яті",
|
||||
"memory": "пам'ять",
|
||||
"misses": "пропуски",
|
||||
"no-notifications": "Немає сповіщень",
|
||||
"no-pending-updates": "Немає очікуваних оновлень",
|
||||
"nothing-to-show": "Зараз тут нічого показувати",
|
||||
"of-which": "з яких",
|
||||
"of": "з",
|
||||
"offline": "Офлайн",
|
||||
"online": "Онлайн",
|
||||
"other": "інше",
|
||||
"overall": "Загалом",
|
||||
"private-link": "приватне посилання",
|
||||
"public-link": "публічне посилання",
|
||||
"quota-enabled": "Дискова квота {не}ввімкнена для цього користувача",
|
||||
"received": "отримано",
|
||||
"scripts": "скрипти",
|
||||
"sent": "надіслано",
|
||||
"started": "Розпочато",
|
||||
"storages-by-type": "Сховища за типом",
|
||||
"storages": "сховище{множина}",
|
||||
"strings-use": "рядки використання",
|
||||
"tasks": "Завдання",
|
||||
"total-files": "загальна кількість файлів",
|
||||
"total-users": "загальна кількість користувачів",
|
||||
"total": "усього",
|
||||
"until": "Доки",
|
||||
"updates-available-for": "Оновлення доступні для",
|
||||
"updates-available": "доступне оновлення{множина}",
|
||||
"used": "використано",
|
||||
"user": "користувач",
|
||||
"using": "використовуючи",
|
||||
"version": "версія",
|
||||
"wasted": "витрачено"
|
||||
}
|
||||
}
|
||||
}
|
456
src/assets/locales/uk.json
Normal file
456
src/assets/locales/uk.json
Normal file
@ -0,0 +1,456 @@
|
||||
{
|
||||
"home": {
|
||||
"no-results": "Немає результатів пошуку",
|
||||
"no-data": "Дані не налаштовано",
|
||||
"no-items-section": "Поки що немає елементів для показу"
|
||||
},
|
||||
"search": {
|
||||
"search-label": "Пошук",
|
||||
"search-placeholder": "Почніть вводити текст для фільтрування",
|
||||
"clear-search-tooltip": "Очистити пошук",
|
||||
"enter-to-search-web": "Натисніть Enter для пошуку в Інтернеті"
|
||||
},
|
||||
"splash-screen": {
|
||||
"loading": "Завантаження"
|
||||
},
|
||||
"login": {
|
||||
"title": "Dashy",
|
||||
"guest-label": "Гостьовий доступ",
|
||||
"username-label": "Ім'я користувача",
|
||||
"password-label": "Пароль",
|
||||
"login-button": "Увійти",
|
||||
"remember-me-label": "Запам'ятати мене для",
|
||||
"remember-me-never": "Ніколи не запам'ятовувати",
|
||||
"remember-me-hour": "4 години",
|
||||
"remember-me-day": "1 день",
|
||||
"remember-me-week": "1 тиждень",
|
||||
"remember-me-long-time": "Довгий час",
|
||||
"error-missing-username": "Відсутнє ім'я користувача",
|
||||
"error-missing-password": "Відсутній пароль",
|
||||
"error-incorrect-username": "Користувача не знайдено",
|
||||
"error-incorrect-password": "Неправильний пароль",
|
||||
"success-message": "Вхід...",
|
||||
"logout-message": "Вихід",
|
||||
"already-logged-in-title": "Вхід вже виконано",
|
||||
"already-logged-in-text": "Ви увійшли як",
|
||||
"proceed-to-dashboard": "Перейти до інформаційної панелі",
|
||||
"log-out-button": "Вийти",
|
||||
"proceed-guest-button": "Продовжити як гість",
|
||||
"guest-intro-1": "У цій системі увімкнено гостьовий доступ.",
|
||||
"guest-intro-2": "Гості мають доступ лише для перегляду до інформаційних панелей, тому не можуть записати жодних змін на диск.",
|
||||
"error": "Помилка",
|
||||
"error-no-user-configured": "Автентифікацію не ввімкнено, або користувачі не налаштовані",
|
||||
"error-go-home-button": "Повернутися на головну",
|
||||
"logged-in-guest": "Ви увійшли як гість, перенаправлення...",
|
||||
"error-guest-access": "Гостьовий доступ не дозволено"
|
||||
},
|
||||
"app-info": {
|
||||
"title": "Інформація про програму",
|
||||
"error-log": "Журнал помилок",
|
||||
"no-errors": "Останніх помилок не виявлено",
|
||||
"help-support": "Допомога та підтримка",
|
||||
"help-support-description": "Щоб отримати підтримку щодо запуску чи налаштування Dashy, див.",
|
||||
"help-support-discussions": "Обговорення",
|
||||
"support-dashy": "Підтримка Dashy",
|
||||
"support-dashy-description": "Щоб дізнатися, як ви можете взяти участь, перегляньте",
|
||||
"support-dashy-link": "Сторінка внесків",
|
||||
"report-bug": "Повідомити про помилку",
|
||||
"report-bug-description": "Якщо ви вважаєте, що знайшли помилку, будь ласка",
|
||||
"report-bug-link": "повідомте про проблему",
|
||||
"more-info": "Докладніше",
|
||||
"source": "Джерело",
|
||||
"documentation": "Документація",
|
||||
"privacy-and-security": "Конфіденційність та безпека",
|
||||
"privacy-and-security-l1": "Для детальної інформації про те, як Dashy керує вашими даними, див.",
|
||||
"privacy-and-security-privacy-policy": "Політика конфіденційності",
|
||||
"privacy-and-security-advice": "Щоб отримати поради щодо захисту вашої інформаційної панелі, ви можете звернутися до розділу",
|
||||
"privacy-and-security-advice-link": "Документи керування",
|
||||
"privacy-and-security-security-issue": "Якщо ви виявили потенційну проблему з безпекою, повідомте про це згідно з нашою",
|
||||
"privacy-and-security-security-policy": "Політика безпеки",
|
||||
"license": "Ліцензія",
|
||||
"license-under": "Ліцензія згідно",
|
||||
"licence-third-party": "Ліцензії на сторонні модулі див.",
|
||||
"licence-third-party-link": "Юридична інформація",
|
||||
"list-contributors": "Повний список співавторів та подяки див.",
|
||||
"list-contributors-link": "Подяки",
|
||||
"version": "Версія"
|
||||
},
|
||||
"config": {
|
||||
"main-tab": "Головне меню",
|
||||
"view-config-tab": "Переглянути налаштування",
|
||||
"edit-config-tab": "Редагувати налаштування",
|
||||
"custom-css-tab": "Користувацькі стилі",
|
||||
"heading": "Параметри налаштування",
|
||||
"download-config-button": "Переглянути / Експортувати налаштування",
|
||||
"edit-config-button": "Редагувати налаштування",
|
||||
"edit-css-button": "Редагувати користувацький CSS",
|
||||
"cloud-sync-button": "Увімкнути хмарну синхронізацію",
|
||||
"edit-cloud-sync-button": "Редагувати хмарну синхронізацію",
|
||||
"rebuild-app-button": "Перебудувати програму",
|
||||
"change-language-button": "Змінити мову програми",
|
||||
"reset-settings-button": "Скинути локальні налаштування",
|
||||
"disabled-note": "Деякі функції налаштувань були вимкнені адміністратором",
|
||||
"small-screen-note": "Ви використовуєте дуже маленький екран, і деякі екрани в цьому меню можуть бути не найкращими",
|
||||
"app-info-button": "Інформація про програму",
|
||||
"backup-note": "Рекомендовано зробити резервну копію налаштування перед внесенням змін.",
|
||||
"reset-config-msg-l1": "Це видалить усі налаштування користувача з локального сховища, але не вплине на ваш файл 'conf.yml'.",
|
||||
"reset-config-msg-l2": "Ви повинні спочатку створити резервну копію будь-яких змін, які ви внесли локально, якщо ви хочете використовувати їх у майбутньому.",
|
||||
"reset-config-msg-l3": "Ви впевнені, що бажаєте продовжити?",
|
||||
"data-cleared-msg": "Дані успішно видалено",
|
||||
"actions-label": "Дії",
|
||||
"copy-config-label": "Копіювати налаштування",
|
||||
"data-copied-msg": "Налаштування скопійовано до буфера обміну",
|
||||
"reset-config-label": "Скинути налаштування",
|
||||
"css-save-btn": "Зберегти зміни",
|
||||
"css-note-label": "Примітка",
|
||||
"css-note-l1": "Вам потрібно буде оновити сторінку, щоб ваші зміни набули чинності.",
|
||||
"css-note-l2": "Заміни стилів зберігаються лише локально, тому рекомендується зробити копію вашого CSS.",
|
||||
"css-note-l3": "Щоб видалити всі користувацькі стилі, видаліть вміст та натисніть Зберегти зміни",
|
||||
"custom-css": {
|
||||
"title": "Користувацькі стилі",
|
||||
"base-theme": "Базова тема"
|
||||
}
|
||||
},
|
||||
"alternate-views": {
|
||||
"alternate-view-heading": "Змінити перегляд",
|
||||
"default": "За замовчуванням",
|
||||
"workspace": "Робочий простір",
|
||||
"minimal": "Мінімальний"
|
||||
},
|
||||
"settings": {
|
||||
"theme-label": "Тема",
|
||||
"layout-label": "Макет",
|
||||
"layout-auto": "Авто",
|
||||
"layout-horizontal": "Горизонтально",
|
||||
"layout-vertical": "Вертикально",
|
||||
"item-size-label": "Розмір елемента",
|
||||
"item-size-small": "Маленький",
|
||||
"item-size-medium": "Середній",
|
||||
"item-size-large": "Великий",
|
||||
"config-launcher-label": "Налаштування",
|
||||
"config-launcher-tooltip": "Оновити налаштування",
|
||||
"sign-out-tooltip": "Вийти",
|
||||
"sign-in-tooltip": "Увійти",
|
||||
"sign-in-welcome": "Вітаємо {username}!",
|
||||
"hide": "Приховати",
|
||||
"open": "Відкрити"
|
||||
},
|
||||
"updates": {
|
||||
"app-version-note": "Версія Dashy",
|
||||
"up-to-date": "Оновити",
|
||||
"out-of-date": "Оновлення доступне",
|
||||
"unsupported-version-l1": "Ви використовуєте непідтримувану версію Dashy",
|
||||
"unsupported-version-l2": "Для найкращого досвіду та останніх виправлень безпеки, будь ласка, оновіться"
|
||||
},
|
||||
"language-switcher": {
|
||||
"title": "Змінити мову програми",
|
||||
"dropdown-label": "Оберіть мову",
|
||||
"save-button": "Зберегти",
|
||||
"success-msg": "Мову оновлено"
|
||||
},
|
||||
"theme-maker": {
|
||||
"title": "Конфігуратор теми",
|
||||
"export-button": "Експорт змінних користувача",
|
||||
"reset-button": "Скинути стилі",
|
||||
"show-all-button": "Показати всі змінні",
|
||||
"change-fonts-button": "Змінити шрифти",
|
||||
"save-button": "Зберегти",
|
||||
"cancel-button": "Скасувати",
|
||||
"saved-toast": "{theme} успішно оновлена",
|
||||
"copied-toast": "Дані теми для {theme} скопійовано в буфер обміну",
|
||||
"reset-toast": "Видалені користувацькі кольори для {theme}"
|
||||
},
|
||||
"config-editor": {
|
||||
"save-location-label": "Місце збереження",
|
||||
"location-local-label": "Застосувати локально",
|
||||
"location-disk-label": "Записати зміни до файлу налаштування",
|
||||
"save-button": "Зберегти зміни",
|
||||
"preview-button": "Попередній перегляд змін",
|
||||
"valid-label": "Налаштування дійсне",
|
||||
"status-success-msg": "Завдання виконано",
|
||||
"status-fail-msg": "Не вдалося виконати завдання",
|
||||
"success-msg-disk": "Файл налаштування успішно записаний на диск",
|
||||
"success-msg-local": "Локальні зміни успішно збережено",
|
||||
"success-note-l1": "Програма повинна автоматично перебудуватися.",
|
||||
"success-note-l2": "Це може зайняти до хвилини.",
|
||||
"success-note-l3": "Вам потрібно буде оновити сторінку, щоб зміни набули чинності.",
|
||||
"error-msg-save-mode": "Будь ласка, виберіть режим збереження: локальний або файловий",
|
||||
"error-msg-cannot-save": "Під час збереження налаштування сталася помилка",
|
||||
"error-msg-bad-json": "Помилка у форматі JSON, можливо, некоректно сформований",
|
||||
"warning-msg-validation": "Попередження про перевірку",
|
||||
"not-admin-note": "Ви не можете записати зміни на диск, оскільки ви не увійшли як адміністратор"
|
||||
},
|
||||
"app-rebuild": {
|
||||
"title": "Перебудувати програму",
|
||||
"rebuild-note-l1": "Перебудова потрібна, щоб зміни, записані у файл conf.yml, набули чинності.",
|
||||
"rebuild-note-l2": "Це має статися автоматично, але якщо цього не сталося, ви можете запустити це звідси вручну.",
|
||||
"rebuild-note-l3": "Це не потрібно для змін, які зберігаються локально.",
|
||||
"rebuild-button": "Почати збірку",
|
||||
"rebuilding-status-1": "Збираємо...",
|
||||
"rebuilding-status-2": "Це може зайняти кілька хвилин",
|
||||
"error-permission": "У вас немає дозволу ініціювати цю дію",
|
||||
"success-msg": "Збірку завершено успішно",
|
||||
"fail-msg": "Помилка при виконанні збірки",
|
||||
"reload-note": "Тепер потрібно перезавантажити сторінку, щоб зміни набули чинності",
|
||||
"reload-button": "Перезавантажити сторінку"
|
||||
},
|
||||
"cloud-sync": {
|
||||
"title": "Резервне копіювання та відновлення у хмарі",
|
||||
"intro-l1": "Резервне копіювання та відновлення в хмарі є додатковою функцією, яка дає змогу завантажити ваше налаштування в Інтернет, а потім відновити її на будь-якому іншому пристрої чи екземплярі Dashy.",
|
||||
"intro-l2": "Усі дані повністю зашифровані за допомогою AES із використанням вашого пароля як ключа.",
|
||||
"intro-l3": "Для отримання додаткової інформації див.",
|
||||
"intro-docs": "документи",
|
||||
"backup-title-setup": "Створити резервну копію",
|
||||
"backup-title-update": "Оновити резервну копію",
|
||||
"password-label-setup": "Оберіть пароль",
|
||||
"password-label-update": "Введіть свій пароль",
|
||||
"backup-button-setup": "Резервна копія",
|
||||
"backup-button-update": "Оновити резервну копію",
|
||||
"backup-id-label": "Ваш ідентифікатор резервної копії",
|
||||
"backup-id-note": "Це використовується для відновлення з резервних копій пізніше. Тож має зберігатися разом із паролем у безпечному місці.",
|
||||
"restore-title": "Відновити резервну копію",
|
||||
"restore-id-label": "Відновити ідентифікатор",
|
||||
"restore-password-label": "Пароль",
|
||||
"restore-button": "Відновити",
|
||||
"backup-missing-password": "Відсутній пароль",
|
||||
"backup-error-unknown": "Неможливо обробити запит",
|
||||
"backup-error-password": "Неправильний пароль. Будь ласка, введіть поточний пароль.",
|
||||
"backup-success-msg": "Успішно завершено",
|
||||
"restore-success-msg": "Налаштування успішно відновлено"
|
||||
},
|
||||
"menu": {
|
||||
"open-section-title": "Відкрити в",
|
||||
"sametab": "Поточна вкладка",
|
||||
"newtab": "Нова вкладка",
|
||||
"modal": "Модальне спливаюче вікно",
|
||||
"workspace": "Перегляд робочого простору",
|
||||
"options-section-title": "Параметри",
|
||||
"edit-item": "Редагувати",
|
||||
"move-item": "Копіювати або перемістити",
|
||||
"remove-item": "Видалити"
|
||||
},
|
||||
"context-menus": {
|
||||
"item": {
|
||||
"open-section-title": "Відкрити в",
|
||||
"sametab": "Поточна вкладка",
|
||||
"newtab": "Нова вкладка",
|
||||
"modal": "Модальне спливаюче вікно",
|
||||
"workspace": "Перегляд робочої області",
|
||||
"clipboard": "Копіювати до буфера обміну",
|
||||
"options-section-title": "Параметри",
|
||||
"edit-item": "Редагувати",
|
||||
"move-item": "Копіювати або перемістити",
|
||||
"remove-item": "Видалити",
|
||||
"copied-toast": "URL скопійовано до буфера обміну"
|
||||
},
|
||||
"section": {
|
||||
"open-section": "Відкрити розділ",
|
||||
"edit-section": "Редагувати",
|
||||
"expand-collapse": "Розгорнути / Згорнути",
|
||||
"move-section": "Перемістити до",
|
||||
"remove-section": "Видалити"
|
||||
}
|
||||
},
|
||||
"footer": {
|
||||
"dev-by": "Розроблено",
|
||||
"licensed-under": "Ліцензія згідно",
|
||||
"get-the": "Отримати",
|
||||
"source-code": "Вихідний код"
|
||||
},
|
||||
"interactive-editor": {
|
||||
"menu": {
|
||||
"start-editing-tooltip": "Увійти в інтерактивний редактор",
|
||||
"edit-site-data-subheading": "Редагувати дані сайту",
|
||||
"edit-page-info-btn": "Редагувати інформацію про сторінку",
|
||||
"edit-page-info-tooltip": "Назва програми, опис, навігаційні посилання, текст нижнього колонтитула тощо",
|
||||
"edit-app-config-btn": "Редагувати налаштування програми",
|
||||
"edit-app-config-tooltip": "Усі інші параметри налаштування програми",
|
||||
"edit-pages-btn": "Редагувати сторінки",
|
||||
"edit-pages-tooltip": "Додати або видалити додаткові перегляди",
|
||||
"config-save-methods-subheading": "Параметри збереження налаштування",
|
||||
"save-locally-btn": "Зберегти локально",
|
||||
"save-locally-tooltip": "Зберегти налаштування локально у сховище браузера. Це не вплине на файл налаштування, але зміни буде збережено лише на цьому пристрої",
|
||||
"save-disk-btn": "Зберегти на диск",
|
||||
"save-disk-tooltip": "Збережіть налаштування у файл conf.yml на диску. Це створить резервну копію, а потім перезапише наявне налаштування",
|
||||
"export-config-btn": "Експорт налаштування",
|
||||
"export-config-tooltip": "Переглянути та експортувати нове налаштування у файл або в буфер обміну",
|
||||
"cloud-backup-btn": "Резервне копіювання у хмару",
|
||||
"cloud-backup-tooltip": "Зберегти зашифровану резервну копію налаштування у хмару",
|
||||
"edit-raw-config-btn": "Редагувати необроблене налаштування",
|
||||
"edit-raw-config-tooltip": "Переглянути та змінити необроблене налаштування за допомогою редактора JSON",
|
||||
"cancel-changes-btn": "Скасувати редагування",
|
||||
"cancel-changes-tooltip": "Скинути поточні зміни та вийти з режиму редагування. Це не вплине на вашу збережене налаштування",
|
||||
"edit-mode-name": "Режим редагування",
|
||||
"edit-mode-subtitle": "Ви перебуваєте в режимі редагування",
|
||||
"edit-mode-description": "Це означає, що ви можете вносити зміни до налаштування та переглядати результати, але поки ви не оберете збереження, жодні ваші зміни не будуть записані.",
|
||||
"save-stage-btn": "Зберегти",
|
||||
"cancel-stage-btn": "Скасувати",
|
||||
"save-locally-warning": "Якщо ви продовжите, зміни буде збережено лише у вашому браузері. Вам слід експортувати копію вашого налаштування для використання на інших машинах. Бажаєте продовжити?"
|
||||
},
|
||||
"edit-item": {
|
||||
"missing-title-err": "Потрібна назва елемента"
|
||||
},
|
||||
"edit-section": {
|
||||
"edit-section-title": "Редагувати розділ",
|
||||
"add-section-title": "Додати новий розділ",
|
||||
"edit-tooltip": "Натисніть, щоб редагувати, або клацніть правою кнопкою миші, щоб отримати додаткові параметри",
|
||||
"remove-confirm": "Ви впевнені, що хочете видалити цей розділ? Цю дію можна скасувати пізніше."
|
||||
},
|
||||
"edit-app-config": {
|
||||
"warning-msg-title": "Дійте з обережністю",
|
||||
"warning-msg-l1": "Ці параметри призначені для розширеного налаштування програми.",
|
||||
"warning-msg-l2": "Якщо ви не впевнені щодо будь-якого значення, зверніться до",
|
||||
"warning-msg-docs": "Документація",
|
||||
"warning-msg-l3": ", щоб уникнути небажаних наслідків."
|
||||
},
|
||||
"export": {
|
||||
"export-title": "Експорт налаштування",
|
||||
"copy-clipboard-btn": "Копіювати до буфера обміну",
|
||||
"copy-clipboard-tooltip": "Скопіювати всі налаштування програми до системного буфера обміну у форматі YAML",
|
||||
"download-file-btn": "Завантажити як файл",
|
||||
"download-file-tooltip": "Завантажте все налаштування програми на свій пристрій у файлі YAML",
|
||||
"view-title": "Переглянути налаштування"
|
||||
}
|
||||
},
|
||||
"critical-error": {
|
||||
"title": "Помилка завантаження налаштування",
|
||||
"subtitle": "Dashy не вдалося правильно завантажити через помилку налаштування.",
|
||||
"sub-ensure-that": "Переконайтеся в цьому",
|
||||
"sub-error-details": "Деталі помилки",
|
||||
"sub-next-steps": "Наступні кроки",
|
||||
"ignore-button": "Ігнорувати критичні помилки"
|
||||
},
|
||||
"widgets": {
|
||||
"general": {
|
||||
"loading": "Завантаження...",
|
||||
"show-more": "Розгорнути детальніше",
|
||||
"cpu-details": "Детальніше по ЦПУ",
|
||||
"mem-details": "Детальніше по пам'яті",
|
||||
"show-less": "Показати менше",
|
||||
"open-link": "Продовжити читання"
|
||||
},
|
||||
"pi-hole": {
|
||||
"status-heading": "Статус"
|
||||
},
|
||||
"stat-ping": {
|
||||
"up": "Онлайн",
|
||||
"down": "Офлайн"
|
||||
},
|
||||
"net-data": {
|
||||
"cpu-chart-title": "Історія ЦПУ",
|
||||
"mem-chart-title": "Використання пам'яті",
|
||||
"mem-breakdown-title": "Переривання пам'яті",
|
||||
"load-chart-title": "Завантаження системи"
|
||||
},
|
||||
"glances": {
|
||||
"disk-space-free": "Вільно",
|
||||
"disk-space-used": "Використано",
|
||||
"disk-mount-point": "Точка монтування",
|
||||
"disk-file-system": "Файлова система",
|
||||
"disk-io-read": "Читання",
|
||||
"disk-io-write": "Запис",
|
||||
"system-load-desc": "Середня кількість процесів, що очікують у черзі виконання, для всіх ядер"
|
||||
},
|
||||
"system-info": {
|
||||
"uptime": "Час роботи"
|
||||
},
|
||||
"flight-data": {
|
||||
"arrivals": "Прибуття",
|
||||
"departures": "Відправлення"
|
||||
},
|
||||
"tfl-status": {
|
||||
"good-service-all": "Якісний сервіс на всіх лініях",
|
||||
"good-service-rest": "Якісний сервіс на всіх інших лініях"
|
||||
},
|
||||
"synology-download": {
|
||||
"download": "Завантажити (Download)",
|
||||
"upload": "Вивантажити (Upload)",
|
||||
"downloaded": "Завантажено",
|
||||
"uploaded": "Вивантажено",
|
||||
"remaining": "Залишилося",
|
||||
"up": "Вгору",
|
||||
"down": "Вниз"
|
||||
},
|
||||
"gluetun-status": {
|
||||
"vpn-ip": "VPN IP",
|
||||
"country": "Країна",
|
||||
"region": "Регіон",
|
||||
"city": "Місто",
|
||||
"post-code": "Поштовий індекс",
|
||||
"location": "Розташування",
|
||||
"timezone": "Часовий пояс",
|
||||
"organization": "Організація"
|
||||
},
|
||||
"nextcloud": {
|
||||
"active": "активно",
|
||||
"and": "і",
|
||||
"applications": "програми",
|
||||
"available": "доступно",
|
||||
"away": "відсутнє",
|
||||
"cache-full": "КЕШ ЗАПОВНЕНИЙ",
|
||||
"chat-room": "кімната чату",
|
||||
"delete-all": "Видалити все",
|
||||
"delete-notification": "Видалити сповіщення",
|
||||
"disabled": "вимкнено",
|
||||
"disk-quota": "Дискова квота",
|
||||
"disk-space": "Простір на диску",
|
||||
"dnd": "Не турбувати",
|
||||
"email": "електронна пошта",
|
||||
"enabled": "увімкнено",
|
||||
"federated-shares-ucfirst": "Об'єднані спільні ресурси",
|
||||
"federated-shares": "об'єднані спільні ресурси",
|
||||
"files": "файл{множина}",
|
||||
"free": "вільний",
|
||||
"groups": "групи",
|
||||
"hit-rate": "рівень попадань",
|
||||
"hits": "попадання",
|
||||
"home": "головна",
|
||||
"in": "у",
|
||||
"keys": "ключі",
|
||||
"last-24-hours": "за останні 24 години",
|
||||
"last-5-minutes": "останні 5 хвилин",
|
||||
"last-hour": "за останню годину",
|
||||
"last-login": "Останній вхід",
|
||||
"last-restart": "Останній перезапуск",
|
||||
"load-averages": "Завантажити середні значення для всіх ядер ЦПУ",
|
||||
"local-shares": "Локальні спільні ресурси",
|
||||
"local": "локальний",
|
||||
"max-keys": "максимум ключів",
|
||||
"memory-used": "використана пам'ять",
|
||||
"memory-utilisation": "використання пам'яті",
|
||||
"memory": "пам'ять",
|
||||
"misses": "промахи",
|
||||
"no-notifications": "Немає сповіщень",
|
||||
"no-pending-updates": "немає очікуваних оновлень",
|
||||
"nothing-to-show": "Зараз тут нічого показувати",
|
||||
"of-which": "з яких",
|
||||
"of": "з",
|
||||
"offline": "Офлайн",
|
||||
"online": "Онлайн",
|
||||
"other": "інше",
|
||||
"overall": "Загалом",
|
||||
"private-link": "приватне посилання",
|
||||
"public-link": "публічне посилання",
|
||||
"quota-enabled": "Дискова квота {не}ввімкнена для цього користувача",
|
||||
"received": "отримано",
|
||||
"scripts": "скрипти",
|
||||
"sent": "надіслано",
|
||||
"started": "Розпочато",
|
||||
"storages-by-type": "Сховища за типом",
|
||||
"storages": "сховище{множина}",
|
||||
"strings-use": "рядки використання",
|
||||
"tasks": "Завдання",
|
||||
"total-files": "загальна кількість файлів",
|
||||
"total-users": "загальна кількість користувачів",
|
||||
"total": "усього",
|
||||
"until": "Доки",
|
||||
"updates-available-for": "Оновлення доступні для",
|
||||
"updates-available": "доступне оновлення{множина}",
|
||||
"used": "використано",
|
||||
"user": "користувач",
|
||||
"using": "використовуючи",
|
||||
"version": "версія",
|
||||
"wasted": "витрачено"
|
||||
}
|
||||
}
|
||||
}
|
@ -18,7 +18,7 @@
|
||||
"guest-label": "访客访问",
|
||||
"username-label": "用户名",
|
||||
"password-label": "密码",
|
||||
"login-button": "登陆",
|
||||
"login-button": "登录",
|
||||
"remember-me-label": "记住密码",
|
||||
"remember-me-never": "永不",
|
||||
"remember-me-hour": "4 小时",
|
||||
@ -29,10 +29,10 @@
|
||||
"error-missing-password": "密码空缺",
|
||||
"error-incorrect-username": "用户不存在",
|
||||
"error-incorrect-password": "密码不正确",
|
||||
"success-message": "登陆成功。",
|
||||
"success-message": "登录成功。",
|
||||
"logout-message": "注销",
|
||||
"already-logged-in-title": "已经成功登陆",
|
||||
"already-logged-in-text": "你的登陆身份",
|
||||
"already-logged-in-title": "已经成功登录",
|
||||
"already-logged-in-text": "你的登录身份",
|
||||
"proceed-to-dashboard": "前往仪表板",
|
||||
"log-out-button": "注销",
|
||||
"proceed-guest-button": "以游客身份前往",
|
||||
@ -41,7 +41,7 @@
|
||||
"error": "错误",
|
||||
"error-no-user-configured": "没有启用验证,或者未配置用户",
|
||||
"error-go-home-button": "Go Home",
|
||||
"logged-in-guest": "以访客身份登陆,正在跳转...",
|
||||
"logged-in-guest": "以访客身份登录,正在跳转...",
|
||||
"error-guest-access": "不允许访客访问"
|
||||
},
|
||||
"app-info": {
|
||||
@ -130,7 +130,7 @@
|
||||
"config-launcher-label": "设置",
|
||||
"config-launcher-tooltip": "更新设置",
|
||||
"sign-out-tooltip": "注销",
|
||||
"sign-in-tooltip": "登陆",
|
||||
"sign-in-tooltip": "登录",
|
||||
"sign-in-welcome": "你好 {username}!",
|
||||
"hide": "隐藏",
|
||||
"open": "打开"
|
||||
@ -402,7 +402,7 @@
|
||||
"last-24-hours": "24 小时内",
|
||||
"last-5-minutes": "5 分钟内",
|
||||
"last-hour": "1 小时内",
|
||||
"last-login": "最后登陆",
|
||||
"last-login": "最后登录",
|
||||
"last-restart": "最后重启",
|
||||
"load-averages": "所有CPU的平均负载",
|
||||
"local-shares": "本地分享",
|
||||
|
@ -72,6 +72,7 @@ export default {
|
||||
else if (img.includes('mdi-')) imgType = 'mdi';
|
||||
else if (img.includes('si-')) imgType = 'si';
|
||||
else if (img.includes('hl-')) imgType = 'home-lab-icons';
|
||||
else if (img.includes('sh-')) imgType = 'selfhst-icons';
|
||||
else if (img.includes('favicon-')) imgType = 'custom-favicon';
|
||||
else if (img === 'favicon') imgType = 'favicon';
|
||||
else if (img === 'generative') imgType = 'generative';
|
||||
@ -90,6 +91,7 @@ export default {
|
||||
case 'mdi': return img; // Material design icons
|
||||
case 'simple-icons': return this.getSimpleIcon(img);
|
||||
case 'home-lab-icons': return this.getHomeLabIcon(img);
|
||||
case 'selfhst-icons': return this.getSelfhstIcon(img); // selfh.st/icons
|
||||
case 'svg': return img; // Local SVG icon
|
||||
case 'emoji': return img; // Emoji/ unicode
|
||||
default: return '';
|
||||
@ -195,6 +197,10 @@ export default {
|
||||
}
|
||||
return icon.path;
|
||||
},
|
||||
getSelfhstIcon(img, cdn) {
|
||||
const imageName = img.slice(3).toLocaleLowerCase();
|
||||
return (cdn || iconCdns.sh).replace('{icon}', imageName);
|
||||
},
|
||||
/* Gets home-lab icon from GitHub */
|
||||
getHomeLabIcon(img, cdn) {
|
||||
const imageName = img.replace('hl-', '').toLocaleLowerCase();
|
||||
|
106
src/components/Widgets/CustomList.vue
Normal file
106
src/components/Widgets/CustomList.vue
Normal file
@ -0,0 +1,106 @@
|
||||
<template>
|
||||
<div class="custom-list">
|
||||
<div class="custom-list-title" v-if="title">
|
||||
{{ title }}
|
||||
</div>
|
||||
<div v-for="(item, key) in data" :key="key" class="custom-list-row">
|
||||
<div v-if="item.link" class="custom-list-cell">
|
||||
<a :href="item.link.url" :title="item.link.title" target="_blank">
|
||||
{{ item.link.text }}
|
||||
</a>
|
||||
</div>
|
||||
<div v-if="item.value" class="custom-list-cell" :title="item.value.title">
|
||||
{{ item.value.text }}
|
||||
<span v-if="item.isNew" class="custom-list-new-value"></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import WidgetMixin from '@/mixins/WidgetMixin';
|
||||
|
||||
export default {
|
||||
mixins: [WidgetMixin],
|
||||
components: {},
|
||||
data() {
|
||||
return {
|
||||
data: [],
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
url() {
|
||||
return this.options.url || '';
|
||||
},
|
||||
title() {
|
||||
return this.options.title || '';
|
||||
},
|
||||
daysForNew() {
|
||||
return parseInt(Number(this.options.daysForNew)) || false;
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
fetchData() {
|
||||
if (this.url) {
|
||||
this.startLoading();
|
||||
this.makeRequest(this.options.url).then(this.processData);
|
||||
}
|
||||
},
|
||||
processData(data) {
|
||||
let today = new Date();
|
||||
this.data = data.sort((a, b) => new Date(a.date) < new Date(b.date));
|
||||
if (this.daysForNew) {
|
||||
let threshold = this.daysForNew * 1000 * 60 * 60 * 24;
|
||||
this.data = this.data.map((item) => {
|
||||
item.isNew = (today - new Date(item.date) < threshold);
|
||||
return item;
|
||||
});
|
||||
}
|
||||
this.finishLoading();
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
|
||||
.custom-list {
|
||||
.custom-list-title {
|
||||
outline: 2px solid transparent;
|
||||
border: 1px solid var(--outline-color);
|
||||
border-radius: var(--curve-factor);
|
||||
box-shadow: var(--item-shadow);
|
||||
color: var(--item-text-color);
|
||||
margin: .5rem;
|
||||
padding: 0.3rem;
|
||||
background: var(--item-background);
|
||||
text-align: center;
|
||||
|
||||
}
|
||||
.custom-list-row {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
color: var(--widget-text-color);
|
||||
font-size: 1.1rem;
|
||||
.custom-list-cell {
|
||||
display: inline-block;
|
||||
a {
|
||||
text-decoration: none;
|
||||
color: var(--item-text-color);
|
||||
}
|
||||
.custom-list-new-value{
|
||||
width: 0.8rem;
|
||||
height: 0.8rem;
|
||||
border-radius: 50%;
|
||||
background-color: var(--success);
|
||||
display: inline-block;
|
||||
}
|
||||
}
|
||||
&:not(:last-child) {
|
||||
border-bottom: 1px dashed var(--widget-text-color);
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
@ -68,7 +68,7 @@ export default {
|
||||
networks.push({
|
||||
name: network.interface_name,
|
||||
speed: network.speed,
|
||||
online: network.speed ? 'up' : 'down', //v3 to v4 is_up no longer seems to be a default response field
|
||||
online: network.speed ? 'up' : 'down', // v3 to v4 is_up no longer seems to be a default response field
|
||||
currentDownload: network.bytes_recv,
|
||||
currentUpload: network.bytes_sent,
|
||||
totalDownload: network.bytes_recv_gauge,
|
||||
|
@ -26,7 +26,7 @@ export default {
|
||||
return `${widgetApiEndpoints.publicIp2}?apiKey=${this.apiKey}`;
|
||||
} else if (this.provider === 'ip2location.io') {
|
||||
return `${widgetApiEndpoints.publicIp4}?key=${this.apiKey}`;
|
||||
} else if (this.provider === 'ipapi') {
|
||||
} else if (this.provider === 'ip-api') {
|
||||
return widgetApiEndpoints.publicIp3;
|
||||
}
|
||||
return widgetApiEndpoints.publicIp;
|
||||
|
@ -131,7 +131,7 @@ export default {
|
||||
const posts = [];
|
||||
let { length } = items;
|
||||
if (this.limit) {
|
||||
length = this.limit;
|
||||
length = Math.min(length, this.limit);
|
||||
}
|
||||
for (let i = 0; length > i; i += 1) {
|
||||
posts.push({
|
||||
|
@ -144,7 +144,7 @@ export default {
|
||||
return copy;
|
||||
},
|
||||
getRowValue(row) {
|
||||
return this.getValueWithRegex(row, /\b\d+\b$/);
|
||||
return this.getValueWithRegex(row, /\b(\d+)(\.\d+)*\b$/);
|
||||
},
|
||||
getRowMonitorName(row) {
|
||||
return this.getValueWithRegex(row, /monitor_name="([^"]+)"/);
|
||||
@ -193,7 +193,7 @@ export default {
|
||||
white-space: nowrap;
|
||||
vertical-align: baseline;
|
||||
padding: .35em .65em;
|
||||
margin: 1em 0.5em;
|
||||
margin: 0.1em 0.5em;
|
||||
min-width: 64px;
|
||||
|
||||
&.up {
|
||||
|
@ -53,6 +53,7 @@ const COMPAT = {
|
||||
'crypto-price-chart': 'CryptoPriceChart',
|
||||
'crypto-watch-list': 'CryptoWatchList',
|
||||
'custom-search': 'CustomSearch',
|
||||
'custom-list': 'CustomList',
|
||||
'cve-vulnerabilities': 'CveVulnerabilities',
|
||||
'domain-monitor': 'DomainMonitor',
|
||||
'code-stats': 'CodeStats',
|
||||
|
@ -136,6 +136,14 @@ const ThemingMixin = {
|
||||
} else if (hasExternal) {
|
||||
this.applyRemoteTheme(this.externalThemes[initialTheme]);
|
||||
}
|
||||
|
||||
// Detect OS theme preference and apply the corresponding theme
|
||||
const prefersDark = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches;
|
||||
const osTheme = prefersDark ? this.appConfig.nightTheme : this.appConfig.dayTheme;
|
||||
if (osTheme) {
|
||||
this.$store.commit(Keys.SET_THEME, osTheme);
|
||||
this.updateTheme(osTheme);
|
||||
}
|
||||
},
|
||||
},
|
||||
};
|
||||
|
@ -1142,6 +1142,104 @@ html[data-theme='glow'], html[data-theme=glow-colorful] {
|
||||
}
|
||||
}
|
||||
|
||||
html[data-theme='glow-dark'] {
|
||||
--primary: #8faeff;
|
||||
--background: #11111b;
|
||||
--background-darker: #0a0a0f;
|
||||
--curve-factor: 12px;
|
||||
--item-group-background: #1b1b29;
|
||||
--item-group-outer-background: #171724;
|
||||
--item-background: #1d1d2b;
|
||||
--font-headings: 'Sniglet', cursive;
|
||||
|
||||
--item-group-heading-text-color: var(--primary);
|
||||
--item-group-heading-text-color-hover: #a0bfff;
|
||||
--item-group-shadow: 0 5px 16px 0 #5c6da933;
|
||||
--item-background-hover: #33334d;
|
||||
--item-shadow: 0 1px 5px 0 #5c6da980;
|
||||
--item-hover-shadow: 0 1px 8px 0 #5c6da9a6;
|
||||
--item-icon-transform: drop-shadow(1px 2px 3px var(--transparent-50)) saturate(1.1);
|
||||
--item-icon-transform-hover: drop-shadow(1px 2px 4px var(--transparent-50)) saturate(1.1);
|
||||
--footer-height: 120px;
|
||||
--transparent-50: #00000080;
|
||||
|
||||
header {
|
||||
padding: 0.5rem;
|
||||
background: var(--background-darker);
|
||||
.page-titles {
|
||||
h1 {
|
||||
font-size: 1.8rem;
|
||||
color: var(--primary);
|
||||
}
|
||||
span.subtitle {
|
||||
font-size: 0.8rem;
|
||||
color: #ccc;
|
||||
text-shadow: none;
|
||||
}
|
||||
}
|
||||
.nav .nav-item {
|
||||
padding: 0.2rem 0.4rem;
|
||||
box-shadow: none;
|
||||
color: #ddd;
|
||||
}
|
||||
}
|
||||
|
||||
.settings-outer {
|
||||
box-shadow: 0 4px 5px 0 #5c6da91a;
|
||||
.options-container {
|
||||
padding: 0.25rem 1.5rem 0.25rem 1rem;
|
||||
background: var(--background-darker);
|
||||
}
|
||||
}
|
||||
|
||||
footer {
|
||||
background: var(--background-darker);
|
||||
box-shadow: 0 -4px 5px 0 #5c6da91a;
|
||||
}
|
||||
|
||||
.search-wrap input {
|
||||
background: #2a2a3d;
|
||||
color: #eee;
|
||||
box-shadow: 0 1px 5px 0 #5c6da980;
|
||||
}
|
||||
|
||||
div.collapsable:nth-child(1n) {
|
||||
a.item { color: #a88bff; }
|
||||
--item-group-shadow: 0 5px 16px 0 #9f72ff33;
|
||||
--item-group-heading-text-color: #bfa2ff;
|
||||
--item-group-heading-text-color-hover: #cbb8ff;
|
||||
--item-background-hover: #3a3a55;
|
||||
--item-shadow: 0 1px 5px 0 #8656ef80;
|
||||
--item-hover-shadow: 0 1px 8px 0 #8656efa6;
|
||||
--item-icon-transform: drop-shadow(1px 2px 3px #8656ef80) saturate(1.1);
|
||||
--item-icon-transform-hover: drop-shadow(1px 2px 4px #8656ef80) saturate(1.1);
|
||||
}
|
||||
|
||||
div.collapsable:nth-child(2n) {
|
||||
a.item { color: #e58fff; }
|
||||
--item-group-shadow: 0 5px 16px 0 #728cff33;
|
||||
--item-group-heading-text-color: #eaaaff;
|
||||
--item-group-heading-text-color-hover: #f0c2ff;
|
||||
--item-background-hover: #3a3a55;
|
||||
--item-shadow: 0 1px 5px 0 #d356ef80;
|
||||
--item-hover-shadow: 0 1px 8px 0 #d356efa6;
|
||||
--item-icon-transform: drop-shadow(1px 2px 3px #d356ef80) saturate(1.1);
|
||||
--item-icon-transform-hover: drop-shadow(1px 2px 4px #d356ef80) saturate(1.1);
|
||||
}
|
||||
|
||||
div.collapsable:nth-child(3n) {
|
||||
a.item { color: #56e0f0; }
|
||||
--item-group-shadow: 0 5px 16px 0 #728cff33;
|
||||
--item-group-heading-text-color: #7feeff;
|
||||
--item-group-heading-text-color-hover: #a0f5ff;
|
||||
--item-background-hover: #3a3a55;
|
||||
--item-shadow: 0 1px 5px 0 #56ddef80;
|
||||
--item-hover-shadow: 0 1px 8px 0 #56ddefa6;
|
||||
--item-icon-transform: drop-shadow(1px 2px 3px #56ddef80) saturate(1.1);
|
||||
--item-icon-transform-hover: drop-shadow(1px 2px 4px #56ddef80) saturate(1.1);
|
||||
}
|
||||
}
|
||||
|
||||
html[data-theme='cyberpunk'] {
|
||||
--pink: #ff2a6d;
|
||||
--pale: #d1f7ff;
|
||||
|
@ -31,7 +31,19 @@ const getUsers = () => {
|
||||
return []; // Support for old data structure now removed
|
||||
}
|
||||
// Otherwise, return the users array, if available
|
||||
return auth.users || [];
|
||||
|
||||
const users = auth.users || [];
|
||||
if (isOidcEnabled()) {
|
||||
if (localStorage[localStorageKeys.USERNAME]) {
|
||||
const user = {
|
||||
user: localStorage[localStorageKeys.USERNAME],
|
||||
type: localStorage[localStorageKeys.ISADMIN] === 'true' ? 'admin' : 'normal',
|
||||
};
|
||||
users.push(user);
|
||||
}
|
||||
}
|
||||
|
||||
return users;
|
||||
};
|
||||
|
||||
/**
|
||||
@ -80,6 +92,17 @@ export const makeBasicAuthHeaders = () => {
|
||||
export const isLoggedIn = () => {
|
||||
const users = getUsers();
|
||||
const cookieToken = getCookieToken();
|
||||
|
||||
if (isOidcEnabled()) {
|
||||
const username = localStorage[localStorageKeys.USERNAME]; // Get username
|
||||
if (!username) return false; // No username
|
||||
return users.some((user) => {
|
||||
if (user.user === username || generateUserToken(user) === cookieToken) {
|
||||
return true;
|
||||
} else return false;
|
||||
});
|
||||
}
|
||||
|
||||
return users.some((user) => {
|
||||
if (generateUserToken(user) === cookieToken) {
|
||||
localStorage.setItem(localStorageKeys.USERNAME, user.user);
|
||||
|
@ -566,6 +566,18 @@
|
||||
"type": "string",
|
||||
"description": "ClientId from OIDC provider"
|
||||
},
|
||||
"adminRole" : {
|
||||
"title": "Admin Role",
|
||||
"type": "string",
|
||||
"default": false,
|
||||
"description": "The role that will be considered as admin. If not set, no roles will be considered as admin"
|
||||
},
|
||||
"adminGroup" : {
|
||||
"title": "Admin Group",
|
||||
"type": "string",
|
||||
"default": false,
|
||||
"description": "The group that will be considered as admin. If not set, no groups will be considered as admin"
|
||||
},
|
||||
"scope" : {
|
||||
"title": "OIDC Scope",
|
||||
"type": "string",
|
||||
@ -941,7 +953,7 @@
|
||||
"title": "Icon",
|
||||
"type": "string",
|
||||
"nullable": true,
|
||||
"description": "An icon, either as a font-awesome, simple-icon or mdi identifier, emoji, favicon, generative or the URL/ path to a local or remote icon asset"
|
||||
"description": "An icon, either as a font-awesome, simple-icon, selfh.st, or mdi identifier, emoji, favicon, generative or the URL/path to a local or remote icon asset"
|
||||
},
|
||||
"url": {
|
||||
"title": "Service URL",
|
||||
|
@ -13,7 +13,13 @@ const getAppConfig = () => {
|
||||
class OidcAuth {
|
||||
constructor() {
|
||||
const { auth } = getAppConfig();
|
||||
const { clientId, endpoint, scope } = auth.oidc;
|
||||
const {
|
||||
clientId,
|
||||
endpoint,
|
||||
scope,
|
||||
adminGroup,
|
||||
adminRole,
|
||||
} = auth.oidc;
|
||||
const settings = {
|
||||
userStore: new WebStorageStateStore({ store: window.localStorage }),
|
||||
authority: endpoint,
|
||||
@ -25,6 +31,8 @@ class OidcAuth {
|
||||
filterProtocolClaims: true,
|
||||
};
|
||||
|
||||
this.adminGroup = adminGroup;
|
||||
this.adminRole = adminRole;
|
||||
this.userManager = new UserManager(settings);
|
||||
}
|
||||
|
||||
@ -43,22 +51,27 @@ class OidcAuth {
|
||||
if (user === null) {
|
||||
await this.userManager.signinRedirect();
|
||||
} else {
|
||||
const { roles, groups } = user.profile;
|
||||
const { roles = [], groups = [] } = user.profile;
|
||||
const info = {
|
||||
groups,
|
||||
roles,
|
||||
};
|
||||
const isAdmin = (Array.isArray(groups) && groups.includes(this.adminGroup))
|
||||
|| (Array.isArray(roles) && roles.includes(this.adminRole))
|
||||
|| false;
|
||||
|
||||
statusMsg(`user: ${user.profile.preferred_username}`, JSON.stringify(info));
|
||||
statusMsg(`user: ${user.profile.preferred_username} admin: ${isAdmin}`, JSON.stringify(info));
|
||||
|
||||
localStorage.setItem(localStorageKeys.KEYCLOAK_INFO, JSON.stringify(info));
|
||||
localStorage.setItem(localStorageKeys.USERNAME, user.profile.preferred_username);
|
||||
localStorage.setItem(localStorageKeys.ISADMIN, isAdmin);
|
||||
}
|
||||
}
|
||||
|
||||
async logout() {
|
||||
localStorage.removeItem(localStorageKeys.USERNAME);
|
||||
localStorage.removeItem(localStorageKeys.KEYCLOAK_INFO);
|
||||
localStorage.removeItem(localStorageKeys.ISADMIN);
|
||||
|
||||
try {
|
||||
await this.userManager.signoutRedirect();
|
||||
|
@ -78,6 +78,7 @@ module.exports = {
|
||||
'bee',
|
||||
'tiger',
|
||||
'glow',
|
||||
'glow-dark',
|
||||
'vaporware',
|
||||
'cyberpunk',
|
||||
'material-original',
|
||||
@ -136,6 +137,7 @@ module.exports = {
|
||||
MOST_USED: 'mostUsed',
|
||||
LAST_USED: 'lastUsed',
|
||||
KEYCLOAK_INFO: 'keycloakInfo',
|
||||
ISADMIN: 'isAdmin',
|
||||
DISABLE_CRITICAL_WARNING: 'disableCriticalWarning',
|
||||
},
|
||||
/* Key names for cookie identifiers */
|
||||
@ -210,6 +212,7 @@ module.exports = {
|
||||
fa: 'https://kit.fontawesome.com',
|
||||
mdi: 'https://cdn.jsdelivr.net/npm/@mdi/font@7.0.96/css/materialdesignicons.min.css',
|
||||
si: 'https://unpkg.com/simple-icons@v7/icons',
|
||||
sh: 'https://cdn.jsdelivr.net/gh/selfhst/icons@latest/webp/{icon}.webp',
|
||||
generative: 'https://api.dicebear.com/7.x/identicon/svg?seed={icon}',
|
||||
generativeFallback: 'https://evatar.io/{icon}',
|
||||
localPath: './item-icons',
|
||||
@ -316,7 +319,6 @@ module.exports = {
|
||||
/* Progressive Web App settings, used by Vue Config */
|
||||
pwa: {
|
||||
name: 'Dashy',
|
||||
manifestPath: './manifest.json',
|
||||
themeColor: '#00af87',
|
||||
msTileColor: '#0b1021',
|
||||
mode: 'production',
|
||||
@ -328,5 +330,14 @@ module.exports = {
|
||||
maskIcon: './web-icons/dashy-logo.png',
|
||||
msTileImage: './web-icons/dashy-logo.png',
|
||||
},
|
||||
workboxOptions: {
|
||||
exclude: [
|
||||
// https://developer.chrome.com/docs/workbox/modules/workbox-build#properties_14
|
||||
/\.map$/,
|
||||
/^manifest.*\.js$/, // default value
|
||||
/\.nojekyll$/,
|
||||
/\.gitignore$/,
|
||||
],
|
||||
},
|
||||
},
|
||||
};
|
||||
|
@ -24,7 +24,7 @@ import sk from '@/assets/locales/sk.json';
|
||||
import sl from '@/assets/locales/sl.json';
|
||||
import sv from '@/assets/locales/sv.json';
|
||||
import tr from '@/assets/locales/tr.json';
|
||||
import ua from '@/assets/locales/ua.json';
|
||||
import uk from '@/assets/locales/uk.json';
|
||||
import zhCN from '@/assets/locales/zh-CN.json';
|
||||
import zhTW from '@/assets/locales/zh-TW.json';
|
||||
import pirate from '@/assets/locales/zz-pirate.json';
|
||||
@ -184,8 +184,8 @@ export const languages = [
|
||||
},
|
||||
{ // Ukrainian
|
||||
name: 'Ukrainian',
|
||||
code: 'ua',
|
||||
locale: ua,
|
||||
code: 'uk',
|
||||
locale: uk,
|
||||
flag: '🇺🇦',
|
||||
},
|
||||
{ // Chinese
|
||||
|
@ -75,8 +75,9 @@ export default {
|
||||
},
|
||||
},
|
||||
mounted() {
|
||||
this.setTheme();
|
||||
this.initiateFontAwesome();
|
||||
this.initiateMaterialDesignIcons();
|
||||
this.setTheme();
|
||||
this.url = this.getInitialUrl();
|
||||
},
|
||||
};
|
||||
|
@ -9201,10 +9201,10 @@ signal-exit@^3.0.0, signal-exit@^3.0.2:
|
||||
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9"
|
||||
integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==
|
||||
|
||||
simple-icons@^12.2.0:
|
||||
version "12.2.0"
|
||||
resolved "https://registry.yarnpkg.com/simple-icons/-/simple-icons-12.2.0.tgz#dade5fdcb8f9d7833e7b8630028bda45c7867f25"
|
||||
integrity sha512-q8Qpts9HIW1PP1gdwT2/NqJBgou3XG44Z4xDGvdqFZYG+eINDyHu7PEidHkPFHpP5TLcB9s4Ne70Uy5u83u7Ig==
|
||||
simple-icons@^14.4.0:
|
||||
version "14.4.0"
|
||||
resolved "https://registry.yarnpkg.com/simple-icons/-/simple-icons-14.4.0.tgz#64226b8deb841bcffe4c42b269049753297f6e11"
|
||||
integrity sha512-eR4WWGF2/dMn6Na7wQZ9nUnGQg4CC9MnqYUlKKfIO0kQ79BdwyFS2L+X/MIxArULsh/IE0U48d4r9N4JVPicIQ==
|
||||
|
||||
simple-swizzle@^0.2.2:
|
||||
version "0.2.2"
|
||||
|
Loading…
x
Reference in New Issue
Block a user