Compare commits

...
666 Commits
Author SHA1 Message Date
shamoon af2566c237 Merge pull request #1069 from rommelkott/main
Refactor Healthchecks widget API host to be parametrized
2023-02-28 07:58:20 -08:00
Rommel Kott bf2f527f76 Refactor API host to be parametrized 2023-02-28 01:04:44 -06:00
Anonymous 009b13817a Translated using Weblate (Thai)
Currently translated at 12.8% (47 of 366 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/th/
2023-02-28 05:17:49 +01:00
Anonymous 397dfa98a2 Translated using Weblate (Latvian)
Currently translated at 32.5% (119 of 366 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/lv/
2023-02-28 05:17:49 +01:00
Anonymous b46f07244a Translated using Weblate (Japanese)
Currently translated at 4.0% (15 of 366 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ja/
2023-02-28 05:17:49 +01:00
Anonymous 371aec0d98 Translated using Weblate (Ukrainian)
Currently translated at 98.6% (361 of 366 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/uk/
2023-02-28 05:17:48 +01:00
Anonymous f6aef7e2f9 Translated using Weblate (Esperanto)
Currently translated at 28.1% (103 of 366 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/eo/
2023-02-28 05:17:48 +01:00
Anonymous 8a1be1e02d Translated using Weblate (Hindi)
Currently translated at 2.4% (9 of 366 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hi/
2023-02-28 05:17:48 +01:00
Anonymous e2d5f94b04 Translated using Weblate (Malay)
Currently translated at 69.1% (253 of 366 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ms/
2023-02-28 05:17:48 +01:00
Anonymous 7b455e0c1b Translated using Weblate (Danish)
Currently translated at 54.0% (198 of 366 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/da/
2023-02-28 05:17:47 +01:00
Anonymous 4aedbe4bdc Translated using Weblate (Czech)
Currently translated at 68.3% (250 of 366 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/cs/
2023-02-28 05:17:47 +01:00
Anonymous c2ed7feab7 Translated using Weblate (Arabic)
Currently translated at 71.5% (262 of 366 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ar/
2023-02-28 05:17:47 +01:00
Anonymous 0989c02d38 Translated using Weblate (Serbian)
Currently translated at 2.4% (9 of 366 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sr/
2023-02-28 05:17:46 +01:00
Anonymous dd026c85d9 Translated using Weblate (Turkish)
Currently translated at 86.6% (317 of 366 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/tr/
2023-02-28 05:17:46 +01:00
Anonymous 66e45d2594 Translated using Weblate (Bulgarian)
Currently translated at 12.5% (46 of 366 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/bg/
2023-02-28 05:17:46 +01:00
Anonymous ea578d6185 Translated using Weblate (Telugu)
Currently translated at 59.2% (217 of 366 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/te/
2023-02-28 05:17:45 +01:00
Anonymous aadb2ecdb3 Translated using Weblate (Finnish)
Currently translated at 48.6% (178 of 366 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fi/
2023-02-28 05:17:45 +01:00
Anonymous 296e80b7d5 Translated using Weblate (Yue)
Currently translated at 32.2% (118 of 366 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/yue/
2023-02-28 05:17:45 +01:00
Anonymous 6f298eb4ee Translated using Weblate (Portuguese (Brazil))
Currently translated at 98.6% (361 of 366 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt_BR/
2023-02-28 05:17:44 +01:00
Anonymous 644fcdc57b Translated using Weblate (Romanian)
Currently translated at 37.4% (137 of 366 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ro/
2023-02-28 05:17:44 +01:00
Anonymous f9b963da6b Translated using Weblate (Hebrew)
Currently translated at 27.5% (101 of 366 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/he/
2023-02-28 05:17:44 +01:00
Anonymous 56be3474db Translated using Weblate (Hungarian)
Currently translated at 29.5% (108 of 366 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hu/
2023-02-28 05:17:43 +01:00
Anonymous 2850111024 Translated using Weblate (Croatian)
Currently translated at 78.1% (286 of 366 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hr/
2023-02-28 05:17:43 +01:00
Anonymous abe20929c3 Translated using Weblate (Swedish)
Currently translated at 36.0% (132 of 366 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sv/
2023-02-28 05:17:43 +01:00
Anonymous 820eaa67d7 Translated using Weblate (Polish)
Currently translated at 77.8% (285 of 366 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pl/
2023-02-28 05:17:43 +01:00
Anonymous 3ce25830cc Translated using Weblate (Catalan)
Currently translated at 70.4% (258 of 366 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ca/
2023-02-28 05:17:42 +01:00
Anonymous 6e899c0684 Translated using Weblate (Chinese (Traditional))
Currently translated at 96.7% (354 of 366 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hant/
2023-02-28 05:17:42 +01:00
Anonymous 40bf9202ec Translated using Weblate (Dutch)
Currently translated at 24.0% (88 of 366 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nl/
2023-02-28 05:17:42 +01:00
Anonymous 92ba57e1e0 Translated using Weblate (Vietnamese)
Currently translated at 12.0% (44 of 366 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/vi/
2023-02-28 05:17:41 +01:00
Anonymous 34ca28b65f Translated using Weblate (Norwegian Bokmål)
Currently translated at 21.5% (79 of 366 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nb_NO/
2023-02-28 05:17:41 +01:00
Anonymous 34ebf27b06 Translated using Weblate (Italian)
Currently translated at 78.6% (288 of 366 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/it/
2023-02-28 05:17:41 +01:00
Anonymous 3adfaf9e26 Translated using Weblate (Chinese (Simplified))
Currently translated at 90.4% (331 of 366 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hans/
2023-02-28 05:17:40 +01:00
Anonymous 5bdef9c6a1 Translated using Weblate (Russian)
Currently translated at 13.1% (48 of 366 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ru/
2023-02-28 05:17:40 +01:00
Anonymous e5bd5bb423 Translated using Weblate (Portuguese)
Currently translated at 69.9% (256 of 366 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt/
2023-02-28 05:17:40 +01:00
Anonymous 5bc7fc168c Translated using Weblate (French)
Currently translated at 99.4% (364 of 366 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/
2023-02-28 05:17:40 +01:00
Anonymous 44c99af690 Translated using Weblate (Spanish)
Currently translated at 99.4% (364 of 366 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/
2023-02-28 05:17:39 +01:00
Anonymous befefd9af6 Translated using Weblate (German)
Currently translated at 62.2% (228 of 366 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/de/
2023-02-28 05:17:39 +01:00
shamoon 78e92dac22 Merge pull request #1068 from Aesop7/main
Add Quicklaunch feature to jump to a url
2023-02-27 20:15:26 -08:00
shamoon af147c0da0 Support open url in quicklaunch 2023-02-27 20:06:30 -08:00
danny 6d5434fa3a Add the ability to go to a URL from quicklaunch
disable shift indicator whenever modal is closed

Add prefix to make feature more explicit

Hide the results when shift is pressed

fix typo - className not class

Revert "Add the ability to go to a URL from quicklaunch"

This reverts commit c52184df275b2819a968db0a3f2a57d56b988ac9.
2023-02-27 17:29:43 -08:00
shamoon cbf11e3fb4 Merge pull request #1063 from benphelps/issue-1060
Change: Alter cloudflare widget to use api token [Breaking Change]
2023-02-26 08:31:11 -08:00
shamoon e9790e5677 Change cloudflare widget to use api tokens 2023-02-26 08:18:47 -08:00
gallegonovato 86383e5dce Translated using Weblate (Spanish)
Currently translated at 100.0% (364 of 364 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/
2023-02-26 16:36:39 +01:00
shamoon 449c23a63d fix service widgets import organization 2023-02-24 22:24:30 -08:00
Anonymous 829f7e33bc Translated using Weblate (Thai)
Currently translated at 12.9% (47 of 364 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/th/
2023-02-25 07:10:38 +01:00
Anonymous 9f4237f07d Translated using Weblate (Latvian)
Currently translated at 32.6% (119 of 364 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/lv/
2023-02-25 07:10:38 +01:00
Anonymous 7458b9f685 Translated using Weblate (Japanese)
Currently translated at 4.1% (15 of 364 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ja/
2023-02-25 07:10:37 +01:00
Anonymous 9a11cd5f81 Translated using Weblate (Ukrainian)
Currently translated at 99.1% (361 of 364 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/uk/
2023-02-25 07:10:37 +01:00
Anonymous 81aaf5aa56 Translated using Weblate (Esperanto)
Currently translated at 28.2% (103 of 364 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/eo/
2023-02-25 07:10:37 +01:00
Anonymous 716660318b Translated using Weblate (Hindi)
Currently translated at 2.4% (9 of 364 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hi/
2023-02-25 07:10:36 +01:00
Anonymous a861971ba6 Translated using Weblate (Malay)
Currently translated at 69.5% (253 of 364 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ms/
2023-02-25 07:10:36 +01:00
Anonymous 6a7a30b423 Translated using Weblate (Danish)
Currently translated at 54.3% (198 of 364 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/da/
2023-02-25 07:10:36 +01:00
Anonymous e60768d156 Translated using Weblate (Czech)
Currently translated at 68.6% (250 of 364 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/cs/
2023-02-25 07:10:35 +01:00
Anonymous dfa9cf29f9 Translated using Weblate (Arabic)
Currently translated at 71.9% (262 of 364 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ar/
2023-02-25 07:10:35 +01:00
Anonymous ab576f173b Translated using Weblate (Serbian)
Currently translated at 2.4% (9 of 364 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sr/
2023-02-25 07:10:35 +01:00
Anonymous 10604fc5d2 Translated using Weblate (Turkish)
Currently translated at 87.0% (317 of 364 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/tr/
2023-02-25 07:10:34 +01:00
Anonymous ebc8b745a4 Translated using Weblate (Bulgarian)
Currently translated at 12.6% (46 of 364 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/bg/
2023-02-25 07:10:34 +01:00
Anonymous f0151a5d57 Translated using Weblate (Telugu)
Currently translated at 59.6% (217 of 364 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/te/
2023-02-25 07:10:34 +01:00
Anonymous 76274a7843 Translated using Weblate (Finnish)
Currently translated at 48.9% (178 of 364 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fi/
2023-02-25 07:10:33 +01:00
Anonymous 20635da031 Translated using Weblate (Yue)
Currently translated at 32.4% (118 of 364 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/yue/
2023-02-25 07:10:33 +01:00
Anonymous a52f4ed984 Translated using Weblate (Portuguese (Brazil))
Currently translated at 99.1% (361 of 364 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt_BR/
2023-02-25 07:10:33 +01:00
Anonymous 1f4e89cf10 Translated using Weblate (Romanian)
Currently translated at 37.6% (137 of 364 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ro/
2023-02-25 07:10:32 +01:00
Anonymous 2ae71a27fe Translated using Weblate (Hebrew)
Currently translated at 27.7% (101 of 364 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/he/
2023-02-25 07:10:32 +01:00
Anonymous eb508170f0 Translated using Weblate (Hungarian)
Currently translated at 29.6% (108 of 364 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hu/
2023-02-25 07:10:32 +01:00
Anonymous 7ba37c894d Translated using Weblate (Croatian)
Currently translated at 78.5% (286 of 364 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hr/
2023-02-25 07:10:32 +01:00
Anonymous 37d7a94d8a Translated using Weblate (Swedish)
Currently translated at 36.2% (132 of 364 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sv/
2023-02-25 07:10:31 +01:00
Anonymous 98595a84e2 Translated using Weblate (Polish)
Currently translated at 78.2% (285 of 364 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pl/
2023-02-25 07:10:31 +01:00
Anonymous 509d0a785e Translated using Weblate (Catalan)
Currently translated at 70.8% (258 of 364 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ca/
2023-02-25 07:10:31 +01:00
Anonymous 49e564af8a Translated using Weblate (Chinese (Traditional))
Currently translated at 97.2% (354 of 364 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hant/
2023-02-25 07:10:30 +01:00
Anonymous 72a65e9a15 Translated using Weblate (Dutch)
Currently translated at 24.1% (88 of 364 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nl/
2023-02-25 07:10:30 +01:00
Anonymous dcbfd25d04 Translated using Weblate (Vietnamese)
Currently translated at 12.0% (44 of 364 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/vi/
2023-02-25 07:10:30 +01:00
Anonymous e7e46db9a1 Translated using Weblate (Norwegian Bokmål)
Currently translated at 21.7% (79 of 364 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nb_NO/
2023-02-25 07:10:29 +01:00
Anonymous 4c2cbb180f Translated using Weblate (Italian)
Currently translated at 79.1% (288 of 364 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/it/
2023-02-25 07:10:29 +01:00
Anonymous 6b56311955 Translated using Weblate (Chinese (Simplified))
Currently translated at 90.9% (331 of 364 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hans/
2023-02-25 07:10:29 +01:00
Anonymous 7cce64a91a Translated using Weblate (Russian)
Currently translated at 13.1% (48 of 364 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ru/
2023-02-25 07:10:28 +01:00
Anonymous aaf4a5855e Translated using Weblate (Portuguese)
Currently translated at 70.3% (256 of 364 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt/
2023-02-25 07:10:28 +01:00
Anonymous 2e83eec155 Translated using Weblate (French)
Currently translated at 99.1% (361 of 364 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/
2023-02-25 07:10:28 +01:00
Anonymous 21e9b55b74 Translated using Weblate (Spanish)
Currently translated at 98.6% (359 of 364 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/
2023-02-25 07:10:27 +01:00
Anonymous 5976a3c27f Translated using Weblate (German)
Currently translated at 62.6% (228 of 364 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/de/
2023-02-25 07:10:27 +01:00
Dan cb9755d8e6 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (361 of 361 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/uk/
2023-02-25 07:09:58 +01:00
Bruno Rossetto c139fbebd7 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (361 of 361 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt_BR/
2023-02-25 07:09:58 +01:00
Nonoss117 8ef7b301ec Translated using Weblate (French)
Currently translated at 100.0% (361 of 361 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/
2023-02-25 07:09:58 +01:00
shamoon 102ce2b1fe Merge pull request #1056 from tristo7/prometheus-widget
add prometheus service widget
2023-02-24 22:09:51 -08:00
shamoon fe494a4ab3 add prometheus widget data validation 2023-02-24 22:07:42 -08:00
Tristin Terry 8dcb3a27bd add prometheus service widget 2023-02-24 19:55:13 -06:00
shamoon 7740f7e2dd Revert #1044 2023-02-24 11:58:29 -08:00
shamoon 99efe2e7aa Merge pull request #1051 from benphelps/dependabot/github_actions/actions/checkout-3 2023-02-24 11:36:59 -08:00
dependabot[bot] 79df42a743 Bump actions/checkout from 2 to 3
Bumps [actions/checkout](https://github.com/actions/checkout) from 2 to 3.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v2...v3)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-24 17:03:59 +00:00
Anonymous 555e9463e8 Translated using Weblate (Thai)
Currently translated at 13.0% (47 of 361 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/th/
2023-02-24 16:54:25 +01:00
Anonymous a2424ea0bd Translated using Weblate (Latvian)
Currently translated at 32.9% (119 of 361 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/lv/
2023-02-24 16:54:25 +01:00
Anonymous 743e9dcbf8 Translated using Weblate (Japanese)
Currently translated at 4.1% (15 of 361 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ja/
2023-02-24 16:54:24 +01:00
Anonymous 350bb1ff25 Translated using Weblate (Ukrainian)
Currently translated at 99.4% (359 of 361 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/uk/
2023-02-24 16:54:24 +01:00
Anonymous bf50eaff17 Translated using Weblate (Esperanto)
Currently translated at 28.5% (103 of 361 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/eo/
2023-02-24 16:54:24 +01:00
Anonymous 2594068fd0 Translated using Weblate (Hindi)
Currently translated at 2.4% (9 of 361 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hi/
2023-02-24 16:54:24 +01:00
Anonymous 72f66385ae Translated using Weblate (Malay)
Currently translated at 70.0% (253 of 361 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ms/
2023-02-24 16:54:23 +01:00
Anonymous 9cae86d88b Translated using Weblate (Danish)
Currently translated at 54.8% (198 of 361 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/da/
2023-02-24 16:54:23 +01:00
Anonymous 9f5b381b17 Translated using Weblate (Czech)
Currently translated at 69.2% (250 of 361 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/cs/
2023-02-24 16:54:23 +01:00
Anonymous 707bb93ad6 Translated using Weblate (Arabic)
Currently translated at 72.5% (262 of 361 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ar/
2023-02-24 16:54:22 +01:00
Anonymous dfcd4d8e84 Translated using Weblate (Serbian)
Currently translated at 2.4% (9 of 361 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sr/
2023-02-24 16:54:22 +01:00
Anonymous 3d99302e33 Translated using Weblate (Turkish)
Currently translated at 87.8% (317 of 361 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/tr/
2023-02-24 16:54:21 +01:00
Anonymous a5036a701b Translated using Weblate (Bulgarian)
Currently translated at 12.7% (46 of 361 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/bg/
2023-02-24 16:54:21 +01:00
Anonymous 3aa0fd594c Translated using Weblate (Telugu)
Currently translated at 60.1% (217 of 361 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/te/
2023-02-24 16:54:21 +01:00
Anonymous 67c60b4256 Translated using Weblate (Finnish)
Currently translated at 49.3% (178 of 361 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fi/
2023-02-24 16:54:20 +01:00
Anonymous 42675c2e71 Translated using Weblate (Yue)
Currently translated at 32.6% (118 of 361 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/yue/
2023-02-24 16:54:20 +01:00
Anonymous 35098385c0 Translated using Weblate (Portuguese (Brazil))
Currently translated at 69.8% (252 of 361 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt_BR/
2023-02-24 16:54:19 +01:00
Anonymous 409204c564 Translated using Weblate (Romanian)
Currently translated at 37.9% (137 of 361 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ro/
2023-02-24 16:54:19 +01:00
Anonymous 7ad59dc85f Translated using Weblate (Hebrew)
Currently translated at 27.9% (101 of 361 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/he/
2023-02-24 16:54:19 +01:00
Anonymous f87d3d4ae3 Translated using Weblate (Hungarian)
Currently translated at 29.9% (108 of 361 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hu/
2023-02-24 16:54:19 +01:00
Anonymous c84fecd981 Translated using Weblate (Croatian)
Currently translated at 79.2% (286 of 361 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hr/
2023-02-24 16:54:18 +01:00
Anonymous 321ede5297 Translated using Weblate (Swedish)
Currently translated at 36.5% (132 of 361 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sv/
2023-02-24 16:54:18 +01:00
Anonymous 6bea32ad83 Translated using Weblate (Polish)
Currently translated at 78.9% (285 of 361 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pl/
2023-02-24 16:54:18 +01:00
Anonymous 2a73b603c9 Translated using Weblate (Catalan)
Currently translated at 71.4% (258 of 361 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ca/
2023-02-24 16:54:17 +01:00
Anonymous 8203537915 Translated using Weblate (Chinese (Traditional))
Currently translated at 98.0% (354 of 361 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hant/
2023-02-24 16:54:17 +01:00
Anonymous c56f48fb42 Translated using Weblate (Dutch)
Currently translated at 24.3% (88 of 361 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nl/
2023-02-24 16:54:17 +01:00
Anonymous 743267ba7b Translated using Weblate (Vietnamese)
Currently translated at 12.1% (44 of 361 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/vi/
2023-02-24 16:54:16 +01:00
Anonymous 218327b4a2 Translated using Weblate (Norwegian Bokmål)
Currently translated at 21.8% (79 of 361 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nb_NO/
2023-02-24 16:54:16 +01:00
Anonymous 7754b8b8f1 Translated using Weblate (Italian)
Currently translated at 79.7% (288 of 361 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/it/
2023-02-24 16:54:16 +01:00
Anonymous c0df7db05e Translated using Weblate (Chinese (Simplified))
Currently translated at 91.6% (331 of 361 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hans/
2023-02-24 16:54:15 +01:00
Anonymous 2c8aea1cd9 Translated using Weblate (Russian)
Currently translated at 13.2% (48 of 361 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ru/
2023-02-24 16:54:15 +01:00
Anonymous d0ba6aebbf Translated using Weblate (Portuguese)
Currently translated at 70.9% (256 of 361 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt/
2023-02-24 16:54:15 +01:00
Anonymous 5ed50bbb57 Translated using Weblate (French)
Currently translated at 99.4% (359 of 361 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/
2023-02-24 16:54:14 +01:00
Anonymous 311b7b1cea Translated using Weblate (Spanish)
Currently translated at 99.4% (359 of 361 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/
2023-02-24 16:54:14 +01:00
Anonymous 101b706cd9 Translated using Weblate (German)
Currently translated at 63.1% (228 of 361 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/de/
2023-02-24 16:54:14 +01:00
Bruno Rossetto bdfb09b1a4 Translated using Weblate (Portuguese (Brazil))
Currently translated at 70.1% (252 of 359 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt_BR/
2023-02-24 16:53:50 +01:00
shamoon 65c06adb5a Merge pull request #1026 from Oupsman/pterodactyl
Pterodactyl widget: initial commit
2023-02-24 07:53:45 -08:00
shamoon 8c26da6655 Merge pull request #1047 from jameswynn/chart-commons-version 2023-02-24 07:50:19 -08:00
James Wynn c0d58d8206 Typo in common lib version 2023-02-24 08:58:41 -06:00
shamoon c2136e8353 Merge pull request #1044 from jameswynn/helm-chart 2023-02-24 06:52:00 -08:00
Dan bc26d4f3b3 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (359 of 359 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/uk/
2023-02-24 02:46:32 +01:00
James Wynn 563cc9ce60 Migrated helm chart from jameswynn/helm-charts
Standard chart release pipeline from:
https://helm.sh/docs/howto/chart_releaser_action/
2023-02-23 14:36:55 -06:00
shamoon 060d5afcaa Simplify pterodactyl to only show server / node counts 2023-02-23 07:50:13 -08:00
Benoit SERRA 8e9ce016b1 Pterodactyl widget: initial commit 2023-02-23 07:50:13 -08:00
shamoon b65f6fca19 Merge pull request #1040 from jameswynn/external-services
Added "external" boolean annotation to specify external services
2023-02-22 08:27:06 -08:00
James Wynn f8f96645b0 Added "external" boolean annotation to specify external services
External services define a kubernetes service pointing to an application
hosted outside of the cluster. These services should not attempt to get
the status based on kubernetes deployments. The new boolean flag disables
this functionality. Since this is an edge case, the default value is "false".
2023-02-22 09:05:26 -06:00
Anonymous 81a2e1e692 Translated using Weblate (Czech)
Currently translated at 69.6% (250 of 359 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/cs/
2023-02-22 06:14:06 +01:00
Chun Chi Hsieh 50a9bdbcb8 Translated using Weblate (Chinese (Traditional))
Currently translated at 98.6% (354 of 359 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hant/
2023-02-22 06:14:05 +01:00
shamoon 601edb8d6b Merge pull request #1033 from DanBrezeanu/877-remove-bottom-version
Configuration option for removing bottom version
2023-02-21 08:20:40 -08:00
Dan Brezeanu 9eafac346b Configuration option for removing bottom version 2023-02-21 10:11:24 +02:00
shamoon 767fc1ec39 Better handle homebridge errors 2023-02-20 17:39:16 -08:00
Tomáš Plášek 09fa08b037 Translated using Weblate (Czech)
Currently translated at 69.6% (250 of 359 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/cs/
2023-02-21 02:07:54 +01:00
Nonoss117 fe204dd0c3 Translated using Weblate (French)
Currently translated at 100.0% (359 of 359 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/
2023-02-21 02:07:53 +01:00
Antonio Sanchez Castellón 93fe847667 Translated using Weblate (Spanish)
Currently translated at 100.0% (359 of 359 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/
2023-02-21 02:07:53 +01:00
gallegonovato f474b746d3 Translated using Weblate (Spanish)
Currently translated at 100.0% (359 of 359 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/
2023-02-21 02:07:52 +01:00
shamoon b69bb94253 Merge pull request #1031 from benphelps/fix-1025
Fix homebridge config UI-X API expires login with 403
2023-02-20 14:59:46 -08:00
shamoon 9df4ba0881 Fix homebridge config UI-X API expires login with 403 2023-02-20 14:58:19 -08:00
shamoon b2f26e1a43 Update status.jsx 2023-02-20 14:55:01 -08:00
Anonymous f9282180db Translated using Weblate (Thai)
Currently translated at 13.0% (47 of 359 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/th/
2023-02-20 08:36:14 +01:00
Anonymous 794fcaf3c3 Translated using Weblate (Latvian)
Currently translated at 33.1% (119 of 359 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/lv/
2023-02-20 08:36:14 +01:00
Anonymous ea9b7de1c9 Translated using Weblate (Japanese)
Currently translated at 4.1% (15 of 359 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ja/
2023-02-20 08:36:14 +01:00
Anonymous aef672f1bb Translated using Weblate (Ukrainian)
Currently translated at 97.7% (351 of 359 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/uk/
2023-02-20 08:36:13 +01:00
Anonymous c0ad65b3b1 Translated using Weblate (Esperanto)
Currently translated at 28.6% (103 of 359 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/eo/
2023-02-20 08:36:12 +01:00
Anonymous 062dd5b79c Translated using Weblate (Hindi)
Currently translated at 2.5% (9 of 359 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hi/
2023-02-20 08:36:12 +01:00
Anonymous 085e485e7c Translated using Weblate (Malay)
Currently translated at 70.4% (253 of 359 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ms/
2023-02-20 08:36:12 +01:00
Anonymous c227b70f32 Translated using Weblate (Danish)
Currently translated at 55.1% (198 of 359 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/da/
2023-02-20 08:36:11 +01:00
Anonymous e06a992437 Translated using Weblate (Czech)
Currently translated at 62.6% (225 of 359 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/cs/
2023-02-20 08:36:11 +01:00
Anonymous f9a96e10d6 Translated using Weblate (Arabic)
Currently translated at 72.9% (262 of 359 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ar/
2023-02-20 08:36:11 +01:00
Anonymous 0c52bf02eb Translated using Weblate (Serbian)
Currently translated at 2.5% (9 of 359 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sr/
2023-02-20 08:36:10 +01:00
Anonymous ae7a938245 Translated using Weblate (Turkish)
Currently translated at 88.3% (317 of 359 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/tr/
2023-02-20 08:36:10 +01:00
Anonymous 1c749bf93e Translated using Weblate (Bulgarian)
Currently translated at 12.8% (46 of 359 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/bg/
2023-02-20 08:36:09 +01:00
Anonymous 72b21b5d0e Translated using Weblate (Telugu)
Currently translated at 60.4% (217 of 359 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/te/
2023-02-20 08:36:09 +01:00
Anonymous 4762177ef2 Translated using Weblate (Finnish)
Currently translated at 49.5% (178 of 359 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fi/
2023-02-20 08:36:09 +01:00
Anonymous 418578c795 Translated using Weblate (Yue)
Currently translated at 32.8% (118 of 359 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/yue/
2023-02-20 08:36:08 +01:00
Anonymous d2335eb4cc Translated using Weblate (Portuguese (Brazil))
Currently translated at 48.1% (173 of 359 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt_BR/
2023-02-20 08:36:08 +01:00
Anonymous 520965c7fd Translated using Weblate (Romanian)
Currently translated at 38.1% (137 of 359 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ro/
2023-02-20 08:36:08 +01:00
Anonymous 7b36e071ea Translated using Weblate (Hebrew)
Currently translated at 28.1% (101 of 359 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/he/
2023-02-20 08:36:07 +01:00
Anonymous 3ea68caf53 Translated using Weblate (Hungarian)
Currently translated at 30.0% (108 of 359 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hu/
2023-02-20 08:36:07 +01:00
Anonymous e36ab158f7 Translated using Weblate (Croatian)
Currently translated at 79.6% (286 of 359 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hr/
2023-02-20 08:36:07 +01:00
Anonymous b5dedbdbf1 Translated using Weblate (Swedish)
Currently translated at 36.7% (132 of 359 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sv/
2023-02-20 08:36:06 +01:00
Anonymous abc44e3fe1 Translated using Weblate (Polish)
Currently translated at 79.3% (285 of 359 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pl/
2023-02-20 08:36:06 +01:00
Anonymous 32aeae0c41 Translated using Weblate (Catalan)
Currently translated at 71.8% (258 of 359 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ca/
2023-02-20 08:36:05 +01:00
Anonymous b0c443f982 Translated using Weblate (Chinese (Traditional))
Currently translated at 87.4% (314 of 359 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hant/
2023-02-20 08:36:05 +01:00
Anonymous 890b9a97cb Translated using Weblate (Dutch)
Currently translated at 24.5% (88 of 359 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nl/
2023-02-20 08:36:05 +01:00
Anonymous 034a30a29c Translated using Weblate (Vietnamese)
Currently translated at 12.2% (44 of 359 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/vi/
2023-02-20 08:36:04 +01:00
Anonymous b651fb84c4 Translated using Weblate (Norwegian Bokmål)
Currently translated at 22.0% (79 of 359 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nb_NO/
2023-02-20 08:36:04 +01:00
Anonymous 4354698b15 Translated using Weblate (Italian)
Currently translated at 80.2% (288 of 359 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/it/
2023-02-20 08:36:04 +01:00
Anonymous 01210bcbc9 Translated using Weblate (Chinese (Simplified))
Currently translated at 92.2% (331 of 359 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hans/
2023-02-20 08:36:03 +01:00
Anonymous 810bae42fc Translated using Weblate (Russian)
Currently translated at 13.3% (48 of 359 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ru/
2023-02-20 08:36:03 +01:00
Anonymous bfb8b703dc Translated using Weblate (Portuguese)
Currently translated at 71.3% (256 of 359 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt/
2023-02-20 08:36:03 +01:00
Anonymous 2ab980e658 Translated using Weblate (French)
Currently translated at 97.7% (351 of 359 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/
2023-02-20 08:36:02 +01:00
Anonymous 509a4e5460 Translated using Weblate (Spanish)
Currently translated at 97.7% (351 of 359 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/
2023-02-20 08:36:02 +01:00
Anonymous 030aec3908 Translated using Weblate (German)
Currently translated at 63.5% (228 of 359 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/de/
2023-02-20 08:36:02 +01:00
Dan 26e4216780 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (351 of 351 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/uk/
2023-02-20 08:35:07 +01:00
Nonoss117 08d7636165 Translated using Weblate (French)
Currently translated at 100.0% (351 of 351 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/
2023-02-20 08:35:07 +01:00
gallegonovato 9fcc6cae36 Translated using Weblate (Spanish)
Currently translated at 100.0% (351 of 351 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/
2023-02-20 08:35:07 +01:00
shamoon 893c443f21 Merge pull request #1023 from rommelkott/main
Add Health checks widget
2023-02-19 23:35:01 -08:00
shamoon 594f47fa68 Rework healthchecks date formatting 2023-02-19 23:32:53 -08:00
Rommel Kott 5def5dd508 Add healthcheck widget 2023-02-19 23:31:33 -08:00
shamoon 0e2b474540 Merge pull request #1022 from danroc/main
Fix: Correct flood + transmission rate units
2023-02-19 18:43:42 -08:00
shamoon 4855aa762f correct transmission rate units 2023-02-19 07:46:51 -08:00
Daniel Rocha 96507e4eba Use byterate for flood 2023-02-19 07:46:51 -08:00
shamoon 08f56b54f5 Update component.jsx 2023-02-19 06:25:07 -08:00
shamoon 9662c29374 Update PULL_REQUEST_TEMPLATE.md 2023-02-18 23:17:07 -08:00
shamoon 14e1a9a4ed limit widgets > 4 blocks 2023-02-18 22:58:55 -08:00
Jason Fischer 45946ddfe1 Merge pull request #963 from benphelps/fix-settings-after-container-update
Fix settings after container update
2023-02-18 22:56:53 -08:00
shamoon 651b8d8ef7 Update PULL_REQUEST_TEMPLATE.md 2023-02-18 22:50:38 -08:00
shamoon 8e53dff5dc Create PULL_REQUEST_TEMPLATE.md 2023-02-18 22:44:37 -08:00
Anonymous c84a75ce77 Translated using Weblate (Thai)
Currently translated at 13.3% (47 of 351 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/th/
2023-02-19 07:22:26 +01:00
Anonymous 21106e4bbd Translated using Weblate (Latvian)
Currently translated at 33.9% (119 of 351 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/lv/
2023-02-19 07:22:26 +01:00
Anonymous af6f867e41 Translated using Weblate (Japanese)
Currently translated at 4.2% (15 of 351 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ja/
2023-02-19 07:22:26 +01:00
Anonymous deaa4e5a13 Translated using Weblate (Ukrainian)
Currently translated at 96.5% (339 of 351 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/uk/
2023-02-19 07:22:25 +01:00
Anonymous fff96b6ab7 Translated using Weblate (Esperanto)
Currently translated at 29.3% (103 of 351 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/eo/
2023-02-19 07:22:25 +01:00
Anonymous 7648f2d409 Translated using Weblate (Hindi)
Currently translated at 2.5% (9 of 351 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hi/
2023-02-19 07:22:24 +01:00
Anonymous 6461578fc5 Translated using Weblate (Malay)
Currently translated at 72.0% (253 of 351 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ms/
2023-02-19 07:22:24 +01:00
Anonymous 9d97b6e231 Translated using Weblate (Danish)
Currently translated at 56.4% (198 of 351 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/da/
2023-02-19 07:22:24 +01:00
Anonymous 71109db50f Translated using Weblate (Czech)
Currently translated at 64.1% (225 of 351 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/cs/
2023-02-19 07:22:23 +01:00
Anonymous f7294131b7 Translated using Weblate (Arabic)
Currently translated at 74.6% (262 of 351 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ar/
2023-02-19 07:22:23 +01:00
Anonymous 271aee139e Translated using Weblate (Serbian)
Currently translated at 2.5% (9 of 351 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sr/
2023-02-19 07:22:23 +01:00
Anonymous 3d9e739cb4 Translated using Weblate (Turkish)
Currently translated at 90.3% (317 of 351 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/tr/
2023-02-19 07:22:22 +01:00
Anonymous ada39bb876 Translated using Weblate (Bulgarian)
Currently translated at 13.1% (46 of 351 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/bg/
2023-02-19 07:22:22 +01:00
Anonymous 160b936206 Translated using Weblate (Telugu)
Currently translated at 61.8% (217 of 351 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/te/
2023-02-19 07:22:21 +01:00
Anonymous 5874598a36 Translated using Weblate (Finnish)
Currently translated at 50.7% (178 of 351 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fi/
2023-02-19 07:22:21 +01:00
Anonymous 938d03e4ba Translated using Weblate (Yue)
Currently translated at 33.6% (118 of 351 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/yue/
2023-02-19 07:22:21 +01:00
Anonymous 4314013b2e Translated using Weblate (Portuguese (Brazil))
Currently translated at 49.2% (173 of 351 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt_BR/
2023-02-19 07:22:20 +01:00
Anonymous acfeaae8c6 Translated using Weblate (Romanian)
Currently translated at 39.0% (137 of 351 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ro/
2023-02-19 07:22:20 +01:00
Anonymous b70fa0e844 Translated using Weblate (Hebrew)
Currently translated at 28.7% (101 of 351 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/he/
2023-02-19 07:22:20 +01:00
Anonymous b7dcd3e9cd Translated using Weblate (Hungarian)
Currently translated at 30.7% (108 of 351 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hu/
2023-02-19 07:22:19 +01:00
Anonymous f697c9b9dd Translated using Weblate (Croatian)
Currently translated at 81.4% (286 of 351 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hr/
2023-02-19 07:22:19 +01:00
Anonymous 06fa779966 Translated using Weblate (Swedish)
Currently translated at 37.6% (132 of 351 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sv/
2023-02-19 07:22:19 +01:00
Anonymous 6eefa34741 Translated using Weblate (Polish)
Currently translated at 81.1% (285 of 351 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pl/
2023-02-19 07:22:18 +01:00
Anonymous 4bd2fda6ae Translated using Weblate (Catalan)
Currently translated at 73.5% (258 of 351 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ca/
2023-02-19 07:22:18 +01:00
Anonymous ec701d9fd7 Translated using Weblate (Chinese (Traditional))
Currently translated at 89.4% (314 of 351 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hant/
2023-02-19 07:22:17 +01:00
Anonymous 6476094ce4 Translated using Weblate (Dutch)
Currently translated at 25.0% (88 of 351 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nl/
2023-02-19 07:22:17 +01:00
Anonymous 57940c1519 Translated using Weblate (Vietnamese)
Currently translated at 12.5% (44 of 351 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/vi/
2023-02-19 07:22:17 +01:00
Anonymous 4b494efcd1 Translated using Weblate (Norwegian Bokmål)
Currently translated at 22.5% (79 of 351 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nb_NO/
2023-02-19 07:22:16 +01:00
Anonymous bb8796000c Translated using Weblate (Italian)
Currently translated at 82.0% (288 of 351 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/it/
2023-02-19 07:22:16 +01:00
Anonymous e49478085c Translated using Weblate (Chinese (Simplified))
Currently translated at 94.3% (331 of 351 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hans/
2023-02-19 07:22:16 +01:00
Anonymous db5a7beb57 Translated using Weblate (Russian)
Currently translated at 13.6% (48 of 351 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ru/
2023-02-19 07:22:15 +01:00
Anonymous 0b7b1c4c9e Translated using Weblate (Portuguese)
Currently translated at 72.9% (256 of 351 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt/
2023-02-19 07:22:15 +01:00
Anonymous 4a85caca50 Translated using Weblate (French)
Currently translated at 97.7% (343 of 351 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/
2023-02-19 07:22:15 +01:00
Anonymous 410054347d Translated using Weblate (Spanish)
Currently translated at 97.7% (343 of 351 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/
2023-02-19 07:22:14 +01:00
Anonymous 05b056d18e Translated using Weblate (German)
Currently translated at 64.9% (228 of 351 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/de/
2023-02-19 07:22:14 +01:00
shamoon 080d684089 Merge pull request #807 from JeffResc/unmanic
Add Unmanic service widget
2023-02-18 22:21:42 -08:00
shamoon 0666268d91 unmanic use generic proxy 2023-02-18 22:21:32 -08:00
Jeff Rescignano b45d6240ae Add Unmanic service widget 2023-02-18 22:19:45 -08:00
shamoon e35a66d3f1 Suppory body in widget endpoint mappings 2023-02-18 22:18:27 -08:00
Anonymous 2367564041 Translated using Weblate (Thai)
Currently translated at 13.5% (47 of 348 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/th/
2023-02-18 22:58:54 +01:00
Anonymous 0223e8828f Translated using Weblate (Latvian)
Currently translated at 34.1% (119 of 348 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/lv/
2023-02-18 22:58:54 +01:00
Anonymous 408533ee24 Translated using Weblate (Japanese)
Currently translated at 4.3% (15 of 348 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ja/
2023-02-18 22:58:53 +01:00
Anonymous 0c745d6d58 Translated using Weblate (Ukrainian)
Currently translated at 97.4% (339 of 348 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/uk/
2023-02-18 22:58:53 +01:00
Anonymous 35cbe9e69b Translated using Weblate (Esperanto)
Currently translated at 29.5% (103 of 348 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/eo/
2023-02-18 22:58:52 +01:00
Anonymous 91511edcfb Translated using Weblate (Hindi)
Currently translated at 2.5% (9 of 348 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hi/
2023-02-18 22:58:52 +01:00
Anonymous df8cf8cb20 Translated using Weblate (Malay)
Currently translated at 72.7% (253 of 348 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ms/
2023-02-18 22:58:52 +01:00
Anonymous 8c1b95cb0a Translated using Weblate (Danish)
Currently translated at 56.8% (198 of 348 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/da/
2023-02-18 22:58:51 +01:00
Anonymous 264f2fb84b Translated using Weblate (Czech)
Currently translated at 64.6% (225 of 348 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/cs/
2023-02-18 22:58:51 +01:00
Anonymous 13fe3f6e73 Translated using Weblate (Arabic)
Currently translated at 75.2% (262 of 348 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ar/
2023-02-18 22:58:50 +01:00
Anonymous c7a927fe7d Translated using Weblate (Serbian)
Currently translated at 2.5% (9 of 348 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sr/
2023-02-18 22:58:50 +01:00
Anonymous 446d06b538 Translated using Weblate (Turkish)
Currently translated at 91.0% (317 of 348 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/tr/
2023-02-18 22:58:50 +01:00
Anonymous a2d88bd30f Translated using Weblate (Bulgarian)
Currently translated at 13.2% (46 of 348 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/bg/
2023-02-18 22:58:49 +01:00
Anonymous bbde2876e2 Translated using Weblate (Telugu)
Currently translated at 62.3% (217 of 348 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/te/
2023-02-18 22:58:49 +01:00
Anonymous 161dcf70ab Translated using Weblate (Finnish)
Currently translated at 51.1% (178 of 348 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fi/
2023-02-18 22:58:48 +01:00
Anonymous 1544d6cb37 Translated using Weblate (Yue)
Currently translated at 33.9% (118 of 348 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/yue/
2023-02-18 22:58:48 +01:00
Anonymous b6b716c95f Translated using Weblate (Portuguese (Brazil))
Currently translated at 49.7% (173 of 348 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt_BR/
2023-02-18 22:58:47 +01:00
Anonymous f0b32e7d14 Translated using Weblate (Romanian)
Currently translated at 39.3% (137 of 348 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ro/
2023-02-18 22:58:47 +01:00
Anonymous 27eb036996 Translated using Weblate (Hebrew)
Currently translated at 29.0% (101 of 348 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/he/
2023-02-18 22:58:46 +01:00
Anonymous 65cee0ec2b Translated using Weblate (Hungarian)
Currently translated at 31.0% (108 of 348 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hu/
2023-02-18 22:58:46 +01:00
Anonymous 735cf18dd8 Translated using Weblate (Croatian)
Currently translated at 82.1% (286 of 348 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hr/
2023-02-18 22:58:46 +01:00
Anonymous a4a0d293cd Translated using Weblate (Swedish)
Currently translated at 37.9% (132 of 348 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sv/
2023-02-18 22:58:45 +01:00
Anonymous bcc7852e25 Translated using Weblate (Polish)
Currently translated at 81.8% (285 of 348 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pl/
2023-02-18 22:58:45 +01:00
Anonymous 724fc07610 Translated using Weblate (Catalan)
Currently translated at 74.1% (258 of 348 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ca/
2023-02-18 22:58:44 +01:00
Anonymous 2f0cf218fc Translated using Weblate (Chinese (Traditional))
Currently translated at 90.2% (314 of 348 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hant/
2023-02-18 22:58:44 +01:00
Anonymous 534b28259f Translated using Weblate (Dutch)
Currently translated at 25.2% (88 of 348 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nl/
2023-02-18 22:58:44 +01:00
Anonymous 61db2fd57d Translated using Weblate (Vietnamese)
Currently translated at 12.6% (44 of 348 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/vi/
2023-02-18 22:58:43 +01:00
Anonymous 0a926a322a Translated using Weblate (Norwegian Bokmål)
Currently translated at 22.7% (79 of 348 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nb_NO/
2023-02-18 22:58:43 +01:00
Anonymous 386df61ed7 Translated using Weblate (Italian)
Currently translated at 82.7% (288 of 348 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/it/
2023-02-18 22:58:42 +01:00
Anonymous 467f42e0f6 Translated using Weblate (Chinese (Simplified))
Currently translated at 95.1% (331 of 348 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hans/
2023-02-18 22:58:42 +01:00
Anonymous 5dd4df8a05 Translated using Weblate (Russian)
Currently translated at 13.7% (48 of 348 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ru/
2023-02-18 22:58:42 +01:00
Anonymous 0a4116425b Translated using Weblate (Portuguese)
Currently translated at 73.5% (256 of 348 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt/
2023-02-18 22:58:41 +01:00
Anonymous e26e7f8559 Translated using Weblate (French)
Currently translated at 98.5% (343 of 348 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/
2023-02-18 22:58:41 +01:00
Anonymous 0b30764b89 Translated using Weblate (Spanish)
Currently translated at 98.5% (343 of 348 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/
2023-02-18 22:58:41 +01:00
Anonymous 97669a98a9 Translated using Weblate (German)
Currently translated at 65.5% (228 of 348 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/de/
2023-02-18 22:58:40 +01:00
Mbarmemandshamoon addf0911a0 Add Kopia widget (#1018)
* Add Kopia widget

* Add Kopia widget

* Modify Kopia widget blocks

* Kopia next run / last run

---------

Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2023-02-18 13:58:01 -08:00
Nonoss117 806b7f3cab Translated using Weblate (French)
Currently translated at 100.0% (343 of 343 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/
2023-02-18 12:37:10 +01:00
gallegonovato 9b037ce349 Translated using Weblate (Spanish)
Currently translated at 100.0% (343 of 343 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/
2023-02-18 12:37:09 +01:00
shamoon 79d199b321 Merge pull request #1019 from benphelps/issue-1007
Fix: pass csrf token for unifi login
2023-02-17 14:12:07 -08:00
shamoon 5289476937 Pass csrf token for unifi login 2023-02-16 22:45:11 -08:00
Anonymous 08f5cd8ef2 Translated using Weblate (Thai)
Currently translated at 13.7% (47 of 343 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/th/
2023-02-17 07:06:41 +01:00
Anonymous 7634e41652 Translated using Weblate (Latvian)
Currently translated at 34.6% (119 of 343 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/lv/
2023-02-17 07:06:40 +01:00
Anonymous 321c7c95f8 Translated using Weblate (Japanese)
Currently translated at 4.3% (15 of 343 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ja/
2023-02-17 07:06:40 +01:00
Anonymous 5697037550 Translated using Weblate (Ukrainian)
Currently translated at 98.8% (339 of 343 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/uk/
2023-02-17 07:06:40 +01:00
Anonymous bb43d30d81 Translated using Weblate (Esperanto)
Currently translated at 30.0% (103 of 343 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/eo/
2023-02-17 07:06:39 +01:00
Anonymous 7f0db24203 Translated using Weblate (Hindi)
Currently translated at 2.6% (9 of 343 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hi/
2023-02-17 07:06:39 +01:00
Anonymous 89699cabb1 Translated using Weblate (Malay)
Currently translated at 73.7% (253 of 343 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ms/
2023-02-17 07:06:38 +01:00
Anonymous 5e51a16959 Translated using Weblate (Danish)
Currently translated at 57.7% (198 of 343 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/da/
2023-02-17 07:06:38 +01:00
Anonymous babc73c74e Translated using Weblate (Czech)
Currently translated at 65.5% (225 of 343 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/cs/
2023-02-17 07:06:38 +01:00
Anonymous a8391db069 Translated using Weblate (Arabic)
Currently translated at 76.3% (262 of 343 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ar/
2023-02-17 07:06:37 +01:00
Anonymous e9b8b50b24 Translated using Weblate (Serbian)
Currently translated at 2.6% (9 of 343 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sr/
2023-02-17 07:06:37 +01:00
Anonymous d52d31a2bd Translated using Weblate (Turkish)
Currently translated at 92.4% (317 of 343 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/tr/
2023-02-17 07:06:37 +01:00
Anonymous 890d392b29 Translated using Weblate (Bulgarian)
Currently translated at 13.4% (46 of 343 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/bg/
2023-02-17 07:06:36 +01:00
Anonymous 77b5879602 Translated using Weblate (Telugu)
Currently translated at 63.2% (217 of 343 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/te/
2023-02-17 07:06:36 +01:00
Anonymous 1b643d8572 Translated using Weblate (Finnish)
Currently translated at 51.8% (178 of 343 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fi/
2023-02-17 07:06:35 +01:00
Anonymous d7544e9b9f Translated using Weblate (Yue)
Currently translated at 34.4% (118 of 343 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/yue/
2023-02-17 07:06:35 +01:00
Anonymous 1c71b8872f Translated using Weblate (Portuguese (Brazil))
Currently translated at 50.4% (173 of 343 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt_BR/
2023-02-17 07:06:35 +01:00
Anonymous c1865592de Translated using Weblate (Romanian)
Currently translated at 39.9% (137 of 343 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ro/
2023-02-17 07:06:34 +01:00
Anonymous 6d3dc81692 Translated using Weblate (Hebrew)
Currently translated at 29.4% (101 of 343 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/he/
2023-02-17 07:06:34 +01:00
Anonymous 95caacce41 Translated using Weblate (Hungarian)
Currently translated at 31.4% (108 of 343 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hu/
2023-02-17 07:06:33 +01:00
Anonymous caf2d2c63b Translated using Weblate (Croatian)
Currently translated at 83.3% (286 of 343 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hr/
2023-02-17 07:06:33 +01:00
Anonymous 7bed5604ca Translated using Weblate (Swedish)
Currently translated at 38.4% (132 of 343 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sv/
2023-02-17 07:06:33 +01:00
Anonymous 5ff206565c Translated using Weblate (Polish)
Currently translated at 83.0% (285 of 343 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pl/
2023-02-17 07:06:32 +01:00
Anonymous 976bcdd794 Translated using Weblate (Catalan)
Currently translated at 75.2% (258 of 343 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ca/
2023-02-17 07:06:32 +01:00
Anonymous bdbd570fbc Translated using Weblate (Chinese (Traditional))
Currently translated at 91.5% (314 of 343 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hant/
2023-02-17 07:06:31 +01:00
Anonymous 1fdcc95ab1 Translated using Weblate (Dutch)
Currently translated at 25.6% (88 of 343 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nl/
2023-02-17 07:06:31 +01:00
Anonymous b0113908a6 Translated using Weblate (Vietnamese)
Currently translated at 12.8% (44 of 343 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/vi/
2023-02-17 07:06:31 +01:00
Anonymous b9c823decb Translated using Weblate (Norwegian Bokmål)
Currently translated at 23.0% (79 of 343 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nb_NO/
2023-02-17 07:06:30 +01:00
Anonymous a23ec1d4f3 Translated using Weblate (Italian)
Currently translated at 83.9% (288 of 343 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/it/
2023-02-17 07:06:30 +01:00
Anonymous 58b3706d5d Translated using Weblate (Chinese (Simplified))
Currently translated at 96.5% (331 of 343 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hans/
2023-02-17 07:06:30 +01:00
Anonymous 4d1c01b9f9 Translated using Weblate (Russian)
Currently translated at 13.9% (48 of 343 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ru/
2023-02-17 07:06:29 +01:00
Anonymous edb94b7499 Translated using Weblate (Portuguese)
Currently translated at 74.6% (256 of 343 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt/
2023-02-17 07:06:29 +01:00
Anonymous dd43b02e92 Translated using Weblate (French)
Currently translated at 98.8% (339 of 343 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/
2023-02-17 07:06:28 +01:00
Anonymous daaeedf3e5 Translated using Weblate (Spanish)
Currently translated at 98.8% (339 of 343 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/
2023-02-17 07:06:28 +01:00
Anonymous 10f7d9cbfe Translated using Weblate (German)
Currently translated at 66.4% (228 of 343 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/de/
2023-02-17 07:06:28 +01:00
shamoon 21a4751289 Merge pull request #1010 from Mbarmem/main
Add Nextcloud widget
2023-02-16 22:05:51 -08:00
shamoon ad6eeaaf75 Remove nextcloud shares block 2023-02-16 22:05:32 -08:00
Dan 5d5ddfec1b Translated using Weblate (Ukrainian)
Currently translated at 100.0% (339 of 339 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/uk/
2023-02-16 12:36:36 +01:00
Nonoss117 3d3dcd2a63 Translated using Weblate (French)
Currently translated at 100.0% (339 of 339 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/
2023-02-16 12:36:35 +01:00
gallegonovato ede631e487 Translated using Weblate (Spanish)
Currently translated at 100.0% (339 of 339 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/
2023-02-16 12:36:35 +01:00
Mbarmem ed96c46fa5 Add Nextcloud widget 2023-02-16 11:30:05 +03:00
shamoon 5a8b1b587b Merge pull request #1008 from benphelps/fix-1001
Feature: strip sensitive information contained in URLs from frontend API calls
2023-02-15 15:31:53 -08:00
shamoon e1176e9e3b Strip sensitive information contained in URLs from frontend API calls 2023-02-15 14:46:31 -08:00
shamoon a25606cfe9 Merge pull request #994 from benphelps/fix-970
Fix: improve swarm status for replicated services & prefer stats for local containers
2023-02-14 10:41:49 -08:00
shamoonandRaphaël Catarino ae7a77d247 Use replica count for swarm status
Co-Authored-By: Raphaël Catarino <raphcatarino@gmail.com>
2023-02-14 10:41:12 -08:00
Anonymous be51be60a2 Translated using Weblate (Thai)
Currently translated at 13.8% (47 of 339 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/th/
2023-02-14 19:33:04 +01:00
Anonymous 07f7025dde Translated using Weblate (Latvian)
Currently translated at 35.1% (119 of 339 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/lv/
2023-02-14 19:33:03 +01:00
Anonymous bd62195c60 Translated using Weblate (Japanese)
Currently translated at 4.4% (15 of 339 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ja/
2023-02-14 19:33:03 +01:00
Anonymous 2af8f5f36b Translated using Weblate (Ukrainian)
Currently translated at 97.6% (331 of 339 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/uk/
2023-02-14 19:33:02 +01:00
Anonymous 52ab10a17b Translated using Weblate (Esperanto)
Currently translated at 30.3% (103 of 339 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/eo/
2023-02-14 19:33:02 +01:00
Anonymous 6cec2f0d0d Translated using Weblate (Hindi)
Currently translated at 2.6% (9 of 339 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hi/
2023-02-14 19:33:02 +01:00
Anonymous d953b52938 Translated using Weblate (Malay)
Currently translated at 74.6% (253 of 339 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ms/
2023-02-14 19:33:01 +01:00
Anonymous 7d43d23d84 Translated using Weblate (Danish)
Currently translated at 58.4% (198 of 339 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/da/
2023-02-14 19:33:01 +01:00
Anonymous 34653dd286 Translated using Weblate (Czech)
Currently translated at 66.3% (225 of 339 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/cs/
2023-02-14 19:33:00 +01:00
Anonymous 3d0a53f4ae Translated using Weblate (Arabic)
Currently translated at 77.2% (262 of 339 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ar/
2023-02-14 19:33:00 +01:00
Anonymous f704acc3b1 Translated using Weblate (Serbian)
Currently translated at 2.6% (9 of 339 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sr/
2023-02-14 19:32:59 +01:00
Anonymous db4d812a12 Translated using Weblate (Turkish)
Currently translated at 93.5% (317 of 339 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/tr/
2023-02-14 19:32:59 +01:00
Anonymous e8fcb8add2 Translated using Weblate (Bulgarian)
Currently translated at 13.5% (46 of 339 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/bg/
2023-02-14 19:32:58 +01:00
Anonymous 54bfecd59a Translated using Weblate (Telugu)
Currently translated at 64.0% (217 of 339 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/te/
2023-02-14 19:32:58 +01:00
Anonymous 5bf2b816c8 Translated using Weblate (Finnish)
Currently translated at 52.5% (178 of 339 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fi/
2023-02-14 19:32:58 +01:00
Anonymous 8cfa880f5c Translated using Weblate (Yue)
Currently translated at 34.8% (118 of 339 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/yue/
2023-02-14 19:32:57 +01:00
Anonymous 30af03a7ce Translated using Weblate (Portuguese (Brazil))
Currently translated at 51.0% (173 of 339 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt_BR/
2023-02-14 19:32:57 +01:00
Anonymous 6aaf82418e Translated using Weblate (Romanian)
Currently translated at 40.4% (137 of 339 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ro/
2023-02-14 19:32:56 +01:00
Anonymous d4b46eb18c Translated using Weblate (Hebrew)
Currently translated at 29.7% (101 of 339 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/he/
2023-02-14 19:32:56 +01:00
Anonymous a5a0a0c510 Translated using Weblate (Hungarian)
Currently translated at 31.8% (108 of 339 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hu/
2023-02-14 19:32:56 +01:00
Anonymous 613e40a900 Translated using Weblate (Croatian)
Currently translated at 84.3% (286 of 339 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hr/
2023-02-14 19:32:55 +01:00
Anonymous 248b5759a0 Translated using Weblate (Swedish)
Currently translated at 38.9% (132 of 339 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sv/
2023-02-14 19:32:55 +01:00
Anonymous 5c35aee418 Translated using Weblate (Polish)
Currently translated at 84.0% (285 of 339 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pl/
2023-02-14 19:32:54 +01:00
Anonymous 2f9cf474dd Translated using Weblate (Catalan)
Currently translated at 76.1% (258 of 339 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ca/
2023-02-14 19:32:54 +01:00
Anonymous 378be50c35 Translated using Weblate (Chinese (Traditional))
Currently translated at 92.6% (314 of 339 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hant/
2023-02-14 19:32:53 +01:00
Anonymous 49c55e04e9 Translated using Weblate (Dutch)
Currently translated at 25.9% (88 of 339 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nl/
2023-02-14 19:32:53 +01:00
Anonymous c1250d0ab6 Translated using Weblate (Vietnamese)
Currently translated at 12.9% (44 of 339 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/vi/
2023-02-14 19:32:53 +01:00
Anonymous b7e9a69345 Translated using Weblate (Norwegian Bokmål)
Currently translated at 23.3% (79 of 339 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nb_NO/
2023-02-14 19:32:52 +01:00
Anonymous 1210add0ff Translated using Weblate (Italian)
Currently translated at 84.9% (288 of 339 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/it/
2023-02-14 19:32:52 +01:00
Anonymous e235790d68 Translated using Weblate (Chinese (Simplified))
Currently translated at 97.6% (331 of 339 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hans/
2023-02-14 19:32:51 +01:00
Anonymous 31a6408583 Translated using Weblate (Russian)
Currently translated at 14.1% (48 of 339 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ru/
2023-02-14 19:32:51 +01:00
Anonymous 0a5276b12d Translated using Weblate (Portuguese)
Currently translated at 75.5% (256 of 339 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt/
2023-02-14 19:32:51 +01:00
Anonymous d440126c45 Translated using Weblate (French)
Currently translated at 98.8% (335 of 339 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/
2023-02-14 19:32:50 +01:00
Anonymous 6a3f096d44 Translated using Weblate (Spanish)
Currently translated at 98.8% (335 of 339 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/
2023-02-14 19:32:50 +01:00
Anonymous 1b5f7ac3e2 Translated using Weblate (German)
Currently translated at 67.2% (228 of 339 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/de/
2023-02-14 19:32:49 +01:00
Nonoss117 e56d29febb Translated using Weblate (French)
Currently translated at 100.0% (335 of 335 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/
2023-02-14 19:32:13 +01:00
gallegonovato 610ad9819a Translated using Weblate (Spanish)
Currently translated at 100.0% (335 of 335 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/
2023-02-14 19:32:13 +01:00
shamoon 2c6b2a1474 Merge pull request #999 from benphelps/add-grafana-widget
Add grafana widget
2023-02-14 10:32:07 -08:00
shamoon 460983b741 Add grafana stats 2023-02-14 10:30:05 -08:00
shamoon c1f22b3e2c Cleanup grafana widget + fix labels 2023-02-14 10:30:05 -08:00
Mbarmem cd7d7ba729 Add Grafana widget 2023-02-14 10:30:05 -08:00
shamoon f74275293a Prefer swarm task containers locally for status / stats 2023-02-14 10:09:12 -08:00
Anonymous 8a6343dee7 Translated using Weblate (Thai)
Currently translated at 14.0% (47 of 335 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/th/
2023-02-14 05:23:13 +01:00
Anonymous d7671149b7 Translated using Weblate (Latvian)
Currently translated at 35.5% (119 of 335 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/lv/
2023-02-14 05:23:13 +01:00
Anonymous db2063a3ee Translated using Weblate (Japanese)
Currently translated at 4.4% (15 of 335 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ja/
2023-02-14 05:23:12 +01:00
Anonymous ed2e15f8c3 Translated using Weblate (Ukrainian)
Currently translated at 98.8% (331 of 335 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/uk/
2023-02-14 05:23:12 +01:00
Anonymous 69640fea19 Translated using Weblate (Esperanto)
Currently translated at 30.7% (103 of 335 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/eo/
2023-02-14 05:23:12 +01:00
Anonymous 7b6a0aa86f Translated using Weblate (Hindi)
Currently translated at 2.6% (9 of 335 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hi/
2023-02-14 05:23:11 +01:00
Anonymous aa3d3ff208 Translated using Weblate (Malay)
Currently translated at 75.5% (253 of 335 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ms/
2023-02-14 05:23:11 +01:00
Anonymous a8c3ecb00c Translated using Weblate (Danish)
Currently translated at 59.1% (198 of 335 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/da/
2023-02-14 05:23:10 +01:00
Anonymous 35b533b3f0 Translated using Weblate (Czech)
Currently translated at 67.1% (225 of 335 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/cs/
2023-02-14 05:23:10 +01:00
Anonymous e433c195e8 Translated using Weblate (Arabic)
Currently translated at 78.2% (262 of 335 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ar/
2023-02-14 05:23:10 +01:00
Anonymous c799f1207f Translated using Weblate (Serbian)
Currently translated at 2.6% (9 of 335 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sr/
2023-02-14 05:23:09 +01:00
Anonymous ab7a73dae6 Translated using Weblate (Turkish)
Currently translated at 94.6% (317 of 335 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/tr/
2023-02-14 05:23:09 +01:00
Anonymous 8ec4291753 Translated using Weblate (Bulgarian)
Currently translated at 13.7% (46 of 335 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/bg/
2023-02-14 05:23:08 +01:00
Anonymous d5c99a9582 Translated using Weblate (Telugu)
Currently translated at 64.7% (217 of 335 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/te/
2023-02-14 05:23:08 +01:00
Anonymous e729a75975 Translated using Weblate (Finnish)
Currently translated at 53.1% (178 of 335 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fi/
2023-02-14 05:23:07 +01:00
Anonymous 55f3a68b5f Translated using Weblate (Yue)
Currently translated at 35.2% (118 of 335 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/yue/
2023-02-14 05:23:07 +01:00
Anonymous 33a3d9bcff Translated using Weblate (Portuguese (Brazil))
Currently translated at 51.6% (173 of 335 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt_BR/
2023-02-14 05:23:07 +01:00
Anonymous b5e8284d7f Translated using Weblate (Romanian)
Currently translated at 40.8% (137 of 335 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ro/
2023-02-14 05:23:06 +01:00
Anonymous 1497e4dbd5 Translated using Weblate (Hebrew)
Currently translated at 30.1% (101 of 335 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/he/
2023-02-14 05:23:06 +01:00
Anonymous 615a0c419c Translated using Weblate (Hungarian)
Currently translated at 32.2% (108 of 335 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hu/
2023-02-14 05:23:06 +01:00
Anonymous 26b4e8adea Translated using Weblate (Croatian)
Currently translated at 85.3% (286 of 335 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hr/
2023-02-14 05:23:05 +01:00
Anonymous 10d5f11a9c Translated using Weblate (Swedish)
Currently translated at 39.4% (132 of 335 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sv/
2023-02-14 05:23:05 +01:00
Anonymous e241e4c683 Translated using Weblate (Polish)
Currently translated at 85.0% (285 of 335 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pl/
2023-02-14 05:23:05 +01:00
Anonymous 049dda86e3 Translated using Weblate (Catalan)
Currently translated at 77.0% (258 of 335 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ca/
2023-02-14 05:23:04 +01:00
Anonymous 78088afb9c Translated using Weblate (Chinese (Traditional))
Currently translated at 93.7% (314 of 335 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hant/
2023-02-14 05:23:04 +01:00
Anonymous 75e310c19e Translated using Weblate (Dutch)
Currently translated at 26.2% (88 of 335 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nl/
2023-02-14 05:23:03 +01:00
Anonymous eed83c4a98 Translated using Weblate (Vietnamese)
Currently translated at 13.1% (44 of 335 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/vi/
2023-02-14 05:23:03 +01:00
Anonymous 9d22af1166 Translated using Weblate (Norwegian Bokmål)
Currently translated at 23.5% (79 of 335 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nb_NO/
2023-02-14 05:23:03 +01:00
Anonymous 06761a38c0 Translated using Weblate (Italian)
Currently translated at 85.9% (288 of 335 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/it/
2023-02-14 05:23:02 +01:00
Anonymous 338d723ffd Translated using Weblate (Chinese (Simplified))
Currently translated at 98.8% (331 of 335 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hans/
2023-02-14 05:23:02 +01:00
Anonymous 5d57892db4 Translated using Weblate (Russian)
Currently translated at 14.3% (48 of 335 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ru/
2023-02-14 05:23:02 +01:00
Anonymous 107993821a Translated using Weblate (Portuguese)
Currently translated at 76.4% (256 of 335 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt/
2023-02-14 05:23:01 +01:00
Anonymous 6f6b35d790 Translated using Weblate (French)
Currently translated at 98.8% (331 of 335 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/
2023-02-14 05:23:01 +01:00
Anonymous e362ed129d Translated using Weblate (Spanish)
Currently translated at 98.8% (331 of 335 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/
2023-02-14 05:23:01 +01:00
Anonymous 65065fed17 Translated using Weblate (German)
Currently translated at 68.0% (228 of 335 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/de/
2023-02-14 05:23:00 +01:00
shamoon ebe58769f6 fix fileflows widget labels 2023-02-13 20:22:15 -08:00
beucismis 2e54f586a2 Translated using Weblate (Turkish)
Currently translated at 95.7% (317 of 331 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/tr/
2023-02-13 23:39:56 +01:00
shamoon d07b508990 Merge pull request #990 from Mbarmem/main
Add FileFlows widget
2023-02-13 00:14:00 -08:00
shamoon 598815ba5c fileflows code cleanup 2023-02-13 00:13:31 -08:00
Mbarmem 6bb94dc185 Add FileFlows widget 2023-02-13 00:13:31 -08:00
shamoon aabd05a0cb Merge pull request #988 from vorotynsky/fix-footer 2023-02-12 07:54:26 -08:00
Vorotynsky Maxim f558d27e8c Move the footer to the bottom 2023-02-12 15:32:50 +01:00
mspzyzh 220f662d10 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (331 of 331 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hans/
2023-02-12 12:46:37 +01:00
mspzyzh 2fb33d048b Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (331 of 331 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hans/
2023-02-12 07:32:12 +01:00
mspzyzh a3d56e2d4b Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (331 of 331 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hans/
2023-02-12 07:21:51 +01:00
mspzyzh caecfaa87d Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (331 of 331 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hans/
2023-02-12 06:40:34 +01:00
mspzyzh 7cf92d5a92 Translated using Weblate (Chinese (Simplified))
Currently translated at 98.7% (327 of 331 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hans/
2023-02-12 06:14:48 +01:00
Lei Seaks b619fe95d1 Translated using Weblate (Chinese (Simplified))
Currently translated at 94.8% (314 of 331 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hans/
2023-02-11 04:23:55 +01:00
Jason Fischer e1f0e3814a Merge pull request #954 from benphelps/rewrite-rutorrent-proxy
Feat: rewrite rutorrent proxy
2023-02-09 21:00:31 -08:00
Jason Fischer 8d7f41388c Merge pull request #975 from jameswynn/kubernetes-ping
Added support for "ping" configuration in kubernetes ingress annotations
2023-02-09 20:56:23 -08:00
James Wynn b4cdb03228 Added support for "ping" configuration in kubernetes ingress annotations 2023-02-09 17:09:59 -06:00
Phongsakorn Wisetthon 0de278802b Translated using Weblate (Thai)
Currently translated at 14.1% (47 of 331 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/th/
2023-02-09 10:38:54 +01:00
zhangnew 64704a1559 Translated using Weblate (Chinese (Simplified))
Currently translated at 94.5% (313 of 331 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hans/
2023-02-09 10:38:54 +01:00
shamoon 668df2d773 Merge pull request #964 from chain710/fixsetcookie 2023-02-08 19:14:57 -08:00
shamoon 3600e5487d Apply suggestions from #964 code review 2023-02-08 08:30:53 -08:00
chain710 f109ffa9bc cookieJar.setCookieSync ignore error
cookieJar.setCookieSync crash node when error, like:
```
uncaughtException: Error: Cookie not in this host's domain. Cookie:example.com Request:127.0.0.1
```
2023-02-08 20:33:11 +08:00
shamoon 73c8ff7ee6 Use buildtime in config hash 2023-02-08 00:37:46 -08:00
shamoon 7b474d4cef Revert "Merge pull request #609 from benphelps/fix-576"
This reverts commit a7f290dfdd, reversing
changes made to cf38395100.
2023-02-08 00:19:33 -08:00
Phongsakorn Wisetthon 02b0604ad7 Translated using Weblate (Thai)
Currently translated at 9.9% (33 of 331 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/th/
2023-02-08 06:47:34 +01:00
Anonymous 845c7bbdcc Translated using Weblate (Thai)
Currently translated at 100.0% (0 of 0 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/th/
2023-02-08 06:35:55 +01:00
Dan 1d23cad458 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (331 of 331 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/uk/
2023-02-08 06:35:51 +01:00
Nonoss117 babaa0705a Translated using Weblate (French)
Currently translated at 100.0% (331 of 331 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/
2023-02-08 06:35:50 +01:00
gallegonovato 6a8f0f7814 Translated using Weblate (Spanish)
Currently translated at 100.0% (331 of 331 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/
2023-02-08 06:35:50 +01:00
Phongsakorn Wisetthon 23f3a5f404 Added translation using Weblate (Thai) 2023-02-08 06:35:21 +01:00
shamoon f8a0c69e4b Merge pull request #953 from benphelps/revert-904-feat/custom-css
Revert "feat: Custom CSS"
2023-02-06 14:26:29 -08:00
shamoon b2211bcdfd rewrite rutorrent proxy 2023-02-06 14:23:30 -08:00
shamoon b9b989fd11 Revert "feat: Custom CSS" 2023-02-06 14:07:11 -08:00
Anonymous 3cbfd10df7 Translated using Weblate (Latvian)
Currently translated at 35.9% (119 of 331 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/lv/
2023-02-06 22:58:19 +01:00
Anonymous 58fa62f926 Translated using Weblate (Japanese)
Currently translated at 4.5% (15 of 331 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ja/
2023-02-06 22:58:19 +01:00
Anonymous 15cd1bba5c Translated using Weblate (Ukrainian)
Currently translated at 98.7% (327 of 331 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/uk/
2023-02-06 22:58:19 +01:00
Anonymous bef2da4f96 Translated using Weblate (Esperanto)
Currently translated at 31.1% (103 of 331 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/eo/
2023-02-06 22:58:18 +01:00
Anonymous 4b1fd17e61 Translated using Weblate (Hindi)
Currently translated at 2.7% (9 of 331 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hi/
2023-02-06 22:58:18 +01:00
Anonymous d501904913 Translated using Weblate (Malay)
Currently translated at 76.4% (253 of 331 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ms/
2023-02-06 22:58:17 +01:00
Anonymous e57b5c9af9 Translated using Weblate (Danish)
Currently translated at 59.8% (198 of 331 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/da/
2023-02-06 22:58:17 +01:00
Anonymous 9ab9854c2c Translated using Weblate (Czech)
Currently translated at 67.9% (225 of 331 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/cs/
2023-02-06 22:58:16 +01:00
Anonymous e195cc5276 Translated using Weblate (Arabic)
Currently translated at 79.1% (262 of 331 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ar/
2023-02-06 22:58:16 +01:00
Anonymous bfa1e4ca5b Translated using Weblate (Serbian)
Currently translated at 2.7% (9 of 331 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sr/
2023-02-06 22:58:16 +01:00
Anonymous 6041e7349f Translated using Weblate (Turkish)
Currently translated at 69.7% (231 of 331 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/tr/
2023-02-06 22:58:15 +01:00
Anonymous eb04581a0e Translated using Weblate (Bulgarian)
Currently translated at 13.8% (46 of 331 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/bg/
2023-02-06 22:58:15 +01:00
Anonymous b70ab6ee27 Translated using Weblate (Telugu)
Currently translated at 65.5% (217 of 331 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/te/
2023-02-06 22:58:14 +01:00
Anonymous 5e0dbdb9ec Translated using Weblate (Finnish)
Currently translated at 53.7% (178 of 331 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fi/
2023-02-06 22:58:14 +01:00
Anonymous 30cb733dc9 Translated using Weblate (Yue)
Currently translated at 35.6% (118 of 331 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/yue/
2023-02-06 22:58:14 +01:00
Anonymous 471246a3ca Translated using Weblate (Portuguese (Brazil))
Currently translated at 52.2% (173 of 331 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt_BR/
2023-02-06 22:58:13 +01:00
Anonymous b99fa9e140 Translated using Weblate (Romanian)
Currently translated at 41.3% (137 of 331 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ro/
2023-02-06 22:58:13 +01:00
Anonymous eb6ac8f18d Translated using Weblate (Hebrew)
Currently translated at 30.5% (101 of 331 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/he/
2023-02-06 22:58:12 +01:00
Anonymous e4a980a222 Translated using Weblate (Hungarian)
Currently translated at 32.6% (108 of 331 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hu/
2023-02-06 22:58:12 +01:00
Anonymous 3f608e52b5 Translated using Weblate (Croatian)
Currently translated at 86.4% (286 of 331 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hr/
2023-02-06 22:58:12 +01:00
Anonymous 8749c655d5 Translated using Weblate (Swedish)
Currently translated at 39.8% (132 of 331 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sv/
2023-02-06 22:58:11 +01:00
Anonymous 67ff299e1c Translated using Weblate (Polish)
Currently translated at 86.1% (285 of 331 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pl/
2023-02-06 22:58:11 +01:00
Anonymous ada3c9df0d Translated using Weblate (Catalan)
Currently translated at 77.9% (258 of 331 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ca/
2023-02-06 22:58:11 +01:00
Anonymous f385c9ea9f Translated using Weblate (Chinese (Traditional))
Currently translated at 94.8% (314 of 331 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hant/
2023-02-06 22:58:10 +01:00
Anonymous 608dcb05fc Translated using Weblate (Dutch)
Currently translated at 26.5% (88 of 331 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nl/
2023-02-06 22:58:10 +01:00
Anonymous 5a65b5a052 Translated using Weblate (Vietnamese)
Currently translated at 13.2% (44 of 331 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/vi/
2023-02-06 22:58:09 +01:00
Anonymous 4dfa04251c Translated using Weblate (Norwegian Bokmål)
Currently translated at 23.8% (79 of 331 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nb_NO/
2023-02-06 22:58:09 +01:00
Anonymous 393602eff7 Translated using Weblate (Italian)
Currently translated at 87.0% (288 of 331 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/it/
2023-02-06 22:58:09 +01:00
Anonymous 1ec665ecf7 Translated using Weblate (Chinese (Simplified))
Currently translated at 94.2% (312 of 331 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hans/
2023-02-06 22:58:08 +01:00
Anonymous 33c0d917fb Translated using Weblate (Russian)
Currently translated at 14.5% (48 of 331 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ru/
2023-02-06 22:58:08 +01:00
Anonymous 165592b9be Translated using Weblate (Portuguese)
Currently translated at 77.3% (256 of 331 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt/
2023-02-06 22:58:08 +01:00
Anonymous 00bd1eee9a Translated using Weblate (French)
Currently translated at 98.7% (327 of 331 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/
2023-02-06 22:58:07 +01:00
Anonymous 3591e46f0f Translated using Weblate (Spanish)
Currently translated at 98.7% (327 of 331 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/
2023-02-06 22:58:07 +01:00
Anonymous fdbd5506a1 Translated using Weblate (German)
Currently translated at 68.8% (228 of 331 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/de/
2023-02-06 22:58:06 +01:00
Dan 995ad4b59a Translated using Weblate (Ukrainian)
Currently translated at 100.0% (327 of 327 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/uk/
2023-02-06 22:56:44 +01:00
Nonoss117 c598fefde8 Translated using Weblate (French)
Currently translated at 100.0% (327 of 327 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/
2023-02-06 22:56:44 +01:00
gallegonovato d8baad453f Translated using Weblate (Spanish)
Currently translated at 100.0% (327 of 327 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/
2023-02-06 22:56:44 +01:00
Jason Fischer a5747c34b8 Merge pull request #866 from Oupsman/synologywidget
Add Synology Diskstation widget & consolidate Synology proxies
2023-02-06 13:56:35 -08:00
Jason Fischer 153dcf398e Merge main 2023-02-06 13:45:56 -08:00
Jason Fischer f53f975669 Settle on four fields with free size displayed as Available 2023-02-06 13:43:40 -08:00
shamoon 10097ab4fc lint photoprism 2023-02-05 22:14:54 -08:00
Anonymous 95b416c243 Translated using Weblate (Latvian)
Currently translated at 36.3% (119 of 327 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/lv/
2023-02-06 07:13:16 +01:00
Anonymous 3f0dcaff68 Translated using Weblate (Japanese)
Currently translated at 4.5% (15 of 327 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ja/
2023-02-06 07:13:16 +01:00
Anonymous 2da96f8610 Translated using Weblate (Ukrainian)
Currently translated at 97.8% (320 of 327 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/uk/
2023-02-06 07:13:15 +01:00
Anonymous 2f2efb224f Translated using Weblate (Esperanto)
Currently translated at 31.4% (103 of 327 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/eo/
2023-02-06 07:13:15 +01:00
Anonymous 120566e22a Translated using Weblate (Hindi)
Currently translated at 2.7% (9 of 327 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hi/
2023-02-06 07:13:15 +01:00
Anonymous a035ff2181 Translated using Weblate (Malay)
Currently translated at 77.3% (253 of 327 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ms/
2023-02-06 07:13:14 +01:00
Anonymous 7c31c891a5 Translated using Weblate (Danish)
Currently translated at 60.5% (198 of 327 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/da/
2023-02-06 07:13:14 +01:00
Anonymous 1c4814f7bf Translated using Weblate (Czech)
Currently translated at 68.8% (225 of 327 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/cs/
2023-02-06 07:13:13 +01:00
Anonymous 20a78af1f6 Translated using Weblate (Arabic)
Currently translated at 80.1% (262 of 327 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ar/
2023-02-06 07:13:13 +01:00
Anonymous 1ef7cb90e8 Translated using Weblate (Serbian)
Currently translated at 2.7% (9 of 327 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sr/
2023-02-06 07:13:13 +01:00
Anonymous 773b8ba7f4 Translated using Weblate (Turkish)
Currently translated at 70.6% (231 of 327 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/tr/
2023-02-06 07:13:12 +01:00
Anonymous 19d329c53f Translated using Weblate (Bulgarian)
Currently translated at 14.0% (46 of 327 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/bg/
2023-02-06 07:13:12 +01:00
Anonymous 14044aa64e Translated using Weblate (Telugu)
Currently translated at 66.3% (217 of 327 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/te/
2023-02-06 07:13:12 +01:00
Anonymous 73cc4f9b5f Translated using Weblate (Finnish)
Currently translated at 54.4% (178 of 327 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fi/
2023-02-06 07:13:11 +01:00
Anonymous ba53edd1b7 Translated using Weblate (Yue)
Currently translated at 36.0% (118 of 327 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/yue/
2023-02-06 07:13:11 +01:00
Anonymous 9f4965141d Translated using Weblate (Portuguese (Brazil))
Currently translated at 52.9% (173 of 327 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt_BR/
2023-02-06 07:13:11 +01:00
Anonymous 4af9a611a3 Translated using Weblate (Romanian)
Currently translated at 41.8% (137 of 327 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ro/
2023-02-06 07:13:10 +01:00
Anonymous d51fbc5f6d Translated using Weblate (Hebrew)
Currently translated at 30.8% (101 of 327 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/he/
2023-02-06 07:13:10 +01:00
Anonymous 409e481b8c Translated using Weblate (Hungarian)
Currently translated at 33.0% (108 of 327 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hu/
2023-02-06 07:13:10 +01:00
Anonymous cf54837d05 Translated using Weblate (Croatian)
Currently translated at 87.4% (286 of 327 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hr/
2023-02-06 07:13:09 +01:00
Anonymous 292f7a64d8 Translated using Weblate (Swedish)
Currently translated at 40.3% (132 of 327 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sv/
2023-02-06 07:13:09 +01:00
Anonymous 4dfb1a1c5e Translated using Weblate (Polish)
Currently translated at 87.1% (285 of 327 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pl/
2023-02-06 07:13:09 +01:00
Anonymous 098eec96e2 Translated using Weblate (Catalan)
Currently translated at 78.8% (258 of 327 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ca/
2023-02-06 07:13:08 +01:00
Anonymous 80834b6f30 Translated using Weblate (Chinese (Traditional))
Currently translated at 96.0% (314 of 327 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hant/
2023-02-06 07:13:08 +01:00
Anonymous 8ae54777f6 Translated using Weblate (Dutch)
Currently translated at 26.9% (88 of 327 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nl/
2023-02-06 07:13:08 +01:00
Anonymous ff1129ecd7 Translated using Weblate (Vietnamese)
Currently translated at 13.4% (44 of 327 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/vi/
2023-02-06 07:13:07 +01:00
Anonymous 093c523ae6 Translated using Weblate (Norwegian Bokmål)
Currently translated at 24.1% (79 of 327 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nb_NO/
2023-02-06 07:13:07 +01:00
Anonymous 9f2348ad39 Translated using Weblate (Italian)
Currently translated at 88.0% (288 of 327 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/it/
2023-02-06 07:13:07 +01:00
Anonymous 7b2fb0279a Translated using Weblate (Chinese (Simplified))
Currently translated at 95.4% (312 of 327 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hans/
2023-02-06 07:13:06 +01:00
Anonymous 9f67e82817 Translated using Weblate (Russian)
Currently translated at 14.6% (48 of 327 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ru/
2023-02-06 07:13:06 +01:00
Anonymous 3d6821a463 Translated using Weblate (Portuguese)
Currently translated at 78.2% (256 of 327 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt/
2023-02-06 07:13:06 +01:00
Anonymous 43c4effc42 Translated using Weblate (French)
Currently translated at 98.7% (323 of 327 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/
2023-02-06 07:13:05 +01:00
Anonymous 1830b7f277 Translated using Weblate (Spanish)
Currently translated at 97.8% (320 of 327 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/
2023-02-06 07:13:05 +01:00
Anonymous bc2492c773 Translated using Weblate (German)
Currently translated at 69.7% (228 of 327 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/de/
2023-02-06 07:13:05 +01:00
Nonoss117 3bb18a746b Translated using Weblate (French)
Currently translated at 100.0% (323 of 323 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/
2023-02-06 07:12:38 +01:00
shamoon baf40600dc Merge pull request #940 from geckoflume/photoprism
Feature: PhotoPrism widget
2023-02-05 22:12:34 -08:00
shamoon a226f9de12 remove folders, unused vars 2023-02-05 22:11:22 -08:00
geckoflume 551f521edd Add PhotoPrism widget 2023-02-05 22:11:22 -08:00
Anonymous b96045eb8c Translated using Weblate (Latvian)
Currently translated at 36.8% (119 of 323 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/lv/
2023-02-06 06:37:57 +01:00
Anonymous be5f1dd8e1 Translated using Weblate (Japanese)
Currently translated at 4.6% (15 of 323 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ja/
2023-02-06 06:37:57 +01:00
Anonymous 5aa88fcf06 Translated using Weblate (Ukrainian)
Currently translated at 99.0% (320 of 323 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/uk/
2023-02-06 06:37:57 +01:00
Anonymous 876ddc8302 Translated using Weblate (Esperanto)
Currently translated at 31.8% (103 of 323 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/eo/
2023-02-06 06:37:56 +01:00
Anonymous eaada4a406 Translated using Weblate (Hindi)
Currently translated at 2.7% (9 of 323 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hi/
2023-02-06 06:37:56 +01:00
Anonymous 91017fe71c Translated using Weblate (Malay)
Currently translated at 78.3% (253 of 323 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ms/
2023-02-06 06:37:55 +01:00
Anonymous 6987f96d1d Translated using Weblate (Danish)
Currently translated at 61.3% (198 of 323 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/da/
2023-02-06 06:37:55 +01:00
Anonymous dec63583c8 Translated using Weblate (Czech)
Currently translated at 69.6% (225 of 323 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/cs/
2023-02-06 06:37:55 +01:00
Anonymous 9477dd1f3c Translated using Weblate (Arabic)
Currently translated at 81.1% (262 of 323 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ar/
2023-02-06 06:37:54 +01:00
Anonymous b953c1089a Translated using Weblate (Serbian)
Currently translated at 2.7% (9 of 323 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sr/
2023-02-06 06:37:54 +01:00
Anonymous 2acceff22e Translated using Weblate (Turkish)
Currently translated at 71.5% (231 of 323 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/tr/
2023-02-06 06:37:54 +01:00
Anonymous 701b97c1f8 Translated using Weblate (Bulgarian)
Currently translated at 14.2% (46 of 323 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/bg/
2023-02-06 06:37:53 +01:00
Anonymous 5e917822c9 Translated using Weblate (Telugu)
Currently translated at 67.1% (217 of 323 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/te/
2023-02-06 06:37:53 +01:00
Anonymous 4b9f3c1e15 Translated using Weblate (Finnish)
Currently translated at 55.1% (178 of 323 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fi/
2023-02-06 06:37:53 +01:00
Anonymous 9314ac4760 Translated using Weblate (Yue)
Currently translated at 36.5% (118 of 323 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/yue/
2023-02-06 06:37:52 +01:00
Anonymous 5dd7094815 Translated using Weblate (Portuguese (Brazil))
Currently translated at 53.5% (173 of 323 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt_BR/
2023-02-06 06:37:52 +01:00
Anonymous ff385b462a Translated using Weblate (Romanian)
Currently translated at 42.4% (137 of 323 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ro/
2023-02-06 06:37:52 +01:00
Anonymous 5addfc6ea8 Translated using Weblate (Hebrew)
Currently translated at 31.2% (101 of 323 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/he/
2023-02-06 06:37:51 +01:00
Anonymous 397a340c47 Translated using Weblate (Hungarian)
Currently translated at 33.4% (108 of 323 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hu/
2023-02-06 06:37:51 +01:00
Anonymous 0b75d07a2b Translated using Weblate (Croatian)
Currently translated at 88.5% (286 of 323 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hr/
2023-02-06 06:37:51 +01:00
Anonymous 6f434bbedd Translated using Weblate (Swedish)
Currently translated at 40.8% (132 of 323 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sv/
2023-02-06 06:37:50 +01:00
Anonymous e91efab940 Translated using Weblate (Polish)
Currently translated at 88.2% (285 of 323 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pl/
2023-02-06 06:37:50 +01:00
Anonymous d737c57278 Translated using Weblate (Catalan)
Currently translated at 79.8% (258 of 323 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ca/
2023-02-06 06:37:50 +01:00
Anonymous 63c1a8e409 Translated using Weblate (Chinese (Traditional))
Currently translated at 97.2% (314 of 323 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hant/
2023-02-06 06:37:49 +01:00
Anonymous a15a264912 Translated using Weblate (Dutch)
Currently translated at 27.2% (88 of 323 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nl/
2023-02-06 06:37:49 +01:00
Anonymous 08b9b52f09 Translated using Weblate (Vietnamese)
Currently translated at 13.6% (44 of 323 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/vi/
2023-02-06 06:37:49 +01:00
Anonymous 9a47a8517c Translated using Weblate (Norwegian Bokmål)
Currently translated at 24.4% (79 of 323 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nb_NO/
2023-02-06 06:37:48 +01:00
Anonymous 405b00fbd8 Translated using Weblate (Italian)
Currently translated at 89.1% (288 of 323 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/it/
2023-02-06 06:37:48 +01:00
Anonymous 02becf7dcf Translated using Weblate (Chinese (Simplified))
Currently translated at 96.5% (312 of 323 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hans/
2023-02-06 06:37:48 +01:00
Anonymous 490e88a34a Translated using Weblate (Russian)
Currently translated at 14.8% (48 of 323 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ru/
2023-02-06 06:37:47 +01:00
Anonymous 8f58132da1 Translated using Weblate (Portuguese)
Currently translated at 79.2% (256 of 323 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt/
2023-02-06 06:37:47 +01:00
Anonymous ecddc5e1c8 Translated using Weblate (French)
Currently translated at 99.0% (320 of 323 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/
2023-02-06 06:37:47 +01:00
Anonymous e297caf516 Translated using Weblate (Spanish)
Currently translated at 99.0% (320 of 323 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/
2023-02-06 06:37:46 +01:00
Anonymous cbc496c81f Translated using Weblate (German)
Currently translated at 70.5% (228 of 323 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/de/
2023-02-06 06:37:46 +01:00
ryanxu ea6c4ab0c2 Translated using Weblate (Chinese (Simplified))
Currently translated at 97.5% (312 of 320 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hans/
2023-02-06 06:37:22 +01:00
shamoon 46d4b3e19e Merge pull request #935 from KillahB33/Mylar
Mylar widget
2023-02-05 21:37:15 -08:00
Jason Fischer 11ae52df4a Merge main 2023-02-05 00:21:35 -08:00
Bryan 77e02e6729 Merge branch 'main' into Mylar 2023-02-03 20:47:58 -05:00
KillahBee 58e8109856 adding working mylar 2023-02-03 15:51:52 -05:00
Dan 52f15ab834 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (320 of 320 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/uk/
2023-02-03 21:49:25 +01:00
Nonoss117 4cdf7317ec Translated using Weblate (French)
Currently translated at 100.0% (320 of 320 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/
2023-02-03 21:49:24 +01:00
gallegonovato 05818b5d1d Translated using Weblate (Spanish)
Currently translated at 100.0% (320 of 320 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/
2023-02-03 21:49:24 +01:00
shamoon d2a2fd99cc Merge pull request #934 from benphelps/fix-proxmoxbackupserver-label
Fix label for PBS when data not returned yet
2023-02-03 10:23:45 -08:00
shamoon 486b376dca Fix label for PBS when data not returned yet 2023-02-03 10:22:51 -08:00
Anonymous 2fae4acd4a Translated using Weblate (Latvian)
Currently translated at 37.1% (119 of 320 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/lv/
2023-02-03 10:25:49 +01:00
Anonymous 2b20e2e17f Translated using Weblate (Japanese)
Currently translated at 4.6% (15 of 320 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ja/
2023-02-03 10:25:48 +01:00
Anonymous cc0f2ca083 Translated using Weblate (Ukrainian)
Currently translated at 97.1% (311 of 320 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/uk/
2023-02-03 10:25:48 +01:00
Anonymous 263cf6d6b1 Translated using Weblate (Esperanto)
Currently translated at 32.1% (103 of 320 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/eo/
2023-02-03 10:25:48 +01:00
Anonymous 72f4506f06 Translated using Weblate (Hindi)
Currently translated at 2.8% (9 of 320 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hi/
2023-02-03 10:25:48 +01:00
Anonymous 2183bf623f Translated using Weblate (Malay)
Currently translated at 79.0% (253 of 320 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ms/
2023-02-03 10:25:48 +01:00
Anonymous 17ac3008aa Translated using Weblate (Danish)
Currently translated at 61.8% (198 of 320 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/da/
2023-02-03 10:25:47 +01:00
Anonymous db07b3e7a1 Translated using Weblate (Czech)
Currently translated at 70.3% (225 of 320 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/cs/
2023-02-03 10:25:47 +01:00
Anonymous 1b1b671080 Translated using Weblate (Arabic)
Currently translated at 81.8% (262 of 320 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ar/
2023-02-03 10:25:47 +01:00
Anonymous ca295e0850 Translated using Weblate (Serbian)
Currently translated at 2.8% (9 of 320 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sr/
2023-02-03 10:25:47 +01:00
Anonymous ec3fd692a8 Translated using Weblate (Turkish)
Currently translated at 72.1% (231 of 320 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/tr/
2023-02-03 10:25:47 +01:00
Anonymous 9deaa48144 Translated using Weblate (Bulgarian)
Currently translated at 14.3% (46 of 320 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/bg/
2023-02-03 10:25:46 +01:00
Anonymous c725f9af38 Translated using Weblate (Telugu)
Currently translated at 67.8% (217 of 320 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/te/
2023-02-03 10:25:46 +01:00
Anonymous 4d3864c2ec Translated using Weblate (Finnish)
Currently translated at 55.6% (178 of 320 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fi/
2023-02-03 10:25:46 +01:00
Anonymous 8d69ab33aa Translated using Weblate (Yue)
Currently translated at 36.8% (118 of 320 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/yue/
2023-02-03 10:25:46 +01:00
Anonymous fdc975d6df Translated using Weblate (Portuguese (Brazil))
Currently translated at 54.0% (173 of 320 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt_BR/
2023-02-03 10:25:45 +01:00
Anonymous d4b7de9d0d Translated using Weblate (Romanian)
Currently translated at 42.8% (137 of 320 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ro/
2023-02-03 10:25:45 +01:00
Anonymous 4daa33ea63 Translated using Weblate (Hebrew)
Currently translated at 31.5% (101 of 320 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/he/
2023-02-03 10:25:45 +01:00
Anonymous 10adefe2b4 Translated using Weblate (Hungarian)
Currently translated at 33.7% (108 of 320 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hu/
2023-02-03 10:25:45 +01:00
Anonymous 4198fcf6b6 Translated using Weblate (Croatian)
Currently translated at 89.3% (286 of 320 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hr/
2023-02-03 10:25:44 +01:00
Anonymous 9466b652b9 Translated using Weblate (Swedish)
Currently translated at 41.2% (132 of 320 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sv/
2023-02-03 10:25:44 +01:00
Anonymous f4a1700dc5 Translated using Weblate (Polish)
Currently translated at 89.0% (285 of 320 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pl/
2023-02-03 10:25:44 +01:00
Anonymous c1552228bf Translated using Weblate (Catalan)
Currently translated at 80.6% (258 of 320 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ca/
2023-02-03 10:25:44 +01:00
Anonymous 1106107094 Translated using Weblate (Chinese (Traditional))
Currently translated at 98.1% (314 of 320 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hant/
2023-02-03 10:25:43 +01:00
Anonymous b5e218bb1d Translated using Weblate (Dutch)
Currently translated at 27.5% (88 of 320 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nl/
2023-02-03 10:25:43 +01:00
Anonymous d015ae1089 Translated using Weblate (Vietnamese)
Currently translated at 13.7% (44 of 320 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/vi/
2023-02-03 10:25:43 +01:00
Anonymous 0eb7c77892 Translated using Weblate (Norwegian Bokmål)
Currently translated at 24.6% (79 of 320 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nb_NO/
2023-02-03 10:25:43 +01:00
Anonymous a3b2321837 Translated using Weblate (Italian)
Currently translated at 90.0% (288 of 320 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/it/
2023-02-03 10:25:43 +01:00
Anonymous f9f9f68c71 Translated using Weblate (Chinese (Simplified))
Currently translated at 97.1% (311 of 320 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hans/
2023-02-03 10:25:42 +01:00
Anonymous 2e728aa207 Translated using Weblate (Russian)
Currently translated at 15.0% (48 of 320 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ru/
2023-02-03 10:25:42 +01:00
Anonymous f71f15bbf4 Translated using Weblate (Portuguese)
Currently translated at 80.0% (256 of 320 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt/
2023-02-03 10:25:42 +01:00
Anonymous 8037e78725 Translated using Weblate (French)
Currently translated at 99.6% (319 of 320 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/
2023-02-03 10:25:42 +01:00
Anonymous 3878dd57a3 Translated using Weblate (Spanish)
Currently translated at 98.7% (316 of 320 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/
2023-02-03 10:25:42 +01:00
Anonymous 1411ab99a0 Translated using Weblate (German)
Currently translated at 71.2% (228 of 320 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/de/
2023-02-03 10:25:41 +01:00
Chun Chi Hsieh 5f92a3084c Translated using Weblate (Chinese (Traditional))
Currently translated at 98.4% (314 of 319 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hant/
2023-02-03 10:24:55 +01:00
Nonoss117 a4ede7f8d7 Translated using Weblate (French)
Currently translated at 100.0% (319 of 319 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/
2023-02-03 10:24:55 +01:00
shamoon f50f5c130e Merge pull request #931 from benphelps/unifi-improvements
Unifi improvements
2023-02-03 01:24:46 -08:00
shamoon 17ebdd8226 Unifi widgets support sites other than default 2023-02-03 01:19:42 -08:00
shamoon c2983197a0 Unifi widgets show warning with no data 2023-02-03 01:19:42 -08:00
Anonymous e311866969 Translated using Weblate (Latvian)
Currently translated at 37.3% (119 of 319 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/lv/
2023-02-03 04:49:19 +01:00
Anonymous 879da993b8 Translated using Weblate (Japanese)
Currently translated at 4.7% (15 of 319 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ja/
2023-02-03 04:49:19 +01:00
Anonymous 204e4ebac0 Translated using Weblate (Ukrainian)
Currently translated at 97.4% (311 of 319 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/uk/
2023-02-03 04:49:19 +01:00
Anonymous ff567bd543 Translated using Weblate (Esperanto)
Currently translated at 32.2% (103 of 319 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/eo/
2023-02-03 04:49:18 +01:00
Anonymous b75d34d8c7 Translated using Weblate (Hindi)
Currently translated at 2.8% (9 of 319 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hi/
2023-02-03 04:49:18 +01:00
Anonymous 3a6be33c98 Translated using Weblate (Malay)
Currently translated at 79.3% (253 of 319 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ms/
2023-02-03 04:49:18 +01:00
Anonymous 4c69d65e57 Translated using Weblate (Danish)
Currently translated at 62.0% (198 of 319 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/da/
2023-02-03 04:49:18 +01:00
Anonymous 6678614e9c Translated using Weblate (Czech)
Currently translated at 70.5% (225 of 319 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/cs/
2023-02-03 04:49:17 +01:00
Anonymous 8971dc3169 Translated using Weblate (Arabic)
Currently translated at 82.1% (262 of 319 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ar/
2023-02-03 04:49:17 +01:00
Anonymous c87618a9bb Translated using Weblate (Serbian)
Currently translated at 2.8% (9 of 319 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sr/
2023-02-03 04:49:17 +01:00
Anonymous e84a3fa7dc Translated using Weblate (Turkish)
Currently translated at 72.4% (231 of 319 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/tr/
2023-02-03 04:49:17 +01:00
Anonymous 4fc5a11a88 Translated using Weblate (Bulgarian)
Currently translated at 14.4% (46 of 319 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/bg/
2023-02-03 04:49:16 +01:00
Anonymous 9a894b49d1 Translated using Weblate (Telugu)
Currently translated at 68.0% (217 of 319 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/te/
2023-02-03 04:49:16 +01:00
Anonymous a778b5daed Translated using Weblate (Finnish)
Currently translated at 55.7% (178 of 319 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fi/
2023-02-03 04:49:16 +01:00
Anonymous 35e71a7ffd Translated using Weblate (Yue)
Currently translated at 36.9% (118 of 319 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/yue/
2023-02-03 04:49:16 +01:00
Anonymous 2312ca86ef Translated using Weblate (Portuguese (Brazil))
Currently translated at 54.2% (173 of 319 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt_BR/
2023-02-03 04:49:15 +01:00
Anonymous aabe51ab7e Translated using Weblate (Romanian)
Currently translated at 42.9% (137 of 319 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ro/
2023-02-03 04:49:15 +01:00
Anonymous 0bdc22a4ff Translated using Weblate (Hebrew)
Currently translated at 31.6% (101 of 319 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/he/
2023-02-03 04:49:15 +01:00
Anonymous 0e285a3d89 Translated using Weblate (Hungarian)
Currently translated at 33.8% (108 of 319 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hu/
2023-02-03 04:49:15 +01:00
Anonymous 5c03482924 Translated using Weblate (Croatian)
Currently translated at 89.6% (286 of 319 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hr/
2023-02-03 04:49:14 +01:00
Anonymous 4b340c0167 Translated using Weblate (Swedish)
Currently translated at 41.3% (132 of 319 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sv/
2023-02-03 04:49:14 +01:00
Anonymous 459d3473fc Translated using Weblate (Polish)
Currently translated at 89.3% (285 of 319 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pl/
2023-02-03 04:49:14 +01:00
Anonymous e3fe95c2c2 Translated using Weblate (Catalan)
Currently translated at 80.8% (258 of 319 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ca/
2023-02-03 04:49:14 +01:00
Anonymous 2182412548 Translated using Weblate (Chinese (Traditional))
Currently translated at 90.2% (288 of 319 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hant/
2023-02-03 04:49:13 +01:00
Anonymous 1b3e6fc289 Translated using Weblate (Dutch)
Currently translated at 27.5% (88 of 319 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nl/
2023-02-03 04:49:13 +01:00
Anonymous 5989e1dc52 Translated using Weblate (Vietnamese)
Currently translated at 13.7% (44 of 319 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/vi/
2023-02-03 04:49:13 +01:00
Anonymous 4afd53f685 Translated using Weblate (Norwegian Bokmål)
Currently translated at 24.7% (79 of 319 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nb_NO/
2023-02-03 04:49:13 +01:00
Anonymous 05ab215fd7 Translated using Weblate (Italian)
Currently translated at 90.2% (288 of 319 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/it/
2023-02-03 04:49:13 +01:00
Anonymous cb637e25ed Translated using Weblate (Chinese (Simplified))
Currently translated at 97.4% (311 of 319 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hans/
2023-02-03 04:49:12 +01:00
Anonymous 449e393480 Translated using Weblate (Russian)
Currently translated at 15.0% (48 of 319 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ru/
2023-02-03 04:49:12 +01:00
Anonymous 009fe33b9f Translated using Weblate (Portuguese)
Currently translated at 80.2% (256 of 319 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt/
2023-02-03 04:49:12 +01:00
Anonymous d543430b06 Translated using Weblate (French)
Currently translated at 99.0% (316 of 319 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/
2023-02-03 04:49:11 +01:00
Anonymous 18afde8478 Translated using Weblate (Spanish)
Currently translated at 99.0% (316 of 319 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/
2023-02-03 04:49:11 +01:00
Anonymous 2d7d082c3d Translated using Weblate (German)
Currently translated at 71.4% (228 of 319 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/de/
2023-02-03 04:49:11 +01:00
Nonoss117 52489c47f2 Translated using Weblate (French)
Currently translated at 100.0% (316 of 316 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/
2023-02-03 04:48:47 +01:00
gallegonovato 5b8972812d Translated using Weblate (Spanish)
Currently translated at 100.0% (316 of 316 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/
2023-02-03 04:48:47 +01:00
Bryanandshamoon f851085ebf Komga Widget (#922)
Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2023-02-02 19:48:40 -08:00
Anonymous aee8ba1e1d Translated using Weblate (Latvian)
Currently translated at 37.6% (119 of 316 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/lv/
2023-02-02 18:42:13 +01:00
Anonymous c7a10cf204 Translated using Weblate (Japanese)
Currently translated at 4.7% (15 of 316 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ja/
2023-02-02 18:42:12 +01:00
Anonymous d5af3140d5 Translated using Weblate (Ukrainian)
Currently translated at 98.4% (311 of 316 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/uk/
2023-02-02 18:42:12 +01:00
Anonymous 2c8a120c9e Translated using Weblate (Esperanto)
Currently translated at 32.5% (103 of 316 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/eo/
2023-02-02 18:42:12 +01:00
Anonymous 36aed7b6cc Translated using Weblate (Hindi)
Currently translated at 2.8% (9 of 316 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hi/
2023-02-02 18:42:12 +01:00
Anonymous c08272d7ed Translated using Weblate (Malay)
Currently translated at 80.0% (253 of 316 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ms/
2023-02-02 18:42:11 +01:00
Anonymous c93dd4d524 Translated using Weblate (Danish)
Currently translated at 62.6% (198 of 316 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/da/
2023-02-02 18:42:11 +01:00
Anonymous 551bd5b07e Translated using Weblate (Czech)
Currently translated at 71.2% (225 of 316 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/cs/
2023-02-02 18:42:11 +01:00
Anonymous 9144a17b83 Translated using Weblate (Arabic)
Currently translated at 82.9% (262 of 316 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ar/
2023-02-02 18:42:10 +01:00
Anonymous 833cb2b32d Translated using Weblate (Serbian)
Currently translated at 2.8% (9 of 316 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sr/
2023-02-02 18:42:10 +01:00
Anonymous 276d14971e Translated using Weblate (Turkish)
Currently translated at 73.1% (231 of 316 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/tr/
2023-02-02 18:42:10 +01:00
Anonymous 46163338c4 Translated using Weblate (Bulgarian)
Currently translated at 14.5% (46 of 316 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/bg/
2023-02-02 18:42:10 +01:00
Anonymous ea22bfca90 Translated using Weblate (Telugu)
Currently translated at 68.6% (217 of 316 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/te/
2023-02-02 18:42:10 +01:00
Anonymous 3ab248081e Translated using Weblate (Finnish)
Currently translated at 56.3% (178 of 316 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fi/
2023-02-02 18:42:09 +01:00
Anonymous d9d277d161 Translated using Weblate (Yue)
Currently translated at 37.3% (118 of 316 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/yue/
2023-02-02 18:42:09 +01:00
Anonymous a4e76d6fb3 Translated using Weblate (Portuguese (Brazil))
Currently translated at 54.7% (173 of 316 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt_BR/
2023-02-02 18:42:09 +01:00
Anonymous f271be8848 Translated using Weblate (Romanian)
Currently translated at 43.3% (137 of 316 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ro/
2023-02-02 18:42:09 +01:00
Anonymous 3cf8cc3be5 Translated using Weblate (Hebrew)
Currently translated at 31.9% (101 of 316 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/he/
2023-02-02 18:42:08 +01:00
Anonymous 0a553a3552 Translated using Weblate (Hungarian)
Currently translated at 34.1% (108 of 316 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hu/
2023-02-02 18:42:08 +01:00
Anonymous 4c69351026 Translated using Weblate (Croatian)
Currently translated at 90.5% (286 of 316 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hr/
2023-02-02 18:42:08 +01:00
Anonymous eb06e6563f Translated using Weblate (Swedish)
Currently translated at 41.7% (132 of 316 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sv/
2023-02-02 18:42:08 +01:00
Anonymous 9f16ff0e65 Translated using Weblate (Polish)
Currently translated at 90.1% (285 of 316 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pl/
2023-02-02 18:42:07 +01:00
Anonymous 07c0978b6f Translated using Weblate (Catalan)
Currently translated at 81.6% (258 of 316 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ca/
2023-02-02 18:42:07 +01:00
Anonymous 07c84b349b Translated using Weblate (Chinese (Traditional))
Currently translated at 91.1% (288 of 316 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hant/
2023-02-02 18:42:07 +01:00
Anonymous 212ee29cb5 Translated using Weblate (Dutch)
Currently translated at 27.8% (88 of 316 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nl/
2023-02-02 18:42:06 +01:00
Anonymous b6fb6c9b57 Translated using Weblate (Vietnamese)
Currently translated at 13.9% (44 of 316 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/vi/
2023-02-02 18:42:06 +01:00
Anonymous 25ce2437de Translated using Weblate (Norwegian Bokmål)
Currently translated at 25.0% (79 of 316 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nb_NO/
2023-02-02 18:42:06 +01:00
Anonymous 34c6fe15cb Translated using Weblate (Italian)
Currently translated at 91.1% (288 of 316 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/it/
2023-02-02 18:42:06 +01:00
Anonymous 2f3896a55d Translated using Weblate (Chinese (Simplified))
Currently translated at 98.4% (311 of 316 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hans/
2023-02-02 18:42:06 +01:00
Anonymous d6182ea641 Translated using Weblate (Russian)
Currently translated at 15.1% (48 of 316 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ru/
2023-02-02 18:42:05 +01:00
Anonymous 01b08e4902 Translated using Weblate (Portuguese)
Currently translated at 81.0% (256 of 316 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt/
2023-02-02 18:42:05 +01:00
Anonymous 541d5a9f93 Translated using Weblate (French)
Currently translated at 98.4% (311 of 316 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/
2023-02-02 18:42:05 +01:00
Anonymous 02dfbc193d Translated using Weblate (Spanish)
Currently translated at 98.4% (311 of 316 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/
2023-02-02 18:42:04 +01:00
Anonymous 2ed4ac8b77 Translated using Weblate (German)
Currently translated at 72.1% (228 of 316 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/de/
2023-02-02 18:42:04 +01:00
Benoit 4c17e3fd14 Synology Widget : making it work with multiple widgets connecting to differents versions of DSM 2023-01-31 12:07:23 +01:00
Jason Fischer 893b3f0986 Merge main 2023-01-29 17:07:40 -08:00
Jason Fischer e62952c2c1 Create reusable Synology proxy
- Migrate DiskStation and DownloadStation to use new proxy
- Move DiskStation proxy UI logic into component
2023-01-29 17:04:36 -08:00
Benoit 2b3d4b388a Synology Diskstation widget : initial commit 2023-01-22 11:51:04 +01:00
98 changed files with 5024 additions and 627 deletions

No files matched your search

+26
View File
@@ -0,0 +1,26 @@
## Proposed change
<!--
Please include a summary of the change. Screenshots and / or videos can also be helpful if appropriate.
New service widgets should include example(s) of relevant relevant API output as well as a PR to the docs for the new widget. See the development guidelines for new widgets: https://gethomepage.dev/en/more/development/#service-widget-guidelines
-->
Closes # (issue)
## Type of change
<!--
What type of change does your PR introduce to Homepage?
-->
- [ ] New service widget
- [ ] Bug fix (non-breaking change which fixes an issue)
- [ ] New feature (non-breaking change which adds functionality)
- [ ] Other (please explain)
## Checklist:
- [ ] If adding a service widget or a change that requires it, I have added a corresponding PR to the [documentation](https://github.com/benphelps/homepage-docs) here:
- [ ] If applicable, I have checked that all tests pass with e.g. `pnpm lint`.
- [ ] If applicable, I have tested my code for new features & regressions on both mobile & desktop devices, using the latest version of major browsers.
-1
View File
@@ -29,7 +29,6 @@
"react-dom": "^18.2.0",
"react-i18next": "^11.18.6",
"react-icons": "^4.4.0",
"rutorrent-promise": "^2.0.0",
"shvl": "^3.0.0",
"swr": "^1.3.0",
"tough-cookie": "^4.1.2",
-47
View File
@@ -33,7 +33,6 @@ specifiers:
react-dom: ^18.2.0
react-i18next: ^11.18.6
react-icons: ^4.4.0
rutorrent-promise: ^2.0.0
shvl: ^3.0.0
swr: ^1.3.0
tailwind-scrollbar: ^2.0.1
@@ -63,7 +62,6 @@ dependencies:
react-dom: 18.2.0_react@18.2.0
react-i18next: 11.18.6_ulhmqqxshznzmtuvahdi5nasbq
react-icons: 4.4.0_react@18.2.0
rutorrent-promise: 2.0.0
shvl: 3.0.0
swr: 1.3.0_react@18.2.0
tough-cookie: 4.1.2
@@ -1582,15 +1580,6 @@ packages:
mime-types: 2.1.35
dev: false
/form-data/3.0.1:
resolution: {integrity: sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==}
engines: {node: '>= 6'}
dependencies:
asynckit: 0.4.0
combined-stream: 1.0.8
mime-types: 2.1.35
dev: false
/fraction.js/4.2.0:
resolution: {integrity: sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==}
dev: true
@@ -2299,18 +2288,6 @@ packages:
- babel-plugin-macros
dev: false
/node-fetch/2.6.7:
resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==}
engines: {node: 4.x || >=6.0.0}
peerDependencies:
encoding: ^0.1.0
peerDependenciesMeta:
encoding:
optional: true
dependencies:
whatwg-url: 5.0.0
dev: false
/node-os-utils/1.3.7:
resolution: {integrity: sha512-fvnX9tZbR7WfCG5BAy3yO/nCLyjVWD6MghEq0z5FDfN+ZXpLWNITBdbifxQkQ25ebr16G0N7eRWJisOcMEHG3Q==}
dev: false
@@ -2836,15 +2813,6 @@ packages:
queue-microtask: 1.2.3
dev: true
/rutorrent-promise/2.0.0:
resolution: {integrity: sha512-ip6FxYM/BFxRgYSWr+2gZ0ao9LsJ1vJYWyFVnTkSmZrp4Cwa3CFpdxMi/5aZsUf1qve2CY9P4GLvrACx+PZ6yQ==}
dependencies:
form-data: 3.0.1
node-fetch: 2.6.7
transitivePeerDependencies:
- encoding
dev: false
/safe-buffer/5.2.1:
resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
dev: false
@@ -3207,10 +3175,6 @@ packages:
url-parse: 1.5.10
dev: false
/tr46/0.0.3:
resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==}
dev: false
/triple-beam/1.3.0:
resolution: {integrity: sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==}
dev: false
@@ -3346,17 +3310,6 @@ packages:
engines: {node: '>=0.10.0'}
dev: false
/webidl-conversions/3.0.1:
resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==}
dev: false
/whatwg-url/5.0.0:
resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==}
dependencies:
tr46: 0.0.3
webidl-conversions: 3.0.1
dev: false
/which-boxed-primitive/1.0.2:
resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==}
dependencies:
+84 -3
View File
@@ -22,7 +22,8 @@
"total": "المجموع",
"free": "متاح",
"used": "مستخدم",
"load": "الضغط"
"load": "الضغط",
"mem": "MEM"
},
"unifi": {
"users": "المستخدمون",
@@ -38,7 +39,8 @@
"wlan_users": "WLAN مستخدمين",
"up": "يعمل",
"down": "لا يعمل",
"wait": "الرجاء الإنتظار"
"wait": "الرجاء الإنتظار",
"empty_data": "Subsystem status unknown"
},
"wmo": {
"73-day": "ثلج",
@@ -281,7 +283,9 @@
"bookmark": "مفضلة",
"service": "خدمة",
"search": "Search",
"custom": "Custom"
"custom": "Custom",
"visit": "Visit",
"url": "URL"
},
"homebridge": {
"available_update": "نظام",
@@ -438,5 +442,82 @@
"photos": "Photos",
"videos": "Videos",
"storage": "Storage"
},
"uptimekuma": {
"up": "Sites Up",
"down": "Sites Down",
"uptime": "Uptime",
"incident": "Incident",
"m": "m"
},
"komga": {
"libraries": "Libraries",
"series": "Series",
"books": "Books"
},
"mylar": {
"series": "Series",
"issues": "Issues",
"wanted": "Wanted"
},
"photoprism": {
"albums": "Albums",
"photos": "Photos",
"videos": "Videos",
"people": "People"
},
"diskstation": {
"days": "Days",
"volumeAvailable": "Available",
"uptime": "Uptime"
},
"fileflows": {
"queue": "Queue",
"processing": "Processing",
"processed": "Processed",
"time": "Time"
},
"grafana": {
"dashboards": "Dashboards",
"datasources": "Data Sources",
"totalalerts": "Total Alerts",
"alertstriggered": "Alerts Triggered"
},
"nextcloud": {
"cpuload": "Cpu Load",
"memoryusage": "Memory Usage",
"freespace": "Free Space",
"activeusers": "Active Users"
},
"kopia": {
"status": "Status",
"size": "Size",
"lastrun": "Last Run",
"nextrun": "Next Run",
"failed": "Failed"
},
"unmanic": {
"active_workers": "Active Workers",
"total_workers": "Total Workers",
"records_total": "Queue Length"
},
"healthchecks": {
"new": "New",
"up": "Online",
"grace": "In Grace Period",
"down": "Offline",
"paused": "Paused",
"status": "Status",
"last_ping": "Last Ping",
"never": "No pings yet"
},
"pterodactyl": {
"servers": "Servers",
"nodes": "Nodes"
},
"prometheus": {
"targets_up": "Targets Up",
"targets_down": "Targets Down",
"targets_total": "Total Targets"
}
}
+84 -3
View File
@@ -32,7 +32,8 @@
"total": "Общо",
"free": "Свободни",
"used": "Заети",
"load": "Натоварване"
"load": "Натоварване",
"mem": "MEM"
},
"unifi": {
"users": "Потребители",
@@ -48,7 +49,8 @@
"wlan": "WLAN",
"devices": "Devices",
"lan_devices": "LAN Devices",
"wlan_devices": "WLAN Devices"
"wlan_devices": "WLAN Devices",
"empty_data": "Subsystem status unknown"
},
"docker": {
"offline": "Изключен",
@@ -281,7 +283,9 @@
"bookmark": "Bookmark",
"service": "Service",
"search": "Search",
"custom": "Custom"
"custom": "Custom",
"visit": "Visit",
"url": "URL"
},
"homebridge": {
"available_update": "System",
@@ -438,5 +442,82 @@
"photos": "Photos",
"videos": "Videos",
"storage": "Storage"
},
"uptimekuma": {
"down": "Sites Down",
"up": "Sites Up",
"uptime": "Uptime",
"incident": "Incident",
"m": "m"
},
"komga": {
"libraries": "Libraries",
"series": "Series",
"books": "Books"
},
"mylar": {
"series": "Series",
"issues": "Issues",
"wanted": "Wanted"
},
"photoprism": {
"albums": "Albums",
"photos": "Photos",
"videos": "Videos",
"people": "People"
},
"diskstation": {
"days": "Days",
"uptime": "Uptime",
"volumeAvailable": "Available"
},
"fileflows": {
"queue": "Queue",
"processing": "Processing",
"processed": "Processed",
"time": "Time"
},
"grafana": {
"dashboards": "Dashboards",
"datasources": "Data Sources",
"totalalerts": "Total Alerts",
"alertstriggered": "Alerts Triggered"
},
"nextcloud": {
"cpuload": "Cpu Load",
"memoryusage": "Memory Usage",
"freespace": "Free Space",
"activeusers": "Active Users"
},
"kopia": {
"status": "Status",
"size": "Size",
"lastrun": "Last Run",
"nextrun": "Next Run",
"failed": "Failed"
},
"unmanic": {
"active_workers": "Active Workers",
"total_workers": "Total Workers",
"records_total": "Queue Length"
},
"healthchecks": {
"new": "New",
"up": "Online",
"down": "Offline",
"grace": "In Grace Period",
"paused": "Paused",
"status": "Status",
"last_ping": "Last Ping",
"never": "No pings yet"
},
"pterodactyl": {
"servers": "Servers",
"nodes": "Nodes"
},
"prometheus": {
"targets_up": "Targets Up",
"targets_down": "Targets Down",
"targets_total": "Total Targets"
}
}
+84 -3
View File
@@ -38,7 +38,8 @@
"free": "Lliure",
"used": "Utilitzat",
"load": "Càrrega",
"cpu": "CPU"
"cpu": "CPU",
"mem": "MEM"
},
"docker": {
"rx": "Rebut",
@@ -203,7 +204,8 @@
"wlan": "WLAN",
"devices": "Dispositius",
"lan_devices": "Dispositius LAN",
"wlan_devices": "Dispositius WLAN"
"wlan_devices": "Dispositius WLAN",
"empty_data": "Subsystem status unknown"
},
"plex": {
"streams": "Transmissions actives",
@@ -281,7 +283,9 @@
"bookmark": "Marcador",
"service": "Servei",
"search": "Search",
"custom": "Custom"
"custom": "Custom",
"visit": "Visit",
"url": "URL"
},
"homebridge": {
"available_update": "Sistema",
@@ -438,5 +442,82 @@
"photos": "Photos",
"videos": "Videos",
"storage": "Storage"
},
"uptimekuma": {
"m": "m",
"up": "Sites Up",
"down": "Sites Down",
"uptime": "Uptime",
"incident": "Incident"
},
"komga": {
"libraries": "Libraries",
"series": "Series",
"books": "Books"
},
"mylar": {
"series": "Series",
"issues": "Issues",
"wanted": "Wanted"
},
"photoprism": {
"albums": "Albums",
"photos": "Photos",
"videos": "Videos",
"people": "People"
},
"diskstation": {
"days": "Days",
"uptime": "Uptime",
"volumeAvailable": "Available"
},
"fileflows": {
"queue": "Queue",
"processing": "Processing",
"processed": "Processed",
"time": "Time"
},
"grafana": {
"dashboards": "Dashboards",
"datasources": "Data Sources",
"totalalerts": "Total Alerts",
"alertstriggered": "Alerts Triggered"
},
"nextcloud": {
"cpuload": "Cpu Load",
"memoryusage": "Memory Usage",
"freespace": "Free Space",
"activeusers": "Active Users"
},
"kopia": {
"status": "Status",
"size": "Size",
"lastrun": "Last Run",
"nextrun": "Next Run",
"failed": "Failed"
},
"unmanic": {
"active_workers": "Active Workers",
"total_workers": "Total Workers",
"records_total": "Queue Length"
},
"healthchecks": {
"new": "New",
"up": "Online",
"grace": "In Grace Period",
"down": "Offline",
"paused": "Paused",
"status": "Status",
"last_ping": "Last Ping",
"never": "No pings yet"
},
"pterodactyl": {
"servers": "Servers",
"nodes": "Nodes"
},
"prometheus": {
"targets_up": "Targets Up",
"targets_down": "Targets Down",
"targets_total": "Total Targets"
}
}
+108 -27
View File
@@ -15,10 +15,10 @@
"missing_type": "Chybí typ widgetu: {{type}}",
"api_error": "Chyba API",
"status": "Status",
"information": "Information",
"information": "Informace",
"url": "URL",
"raw_error": "Raw Error",
"response_data": "Response Data"
"response_data": "Data odpovědi"
},
"weather": {
"current": "Aktuální poloha",
@@ -34,7 +34,8 @@
"total": "Celkem",
"free": "Volné",
"used": "Využité",
"load": "Vytížení"
"load": "Vytížení",
"mem": "MEM"
},
"unifi": {
"users": "Uživatelé",
@@ -50,7 +51,8 @@
"wlan_users": "WLAN Uživatelé",
"up": "BĚŽÍ",
"down": "NEBĚŽÍ",
"wait": "Počkejte prosím"
"wait": "Počkejte prosím",
"empty_data": "Status podsystému neznámý"
},
"docker": {
"rx": "RX",
@@ -58,8 +60,8 @@
"mem": "RAM",
"cpu": "CPU",
"offline": "Offline",
"error": "Error",
"unknown": "Unknown"
"error": "Chyba",
"unknown": "Neznámý"
},
"emby": {
"playing": "Přehrává",
@@ -148,7 +150,7 @@
"pending": "Čeká",
"approved": "Schváleno",
"available": "Dostupný",
"processing": "Processing"
"processing": "Zpracováváno"
},
"pihole": {
"queries": "Dotazy",
@@ -293,7 +295,9 @@
"bookmark": "Záložka",
"service": "Služba",
"search": "Search",
"custom": "Custom"
"custom": "Custom",
"visit": "Visit",
"url": "URL"
},
"homebridge": {
"update_available": "Dostupná aktualizace",
@@ -315,8 +319,8 @@
"indexers": "Indexery"
},
"navidrome": {
"nothing_streaming": "No Active Streams",
"please_wait": "Please Wait"
"nothing_streaming": "Žádné aktivní streams",
"please_wait": "Prosím vyčkejte"
},
"pyload": {
"speed": "Speed",
@@ -334,8 +338,8 @@
"hd": "HD"
},
"ping": {
"error": "Error",
"ping": "Ping"
"error": "Chyba",
"ping": "Odezva"
},
"scrutiny": {
"passed": "Passed",
@@ -347,22 +351,22 @@
"total": "Total"
},
"deluge": {
"upload": "Upload",
"upload": "Nahrávání",
"leech": "Leech",
"seed": "Seed",
"download": "Download"
"download": "Stahování"
},
"flood": {
"download": "Download",
"upload": "Upload",
"download": "Stahování",
"upload": "Nahrávání",
"leech": "Leech",
"seed": "Seed"
},
"tdarr": {
"queue": "Queue",
"processed": "Processed",
"errored": "Errored",
"saved": "Saved"
"queue": "Fronta",
"processed": "Zpracováno",
"errored": "Chybné",
"saved": "Uložené"
},
"miniflux": {
"read": "Read",
@@ -377,15 +381,15 @@
"bibitrate": "{{value, rate(bits: true; binary: true)}}"
},
"omada": {
"connectedAp": "Connected APs",
"activeUser": "Active devices",
"alerts": "Alerts",
"connectedGateway": "Connected gateways",
"connectedSwitches": "Connected switches"
"connectedAp": "Připojené APs",
"activeUser": "Aktivní zařízení",
"alerts": "Upozornění",
"connectedGateway": "Připojené brány",
"connectedSwitches": "Připojené přepínače"
},
"downloadstation": {
"download": "Download",
"upload": "Upload",
"download": "Stahování",
"upload": "Nahrávání",
"leech": "Leech",
"seed": "Seed"
},
@@ -438,5 +442,82 @@
"photos": "Photos",
"videos": "Videos",
"storage": "Storage"
},
"uptimekuma": {
"up": "Sites Up",
"down": "Sites Down",
"uptime": "Uptime",
"incident": "Incident",
"m": "m"
},
"komga": {
"libraries": "Libraries",
"series": "Series",
"books": "Books"
},
"mylar": {
"series": "Series",
"issues": "Issues",
"wanted": "Wanted"
},
"photoprism": {
"albums": "Albums",
"photos": "Photos",
"videos": "Videos",
"people": "People"
},
"diskstation": {
"days": "Days",
"uptime": "Uptime",
"volumeAvailable": "Available"
},
"fileflows": {
"queue": "Queue",
"processing": "Processing",
"processed": "Processed",
"time": "Time"
},
"grafana": {
"dashboards": "Dashboards",
"datasources": "Data Sources",
"totalalerts": "Total Alerts",
"alertstriggered": "Alerts Triggered"
},
"nextcloud": {
"cpuload": "Cpu Load",
"memoryusage": "Memory Usage",
"freespace": "Free Space",
"activeusers": "Active Users"
},
"kopia": {
"status": "Status",
"size": "Size",
"lastrun": "Last Run",
"nextrun": "Next Run",
"failed": "Failed"
},
"unmanic": {
"active_workers": "Active Workers",
"total_workers": "Total Workers",
"records_total": "Queue Length"
},
"healthchecks": {
"new": "New",
"up": "Online",
"grace": "In Grace Period",
"down": "Offline",
"paused": "Paused",
"status": "Status",
"last_ping": "Last Ping",
"never": "No pings yet"
},
"pterodactyl": {
"servers": "Servers",
"nodes": "Nodes"
},
"prometheus": {
"targets_down": "Targets Down",
"targets_total": "Total Targets",
"targets_up": "Targets Up"
}
}
+84 -3
View File
@@ -159,7 +159,8 @@
"total": "Total",
"free": "Fri",
"used": "Brugt",
"load": "Belastning"
"load": "Belastning",
"mem": "MEM"
},
"unifi": {
"users": "Brugere",
@@ -175,7 +176,8 @@
"wlan_users": "WLAN Brugere",
"up": "Oppe",
"down": "NED",
"wait": "Vent venligst"
"wait": "Vent venligst",
"empty_data": "Subsystem status unknown"
},
"docker": {
"cpu": "CPU",
@@ -289,7 +291,9 @@
"bookmark": "Bogmærker",
"service": "Service",
"search": "Search",
"custom": "Custom"
"custom": "Custom",
"visit": "Visit",
"url": "URL"
},
"watchtower": {
"containers_scanned": "Scannet",
@@ -438,5 +442,82 @@
"photos": "Photos",
"videos": "Videos",
"storage": "Storage"
},
"uptimekuma": {
"up": "Sites Up",
"down": "Sites Down",
"uptime": "Uptime",
"incident": "Incident",
"m": "m"
},
"komga": {
"libraries": "Libraries",
"series": "Series",
"books": "Books"
},
"mylar": {
"series": "Series",
"issues": "Issues",
"wanted": "Wanted"
},
"photoprism": {
"albums": "Albums",
"photos": "Photos",
"videos": "Videos",
"people": "People"
},
"diskstation": {
"days": "Days",
"uptime": "Uptime",
"volumeAvailable": "Available"
},
"fileflows": {
"queue": "Queue",
"processing": "Processing",
"processed": "Processed",
"time": "Time"
},
"grafana": {
"totalalerts": "Total Alerts",
"dashboards": "Dashboards",
"datasources": "Data Sources",
"alertstriggered": "Alerts Triggered"
},
"nextcloud": {
"memoryusage": "Memory Usage",
"cpuload": "Cpu Load",
"freespace": "Free Space",
"activeusers": "Active Users"
},
"kopia": {
"status": "Status",
"size": "Size",
"lastrun": "Last Run",
"nextrun": "Next Run",
"failed": "Failed"
},
"unmanic": {
"active_workers": "Active Workers",
"total_workers": "Total Workers",
"records_total": "Queue Length"
},
"healthchecks": {
"new": "New",
"up": "Online",
"grace": "In Grace Period",
"down": "Offline",
"paused": "Paused",
"status": "Status",
"last_ping": "Last Ping",
"never": "No pings yet"
},
"pterodactyl": {
"servers": "Servers",
"nodes": "Nodes"
},
"prometheus": {
"targets_up": "Targets Up",
"targets_down": "Targets Down",
"targets_total": "Total Targets"
}
}
+84 -3
View File
@@ -16,7 +16,8 @@
"free": "Frei",
"used": "Gebraucht",
"load": "Last",
"cpu": "CPU"
"cpu": "CPU",
"mem": "MEM"
},
"docker": {
"rx": "Rx",
@@ -203,7 +204,8 @@
"wlan": "WLAN",
"devices": "Geräte",
"lan_devices": "LAN-Geräte",
"wlan_devices": "WLAN Geräte"
"wlan_devices": "WLAN Geräte",
"empty_data": "Subsystem status unknown"
},
"plex": {
"streams": "Aktive Streams",
@@ -281,7 +283,9 @@
"bookmark": "Lesezeichen",
"service": "Dienst",
"search": "Search",
"custom": "Custom"
"custom": "Custom",
"visit": "Visit",
"url": "URL"
},
"homebridge": {
"available_update": "System",
@@ -438,5 +442,82 @@
"photos": "Photos",
"videos": "Videos",
"storage": "Storage"
},
"uptimekuma": {
"up": "Sites Up",
"down": "Sites Down",
"uptime": "Uptime",
"incident": "Incident",
"m": "m"
},
"komga": {
"libraries": "Libraries",
"series": "Series",
"books": "Books"
},
"mylar": {
"series": "Series",
"issues": "Issues",
"wanted": "Wanted"
},
"photoprism": {
"albums": "Albums",
"photos": "Photos",
"videos": "Videos",
"people": "People"
},
"diskstation": {
"days": "Days",
"uptime": "Uptime",
"volumeAvailable": "Available"
},
"fileflows": {
"queue": "Queue",
"processing": "Processing",
"processed": "Processed",
"time": "Time"
},
"grafana": {
"dashboards": "Dashboards",
"datasources": "Data Sources",
"totalalerts": "Total Alerts",
"alertstriggered": "Alerts Triggered"
},
"nextcloud": {
"cpuload": "Cpu Load",
"memoryusage": "Memory Usage",
"freespace": "Free Space",
"activeusers": "Active Users"
},
"kopia": {
"status": "Status",
"size": "Size",
"lastrun": "Last Run",
"nextrun": "Next Run",
"failed": "Failed"
},
"unmanic": {
"active_workers": "Active Workers",
"total_workers": "Total Workers",
"records_total": "Queue Length"
},
"healthchecks": {
"grace": "In Grace Period",
"new": "New",
"up": "Online",
"down": "Offline",
"paused": "Paused",
"status": "Status",
"last_ping": "Last Ping",
"never": "No pings yet"
},
"pterodactyl": {
"servers": "Servers",
"nodes": "Nodes"
},
"prometheus": {
"targets_up": "Targets Up",
"targets_down": "Targets Down",
"targets_total": "Total Targets"
}
}
Regular → Executable
+77 -3
View File
@@ -32,6 +32,7 @@
},
"resources": {
"cpu": "CPU",
"mem": "MEM",
"total": "Total",
"free": "Free",
"used": "Used",
@@ -51,7 +52,8 @@
"wlan_users": "WLAN Users",
"up": "UP",
"down": "DOWN",
"wait": "Please wait"
"wait": "Please wait",
"empty_data": "Subsystem status unknown"
},
"docker": {
"rx": "RX",
@@ -284,7 +286,9 @@
"bookmark": "Bookmark",
"service": "Service",
"search": "Search",
"custom": "Custom"
"custom": "Custom",
"visit": "Visit",
"url": "URL"
},
"wmo": {
"0-day": "Sunny",
@@ -352,6 +356,16 @@
"child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}"
},
"healthchecks": {
"new": "New",
"up": "Online",
"grace": "In Grace Period",
"down": "Offline",
"paused": "Paused",
"status": "Status",
"last_ping": "Last Ping",
"never": "No pings yet"
},
"watchtower": {
"containers_scanned": "Scanned",
"containers_updated": "Updated",
@@ -454,5 +468,65 @@
"uptime": "Uptime",
"incident": "Incident",
"m": "m"
},
"komga": {
"libraries": "Libraries",
"series": "Series",
"books": "Books"
},
"diskstation": {
"days": "Days",
"uptime": "Uptime",
"volumeAvailable": "Available"
},
"mylar": {
"series": "Series",
"issues": "Issues",
"wanted": "Wanted"
},
"photoprism": {
"albums": "Albums",
"photos": "Photos",
"videos": "Videos",
"people": "People"
},
"fileflows": {
"queue": "Queue",
"processing": "Processing",
"processed": "Processed",
"time": "Time"
},
"grafana": {
"dashboards": "Dashboards",
"datasources": "Data Sources",
"totalalerts": "Total Alerts",
"alertstriggered": "Alerts Triggered"
},
"nextcloud": {
"cpuload": "Cpu Load",
"memoryusage": "Memory Usage",
"freespace": "Free Space",
"activeusers": "Active Users"
},
"kopia": {
"status": "Status",
"size": "Size",
"lastrun": "Last Run",
"nextrun": "Next Run",
"failed": "Failed"
},
"unmanic": {
"active_workers": "Active Workers",
"total_workers": "Total Workers",
"records_total": "Queue Length"
},
"pterodactyl": {
"servers": "Servers",
"nodes": "Nodes"
},
"prometheus": {
"targets_up": "Targets Up",
"targets_down": "Targets Down",
"targets_total": "Total Targets"
}
}
}
+84 -3
View File
@@ -22,7 +22,8 @@
"total": "Totalo",
"free": "Libera",
"used": "Uzata",
"load": "Ŝarĝo"
"load": "Ŝarĝo",
"mem": "MEM"
},
"unifi": {
"users": "Uzantoj",
@@ -38,7 +39,8 @@
"wlan_users": "WLAN Users",
"up": "UP",
"down": "DOWN",
"wait": "Please wait"
"wait": "Please wait",
"empty_data": "Subsystem status unknown"
},
"docker": {
"rx": "RX",
@@ -237,7 +239,9 @@
"bookmark": "Bookmark",
"service": "Servo",
"search": "Search",
"custom": "Custom"
"custom": "Custom",
"visit": "Visit",
"url": "URL"
},
"wmo": {
"0-day": "Suna",
@@ -438,5 +442,82 @@
"photos": "Photos",
"videos": "Videos",
"storage": "Storage"
},
"uptimekuma": {
"up": "Sites Up",
"down": "Sites Down",
"uptime": "Uptime",
"incident": "Incident",
"m": "m"
},
"komga": {
"libraries": "Libraries",
"series": "Series",
"books": "Books"
},
"mylar": {
"series": "Series",
"issues": "Issues",
"wanted": "Wanted"
},
"photoprism": {
"albums": "Albums",
"photos": "Photos",
"videos": "Videos",
"people": "People"
},
"diskstation": {
"days": "Days",
"uptime": "Uptime",
"volumeAvailable": "Available"
},
"fileflows": {
"queue": "Queue",
"processing": "Processing",
"processed": "Processed",
"time": "Time"
},
"grafana": {
"dashboards": "Dashboards",
"datasources": "Data Sources",
"totalalerts": "Total Alerts",
"alertstriggered": "Alerts Triggered"
},
"nextcloud": {
"activeusers": "Active Users",
"cpuload": "Cpu Load",
"memoryusage": "Memory Usage",
"freespace": "Free Space"
},
"kopia": {
"status": "Status",
"size": "Size",
"lastrun": "Last Run",
"nextrun": "Next Run",
"failed": "Failed"
},
"unmanic": {
"active_workers": "Active Workers",
"total_workers": "Total Workers",
"records_total": "Queue Length"
},
"healthchecks": {
"new": "New",
"up": "Online",
"grace": "In Grace Period",
"down": "Offline",
"paused": "Paused",
"status": "Status",
"last_ping": "Last Ping",
"never": "No pings yet"
},
"pterodactyl": {
"servers": "Servers",
"nodes": "Nodes"
},
"prometheus": {
"targets_up": "Targets Up",
"targets_down": "Targets Down",
"targets_total": "Total Targets"
}
}
+88 -7
View File
@@ -16,7 +16,8 @@
"free": "Libre",
"used": "Usado",
"load": "Carga",
"cpu": "CPU"
"cpu": "CPU",
"mem": "MEM"
},
"docker": {
"rx": "Recibido",
@@ -139,7 +140,7 @@
"transmission": {
"download": "Bajada",
"upload": "Subida",
"leech": "Leech",
"leech": "Sanguijuela",
"seed": "Semillas"
},
"jackett": {
@@ -203,7 +204,8 @@
"wlan": "WLAN",
"devices": "Dispositivos",
"lan_devices": "Dispositivos LAN",
"wlan_devices": "Dispositivos WLAN"
"wlan_devices": "Dispositivos WLAN",
"empty_data": "Se desconoce el estado del subsistema"
},
"plex": {
"streams": "Transmisiones activas",
@@ -281,7 +283,9 @@
"bookmark": "Marcadores",
"service": "Servicio",
"search": "Buscar",
"custom": "Personalizado"
"custom": "Personalizado",
"visit": "Visit",
"url": "URL"
},
"homebridge": {
"available_update": "Sistema",
@@ -418,10 +422,10 @@
"series": "Serie"
},
"octoprint": {
"temp_bed": "Bed temp",
"temp_bed": "temperatura de la plataforma",
"printer_state": "Status",
"temp_tool": "Tool temp",
"job_completion": "Completion"
"temp_tool": "Herramienta de temperatura",
"job_completion": "Finalización"
},
"cloudflared": {
"origin_ip": "IP de origen",
@@ -438,5 +442,82 @@
"photos": "Fotos",
"videos": "Vídeos",
"storage": "Almacenamiento"
},
"uptimekuma": {
"up": "Páginas web activas",
"down": "Páginas web inactivas",
"uptime": "Disponibilidad",
"incident": "Incidencia",
"m": "m"
},
"komga": {
"libraries": "Librerías",
"series": "Series",
"books": "Libros"
},
"mylar": {
"issues": "Cuestiones",
"series": "Series",
"wanted": "Buscado"
},
"photoprism": {
"albums": "Álbumes",
"photos": "Fotos",
"videos": "Vídeos",
"people": "Personas"
},
"diskstation": {
"days": "Días",
"uptime": "Funcionando",
"volumeAvailable": "Disponible"
},
"fileflows": {
"queue": "Cola",
"processing": "Procesando",
"processed": "Procesado",
"time": "Tiempo"
},
"grafana": {
"dashboards": "Dashboards",
"datasources": "Fuentes de datos",
"totalalerts": "Alertas totales",
"alertstriggered": "Alertas activadas"
},
"nextcloud": {
"cpuload": "Carga de la CPU",
"memoryusage": "Uso de la memoria",
"freespace": "Espacio libre",
"activeusers": "Usuarios activos"
},
"kopia": {
"status": "Estado",
"size": "Tamaño",
"lastrun": "Última ejecución",
"nextrun": "Siguiente ejecución",
"failed": "Fallido"
},
"unmanic": {
"active_workers": "Trabajadores en activo",
"total_workers": "Total de trabajadores",
"records_total": "Duración de la cola"
},
"healthchecks": {
"new": "Nuevo",
"up": "Conectado",
"down": "Desconectado",
"grace": "En Periodo de Gracia",
"paused": "Pausado",
"status": "Estado",
"last_ping": "Último Ping",
"never": "Aún no hay pings"
},
"pterodactyl": {
"servers": "Servidores",
"nodes": "Nodos"
},
"prometheus": {
"targets_up": "Objetivos arriba",
"targets_down": "Objetivos abajo",
"targets_total": "Objetivos totales"
}
}
+84 -3
View File
@@ -22,7 +22,8 @@
"total": "Yhteensä",
"free": "Vapaana",
"used": "Käytetty",
"load": "Kuorma"
"load": "Kuorma",
"mem": "MEM"
},
"docker": {
"rx": "RX",
@@ -203,7 +204,8 @@
"lan_devices": "LAN Devices",
"lan": "LAN",
"wlan": "WLAN",
"wlan_devices": "WLAN Devices"
"wlan_devices": "WLAN Devices",
"empty_data": "Subsystem status unknown"
},
"plex": {
"streams": "Active Streams",
@@ -281,7 +283,9 @@
"bookmark": "Bookmark",
"service": "Service",
"search": "Search",
"custom": "Custom"
"custom": "Custom",
"visit": "Visit",
"url": "URL"
},
"homebridge": {
"available_update": "System",
@@ -438,5 +442,82 @@
"photos": "Photos",
"videos": "Videos",
"storage": "Storage"
},
"uptimekuma": {
"up": "Sites Up",
"down": "Sites Down",
"uptime": "Uptime",
"incident": "Incident",
"m": "m"
},
"komga": {
"libraries": "Libraries",
"series": "Series",
"books": "Books"
},
"mylar": {
"series": "Series",
"issues": "Issues",
"wanted": "Wanted"
},
"photoprism": {
"albums": "Albums",
"photos": "Photos",
"videos": "Videos",
"people": "People"
},
"diskstation": {
"days": "Days",
"uptime": "Uptime",
"volumeAvailable": "Available"
},
"fileflows": {
"queue": "Queue",
"processing": "Processing",
"processed": "Processed",
"time": "Time"
},
"grafana": {
"dashboards": "Dashboards",
"datasources": "Data Sources",
"totalalerts": "Total Alerts",
"alertstriggered": "Alerts Triggered"
},
"nextcloud": {
"cpuload": "Cpu Load",
"memoryusage": "Memory Usage",
"freespace": "Free Space",
"activeusers": "Active Users"
},
"kopia": {
"status": "Status",
"size": "Size",
"lastrun": "Last Run",
"nextrun": "Next Run",
"failed": "Failed"
},
"unmanic": {
"active_workers": "Active Workers",
"total_workers": "Total Workers",
"records_total": "Queue Length"
},
"healthchecks": {
"new": "New",
"up": "Online",
"grace": "In Grace Period",
"down": "Offline",
"paused": "Paused",
"status": "Status",
"last_ping": "Last Ping",
"never": "No pings yet"
},
"pterodactyl": {
"servers": "Servers",
"nodes": "Nodes"
},
"prometheus": {
"targets_up": "Targets Up",
"targets_down": "Targets Down",
"targets_total": "Total Targets"
}
}
+84 -3
View File
@@ -16,7 +16,8 @@
"free": "Libre",
"used": "Utilisé",
"load": "Charge",
"cpu": "CPU"
"cpu": "CPU",
"mem": "MÉM"
},
"docker": {
"rx": "Rx",
@@ -203,7 +204,8 @@
"wlan": "WLAN",
"devices": "Équipt.",
"lan_devices": "Équipt. LAN",
"wlan_devices": "Équipt. WLAN"
"wlan_devices": "Équipt. WLAN",
"empty_data": "Statut sous-système inconnu"
},
"plex": {
"streams": "Flux actif",
@@ -281,7 +283,9 @@
"bookmark": "Signet",
"service": "Service",
"search": "Recherche",
"custom": "Personnalisé"
"custom": "Personnalisé",
"visit": "Visit",
"url": "URL"
},
"homebridge": {
"available_update": "Système",
@@ -438,5 +442,82 @@
"photos": "Photos",
"videos": "Vidéos",
"storage": "Stockage"
},
"uptimekuma": {
"up": "En ligne",
"down": "Hors ligne",
"uptime": "Dispo.",
"incident": "Incident",
"m": "m"
},
"komga": {
"libraries": "Librairies",
"series": "Séries",
"books": "Livres"
},
"mylar": {
"series": "Séries",
"issues": "Issues",
"wanted": "Demande"
},
"photoprism": {
"albums": "Albums",
"photos": "Photos",
"videos": "Vidéos",
"people": "Personnes"
},
"diskstation": {
"days": "Jours",
"uptime": "Fonctionnement",
"volumeAvailable": "Disponible"
},
"fileflows": {
"queue": "Queue",
"processing": "Traitement",
"processed": "Traité",
"time": "Temps"
},
"grafana": {
"dashboards": "Tableau de bord",
"datasources": "Sources données",
"totalalerts": "Total alertes",
"alertstriggered": "Alertes déclenchées"
},
"nextcloud": {
"freespace": "Espace Libre",
"activeusers": "Utilisateurs Actifs",
"cpuload": "Charge Cpu",
"memoryusage": "Utilisation Mémoire"
},
"kopia": {
"status": "Statut",
"size": "Taille",
"lastrun": "Dernière exécution",
"nextrun": "Prochaine exécution",
"failed": "En erreur"
},
"unmanic": {
"active_workers": "En cours",
"total_workers": "Total",
"records_total": "En attente"
},
"healthchecks": {
"new": "Nouveau",
"up": "En ligne",
"grace": "En Période de Grâce",
"down": "Hors ligne",
"paused": "En Pause",
"status": "Statut",
"last_ping": "Dernier Ping",
"never": "Pas de Ping"
},
"pterodactyl": {
"servers": "Serveurs",
"nodes": "Nœuds"
},
"prometheus": {
"targets_up": "Targets Up",
"targets_down": "Targets Down",
"targets_total": "Total Targets"
}
}
+84 -3
View File
@@ -22,7 +22,8 @@
"free": "פנוי",
"used": "בשימוש",
"load": "עומס",
"cpu": "CPU"
"cpu": "CPU",
"mem": "MEM"
},
"docker": {
"rx": "RX",
@@ -203,7 +204,8 @@
"wlan": "WLAN",
"devices": "Devices",
"lan_devices": "LAN Devices",
"wlan_devices": "WLAN Devices"
"wlan_devices": "WLAN Devices",
"empty_data": "Subsystem status unknown"
},
"plex": {
"streams": "Active Streams",
@@ -281,7 +283,9 @@
"bookmark": "Bookmark",
"service": "Service",
"search": "Search",
"custom": "Custom"
"custom": "Custom",
"visit": "Visit",
"url": "URL"
},
"homebridge": {
"available_update": "System",
@@ -438,5 +442,82 @@
"photos": "Photos",
"videos": "Videos",
"storage": "Storage"
},
"uptimekuma": {
"up": "Sites Up",
"down": "Sites Down",
"uptime": "Uptime",
"incident": "Incident",
"m": "m"
},
"komga": {
"libraries": "Libraries",
"series": "Series",
"books": "Books"
},
"mylar": {
"series": "Series",
"issues": "Issues",
"wanted": "Wanted"
},
"photoprism": {
"albums": "Albums",
"photos": "Photos",
"videos": "Videos",
"people": "People"
},
"diskstation": {
"days": "Days",
"uptime": "Uptime",
"volumeAvailable": "Available"
},
"fileflows": {
"queue": "Queue",
"processing": "Processing",
"processed": "Processed",
"time": "Time"
},
"grafana": {
"dashboards": "Dashboards",
"datasources": "Data Sources",
"totalalerts": "Total Alerts",
"alertstriggered": "Alerts Triggered"
},
"nextcloud": {
"cpuload": "Cpu Load",
"memoryusage": "Memory Usage",
"freespace": "Free Space",
"activeusers": "Active Users"
},
"kopia": {
"status": "Status",
"size": "Size",
"lastrun": "Last Run",
"nextrun": "Next Run",
"failed": "Failed"
},
"unmanic": {
"active_workers": "Active Workers",
"total_workers": "Total Workers",
"records_total": "Queue Length"
},
"healthchecks": {
"paused": "Paused",
"status": "Status",
"last_ping": "Last Ping",
"new": "New",
"up": "Online",
"grace": "In Grace Period",
"down": "Offline",
"never": "No pings yet"
},
"pterodactyl": {
"servers": "Servers",
"nodes": "Nodes"
},
"prometheus": {
"targets_up": "Targets Up",
"targets_down": "Targets Down",
"targets_total": "Total Targets"
}
}
+84 -3
View File
@@ -56,7 +56,8 @@
"total": "Total",
"free": "Free",
"used": "Used",
"load": "Load"
"load": "Load",
"mem": "MEM"
},
"unifi": {
"users": "Users",
@@ -72,7 +73,8 @@
"wlan_users": "WLAN Users",
"up": "UP",
"down": "DOWN",
"wait": "Please wait"
"wait": "Please wait",
"empty_data": "Subsystem status unknown"
},
"docker": {
"rx": "RX",
@@ -227,7 +229,9 @@
"bookmark": "Bookmark",
"service": "Service",
"search": "Search",
"custom": "Custom"
"custom": "Custom",
"visit": "Visit",
"url": "URL"
},
"wmo": {
"0-day": "Sunny",
@@ -438,5 +442,82 @@
"photos": "Photos",
"videos": "Videos",
"storage": "Storage"
},
"uptimekuma": {
"up": "Sites Up",
"down": "Sites Down",
"uptime": "Uptime",
"incident": "Incident",
"m": "m"
},
"komga": {
"libraries": "Libraries",
"series": "Series",
"books": "Books"
},
"mylar": {
"series": "Series",
"issues": "Issues",
"wanted": "Wanted"
},
"photoprism": {
"albums": "Albums",
"photos": "Photos",
"videos": "Videos",
"people": "People"
},
"diskstation": {
"days": "Days",
"uptime": "Uptime",
"volumeAvailable": "Available"
},
"fileflows": {
"queue": "Queue",
"processing": "Processing",
"processed": "Processed",
"time": "Time"
},
"grafana": {
"dashboards": "Dashboards",
"datasources": "Data Sources",
"totalalerts": "Total Alerts",
"alertstriggered": "Alerts Triggered"
},
"nextcloud": {
"cpuload": "Cpu Load",
"memoryusage": "Memory Usage",
"freespace": "Free Space",
"activeusers": "Active Users"
},
"kopia": {
"status": "Status",
"size": "Size",
"lastrun": "Last Run",
"nextrun": "Next Run",
"failed": "Failed"
},
"unmanic": {
"active_workers": "Active Workers",
"total_workers": "Total Workers",
"records_total": "Queue Length"
},
"healthchecks": {
"new": "New",
"up": "Online",
"grace": "In Grace Period",
"down": "Offline",
"paused": "Paused",
"status": "Status",
"last_ping": "Last Ping",
"never": "No pings yet"
},
"pterodactyl": {
"servers": "Servers",
"nodes": "Nodes"
},
"prometheus": {
"targets_up": "Targets Up",
"targets_down": "Targets Down",
"targets_total": "Total Targets"
}
}
+84 -3
View File
@@ -13,7 +13,8 @@
"free": "Slobodno",
"used": "Korišteno",
"load": "Opterećenje",
"cpu": "CPU"
"cpu": "CPU",
"mem": "MEM"
},
"sabnzbd": {
"rate": "Stopa",
@@ -203,7 +204,8 @@
"wlan": "WLAN",
"devices": "Uređaji",
"lan_devices": "LAN uređaji",
"wlan_devices": "WLAN uređaji"
"wlan_devices": "WLAN uređaji",
"empty_data": "Subsystem status unknown"
},
"plex": {
"streams": "Aktivni prijenosi",
@@ -281,7 +283,9 @@
"bookmark": "Straničnik",
"service": "Usluga",
"search": "Search",
"custom": "Custom"
"custom": "Custom",
"visit": "Visit",
"url": "URL"
},
"homebridge": {
"available_update": "Sustav",
@@ -438,5 +442,82 @@
"photos": "Photos",
"videos": "Videos",
"storage": "Storage"
},
"uptimekuma": {
"up": "Sites Up",
"down": "Sites Down",
"uptime": "Uptime",
"incident": "Incident",
"m": "m"
},
"komga": {
"libraries": "Libraries",
"series": "Series",
"books": "Books"
},
"mylar": {
"series": "Series",
"issues": "Issues",
"wanted": "Wanted"
},
"photoprism": {
"videos": "Videos",
"albums": "Albums",
"photos": "Photos",
"people": "People"
},
"diskstation": {
"days": "Days",
"uptime": "Uptime",
"volumeAvailable": "Available"
},
"fileflows": {
"queue": "Queue",
"processing": "Processing",
"processed": "Processed",
"time": "Time"
},
"grafana": {
"alertstriggered": "Alerts Triggered",
"dashboards": "Dashboards",
"datasources": "Data Sources",
"totalalerts": "Total Alerts"
},
"nextcloud": {
"cpuload": "Cpu Load",
"memoryusage": "Memory Usage",
"freespace": "Free Space",
"activeusers": "Active Users"
},
"kopia": {
"status": "Status",
"size": "Size",
"lastrun": "Last Run",
"nextrun": "Next Run",
"failed": "Failed"
},
"unmanic": {
"active_workers": "Active Workers",
"total_workers": "Total Workers",
"records_total": "Queue Length"
},
"healthchecks": {
"new": "New",
"up": "Online",
"grace": "In Grace Period",
"down": "Offline",
"paused": "Paused",
"status": "Status",
"last_ping": "Last Ping",
"never": "No pings yet"
},
"pterodactyl": {
"servers": "Servers",
"nodes": "Nodes"
},
"prometheus": {
"targets_up": "Targets Up",
"targets_down": "Targets Down",
"targets_total": "Total Targets"
}
}
+84 -3
View File
@@ -4,7 +4,8 @@
"free": "Szabad",
"used": "Használt",
"load": "Terhelés",
"cpu": "CPU"
"cpu": "CPU",
"mem": "MEM"
},
"docker": {
"rx": "RX",
@@ -203,7 +204,8 @@
"wlan": "WLAN",
"devices": "Devices",
"lan_devices": "LAN Devices",
"wlan_devices": "WLAN Devices"
"wlan_devices": "WLAN Devices",
"empty_data": "Subsystem status unknown"
},
"plex": {
"streams": "Active Streams",
@@ -281,7 +283,9 @@
"bookmark": "Bookmark",
"service": "Service",
"search": "Search",
"custom": "Custom"
"custom": "Custom",
"visit": "Visit",
"url": "URL"
},
"homebridge": {
"available_update": "System",
@@ -438,5 +442,82 @@
"photos": "Photos",
"videos": "Videos",
"storage": "Storage"
},
"uptimekuma": {
"up": "Sites Up",
"down": "Sites Down",
"uptime": "Uptime",
"incident": "Incident",
"m": "m"
},
"komga": {
"libraries": "Libraries",
"series": "Series",
"books": "Books"
},
"mylar": {
"series": "Series",
"issues": "Issues",
"wanted": "Wanted"
},
"photoprism": {
"albums": "Albums",
"photos": "Photos",
"videos": "Videos",
"people": "People"
},
"diskstation": {
"days": "Days",
"uptime": "Uptime",
"volumeAvailable": "Available"
},
"fileflows": {
"queue": "Queue",
"processing": "Processing",
"processed": "Processed",
"time": "Time"
},
"grafana": {
"dashboards": "Dashboards",
"datasources": "Data Sources",
"totalalerts": "Total Alerts",
"alertstriggered": "Alerts Triggered"
},
"nextcloud": {
"cpuload": "Cpu Load",
"memoryusage": "Memory Usage",
"freespace": "Free Space",
"activeusers": "Active Users"
},
"kopia": {
"status": "Status",
"size": "Size",
"lastrun": "Last Run",
"nextrun": "Next Run",
"failed": "Failed"
},
"unmanic": {
"active_workers": "Active Workers",
"total_workers": "Total Workers",
"records_total": "Queue Length"
},
"healthchecks": {
"new": "New",
"up": "Online",
"grace": "In Grace Period",
"down": "Offline",
"paused": "Paused",
"status": "Status",
"last_ping": "Last Ping",
"never": "No pings yet"
},
"pterodactyl": {
"servers": "Servers",
"nodes": "Nodes"
},
"prometheus": {
"targets_up": "Targets Up",
"targets_down": "Targets Down",
"targets_total": "Total Targets"
}
}
+84 -3
View File
@@ -52,7 +52,8 @@
"free": "Libero",
"used": "In utilizzo",
"load": "Carico",
"cpu": "CPU"
"cpu": "CPU",
"mem": "MEM"
},
"rutorrent": {
"active": "Attivo",
@@ -203,7 +204,8 @@
"wlan": "WLAN",
"devices": "Dispositivi",
"lan_devices": "Dispositivi LAN",
"wlan_devices": "Dispositivi WLAN"
"wlan_devices": "Dispositivi WLAN",
"empty_data": "Subsystem status unknown"
},
"plex": {
"streams": "Trasmissioni attive",
@@ -281,7 +283,9 @@
"bookmark": "Segnalibro",
"service": "Servizio",
"search": "Search",
"custom": "Custom"
"custom": "Custom",
"visit": "Visit",
"url": "URL"
},
"homebridge": {
"available_update": "Sistema",
@@ -438,5 +442,82 @@
"photos": "Photos",
"videos": "Videos",
"storage": "Storage"
},
"uptimekuma": {
"up": "Sites Up",
"down": "Sites Down",
"uptime": "Uptime",
"incident": "Incident",
"m": "m"
},
"komga": {
"libraries": "Libraries",
"series": "Series",
"books": "Books"
},
"mylar": {
"series": "Series",
"issues": "Issues",
"wanted": "Wanted"
},
"photoprism": {
"albums": "Albums",
"photos": "Photos",
"videos": "Videos",
"people": "People"
},
"diskstation": {
"days": "Days",
"uptime": "Uptime",
"volumeAvailable": "Available"
},
"fileflows": {
"queue": "Queue",
"processing": "Processing",
"processed": "Processed",
"time": "Time"
},
"grafana": {
"dashboards": "Dashboards",
"datasources": "Data Sources",
"totalalerts": "Total Alerts",
"alertstriggered": "Alerts Triggered"
},
"nextcloud": {
"memoryusage": "Memory Usage",
"cpuload": "Cpu Load",
"freespace": "Free Space",
"activeusers": "Active Users"
},
"kopia": {
"status": "Status",
"size": "Size",
"lastrun": "Last Run",
"nextrun": "Next Run",
"failed": "Failed"
},
"unmanic": {
"active_workers": "Active Workers",
"total_workers": "Total Workers",
"records_total": "Queue Length"
},
"healthchecks": {
"new": "New",
"up": "Online",
"grace": "In Grace Period",
"down": "Offline",
"paused": "Paused",
"status": "Status",
"last_ping": "Last Ping",
"never": "No pings yet"
},
"pterodactyl": {
"servers": "Servers",
"nodes": "Nodes"
},
"prometheus": {
"targets_up": "Targets Up",
"targets_down": "Targets Down",
"targets_total": "Total Targets"
}
}
+84 -3
View File
@@ -57,7 +57,8 @@
"total": "Total",
"free": "Free",
"used": "Used",
"load": "Load"
"load": "Load",
"mem": "MEM"
},
"unifi": {
"users": "Users",
@@ -73,7 +74,8 @@
"wlan_users": "WLAN Users",
"up": "UP",
"down": "DOWN",
"wait": "Please wait"
"wait": "Please wait",
"empty_data": "Subsystem status unknown"
},
"docker": {
"rx": "RX",
@@ -281,7 +283,9 @@
"bookmark": "Bookmark",
"service": "Service",
"search": "Search",
"custom": "Custom"
"custom": "Custom",
"visit": "Visit",
"url": "URL"
},
"wmo": {
"0-day": "Sunny",
@@ -438,5 +442,82 @@
"photos": "Photos",
"videos": "Videos",
"storage": "Storage"
},
"uptimekuma": {
"up": "Sites Up",
"down": "Sites Down",
"uptime": "Uptime",
"incident": "Incident",
"m": "m"
},
"komga": {
"libraries": "Libraries",
"series": "Series",
"books": "Books"
},
"mylar": {
"series": "Series",
"issues": "Issues",
"wanted": "Wanted"
},
"photoprism": {
"albums": "Albums",
"photos": "Photos",
"videos": "Videos",
"people": "People"
},
"diskstation": {
"days": "Days",
"uptime": "Uptime",
"volumeAvailable": "Available"
},
"fileflows": {
"queue": "Queue",
"processing": "Processing",
"processed": "Processed",
"time": "Time"
},
"grafana": {
"dashboards": "Dashboards",
"datasources": "Data Sources",
"totalalerts": "Total Alerts",
"alertstriggered": "Alerts Triggered"
},
"nextcloud": {
"cpuload": "Cpu Load",
"memoryusage": "Memory Usage",
"freespace": "Free Space",
"activeusers": "Active Users"
},
"kopia": {
"status": "Status",
"size": "Size",
"lastrun": "Last Run",
"nextrun": "Next Run",
"failed": "Failed"
},
"unmanic": {
"active_workers": "Active Workers",
"total_workers": "Total Workers",
"records_total": "Queue Length"
},
"healthchecks": {
"never": "No pings yet",
"new": "New",
"up": "Online",
"grace": "In Grace Period",
"down": "Offline",
"paused": "Paused",
"status": "Status",
"last_ping": "Last Ping"
},
"pterodactyl": {
"servers": "Servers",
"nodes": "Nodes"
},
"prometheus": {
"targets_up": "Targets Up",
"targets_down": "Targets Down",
"targets_total": "Total Targets"
}
}
+84 -3
View File
@@ -26,7 +26,8 @@
"total": "Kopā",
"free": "Brīvs",
"used": "Izmantojas",
"load": "Ielādē"
"load": "Ielādē",
"mem": "MEM"
},
"unifi": {
"users": "Lietotāji",
@@ -42,7 +43,8 @@
"wlan_users": "WLAN lietotāji",
"up": "DARBOJAS",
"down": "NEDARBOJAS",
"wait": "Lūdzu, uzgaidiet"
"wait": "Lūdzu, uzgaidiet",
"empty_data": "Subsystem status unknown"
},
"docker": {
"rx": "RX",
@@ -275,7 +277,9 @@
"bookmark": "Bookmark",
"service": "Service",
"search": "Search",
"custom": "Custom"
"custom": "Custom",
"visit": "Visit",
"url": "URL"
},
"wmo": {
"0-day": "Saulains",
@@ -438,5 +442,82 @@
"photos": "Photos",
"videos": "Videos",
"storage": "Storage"
},
"uptimekuma": {
"up": "Sites Up",
"down": "Sites Down",
"uptime": "Uptime",
"incident": "Incident",
"m": "m"
},
"komga": {
"libraries": "Libraries",
"series": "Series",
"books": "Books"
},
"mylar": {
"series": "Series",
"issues": "Issues",
"wanted": "Wanted"
},
"photoprism": {
"albums": "Albums",
"photos": "Photos",
"videos": "Videos",
"people": "People"
},
"diskstation": {
"days": "Days",
"uptime": "Uptime",
"volumeAvailable": "Available"
},
"fileflows": {
"queue": "Queue",
"processing": "Processing",
"processed": "Processed",
"time": "Time"
},
"grafana": {
"dashboards": "Dashboards",
"datasources": "Data Sources",
"totalalerts": "Total Alerts",
"alertstriggered": "Alerts Triggered"
},
"nextcloud": {
"cpuload": "Cpu Load",
"memoryusage": "Memory Usage",
"freespace": "Free Space",
"activeusers": "Active Users"
},
"kopia": {
"status": "Status",
"size": "Size",
"lastrun": "Last Run",
"nextrun": "Next Run",
"failed": "Failed"
},
"unmanic": {
"active_workers": "Active Workers",
"total_workers": "Total Workers",
"records_total": "Queue Length"
},
"healthchecks": {
"new": "New",
"up": "Online",
"grace": "In Grace Period",
"down": "Offline",
"paused": "Paused",
"status": "Status",
"last_ping": "Last Ping",
"never": "No pings yet"
},
"pterodactyl": {
"servers": "Servers",
"nodes": "Nodes"
},
"prometheus": {
"targets_up": "Targets Up",
"targets_down": "Targets Down",
"targets_total": "Total Targets"
}
}
+84 -3
View File
@@ -4,7 +4,8 @@
"total": "Jumlah",
"free": "Bebas",
"used": "Telah diguna",
"load": "Beban"
"load": "Beban",
"mem": "MEM"
},
"unifi": {
"uptime": "Masa Operasi Sistem",
@@ -20,7 +21,8 @@
"wlan_users": "Pengguna WLAN",
"up": "HIDUP",
"down": "MATI",
"wait": "Sila tunggu"
"wait": "Sila tunggu",
"empty_data": "Subsystem status unknown"
},
"lidarr": {
"queued": "Dibaris Gilir",
@@ -64,7 +66,9 @@
"bookmark": "Tandabuku",
"service": "Servis",
"search": "Search",
"custom": "Custom"
"custom": "Custom",
"visit": "Visit",
"url": "URL"
},
"wmo": {
"0-day": "Terik",
@@ -438,5 +442,82 @@
"photos": "Photos",
"videos": "Videos",
"storage": "Storage"
},
"uptimekuma": {
"up": "Sites Up",
"down": "Sites Down",
"uptime": "Uptime",
"incident": "Incident",
"m": "m"
},
"komga": {
"libraries": "Libraries",
"series": "Series",
"books": "Books"
},
"mylar": {
"series": "Series",
"issues": "Issues",
"wanted": "Wanted"
},
"photoprism": {
"albums": "Albums",
"photos": "Photos",
"videos": "Videos",
"people": "People"
},
"diskstation": {
"days": "Days",
"uptime": "Uptime",
"volumeAvailable": "Available"
},
"fileflows": {
"queue": "Queue",
"processing": "Processing",
"processed": "Processed",
"time": "Time"
},
"grafana": {
"dashboards": "Dashboards",
"datasources": "Data Sources",
"totalalerts": "Total Alerts",
"alertstriggered": "Alerts Triggered"
},
"nextcloud": {
"cpuload": "Cpu Load",
"memoryusage": "Memory Usage",
"freespace": "Free Space",
"activeusers": "Active Users"
},
"kopia": {
"status": "Status",
"size": "Size",
"lastrun": "Last Run",
"nextrun": "Next Run",
"failed": "Failed"
},
"unmanic": {
"active_workers": "Active Workers",
"total_workers": "Total Workers",
"records_total": "Queue Length"
},
"healthchecks": {
"new": "New",
"up": "Online",
"grace": "In Grace Period",
"down": "Offline",
"paused": "Paused",
"status": "Status",
"last_ping": "Last Ping",
"never": "No pings yet"
},
"pterodactyl": {
"servers": "Servers",
"nodes": "Nodes"
},
"prometheus": {
"targets_up": "Targets Up",
"targets_down": "Targets Down",
"targets_total": "Total Targets"
}
}
+84 -3
View File
@@ -16,7 +16,8 @@
"free": "Ledig",
"used": "Brukt",
"load": "Last inn",
"cpu": "CPU"
"cpu": "CPU",
"mem": "MEM"
},
"docker": {
"rx": "Mottatt",
@@ -203,7 +204,8 @@
"wlan": "WLAN",
"devices": "Devices",
"lan_devices": "LAN Devices",
"wlan_devices": "WLAN Devices"
"wlan_devices": "WLAN Devices",
"empty_data": "Subsystem status unknown"
},
"plex": {
"streams": "Active Streams",
@@ -281,7 +283,9 @@
"bookmark": "Bookmark",
"service": "Service",
"search": "Search",
"custom": "Custom"
"custom": "Custom",
"visit": "Visit",
"url": "URL"
},
"homebridge": {
"available_update": "System",
@@ -438,5 +442,82 @@
"photos": "Photos",
"videos": "Videos",
"storage": "Storage"
},
"uptimekuma": {
"up": "Sites Up",
"down": "Sites Down",
"uptime": "Uptime",
"incident": "Incident",
"m": "m"
},
"komga": {
"libraries": "Libraries",
"series": "Series",
"books": "Books"
},
"mylar": {
"series": "Series",
"issues": "Issues",
"wanted": "Wanted"
},
"photoprism": {
"albums": "Albums",
"photos": "Photos",
"videos": "Videos",
"people": "People"
},
"diskstation": {
"days": "Days",
"uptime": "Uptime",
"volumeAvailable": "Available"
},
"fileflows": {
"queue": "Queue",
"processing": "Processing",
"processed": "Processed",
"time": "Time"
},
"grafana": {
"dashboards": "Dashboards",
"datasources": "Data Sources",
"totalalerts": "Total Alerts",
"alertstriggered": "Alerts Triggered"
},
"nextcloud": {
"cpuload": "Cpu Load",
"memoryusage": "Memory Usage",
"freespace": "Free Space",
"activeusers": "Active Users"
},
"kopia": {
"status": "Status",
"size": "Size",
"lastrun": "Last Run",
"nextrun": "Next Run",
"failed": "Failed"
},
"unmanic": {
"active_workers": "Active Workers",
"total_workers": "Total Workers",
"records_total": "Queue Length"
},
"healthchecks": {
"new": "New",
"up": "Online",
"grace": "In Grace Period",
"down": "Offline",
"paused": "Paused",
"status": "Status",
"last_ping": "Last Ping",
"never": "No pings yet"
},
"pterodactyl": {
"servers": "Servers",
"nodes": "Nodes"
},
"prometheus": {
"targets_up": "Targets Up",
"targets_down": "Targets Down",
"targets_total": "Total Targets"
}
}
+84 -3
View File
@@ -13,7 +13,8 @@
"free": "Vrij",
"used": "Gebruikt",
"load": "Laadt",
"cpu": "CPU"
"cpu": "CPU",
"mem": "MEM"
},
"docker": {
"rx": "RX",
@@ -203,7 +204,8 @@
"wlan": "WLAN",
"devices": "Apparaten",
"lan_devices": "LAN Apparaten",
"wlan_devices": "WLAN Apparaten"
"wlan_devices": "WLAN Apparaten",
"empty_data": "Subsystem status unknown"
},
"plex": {
"streams": "Active Streams",
@@ -281,7 +283,9 @@
"bookmark": "Bookmark",
"service": "Service",
"search": "Search",
"custom": "Custom"
"custom": "Custom",
"visit": "Visit",
"url": "URL"
},
"homebridge": {
"available_update": "System",
@@ -438,5 +442,82 @@
"photos": "Photos",
"videos": "Videos",
"storage": "Storage"
},
"uptimekuma": {
"up": "Sites Up",
"down": "Sites Down",
"uptime": "Uptime",
"incident": "Incident",
"m": "m"
},
"komga": {
"libraries": "Libraries",
"series": "Series",
"books": "Books"
},
"mylar": {
"wanted": "Wanted",
"series": "Series",
"issues": "Issues"
},
"photoprism": {
"albums": "Albums",
"photos": "Photos",
"videos": "Videos",
"people": "People"
},
"diskstation": {
"days": "Days",
"uptime": "Uptime",
"volumeAvailable": "Available"
},
"fileflows": {
"queue": "Queue",
"processing": "Processing",
"processed": "Processed",
"time": "Time"
},
"grafana": {
"dashboards": "Dashboards",
"datasources": "Data Sources",
"totalalerts": "Total Alerts",
"alertstriggered": "Alerts Triggered"
},
"nextcloud": {
"cpuload": "Cpu Load",
"memoryusage": "Memory Usage",
"freespace": "Free Space",
"activeusers": "Active Users"
},
"kopia": {
"status": "Status",
"size": "Size",
"lastrun": "Last Run",
"nextrun": "Next Run",
"failed": "Failed"
},
"unmanic": {
"active_workers": "Active Workers",
"total_workers": "Total Workers",
"records_total": "Queue Length"
},
"healthchecks": {
"new": "New",
"up": "Online",
"grace": "In Grace Period",
"down": "Offline",
"paused": "Paused",
"status": "Status",
"last_ping": "Last Ping",
"never": "No pings yet"
},
"pterodactyl": {
"servers": "Servers",
"nodes": "Nodes"
},
"prometheus": {
"targets_up": "Targets Up",
"targets_down": "Targets Down",
"targets_total": "Total Targets"
}
}
+84 -3
View File
@@ -13,7 +13,8 @@
"load": "Obciążenie",
"total": "Całkowite",
"free": "Wolne",
"cpu": "CPU"
"cpu": "CPU",
"mem": "MEM"
},
"emby": {
"no_active": "Brak aktywnych strumieni",
@@ -203,7 +204,8 @@
"wlan": "WLAN",
"devices": "Urządzenia",
"lan_devices": "Urządzenia LAN",
"wlan_devices": "Urządzenia WLAN"
"wlan_devices": "Urządzenia WLAN",
"empty_data": "Subsystem status unknown"
},
"plex": {
"streams": "Aktywne strumienie",
@@ -281,7 +283,9 @@
"bookmark": "Zakładka",
"service": "Usługi",
"search": "Search",
"custom": "Custom"
"custom": "Custom",
"visit": "Visit",
"url": "URL"
},
"homebridge": {
"available_update": "System",
@@ -438,5 +442,82 @@
"photos": "Photos",
"videos": "Videos",
"storage": "Storage"
},
"uptimekuma": {
"up": "Sites Up",
"down": "Sites Down",
"uptime": "Uptime",
"incident": "Incident",
"m": "m"
},
"komga": {
"libraries": "Libraries",
"series": "Series",
"books": "Books"
},
"mylar": {
"series": "Series",
"issues": "Issues",
"wanted": "Wanted"
},
"photoprism": {
"albums": "Albums",
"photos": "Photos",
"videos": "Videos",
"people": "People"
},
"diskstation": {
"uptime": "Uptime",
"volumeAvailable": "Available",
"days": "Days"
},
"fileflows": {
"queue": "Queue",
"processing": "Processing",
"processed": "Processed",
"time": "Time"
},
"grafana": {
"dashboards": "Dashboards",
"datasources": "Data Sources",
"totalalerts": "Total Alerts",
"alertstriggered": "Alerts Triggered"
},
"nextcloud": {
"cpuload": "Cpu Load",
"memoryusage": "Memory Usage",
"freespace": "Free Space",
"activeusers": "Active Users"
},
"kopia": {
"status": "Status",
"size": "Size",
"lastrun": "Last Run",
"nextrun": "Next Run",
"failed": "Failed"
},
"unmanic": {
"active_workers": "Active Workers",
"total_workers": "Total Workers",
"records_total": "Queue Length"
},
"healthchecks": {
"new": "New",
"up": "Online",
"grace": "In Grace Period",
"down": "Offline",
"paused": "Paused",
"status": "Status",
"last_ping": "Last Ping",
"never": "No pings yet"
},
"pterodactyl": {
"servers": "Servers",
"nodes": "Nodes"
},
"prometheus": {
"targets_up": "Targets Up",
"targets_down": "Targets Down",
"targets_total": "Total Targets"
}
}
+205 -124
View File
@@ -33,14 +33,14 @@
"status": "Status",
"information": "Informação",
"url": "URL",
"raw_error": "Raw Error",
"raw_error": "Erro Bruto",
"response_data": "Dados de Resposta"
},
"weather": {
"current": "Localização atual",
"allow": "Clique para permitir",
"updating": "Atualizando",
"wait": "Aguarde, por favor"
"wait": "Por favor aguarde"
},
"search": {
"placeholder": "Buscar…"
@@ -50,7 +50,8 @@
"free": "Livre",
"used": "Usado",
"load": "Carregamento",
"cpu": "CPU"
"cpu": "CPU",
"mem": "MEM"
},
"docker": {
"rx": "Recebido",
@@ -133,7 +134,7 @@
},
"pihole": {
"queries": "Consultas",
"blocked": "Bloquado",
"blocked": "Bloqueados",
"gravity": "Gravity"
},
"adguard": {
@@ -164,9 +165,9 @@
},
"prowlarr": {
"enableIndexers": "Indexadores",
"numberOfGrabs": "Pegos",
"numberOfGrabs": "Buscas",
"numberOfQueries": "Consultas",
"numberOfFailGrabs": "Fail Grabs",
"numberOfFailGrabs": "Buscas sem êxito",
"numberOfFailQueries": "Consultas Falhas"
},
"jackett": {
@@ -181,11 +182,11 @@
"authentik": {
"users": "Usuários",
"loginsLast24H": "Logins (24h)",
"failedLoginsLast24H": "Failed Logins (24h)"
"failedLoginsLast24H": "Logins Falhos (24h)"
},
"proxmox": {
"mem": "Memória",
"cpu": "Processador",
"cpu": "CPU",
"lxc": "LXC",
"vms": "VMs"
},
@@ -198,12 +199,13 @@
"wlan_users": "Usuarios WLAN",
"up": "LIGADO",
"down": "CÁIDO",
"wait": "Por favor guarde",
"wait": "Por favor aguarde",
"lan": "LAN",
"wlan": "WLAN",
"devices": "Dispositivos",
"lan_devices": "Dispositivos LAN",
"wlan_devices": "Dispositivos WLAN"
"wlan_devices": "Dispositivos WLAN",
"empty_data": "Status de Subsistema Desconhecido"
},
"plex": {
"streams": "Transmissões ativas",
@@ -213,105 +215,107 @@
"glances": {
"cpu": "CPU",
"mem": "MEM",
"wait": "Please wait"
"wait": "Por favor aguarde"
},
"changedetectionio": {
"totalObserved": "Observados",
"diffsDetected": "Mudanças"
},
"wmo": {
"1-night": "Mainly Clear",
"2-day": "Partly Cloudy",
"1-night": "Principalmente Limpo",
"2-day": "Parcialmente Nublado",
"2-night": "Parcialmente nublado",
"3-day": "Nublado",
"3-night": "Nublado",
"45-day": "Névoa",
"45-night": "Foggy",
"48-day": "Foggy",
"48-night": "Foggy",
"56-night": "Light Freezing Drizzle",
"57-day": "Freezing Drizzle",
"99-day": "Thunderstorm With Hail",
"99-night": "Thunderstorm With Hail",
"45-night": "Névoa",
"48-day": "Névoa",
"48-night": "Névoa",
"56-night": "Leve Garoa Congelante",
"57-day": "Garoa Congelante",
"99-day": "Trovoada Com Granizo",
"99-night": "Trovoada Com Granizo",
"0-day": "Ensolarado",
"53-day": "Drizzle",
"53-day": "Garoando",
"0-night": "Limpo",
"1-day": "Mainly Sunny",
"51-day": "Light Drizzle",
"51-night": "Light Drizzle",
"53-night": "Drizzle",
"55-day": "Heavy Drizzle",
"55-night": "Heavy Drizzle",
"56-day": "Light Freezing Drizzle",
"57-night": "Freezing Drizzle",
"61-day": "Light Rain",
"61-night": "Light Rain",
"63-day": "Rain",
"63-night": "Rain",
"65-day": "Heavy Rain",
"65-night": "Heavy Rain",
"66-day": "Freezing Rain",
"66-night": "Freezing Rain",
"67-day": "Freezing Rain",
"67-night": "Freezing Rain",
"71-day": "Light Snow",
"71-night": "Light Snow",
"73-day": "Snow",
"73-night": "Snow",
"75-day": "Heavy Snow",
"75-night": "Heavy Snow",
"77-day": "Snow Grains",
"77-night": "Snow Grains",
"80-day": "Light Showers",
"80-night": "Light Showers",
"81-day": "Showers",
"81-night": "Showers",
"82-day": "Heavy Showers",
"82-night": "Heavy Showers",
"85-day": "Snow Showers",
"85-night": "Snow Showers",
"86-day": "Snow Showers",
"86-night": "Snow Showers",
"95-day": "Thunderstorm",
"95-night": "Thunderstorm",
"96-day": "Thunderstorm With Hail",
"96-night": "Thunderstorm With Hail"
"1-day": "Principalmente Ensolarado",
"51-day": "Leve Garoa",
"51-night": "Leve Garoa",
"53-night": "Garoando",
"55-day": "Garoa Pesada",
"55-night": "Garoa Pesada",
"56-day": "Leve Garoa Congelante",
"57-night": "Garoa Congelante",
"61-day": "Chuva Leve",
"61-night": "Chuva Leve",
"63-day": "Chuva",
"63-night": "Chuva",
"65-day": "Chuva Pesada",
"65-night": "Chuva Pesada",
"66-day": "Chuva Congelante",
"66-night": "Chuva Congelante",
"67-day": "Chuva Congelante",
"67-night": "Chuva Congelante",
"71-day": "Neve Leve",
"71-night": "Neve Leve",
"73-day": "Neve",
"73-night": "Neve",
"75-day": "Neve Pesada",
"75-night": "Neve Pesada",
"77-day": "Grãos de Neve",
"77-night": "Grãos de Neve",
"80-day": "Chuviscos Leve",
"80-night": "Chuviscos Leve",
"81-day": "Chuviscos",
"81-night": "Chuviscos",
"82-day": "Chuviscos Pesado",
"82-night": "Chuviscos Pesado",
"85-day": "Precipitação de Neve",
"85-night": "Precipitação de Neve",
"86-day": "Precipitação de Neve",
"86-night": "Precipitação de Neve",
"95-day": "Trovoada",
"95-night": "Trovoada",
"96-day": "Trovoada Com Granizo",
"96-night": "Trovoada Com Granizo"
},
"quicklaunch": {
"bookmark": "Bookmark",
"service": "Service",
"search": "Search",
"custom": "Custom"
"bookmark": "Favorito",
"service": "Serviço",
"search": "Busca",
"custom": "Personalizado",
"visit": "Visit",
"url": "URL"
},
"homebridge": {
"available_update": "System",
"updates": "Updates",
"update_available": "Update Available",
"up_to_date": "Up to Date",
"child_bridges": "Child Bridges",
"available_update": "Sistema",
"updates": "Atualizações",
"update_available": "Atualização Disponível",
"up_to_date": "Atualizado",
"child_bridges": "Pontes Filhas",
"child_bridges_status": "{{ok}}/{{total}}"
},
"autobrr": {
"approvedPushes": "Approved",
"rejectedPushes": "Rejected",
"filters": "Filters",
"indexers": "Indexers"
"approvedPushes": "Aprovado",
"rejectedPushes": "Rejeitado",
"filters": "Filtros",
"indexers": "Indexadores"
},
"watchtower": {
"containers_scanned": "Scanned",
"containers_updated": "Updated",
"containers_failed": "Failed"
"containers_scanned": "Escaneado",
"containers_updated": "Atualizado",
"containers_failed": "Falha"
},
"tubearchivist": {
"downloads": "Queue",
"videos": "Videos",
"channels": "Channels",
"playlists": "Playlists"
"downloads": "Fila",
"videos": "Vídeos",
"channels": "Canais",
"playlists": "Listas"
},
"truenas": {
"load": "System Load",
"uptime": "Uptime",
"alerts": "Alerts",
"load": "Carga do Sistema",
"uptime": "Tempo Ativo",
"alerts": "Alertas",
"time": "{{value, number(style: unit; unitDisplay: long;)}}"
},
"navidrome": {
@@ -319,18 +323,18 @@
"please_wait": "Por favor aguarde"
},
"pyload": {
"speed": "Speed",
"active": "Active",
"queue": "Queue",
"speed": "Velocidade",
"active": "Ativo",
"queue": "Fila",
"total": "Total"
},
"gluetun": {
"public_ip": "Public IP",
"region": "Region",
"country": "Country"
"public_ip": "IP Público",
"region": "Região",
"country": "País"
},
"hdhomerun": {
"channels": "Channels",
"channels": "Canais",
"hd": "HD"
},
"ping": {
@@ -338,12 +342,12 @@
"ping": "Ping"
},
"scrutiny": {
"passed": "Passed",
"failed": "Failed",
"unknown": "Unknown"
"passed": "Passou",
"failed": "Falha",
"unknown": "Desconhecido"
},
"paperlessngx": {
"inbox": "Inbox",
"inbox": "Caixa de Entrada",
"total": "Total"
},
"deluge": {
@@ -369,8 +373,8 @@
"unread": "Não Lidos"
},
"nextdns": {
"wait": "Please Wait",
"no_devices": "No Device Data Received"
"wait": "Por favor aguarde",
"no_devices": "Nenhum dado de dispositivo recebido"
},
"common": {
"bibyterate": "{{value, rate(bits: false; binary: true)}}",
@@ -390,53 +394,130 @@
"seed": "Seed"
},
"mikrotik": {
"cpuLoad": "CPU Load",
"memoryUsed": "Memory Used",
"uptime": "Uptime",
"numberOfLeases": "Leases"
"cpuLoad": "Carga de CPU",
"memoryUsed": "Memória Utilizada",
"uptime": "Tempo Ativo",
"numberOfLeases": "Concessões"
},
"xteve": {
"streams_all": "All Streams",
"streams_active": "Active Streams",
"streams_xepg": "XEPG Channels"
"streams_all": "Todos Fluxos",
"streams_active": "Fluxos Ativos",
"streams_xepg": "Canais XEPG"
},
"opnsense": {
"cpu": "CPU Load",
"memory": "Active Memory",
"cpu": "Carga de CPU",
"memory": "Memória Ativa",
"wanUpload": "WAN Upload",
"wanDownload": "WAN Download"
},
"moonraker": {
"printer_state": "Printer State",
"print_status": "Print Status",
"print_progress": "Progress",
"layers": "Layers"
"printer_state": "Estado da Impressora",
"print_status": "Status da Impressora",
"print_progress": "Progresso",
"layers": "Camadas"
},
"medusa": {
"wanted": "Wanted",
"queued": "Queued",
"series": "Series"
"wanted": "Desejado",
"queued": "Na fila",
"series": "Séries"
},
"octoprint": {
"printer_state": "Status",
"temp_tool": "Tool temp",
"temp_bed": "Bed temp",
"job_completion": "Completion"
"temp_tool": "Temp. Ferramenta",
"temp_bed": "Temp. Cama",
"job_completion": "Conclusão"
},
"cloudflared": {
"origin_ip": "Origin IP",
"origin_ip": "IP Origem",
"status": "Status"
},
"proxmoxbackupserver": {
"datastore_usage": "Datastore",
"failed_tasks_24h": "Failed Tasks 24h",
"datastore_usage": "Armaz. de Dados",
"failed_tasks_24h": "Tarefas Falhas 24h",
"cpu_usage": "CPU",
"memory_usage": "Memory"
"memory_usage": "Memória"
},
"immich": {
"users": "Users",
"photos": "Photos",
"videos": "Videos",
"storage": "Storage"
"users": "Usuários",
"photos": "Fotos",
"videos": "Vídeos",
"storage": "Armazenamento"
},
"uptimekuma": {
"up": "Sites no Ar",
"down": "Sites Fora do Ar",
"uptime": "Tempo Ativo",
"incident": "Incidente",
"m": "m"
},
"komga": {
"libraries": "Bibliotecas",
"series": "Séries",
"books": "Livros"
},
"mylar": {
"series": "Séries",
"issues": "Problemas",
"wanted": "Desejado"
},
"photoprism": {
"videos": "Vídeos",
"albums": "Álbuns",
"photos": "Fotos",
"people": "Pessoa"
},
"diskstation": {
"days": "Dias",
"uptime": "Tempo Ativo",
"volumeAvailable": "Disponível"
},
"fileflows": {
"queue": "Fila",
"processing": "Processando",
"processed": "Processado",
"time": "Hora"
},
"grafana": {
"dashboards": "Painéis",
"datasources": "Origem de Dados",
"totalalerts": "Total Alertas",
"alertstriggered": "Alertas Disparados"
},
"nextcloud": {
"cpuload": "Carga de CPU",
"memoryusage": "Memória Utilizada",
"freespace": "Espaço Livre",
"activeusers": "Usuários Ativos"
},
"kopia": {
"status": "Status",
"size": "Tamanho",
"lastrun": "Ultima Execução",
"nextrun": "Próxima Execução",
"failed": "Falha"
},
"unmanic": {
"active_workers": "Workers Ativos",
"total_workers": "Total Workers",
"records_total": "Comprimento da Fila"
},
"healthchecks": {
"new": "Novo",
"up": "Online",
"grace": "Em Período Gratuito",
"down": "Offline",
"paused": "Pausado",
"status": "Status",
"last_ping": "Ultimo Ping",
"never": "Nenhum ping ainda"
},
"pterodactyl": {
"servers": "Servidores",
"nodes": "Nós"
},
"prometheus": {
"targets_up": "Targets Up",
"targets_down": "Targets Down",
"targets_total": "Total Targets"
}
}
+84 -3
View File
@@ -16,7 +16,8 @@
"free": "Livre",
"used": "Utilizado",
"load": "Carga",
"cpu": "CPU"
"cpu": "CPU",
"mem": "MEM"
},
"docker": {
"rx": "Rx",
@@ -216,7 +217,8 @@
"wlan": "WLAN",
"devices": "Dispositivos",
"lan_devices": "Dispositivos LAN",
"wlan_devices": "Dispositivos WLAN"
"wlan_devices": "Dispositivos WLAN",
"empty_data": "Subsystem status unknown"
},
"plex": {
"streams": "Streams Ativas",
@@ -294,7 +296,9 @@
"bookmark": "Marcador",
"service": "Serviço",
"search": "Search",
"custom": "Custom"
"custom": "Custom",
"visit": "Visit",
"url": "URL"
},
"homebridge": {
"available_update": "Sistema",
@@ -447,5 +451,82 @@
"photos": "Photos",
"videos": "Videos",
"storage": "Storage"
},
"uptimekuma": {
"up": "Sites Up",
"down": "Sites Down",
"uptime": "Uptime",
"incident": "Incident",
"m": "m"
},
"komga": {
"libraries": "Libraries",
"series": "Series",
"books": "Books"
},
"mylar": {
"series": "Series",
"issues": "Issues",
"wanted": "Wanted"
},
"photoprism": {
"albums": "Albums",
"photos": "Photos",
"videos": "Videos",
"people": "People"
},
"diskstation": {
"days": "Days",
"uptime": "Uptime",
"volumeAvailable": "Available"
},
"fileflows": {
"queue": "Queue",
"processing": "Processing",
"processed": "Processed",
"time": "Time"
},
"grafana": {
"dashboards": "Dashboards",
"datasources": "Data Sources",
"totalalerts": "Total Alerts",
"alertstriggered": "Alerts Triggered"
},
"nextcloud": {
"cpuload": "Cpu Load",
"memoryusage": "Memory Usage",
"freespace": "Free Space",
"activeusers": "Active Users"
},
"kopia": {
"status": "Status",
"size": "Size",
"lastrun": "Last Run",
"nextrun": "Next Run",
"failed": "Failed"
},
"unmanic": {
"active_workers": "Active Workers",
"total_workers": "Total Workers",
"records_total": "Queue Length"
},
"healthchecks": {
"never": "No pings yet",
"new": "New",
"up": "Online",
"grace": "In Grace Period",
"down": "Offline",
"paused": "Paused",
"status": "Status",
"last_ping": "Last Ping"
},
"pterodactyl": {
"servers": "Servers",
"nodes": "Nodes"
},
"prometheus": {
"targets_up": "Targets Up",
"targets_down": "Targets Down",
"targets_total": "Total Targets"
}
}
+84 -3
View File
@@ -4,7 +4,8 @@
"load": "Sarcină",
"total": "Total",
"free": "Disponibili",
"cpu": "Procesor"
"cpu": "Procesor",
"mem": "MEM"
},
"docker": {
"rx": "RX",
@@ -203,7 +204,8 @@
"wlan": "WLAN",
"devices": "Devices",
"lan_devices": "LAN Devices",
"wlan_devices": "WLAN Devices"
"wlan_devices": "WLAN Devices",
"empty_data": "Subsystem status unknown"
},
"plex": {
"streams": "Fluxuri active",
@@ -281,7 +283,9 @@
"bookmark": "Bookmark",
"service": "Service",
"search": "Search",
"custom": "Custom"
"custom": "Custom",
"visit": "Visit",
"url": "URL"
},
"homebridge": {
"update_available": "Update Available",
@@ -438,5 +442,82 @@
"photos": "Photos",
"videos": "Videos",
"storage": "Storage"
},
"uptimekuma": {
"up": "Sites Up",
"down": "Sites Down",
"uptime": "Uptime",
"incident": "Incident",
"m": "m"
},
"komga": {
"libraries": "Libraries",
"series": "Series",
"books": "Books"
},
"mylar": {
"series": "Series",
"issues": "Issues",
"wanted": "Wanted"
},
"photoprism": {
"albums": "Albums",
"photos": "Photos",
"videos": "Videos",
"people": "People"
},
"diskstation": {
"days": "Days",
"uptime": "Uptime",
"volumeAvailable": "Available"
},
"fileflows": {
"queue": "Queue",
"processing": "Processing",
"processed": "Processed",
"time": "Time"
},
"grafana": {
"dashboards": "Dashboards",
"datasources": "Data Sources",
"totalalerts": "Total Alerts",
"alertstriggered": "Alerts Triggered"
},
"nextcloud": {
"activeusers": "Active Users",
"cpuload": "Cpu Load",
"memoryusage": "Memory Usage",
"freespace": "Free Space"
},
"kopia": {
"status": "Status",
"size": "Size",
"lastrun": "Last Run",
"nextrun": "Next Run",
"failed": "Failed"
},
"unmanic": {
"active_workers": "Active Workers",
"total_workers": "Total Workers",
"records_total": "Queue Length"
},
"healthchecks": {
"new": "New",
"up": "Online",
"grace": "In Grace Period",
"down": "Offline",
"paused": "Paused",
"status": "Status",
"last_ping": "Last Ping",
"never": "No pings yet"
},
"pterodactyl": {
"servers": "Servers",
"nodes": "Nodes"
},
"prometheus": {
"targets_up": "Targets Up",
"targets_down": "Targets Down",
"targets_total": "Total Targets"
}
}
+84 -3
View File
@@ -16,7 +16,8 @@
"free": "Свободно",
"used": "Использовано",
"load": "Загрузка",
"cpu": "Процессор"
"cpu": "Процессор",
"mem": "MEM"
},
"docker": {
"rx": "Rx",
@@ -203,7 +204,8 @@
"wlan": "WLAN",
"devices": "Устройства",
"lan_devices": "Устройства подключённые по LAN",
"wlan_devices": "WLAN Devices"
"wlan_devices": "WLAN Devices",
"empty_data": "Subsystem status unknown"
},
"plex": {
"streams": "Active Streams",
@@ -281,7 +283,9 @@
"bookmark": "Bookmark",
"service": "Service",
"search": "Search",
"custom": "Custom"
"custom": "Custom",
"visit": "Visit",
"url": "URL"
},
"homebridge": {
"available_update": "System",
@@ -438,5 +442,82 @@
"photos": "Photos",
"videos": "Videos",
"storage": "Storage"
},
"uptimekuma": {
"up": "Sites Up",
"down": "Sites Down",
"uptime": "Uptime",
"incident": "Incident",
"m": "m"
},
"komga": {
"libraries": "Libraries",
"series": "Series",
"books": "Books"
},
"mylar": {
"series": "Series",
"issues": "Issues",
"wanted": "Wanted"
},
"photoprism": {
"albums": "Albums",
"photos": "Photos",
"videos": "Videos",
"people": "People"
},
"diskstation": {
"days": "Days",
"uptime": "Uptime",
"volumeAvailable": "Available"
},
"fileflows": {
"queue": "Queue",
"processing": "Processing",
"processed": "Processed",
"time": "Time"
},
"grafana": {
"dashboards": "Dashboards",
"datasources": "Data Sources",
"totalalerts": "Total Alerts",
"alertstriggered": "Alerts Triggered"
},
"nextcloud": {
"cpuload": "Cpu Load",
"memoryusage": "Memory Usage",
"freespace": "Free Space",
"activeusers": "Active Users"
},
"kopia": {
"status": "Status",
"size": "Size",
"lastrun": "Last Run",
"nextrun": "Next Run",
"failed": "Failed"
},
"unmanic": {
"active_workers": "Active Workers",
"total_workers": "Total Workers",
"records_total": "Queue Length"
},
"healthchecks": {
"new": "New",
"up": "Online",
"grace": "In Grace Period",
"down": "Offline",
"paused": "Paused",
"status": "Status",
"last_ping": "Last Ping",
"never": "No pings yet"
},
"pterodactyl": {
"servers": "Servers",
"nodes": "Nodes"
},
"prometheus": {
"targets_up": "Targets Up",
"targets_down": "Targets Down",
"targets_total": "Total Targets"
}
}
+84 -3
View File
@@ -22,7 +22,8 @@
"total": "Total",
"free": "Free",
"used": "Used",
"load": "Load"
"load": "Load",
"mem": "MEM"
},
"unifi": {
"users": "Users",
@@ -38,7 +39,8 @@
"wlan_users": "WLAN Users",
"up": "UP",
"down": "DOWN",
"wait": "Please wait"
"wait": "Please wait",
"empty_data": "Subsystem status unknown"
},
"docker": {
"rx": "RX",
@@ -281,7 +283,9 @@
"bookmark": "Bookmark",
"service": "Service",
"search": "Search",
"custom": "Custom"
"custom": "Custom",
"visit": "Visit",
"url": "URL"
},
"homebridge": {
"available_update": "System",
@@ -438,5 +442,82 @@
"photos": "Photos",
"videos": "Videos",
"storage": "Storage"
},
"uptimekuma": {
"up": "Sites Up",
"down": "Sites Down",
"uptime": "Uptime",
"incident": "Incident",
"m": "m"
},
"komga": {
"libraries": "Libraries",
"series": "Series",
"books": "Books"
},
"mylar": {
"series": "Series",
"issues": "Issues",
"wanted": "Wanted"
},
"photoprism": {
"albums": "Albums",
"photos": "Photos",
"videos": "Videos",
"people": "People"
},
"diskstation": {
"days": "Days",
"uptime": "Uptime",
"volumeAvailable": "Available"
},
"fileflows": {
"queue": "Queue",
"processing": "Processing",
"processed": "Processed",
"time": "Time"
},
"grafana": {
"dashboards": "Dashboards",
"datasources": "Data Sources",
"totalalerts": "Total Alerts",
"alertstriggered": "Alerts Triggered"
},
"nextcloud": {
"cpuload": "Cpu Load",
"memoryusage": "Memory Usage",
"freespace": "Free Space",
"activeusers": "Active Users"
},
"kopia": {
"status": "Status",
"size": "Size",
"lastrun": "Last Run",
"nextrun": "Next Run",
"failed": "Failed"
},
"unmanic": {
"active_workers": "Active Workers",
"total_workers": "Total Workers",
"records_total": "Queue Length"
},
"healthchecks": {
"new": "New",
"up": "Online",
"grace": "In Grace Period",
"down": "Offline",
"paused": "Paused",
"status": "Status",
"last_ping": "Last Ping",
"never": "No pings yet"
},
"pterodactyl": {
"nodes": "Nodes",
"servers": "Servers"
},
"prometheus": {
"targets_total": "Total Targets",
"targets_up": "Targets Up",
"targets_down": "Targets Down"
}
}
+84 -3
View File
@@ -19,7 +19,8 @@
"total": "Total",
"free": "Ledigt",
"used": "Använt",
"cpu": "CPU"
"cpu": "CPU",
"mem": "MEM"
},
"docker": {
"rx": "RX",
@@ -203,7 +204,8 @@
"wlan": "WLAN",
"devices": "Devices",
"lan_devices": "LAN Devices",
"wlan_devices": "WLAN Devices"
"wlan_devices": "WLAN Devices",
"empty_data": "Subsystem status unknown"
},
"plex": {
"streams": "Aktiva strömmar",
@@ -281,7 +283,9 @@
"bookmark": "Bookmark",
"service": "Service",
"search": "Search",
"custom": "Custom"
"custom": "Custom",
"visit": "Visit",
"url": "URL"
},
"homebridge": {
"available_update": "System",
@@ -438,5 +442,82 @@
"photos": "Photos",
"videos": "Videos",
"storage": "Storage"
},
"uptimekuma": {
"up": "Sites Up",
"down": "Sites Down",
"uptime": "Uptime",
"incident": "Incident",
"m": "m"
},
"komga": {
"libraries": "Libraries",
"series": "Series",
"books": "Books"
},
"mylar": {
"series": "Series",
"issues": "Issues",
"wanted": "Wanted"
},
"photoprism": {
"albums": "Albums",
"photos": "Photos",
"videos": "Videos",
"people": "People"
},
"diskstation": {
"days": "Days",
"uptime": "Uptime",
"volumeAvailable": "Available"
},
"fileflows": {
"queue": "Queue",
"processing": "Processing",
"processed": "Processed",
"time": "Time"
},
"grafana": {
"dashboards": "Dashboards",
"datasources": "Data Sources",
"totalalerts": "Total Alerts",
"alertstriggered": "Alerts Triggered"
},
"nextcloud": {
"cpuload": "Cpu Load",
"memoryusage": "Memory Usage",
"freespace": "Free Space",
"activeusers": "Active Users"
},
"kopia": {
"status": "Status",
"size": "Size",
"lastrun": "Last Run",
"nextrun": "Next Run",
"failed": "Failed"
},
"unmanic": {
"active_workers": "Active Workers",
"total_workers": "Total Workers",
"records_total": "Queue Length"
},
"healthchecks": {
"new": "New",
"up": "Online",
"grace": "In Grace Period",
"down": "Offline",
"paused": "Paused",
"status": "Status",
"last_ping": "Last Ping",
"never": "No pings yet"
},
"pterodactyl": {
"servers": "Servers",
"nodes": "Nodes"
},
"prometheus": {
"targets_up": "Targets Up",
"targets_down": "Targets Down",
"targets_total": "Total Targets"
}
}
+84 -3
View File
@@ -39,7 +39,8 @@
"total": "మొత్తం",
"free": "మిగిలింది",
"used": "ఉపయోగించబడిన",
"load": "లోడ్"
"load": "లోడ్",
"mem": "MEM"
},
"docker": {
"rx": "RX",
@@ -203,7 +204,8 @@
"wlan": "WLAN",
"devices": "పరికరాలు",
"lan_devices": "LAN పరికరాలు",
"wlan_devices": "WLAN పరికరాలు"
"wlan_devices": "WLAN పరికరాలు",
"empty_data": "Subsystem status unknown"
},
"plex": {
"streams": "యాక్టివ్ స్ట్రీమ్‌లు",
@@ -281,7 +283,9 @@
"bookmark": "బుక్మార్క్",
"service": "సేవ",
"search": "Search",
"custom": "Custom"
"custom": "Custom",
"url": "URL",
"visit": "Visit"
},
"homebridge": {
"available_update": "వ్యవస్థ",
@@ -438,5 +442,82 @@
"photos": "Photos",
"videos": "Videos",
"storage": "Storage"
},
"uptimekuma": {
"up": "Sites Up",
"down": "Sites Down",
"uptime": "Uptime",
"incident": "Incident",
"m": "m"
},
"komga": {
"libraries": "Libraries",
"series": "Series",
"books": "Books"
},
"mylar": {
"series": "Series",
"issues": "Issues",
"wanted": "Wanted"
},
"photoprism": {
"albums": "Albums",
"photos": "Photos",
"videos": "Videos",
"people": "People"
},
"diskstation": {
"days": "Days",
"uptime": "Uptime",
"volumeAvailable": "Available"
},
"fileflows": {
"queue": "Queue",
"processing": "Processing",
"processed": "Processed",
"time": "Time"
},
"grafana": {
"dashboards": "Dashboards",
"datasources": "Data Sources",
"totalalerts": "Total Alerts",
"alertstriggered": "Alerts Triggered"
},
"nextcloud": {
"memoryusage": "Memory Usage",
"freespace": "Free Space",
"cpuload": "Cpu Load",
"activeusers": "Active Users"
},
"kopia": {
"status": "Status",
"size": "Size",
"lastrun": "Last Run",
"nextrun": "Next Run",
"failed": "Failed"
},
"unmanic": {
"active_workers": "Active Workers",
"total_workers": "Total Workers",
"records_total": "Queue Length"
},
"healthchecks": {
"new": "New",
"up": "Online",
"grace": "In Grace Period",
"down": "Offline",
"paused": "Paused",
"status": "Status",
"last_ping": "Last Ping",
"never": "No pings yet"
},
"pterodactyl": {
"servers": "Servers",
"nodes": "Nodes"
},
"prometheus": {
"targets_up": "Targets Up",
"targets_down": "Targets Down",
"targets_total": "Total Targets"
}
}
+523
View File
@@ -0,0 +1,523 @@
{
"navidrome": {
"nothing_streaming": "No Active Streams",
"please_wait": "Please Wait"
},
"npm": {
"enabled": "Enabled",
"disabled": "Disabled",
"total": "Total"
},
"coinmarketcap": {
"configure": "Configure one or more crypto currencies to track",
"1hour": "1 Hour",
"1day": "1 Day",
"7days": "7 Days",
"30days": "30 Days"
},
"pyload": {
"queue": "Queue",
"total": "Total",
"speed": "Speed",
"active": "Active"
},
"gluetun": {
"public_ip": "Public IP",
"region": "Region",
"country": "Country"
},
"hdhomerun": {
"channels": "Channels",
"hd": "HD"
},
"scrutiny": {
"passed": "Passed",
"failed": "Failed",
"unknown": "Unknown"
},
"docker": {
"rx": "RX",
"tx": "TX",
"mem": "เมม",
"cpu": "ซีพียู",
"offline": "ออฟไลน์",
"error": "ข้อผิดพลาด",
"unknown": "ไม่ทราบ"
},
"common": {
"bibyterate": "{{value, rate(bits: false; binary: true)}}",
"bibitrate": "{{value, rate(bits: true; binary: true)}}"
},
"unifi": {
"days": "วัน",
"wan": "WAN",
"lan": "แลน",
"wlan": "WLAN",
"devices": "อุปกรณ์",
"lan_devices": "อุปกรณ์แลน",
"wlan_devices": "WLAN Devices",
"lan_users": "LAN Users",
"wlan_users": "WLAN Users",
"up": "UP",
"down": "DOWN",
"wait": "Please wait",
"empty_data": "Subsystem status unknown",
"users": "ผู้ใช้",
"uptime": "เวลาทำงานของระบบ"
},
"widget": {
"missing_type": "Missing Widget Type: {{type}}",
"api_error": "API มีข้อผิดพลาด",
"information": "ข้อมูล",
"status": "สถานะ",
"url": "URL",
"raw_error": "ข้อมูลต้นฉบับผิดพลาด",
"response_data": "ข้อมูลการตอบกลับ"
},
"weather": {
"current": "สถานที่ปัจจุบัน",
"allow": "คลิกเพื่ออนุญาต",
"updating": "กำลังปรับปรุง",
"wait": "โปรดรอ"
},
"search": {
"placeholder": "ค้นหา…"
},
"resources": {
"cpu": "ซีพียู",
"mem": "เมม",
"total": "ทั้งหมด",
"free": "ฟรี",
"used": "ใช้แล้ว",
"load": "โหลด"
},
"ping": {
"error": "ข้อผิดพลาด",
"ping": "ปิง"
},
"emby": {
"playing": "กำลังเล่น",
"transcoding": "การแปลงรหัส",
"bitrate": "อัตราบิต",
"no_active": "ไม่มีสตรีมที่ใช้งานอยู่"
},
"deluge": {
"download": "ดาวน์โหลด",
"upload": "Upload",
"leech": "Leech",
"seed": "Seed"
},
"flood": {
"download": "ดาวน์โหลด",
"upload": "อัพโหลด",
"leech": "Leech",
"seed": "Seed"
},
"changedetectionio": {
"totalObserved": "Total Observed",
"diffsDetected": "Diffs Detected"
},
"tautulli": {
"playing": "Playing",
"transcoding": "Transcoding",
"bitrate": "Bitrate",
"no_active": "No Active Streams"
},
"omada": {
"connectedAp": "Connected APs",
"activeUser": "Active devices",
"alerts": "Alerts",
"connectedGateway": "Connected gateways",
"connectedSwitches": "Connected switches"
},
"nzbget": {
"rate": "Rate",
"remaining": "Remaining",
"downloaded": "Downloaded"
},
"plex": {
"streams": "Active Streams",
"movies": "Movies",
"tv": "TV Shows"
},
"sabnzbd": {
"rate": "Rate",
"queue": "Queue",
"timeleft": "Time Left"
},
"rutorrent": {
"active": "Active",
"upload": "Upload",
"download": "Download"
},
"transmission": {
"download": "Download",
"upload": "Upload",
"leech": "Leech",
"seed": "Seed"
},
"qbittorrent": {
"download": "Download",
"upload": "Upload",
"leech": "Leech",
"seed": "Seed"
},
"downloadstation": {
"download": "Download",
"upload": "Upload",
"leech": "Leech",
"seed": "Seed"
},
"sonarr": {
"wanted": "Wanted",
"queued": "Queued",
"series": "Series"
},
"readarr": {
"queued": "Queued",
"books": "Books",
"wanted": "Wanted"
},
"tdarr": {
"queue": "Queue",
"processed": "Processed",
"errored": "Errored",
"saved": "Saved"
},
"traefik": {
"routers": "Routers",
"services": "Services",
"middleware": "Middleware"
},
"bazarr": {
"missingEpisodes": "Missing Episodes",
"missingMovies": "Missing Movies"
},
"radarr": {
"wanted": "Wanted",
"missing": "Missing",
"queued": "Queued",
"movies": "Movies"
},
"lidarr": {
"wanted": "Wanted",
"queued": "Queued",
"albums": "Albums"
},
"ombi": {
"pending": "Pending",
"approved": "Approved",
"available": "Available"
},
"jellyseerr": {
"pending": "Pending",
"approved": "Approved",
"available": "Available"
},
"overseerr": {
"pending": "Pending",
"processing": "Processing",
"approved": "Approved",
"available": "Available"
},
"pihole": {
"queries": "Queries",
"blocked": "Blocked",
"gravity": "Gravity"
},
"adguard": {
"queries": "Queries",
"blocked": "Blocked",
"filtered": "Filtered",
"latency": "Latency"
},
"speedtest": {
"upload": "Upload",
"download": "Download",
"ping": "Ping"
},
"portainer": {
"running": "Running",
"stopped": "Stopped",
"total": "Total"
},
"gotify": {
"apps": "Applications",
"clients": "Clients",
"messages": "Messages"
},
"prowlarr": {
"enableIndexers": "Indexers",
"numberOfGrabs": "Grabs",
"numberOfQueries": "Queries",
"numberOfFailGrabs": "Fail Grabs",
"numberOfFailQueries": "Fail Queries"
},
"jackett": {
"configured": "Configured",
"errored": "Errored"
},
"strelaysrv": {
"numActiveSessions": "Sessions",
"numConnections": "Connections",
"dataRelayed": "Relayed",
"transferRate": "Rate"
},
"mastodon": {
"user_count": "Users",
"status_count": "Posts",
"domain_count": "Domains"
},
"medusa": {
"wanted": "Wanted",
"queued": "Queued",
"series": "Series"
},
"miniflux": {
"read": "Read",
"unread": "Unread"
},
"authentik": {
"users": "Users",
"loginsLast24H": "Logins (24h)",
"failedLoginsLast24H": "Failed Logins (24h)"
},
"proxmox": {
"mem": "MEM",
"cpu": "CPU",
"lxc": "LXC",
"vms": "VMs"
},
"glances": {
"cpu": "CPU",
"mem": "MEM",
"wait": "Please wait"
},
"quicklaunch": {
"bookmark": "Bookmark",
"service": "Service",
"search": "Search",
"custom": "Custom",
"visit": "Visit",
"url": "URL"
},
"wmo": {
"67-day": "Freezing Rain",
"0-day": "Sunny",
"0-night": "Clear",
"1-day": "Mainly Sunny",
"1-night": "Mainly Clear",
"65-day": "Heavy Rain",
"65-night": "Heavy Rain",
"66-day": "Freezing Rain",
"66-night": "Freezing Rain",
"2-day": "Partly Cloudy",
"2-night": "Partly Cloudy",
"3-day": "Cloudy",
"3-night": "Cloudy",
"45-day": "Foggy",
"45-night": "Foggy",
"48-day": "Foggy",
"48-night": "Foggy",
"51-day": "Light Drizzle",
"51-night": "Light Drizzle",
"53-day": "Drizzle",
"53-night": "Drizzle",
"55-day": "Heavy Drizzle",
"55-night": "Heavy Drizzle",
"56-day": "Light Freezing Drizzle",
"56-night": "Light Freezing Drizzle",
"57-day": "Freezing Drizzle",
"57-night": "Freezing Drizzle",
"61-day": "Light Rain",
"61-night": "Light Rain",
"63-day": "Rain",
"63-night": "Rain",
"67-night": "Freezing Rain",
"75-night": "Heavy Snow",
"77-day": "Snow Grains",
"77-night": "Snow Grains",
"80-day": "Light Showers",
"80-night": "Light Showers",
"81-day": "Showers",
"81-night": "Showers",
"82-day": "Heavy Showers",
"82-night": "Heavy Showers",
"85-day": "Snow Showers",
"85-night": "Snow Showers",
"71-day": "Light Snow",
"71-night": "Light Snow",
"73-day": "Snow",
"73-night": "Snow",
"75-day": "Heavy Snow",
"86-day": "Snow Showers",
"86-night": "Snow Showers",
"95-day": "Thunderstorm",
"95-night": "Thunderstorm",
"96-day": "Thunderstorm With Hail",
"96-night": "Thunderstorm With Hail",
"99-day": "Thunderstorm With Hail",
"99-night": "Thunderstorm With Hail"
},
"homebridge": {
"updates": "Updates",
"update_available": "Update Available",
"up_to_date": "Up to Date",
"child_bridges": "Child Bridges",
"child_bridges_status": "{{ok}}/{{total}}",
"available_update": "System"
},
"watchtower": {
"containers_scanned": "Scanned",
"containers_updated": "Updated",
"containers_failed": "Failed"
},
"autobrr": {
"approvedPushes": "Approved",
"rejectedPushes": "Rejected",
"filters": "Filters",
"indexers": "Indexers"
},
"tubearchivist": {
"downloads": "Queue",
"videos": "Videos",
"channels": "Channels",
"playlists": "Playlists"
},
"truenas": {
"load": "System Load",
"uptime": "Uptime",
"alerts": "Alerts",
"time": "{{value, number(style: unit; unitDisplay: long;)}}"
},
"paperlessngx": {
"inbox": "Inbox",
"total": "Total"
},
"nextdns": {
"wait": "Please Wait",
"no_devices": "No Device Data Received"
},
"mikrotik": {
"cpuLoad": "CPU Load",
"memoryUsed": "Memory Used",
"uptime": "Uptime",
"numberOfLeases": "Leases"
},
"xteve": {
"streams_all": "All Streams",
"streams_active": "Active Streams",
"streams_xepg": "XEPG Channels"
},
"opnsense": {
"cpu": "CPU Load",
"memory": "Active Memory",
"wanUpload": "WAN Upload",
"wanDownload": "WAN Download"
},
"moonraker": {
"printer_state": "Printer State",
"print_status": "Print Status",
"print_progress": "Progress",
"layers": "Layers"
},
"octoprint": {
"printer_state": "Status",
"temp_tool": "Tool temp",
"temp_bed": "Bed temp",
"job_completion": "Completion"
},
"cloudflared": {
"origin_ip": "Origin IP",
"status": "Status"
},
"proxmoxbackupserver": {
"datastore_usage": "Datastore",
"failed_tasks_24h": "Failed Tasks 24h",
"cpu_usage": "CPU",
"memory_usage": "Memory"
},
"immich": {
"users": "Users",
"photos": "Photos",
"videos": "Videos",
"storage": "Storage"
},
"uptimekuma": {
"up": "Sites Up",
"down": "เว็บไซต์ ล่ม",
"uptime": "เวลาทำงาน",
"incident": "Incident",
"m": "m"
},
"komga": {
"libraries": "Libraries",
"series": "Series",
"books": "Books"
},
"diskstation": {
"days": "Days",
"uptime": "Uptime",
"volumeAvailable": "Available"
},
"mylar": {
"series": "Series",
"issues": "Issues",
"wanted": "Wanted"
},
"photoprism": {
"albums": "Albums",
"photos": "Photos",
"videos": "Videos",
"people": "People"
},
"fileflows": {
"queue": "Queue",
"processing": "Processing",
"processed": "Processed",
"time": "Time"
},
"grafana": {
"dashboards": "Dashboards",
"datasources": "Data Sources",
"totalalerts": "Total Alerts",
"alertstriggered": "Alerts Triggered"
},
"nextcloud": {
"cpuload": "Cpu Load",
"memoryusage": "Memory Usage",
"freespace": "Free Space",
"activeusers": "Active Users"
},
"kopia": {
"status": "Status",
"size": "Size",
"lastrun": "Last Run",
"nextrun": "Next Run",
"failed": "Failed"
},
"unmanic": {
"active_workers": "Active Workers",
"total_workers": "Total Workers",
"records_total": "Queue Length"
},
"healthchecks": {
"new": "New",
"up": "Online",
"grace": "In Grace Period",
"down": "Offline",
"paused": "Paused",
"status": "Status",
"last_ping": "Last Ping",
"never": "No pings yet"
},
"pterodactyl": {
"servers": "Servers",
"nodes": "Nodes"
},
"prometheus": {
"targets_up": "Targets Up",
"targets_down": "Targets Down",
"targets_total": "Total Targets"
}
}
+150 -69
View File
@@ -3,10 +3,10 @@
"missing_type": "Kayıp Araç Türü: {{type}}",
"api_error": "API Hatası",
"status": "Durum",
"information": "Information",
"information": "Bilgi",
"url": "URL",
"raw_error": "Raw Error",
"response_data": "Response Data"
"raw_error": "Ham Hata",
"response_data": "Yanıt Verisi"
},
"weather": {
"current": "Mevcut Konum",
@@ -18,11 +18,12 @@
"placeholder": "Ara…"
},
"resources": {
"cpu": "İşlemci",
"cpu": "CPU",
"total": "Toplam",
"free": "Boşta",
"used": "Kullanımda",
"load": "Yük"
"load": "Yük",
"mem": "MEM"
},
"unifi": {
"users": "Kullanıcılar",
@@ -38,7 +39,8 @@
"wlan": "WLAN",
"devices": "Aygıtlar",
"lan_devices": "LAN Aygıtları",
"wlan_devices": "WLAN Aygıtları"
"wlan_devices": "WLAN Aygıtları",
"empty_data": "Alt sistem durumu bilinmiyor"
},
"docker": {
"rx": "Gelen Veri",
@@ -46,8 +48,8 @@
"mem": "Bellek",
"cpu": "İşlemci",
"offline": "Çevrimdışı",
"error": "Error",
"unknown": "Unknown"
"error": "Hata",
"unknown": "Bilinmiyor"
},
"emby": {
"playing": "Oynatılıyor",
@@ -89,7 +91,7 @@
},
"qbittorrent": {
"download": "İndirme",
"upload": "Yükleme",
"upload": "Yükle",
"leech": "İsteyen",
"seed": "Sunan"
},
@@ -132,7 +134,7 @@
"pending": "Bekliyor",
"approved": "Onaylı",
"available": "Kullanılabilir",
"processing": "Processing"
"processing": "İşleniyor"
},
"pihole": {
"queries": "Sorgular",
@@ -280,8 +282,10 @@
"quicklaunch": {
"bookmark": "Yer İmi",
"service": "Hizmet",
"search": "Search",
"custom": "Custom"
"search": "Ara",
"custom": "Custom",
"visit": "Visit",
"url": "URL"
},
"homebridge": {
"available_update": "Sistem",
@@ -325,118 +329,195 @@
"total": "Toplam"
},
"gluetun": {
"public_ip": "Public IP",
"region": "Region",
"country": "Country"
"public_ip": "Açık IP",
"region": "Bölge",
"country": "Ülke"
},
"hdhomerun": {
"channels": "Channels",
"channels": "Kanallar",
"hd": "HD"
},
"ping": {
"error": "Error",
"error": "Hata",
"ping": "Ping"
},
"scrutiny": {
"passed": "Passed",
"failed": "Failed",
"unknown": "Unknown"
"passed": "Geçti",
"failed": "Başarısız",
"unknown": "Bilinmeyen"
},
"paperlessngx": {
"inbox": "Inbox",
"total": "Total"
"inbox": "Gelen Kutusu",
"total": "Toplam"
},
"deluge": {
"download": "Download",
"upload": "Upload",
"download": "İndir",
"upload": "Yükle",
"leech": "Leech",
"seed": "Seed"
"seed": "Tohum"
},
"flood": {
"download": "Download",
"upload": "Upload",
"download": "İndir",
"upload": "Yükle",
"leech": "Leech",
"seed": "Seed"
"seed": "Tohum"
},
"tdarr": {
"queue": "Queue",
"processed": "Processed",
"errored": "Errored",
"saved": "Saved"
"queue": "Sıra",
"processed": "İşlendi",
"errored": "Hatalı",
"saved": "Kaydedildi"
},
"miniflux": {
"read": "Read",
"unread": "Unread"
"read": "Oku",
"unread": "Okunmamış"
},
"nextdns": {
"wait": "Please Wait",
"no_devices": "No Device Data Received"
"wait": "Lütfen Bekle",
"no_devices": "Cihaz Verisi Alınamadı"
},
"common": {
"bibyterate": "{{value, rate(bits: false; binary: true)}}",
"bibitrate": "{{value, rate(bits: true; binary: true)}}"
},
"omada": {
"connectedAp": "Connected APs",
"activeUser": "Active devices",
"alerts": "Alerts",
"connectedGateway": "Connected gateways",
"connectedSwitches": "Connected switches"
"connectedAp": "Bağlı AP'ler",
"activeUser": "Aktif cihazlar",
"alerts": "Alarmlar",
"connectedGateway": "Bağlı ağ geçitleri",
"connectedSwitches": "Bağlı anahtarlar"
},
"downloadstation": {
"download": "Download",
"upload": "Upload",
"download": "İndir",
"upload": "Yükle",
"leech": "Leech",
"seed": "Seed"
"seed": "Tohum"
},
"mikrotik": {
"cpuLoad": "CPU Load",
"memoryUsed": "Memory Used",
"uptime": "Uptime",
"cpuLoad": "CPU Yükü",
"memoryUsed": "Bellek Kullanımı",
"uptime": "Çalışma Süresi",
"numberOfLeases": "Leases"
},
"xteve": {
"streams_all": "All Streams",
"streams_active": "Active Streams",
"streams_xepg": "XEPG Channels"
"streams_all": "Tüm Akışlar",
"streams_active": "Aktif Akışlar",
"streams_xepg": "XEPG Kanalları"
},
"opnsense": {
"cpu": "CPU Load",
"memory": "Active Memory",
"wanUpload": "WAN Upload",
"wanDownload": "WAN Download"
"cpu": "CPU Yükü",
"memory": "Aktif Bellek",
"wanUpload": "WAN Yükleme",
"wanDownload": "WAN İndirme"
},
"moonraker": {
"printer_state": "Printer State",
"print_status": "Print Status",
"print_progress": "Progress",
"layers": "Layers"
"printer_state": "Yazıcı Durumu",
"print_status": "Yazıcı Durumu",
"print_progress": "İlerleme",
"layers": "Katmanlar"
},
"medusa": {
"wanted": "Wanted",
"queued": "Queued",
"series": "Series"
"queued": "Kuyrukta",
"series": "Seri"
},
"octoprint": {
"printer_state": "Status",
"temp_tool": "Tool temp",
"temp_bed": "Bed temp",
"printer_state": "Durum",
"temp_tool": "Araç sıcaklığı",
"temp_bed": "Yatak sıcaklığı",
"job_completion": "Completion"
},
"cloudflared": {
"origin_ip": "Origin IP",
"status": "Status"
"status": "Durum"
},
"proxmoxbackupserver": {
"datastore_usage": "Datastore",
"failed_tasks_24h": "Failed Tasks 24h",
"cpu_usage": "CPU",
"memory_usage": "Memory"
"memory_usage": "Bellek"
},
"immich": {
"users": "Users",
"photos": "Photos",
"videos": "Videos",
"storage": "Storage"
"users": "Kullanıcılar",
"photos": "Fotoğraflar",
"videos": "Videolar",
"storage": "Depo"
},
"uptimekuma": {
"up": "Sites Up",
"down": "Sites Down",
"uptime": "Çalışma Süresi",
"incident": "Incident",
"m": "m"
},
"komga": {
"libraries": "Kütüphane",
"series": "Series",
"books": "Kitaplar"
},
"mylar": {
"series": "Seriler",
"issues": "Sorunlar",
"wanted": "Aranan"
},
"photoprism": {
"albums": "Albümler",
"photos": "Fotoğraflar",
"videos": "Videolar",
"people": "İnsan"
},
"diskstation": {
"days": "Gün",
"uptime": "Çalışma Süresi",
"volumeAvailable": "Mevcut"
},
"fileflows": {
"queue": "Queue",
"processing": "Processing",
"processed": "Processed",
"time": "Time"
},
"grafana": {
"dashboards": "Dashboards",
"datasources": "Data Sources",
"totalalerts": "Total Alerts",
"alertstriggered": "Alerts Triggered"
},
"nextcloud": {
"cpuload": "Cpu Load",
"memoryusage": "Memory Usage",
"freespace": "Free Space",
"activeusers": "Active Users"
},
"kopia": {
"status": "Status",
"size": "Size",
"lastrun": "Last Run",
"nextrun": "Next Run",
"failed": "Failed"
},
"unmanic": {
"active_workers": "Active Workers",
"total_workers": "Total Workers",
"records_total": "Queue Length"
},
"healthchecks": {
"new": "New",
"up": "Online",
"grace": "In Grace Period",
"down": "Offline",
"paused": "Paused",
"status": "Status",
"last_ping": "Last Ping",
"never": "No pings yet"
},
"pterodactyl": {
"servers": "Servers",
"nodes": "Nodes"
},
"prometheus": {
"targets_up": "Targets Up",
"targets_down": "Targets Down",
"targets_total": "Total Targets"
}
}
+84 -3
View File
@@ -127,7 +127,8 @@
"total": "Всього",
"free": "Вільно",
"used": "Використано",
"load": "Навантаження"
"load": "Навантаження",
"mem": "Пам'ять"
},
"unifi": {
"users": "Користувачі",
@@ -143,7 +144,8 @@
"wlan_users": "WLAN користувачі",
"up": "Відправка",
"down": "Завантаження",
"wait": "Будь ласка, зачекайте"
"wait": "Будь ласка, зачекайте",
"empty_data": "Статус підсистеми невідомий"
},
"docker": {
"rx": "RX",
@@ -343,7 +345,9 @@
"bookmark": "Закладка",
"service": "Сервіс",
"search": "Пошук",
"custom": "Користувацький"
"custom": "Користувацький",
"visit": "Visit",
"url": "URL"
},
"homebridge": {
"available_update": "Система",
@@ -438,5 +442,82 @@
"photos": "Фотографії",
"videos": "Відео",
"storage": "Сховище"
},
"uptimekuma": {
"up": "Активні сайти",
"down": "Неактивні сайти",
"uptime": "Час роботи",
"incident": "Інцидент",
"m": "хв"
},
"komga": {
"libraries": "Бібліотеки",
"series": "Серії",
"books": "Книжки"
},
"mylar": {
"series": "Серії",
"issues": "Питання",
"wanted": "Розшукується"
},
"photoprism": {
"albums": "Альбоми",
"photos": "Фото",
"videos": "Відео",
"people": "Люди"
},
"diskstation": {
"days": "Днів",
"uptime": "Час роботи",
"volumeAvailable": "Доступно"
},
"fileflows": {
"queue": "Черга",
"processing": "Обробка",
"processed": "Оброблено",
"time": "Час"
},
"grafana": {
"dashboards": "Інформаційні панелі",
"datasources": "Джерела даних",
"totalalerts": "Всього сповіщень",
"alertstriggered": "Спрацювали сповіщення"
},
"nextcloud": {
"cpuload": "Навантаження Cpu",
"memoryusage": "Використання пам'яті",
"freespace": "Вільного місця",
"activeusers": "Активні користувачі"
},
"kopia": {
"status": "Статус",
"size": "Розмір",
"lastrun": "Останній запуск",
"nextrun": "Наступний запуск",
"failed": "Помилка"
},
"unmanic": {
"active_workers": "Активні працівники",
"total_workers": "Всього робітників",
"records_total": "Довжина черги"
},
"healthchecks": {
"new": "Новий",
"up": "Онлайн",
"down": "Офлайн",
"grace": "У пільговий період",
"paused": "Призупинено",
"status": "Стан",
"last_ping": "Останній пінг",
"never": "Пінгів ще немає"
},
"pterodactyl": {
"servers": "Сервери",
"nodes": "Вузли"
},
"prometheus": {
"targets_up": "Targets Up",
"targets_down": "Targets Down",
"targets_total": "Total Targets"
}
}
+84 -3
View File
@@ -16,7 +16,8 @@
"free": "Dư",
"used": "Đã dùng",
"load": "Load",
"cpu": "CPU"
"cpu": "CPU",
"mem": "MEM"
},
"docker": {
"rx": "RX",
@@ -203,7 +204,8 @@
"wlan": "WLAN",
"devices": "Devices",
"lan_devices": "LAN Devices",
"wlan_devices": "WLAN Devices"
"wlan_devices": "WLAN Devices",
"empty_data": "Subsystem status unknown"
},
"plex": {
"streams": "Active Streams",
@@ -281,7 +283,9 @@
"bookmark": "Bookmark",
"service": "Service",
"search": "Search",
"custom": "Custom"
"custom": "Custom",
"visit": "Visit",
"url": "URL"
},
"homebridge": {
"available_update": "System",
@@ -438,5 +442,82 @@
"photos": "Photos",
"videos": "Videos",
"storage": "Storage"
},
"uptimekuma": {
"up": "Sites Up",
"down": "Sites Down",
"uptime": "Uptime",
"incident": "Incident",
"m": "m"
},
"komga": {
"libraries": "Libraries",
"series": "Series",
"books": "Books"
},
"mylar": {
"series": "Series",
"issues": "Issues",
"wanted": "Wanted"
},
"photoprism": {
"photos": "Photos",
"videos": "Videos",
"people": "People",
"albums": "Albums"
},
"diskstation": {
"days": "Days",
"uptime": "Uptime",
"volumeAvailable": "Available"
},
"fileflows": {
"queue": "Queue",
"processing": "Processing",
"processed": "Processed",
"time": "Time"
},
"grafana": {
"dashboards": "Dashboards",
"datasources": "Data Sources",
"totalalerts": "Total Alerts",
"alertstriggered": "Alerts Triggered"
},
"nextcloud": {
"cpuload": "Cpu Load",
"memoryusage": "Memory Usage",
"freespace": "Free Space",
"activeusers": "Active Users"
},
"kopia": {
"status": "Status",
"size": "Size",
"lastrun": "Last Run",
"nextrun": "Next Run",
"failed": "Failed"
},
"unmanic": {
"active_workers": "Active Workers",
"total_workers": "Total Workers",
"records_total": "Queue Length"
},
"healthchecks": {
"new": "New",
"up": "Online",
"grace": "In Grace Period",
"down": "Offline",
"paused": "Paused",
"status": "Status",
"last_ping": "Last Ping",
"never": "No pings yet"
},
"pterodactyl": {
"servers": "Servers",
"nodes": "Nodes"
},
"prometheus": {
"targets_up": "Targets Up",
"targets_down": "Targets Down",
"targets_total": "Total Targets"
}
}
+84 -3
View File
@@ -40,7 +40,8 @@
"free": "剩餘",
"used": "用咗",
"load": "負荷",
"cpu": "CPU"
"cpu": "CPU",
"mem": "MEM"
},
"docker": {
"rx": "接收",
@@ -203,7 +204,8 @@
"wlan": "WLAN",
"devices": "Devices",
"lan_devices": "LAN Devices",
"wlan_devices": "WLAN Devices"
"wlan_devices": "WLAN Devices",
"empty_data": "Subsystem status unknown"
},
"plex": {
"streams": "Active Streams",
@@ -281,7 +283,9 @@
"bookmark": "Bookmark",
"service": "Service",
"search": "Search",
"custom": "Custom"
"custom": "Custom",
"visit": "Visit",
"url": "URL"
},
"homebridge": {
"available_update": "System",
@@ -438,5 +442,82 @@
"photos": "Photos",
"videos": "Videos",
"storage": "Storage"
},
"uptimekuma": {
"up": "Sites Up",
"down": "Sites Down",
"uptime": "Uptime",
"incident": "Incident",
"m": "m"
},
"komga": {
"libraries": "Libraries",
"series": "Series",
"books": "Books"
},
"mylar": {
"series": "Series",
"issues": "Issues",
"wanted": "Wanted"
},
"photoprism": {
"albums": "Albums",
"photos": "Photos",
"videos": "Videos",
"people": "People"
},
"diskstation": {
"days": "Days",
"uptime": "Uptime",
"volumeAvailable": "Available"
},
"fileflows": {
"queue": "Queue",
"processed": "Processed",
"time": "Time",
"processing": "Processing"
},
"grafana": {
"dashboards": "Dashboards",
"datasources": "Data Sources",
"totalalerts": "Total Alerts",
"alertstriggered": "Alerts Triggered"
},
"nextcloud": {
"cpuload": "Cpu Load",
"memoryusage": "Memory Usage",
"freespace": "Free Space",
"activeusers": "Active Users"
},
"kopia": {
"lastrun": "Last Run",
"nextrun": "Next Run",
"failed": "Failed",
"status": "Status",
"size": "Size"
},
"unmanic": {
"active_workers": "Active Workers",
"total_workers": "Total Workers",
"records_total": "Queue Length"
},
"healthchecks": {
"new": "New",
"up": "Online",
"grace": "In Grace Period",
"down": "Offline",
"paused": "Paused",
"status": "Status",
"last_ping": "Last Ping",
"never": "No pings yet"
},
"pterodactyl": {
"servers": "Servers",
"nodes": "Nodes"
},
"prometheus": {
"targets_up": "Targets Up",
"targets_down": "Targets Down",
"targets_total": "Total Targets"
}
}
+107 -26
View File
@@ -16,7 +16,8 @@
"free": "空闲",
"used": "已用",
"load": "负载",
"cpu": "CPU"
"cpu": "处理器",
"mem": "内存"
},
"docker": {
"rx": "接收",
@@ -186,8 +187,8 @@
"proxmox": {
"mem": "内存",
"cpu": "处理器",
"lxc": "LXC",
"vms": "VMs"
"lxc": "容器",
"vms": "虚拟机"
},
"unifi": {
"users": "用户",
@@ -203,7 +204,8 @@
"wlan": "无线局域网",
"devices": "设备",
"lan_devices": "局域网设备",
"wlan_devices": "无线局域网设备"
"wlan_devices": "无线局域网设备",
"empty_data": "子系统状态未知"
},
"plex": {
"streams": "活动流",
@@ -228,8 +230,8 @@
"45-day": "有雾",
"48-day": "有雾",
"51-day": "小雨",
"73-night": "Snow",
"75-day": "Heavy Snow",
"73-night": "中雪",
"75-day": "大雪",
"1-night": "大部晴朗",
"2-day": "多云",
"2-night": "多云",
@@ -254,10 +256,10 @@
"66-night": "Freezing Rain",
"67-day": "Freezing Rain",
"67-night": "Freezing Rain",
"71-day": "Light Snow",
"71-night": "Light Snow",
"73-day": "Snow",
"75-night": "Heavy Snow",
"71-day": "小雪",
"71-night": "小雪",
"73-day": "中雪",
"75-night": "大雪",
"77-day": "Snow Grains",
"77-night": "Snow Grains",
"80-day": "Light Showers",
@@ -280,8 +282,10 @@
"quicklaunch": {
"bookmark": "书签",
"service": "服务",
"search": "Search",
"custom": "Custom"
"search": "搜索",
"custom": "Custom",
"visit": "Visit",
"url": "URL"
},
"homebridge": {
"available_update": "System",
@@ -309,8 +313,8 @@
"playlists": "Playlists"
},
"truenas": {
"load": "System Load",
"uptime": "Uptime",
"load": "系统负载",
"uptime": "运行时间",
"alerts": "警报",
"time": "{{value, number(style: unit; unitDisplay: long;)}}"
},
@@ -390,10 +394,10 @@
"seed": "做种"
},
"mikrotik": {
"cpuLoad": "CPU Load",
"memoryUsed": "Memory Used",
"uptime": "Uptime",
"numberOfLeases": "Leases"
"cpuLoad": "处理器负载",
"memoryUsed": "内存使用",
"uptime": "运行时间",
"numberOfLeases": "已连接"
},
"xteve": {
"streams_all": "All Streams",
@@ -401,10 +405,10 @@
"streams_xepg": "XEPG Channels"
},
"opnsense": {
"cpu": "CPU Load",
"memory": "Active Memory",
"wanUpload": "WAN Upload",
"wanDownload": "WAN Download"
"cpu": "处理器负载",
"memory": "空闲内存",
"wanUpload": "WAN上传",
"wanDownload": "WAN下载"
},
"moonraker": {
"printer_state": "Printer State",
@@ -428,15 +432,92 @@
"status": "Status"
},
"proxmoxbackupserver": {
"datastore_usage": "Datastore",
"failed_tasks_24h": "Failed Tasks 24h",
"cpu_usage": "CPU",
"memory_usage": "Memory"
"datastore_usage": "数据存储",
"failed_tasks_24h": "24h失败任务",
"cpu_usage": "处理器",
"memory_usage": "内存"
},
"immich": {
"users": "Users",
"photos": "Photos",
"videos": "Videos",
"storage": "Storage"
},
"uptimekuma": {
"up": "在线网站",
"down": "离线网站",
"uptime": "运行时间",
"incident": "严重事件",
"m": "m"
},
"komga": {
"libraries": "书库",
"series": "系列",
"books": "书刊"
},
"mylar": {
"series": "系列",
"issues": "Issues",
"wanted": "Wanted"
},
"photoprism": {
"albums": "相册",
"photos": "照片",
"videos": "视频",
"people": "人物"
},
"diskstation": {
"uptime": "运行时间",
"volumeAvailable": "剩余存储",
"days": "天"
},
"fileflows": {
"queue": "Queue",
"processing": "Processing",
"processed": "Processed",
"time": "Time"
},
"grafana": {
"totalalerts": "Total Alerts",
"dashboards": "Dashboards",
"datasources": "Data Sources",
"alertstriggered": "Alerts Triggered"
},
"nextcloud": {
"cpuload": "Cpu Load",
"memoryusage": "Memory Usage",
"freespace": "Free Space",
"activeusers": "Active Users"
},
"kopia": {
"status": "Status",
"size": "Size",
"lastrun": "Last Run",
"nextrun": "Next Run",
"failed": "Failed"
},
"unmanic": {
"active_workers": "Active Workers",
"total_workers": "Total Workers",
"records_total": "Queue Length"
},
"healthchecks": {
"new": "New",
"up": "Online",
"grace": "In Grace Period",
"down": "Offline",
"paused": "Paused",
"status": "Status",
"last_ping": "Last Ping",
"never": "No pings yet"
},
"pterodactyl": {
"servers": "Servers",
"nodes": "Nodes"
},
"prometheus": {
"targets_up": "Targets Up",
"targets_down": "Targets Down",
"targets_total": "Total Targets"
}
}
+110 -29
View File
@@ -4,9 +4,9 @@
"api_error": "API錯誤",
"status": "狀態",
"information": "資訊",
"url": "URL",
"raw_error": "Raw Error",
"response_data": "Response Data"
"url": "網址",
"raw_error": "原始錯誤",
"response_data": "回復數據"
},
"weather": {
"current": "目前位置",
@@ -36,9 +36,9 @@
"no_active": "無播放活動"
},
"jellyseerr": {
"pending": "待定",
"approved": "已接受",
"available": "可用的"
"pending": "待下載",
"approved": "已核准",
"available": "可觀看"
},
"search": {
"placeholder": "搜尋…"
@@ -48,7 +48,8 @@
"free": "剩餘",
"used": "已使用",
"load": "負載",
"cpu": "CPU"
"cpu": "CPU",
"mem": "記憶體"
},
"nzbget": {
"rate": "速率",
@@ -82,14 +83,14 @@
"books": "書籍"
},
"ombi": {
"pending": "待定",
"approved": "已接受",
"available": "可用的"
"pending": "待下載",
"approved": "已核准",
"available": "可觀看"
},
"overseerr": {
"pending": "待定",
"approved": "已接受",
"available": "可用的",
"pending": "待下載",
"approved": "已核准",
"available": "可觀看",
"processing": "處理中"
},
"pihole": {
@@ -196,14 +197,15 @@
"wan": "WAN",
"lan_users": "LAN使用者",
"wlan_users": "WLAN使用者",
"up": "UP",
"down": "DOWN",
"up": "上線",
"down": "離線",
"wait": "請稍後",
"lan": "LAN",
"wlan": "WLAN",
"devices": "設備",
"lan_devices": "LAN設備",
"wlan_devices": "WLAN設備"
"wlan_devices": "WLAN設備",
"empty_data": "子系統狀態未知"
},
"plex": {
"streams": "正在播放",
@@ -280,8 +282,10 @@
"quicklaunch": {
"bookmark": "書籤",
"service": "服務",
"search": "Search",
"custom": "Custom"
"search": "搜尋",
"custom": "自訂",
"visit": "Visit",
"url": "URL"
},
"homebridge": {
"available_update": "系統",
@@ -292,7 +296,7 @@
"child_bridges_status": "{{ok}}/{{total}}"
},
"autobrr": {
"approvedPushes": "接受",
"approvedPushes": "已核准",
"rejectedPushes": "拒絕",
"filters": "篩選器",
"indexers": "索引器"
@@ -402,7 +406,7 @@
},
"opnsense": {
"cpu": "CPU負載",
"memory": "Active Memory",
"memory": "記憶體",
"wanUpload": "WAN上傳",
"wanDownload": "WAN下載"
},
@@ -424,19 +428,96 @@
"job_completion": "完成度"
},
"cloudflared": {
"origin_ip": "Origin IP",
"status": "Status"
"origin_ip": "源頭IP",
"status": "狀態"
},
"proxmoxbackupserver": {
"datastore_usage": "Datastore",
"failed_tasks_24h": "Failed Tasks 24h",
"datastore_usage": "數據存儲",
"failed_tasks_24h": "24小時內失敗任務",
"cpu_usage": "CPU",
"memory_usage": "Memory"
"memory_usage": "記憶體"
},
"immich": {
"users": "Users",
"photos": "Photos",
"videos": "Videos",
"storage": "Storage"
"users": "使用者",
"photos": "照片",
"videos": "影片",
"storage": "儲存空間"
},
"uptimekuma": {
"up": "在線網站",
"down": "離線網站",
"uptime": "在線時間",
"incident": "事件",
"m": "m"
},
"komga": {
"libraries": "文庫",
"series": "叢刊",
"books": "書刊"
},
"mylar": {
"series": "系列",
"issues": "出版",
"wanted": "關注中"
},
"photoprism": {
"albums": "相簿",
"photos": "照片",
"videos": "影片",
"people": "人物"
},
"diskstation": {
"days": "天",
"uptime": "運行時間",
"volumeAvailable": "剩餘容量"
},
"fileflows": {
"queue": "佇列",
"processing": "處理中",
"processed": "已處理",
"time": "時間"
},
"grafana": {
"dashboards": "控制面板",
"datasources": "數據來源",
"totalalerts": "警報總數",
"alertstriggered": "觸發的警報"
},
"nextcloud": {
"cpuload": "處理器負載",
"memoryusage": "記憶體用量",
"freespace": "可用空間",
"activeusers": "活躍用戶"
},
"kopia": {
"status": "狀態",
"size": "檔案大小",
"lastrun": "上次運行",
"nextrun": "下次運行",
"failed": "失敗"
},
"unmanic": {
"active_workers": "Active Workers",
"total_workers": "Total Workers",
"records_total": "Queue Length"
},
"healthchecks": {
"new": "新建立",
"up": "上線",
"grace": "延緩中",
"down": "離線",
"paused": "擱置中",
"status": "狀態",
"last_ping": "上次檢查",
"never": "尚未檢查"
},
"pterodactyl": {
"servers": "Servers",
"nodes": "Nodes"
},
"prometheus": {
"targets_up": "Targets Up",
"targets_down": "Targets Down",
"targets_total": "Total Targets"
}
}
+25 -3
View File
@@ -6,14 +6,16 @@ import ResolvedIcon from "./resolvedicon";
import { SettingsContext } from "utils/contexts/settings";
export default function QuickLaunch({servicesAndBookmarks, searchString, setSearchString, isOpen, close, searchDescriptions, searchProvider}) {
export default function QuickLaunch({servicesAndBookmarks, searchString, setSearchString, isOpen, close, searchProvider}) {
const { t } = useTranslation();
const { settings } = useContext(SettingsContext);
const { searchDescriptions, hideVisitURL } = settings?.quicklaunch ? settings.quicklaunch : { searchDescriptions: false, hideVisitURL: false };
const searchField = useRef();
const [results, setResults] = useState([]);
const [currentItemIndex, setCurrentItemIndex] = useState(null);
const [url, setUrl] = useState(null);
function openCurrentItem(newWindow) {
const result = results[currentItemIndex];
@@ -29,7 +31,16 @@ export default function QuickLaunch({servicesAndBookmarks, searchString, setSear
}, [close, setSearchString, setCurrentItemIndex]);
function handleSearchChange(event) {
setSearchString(event.target.value.toLowerCase())
const rawSearchString = event.target.value.toLowerCase();
try {
if (!/.+[.:].+/g.test(rawSearchString)) throw new Error(); // basic test for probably a url
let urlString = rawSearchString;
if (urlString.indexOf('http') !== 0) urlString = `https://${rawSearchString}`;
setUrl(new URL(urlString)); // basic validation
} catch (e) {
setUrl(null);
}
setSearchString(rawSearchString);
}
function handleSearchKeyDown(event) {
@@ -76,6 +87,7 @@ export default function QuickLaunch({servicesAndBookmarks, searchString, setSear
if (searchDescriptions) {
newResults = newResults.sort((a, b) => b.priority - a.priority);
}
if (searchProvider) {
newResults.push(
{
@@ -86,13 +98,23 @@ export default function QuickLaunch({servicesAndBookmarks, searchString, setSear
)
}
if (!hideVisitURL && url) {
newResults.unshift(
{
href: url.toString(),
name: `${t("quicklaunch.visit")} URL`,
type: 'url',
}
)
}
setResults(newResults);
if (newResults.length) {
setCurrentItemIndex(0);
}
}
}, [searchString, servicesAndBookmarks, searchDescriptions, searchProvider, t]);
}, [searchString, servicesAndBookmarks, searchDescriptions, hideVisitURL, searchProvider, url, t]);
const [hidden, setHidden] = useState(true);
+1 -1
View File
@@ -91,7 +91,7 @@ export default function Item({ service }) {
<span className="sr-only">View container stats</span>
</button>
)}
{service.app && (
{(service.app && !service.external) && (
<button
type="button"
onClick={() => (statsOpen ? closeStats() : setStatsOpen(true))}
+2 -2
View File
@@ -12,7 +12,7 @@ export default function Status({ service }) {
</div>
}
if (data && data.status === "running") {
if (data && data.status?.includes("running")) {
if (data.health === "starting") {
return (
<div className="w-auto px-1.5 py-0.5 text-center bg-theme-500/10 dark:bg-theme-900/50 rounded-b-[3px] overflow-hidden" title={data.health}>
@@ -36,7 +36,7 @@ export default function Status({ service }) {
);
}
if (data && (data.status === "not found" || data.status === "exited")) {
if (data && (data.status === "not found" || data.status === "exited" || data.status?.startsWith("partial"))) {
return (
<div className="w-auto px-1.5 py-0.5 text-center bg-theme-500/10 dark:bg-theme-900/50 rounded-b-[3px] overflow-hidden" title={data.status}>
<div className="text-[8px] font-bold text-orange-400/50 dark:text-orange-400/80 uppercase">{data.status}</div>
+12 -1
View File
@@ -9,7 +9,18 @@ export default function Container({ error = false, children, service }) {
const fields = service?.widget?.fields;
const type = service?.widget?.type;
if (fields && type) {
visibleChildren = children.filter(child => fields.some(field => `${type}.${field}` === child?.props?.label));
// if the field contains a "." then it most likely contains a common loc value
// logic now allows a fields array that can look like:
// fields: [ "resources.cpu", "resources.mem", "field"]
// or even
// fields: [ "resources.cpu", "widget_type.field" ]
visibleChildren = children.filter(child => fields.some(field => {
let fullField = field;
if (!field.includes(".")) {
fullField = `${type}.${field}`;
}
return fullField === child?.props?.label;
}));
}
return <div className="relative flex flex-row w-full">{visibleChildren}</div>;
@@ -20,7 +20,6 @@ export default function Widget({ options }) {
<BiError className="w-8 h-8 text-theme-800 dark:text-theme-200" />
<div className="flex flex-col ml-3 text-left">
<span className="text-theme-800 dark:text-theme-200 text-sm">{t("widget.api_error")}</span>
<span className="text-theme-800 dark:text-theme-200 text-xs">-</span>
</div>
</div>
</div>
@@ -28,7 +27,7 @@ export default function Widget({ options }) {
);
}
const defaultSite = statsData?.data?.find(s => s.name === "default");
const defaultSite = options.site ? statsData?.data.find(s => s.desc === options.site) : statsData?.data?.find(s => s.name === "default");
if (!defaultSite) {
return (
@@ -55,6 +54,8 @@ export default function Widget({ options }) {
const name = wan.gw_name ?? defaultSite.desc;
const uptime = wan["gw_system-stats"] ? wan["gw_system-stats"].uptime : null;
const dataEmpty = !(wan.show || lan.show || wlan.show || uptime);
return (
<div className="flex-none flex flex-row items-center mr-3 py-1.5">
<div className="flex flex-col">
@@ -64,6 +65,14 @@ export default function Widget({ options }) {
{name}
</div>
</div>
{dataEmpty && <div className="flex flex-row ml-3 text-[8px] justify-between">
<div className="flex flex-row items-center justify-end">
<div className="flex flex-row">
<BiError className="w-4 h-4 text-theme-800 dark:text-theme-200" />
<span className="text-theme-800 dark:text-theme-200 text-xs">{t("unifi.empty_data")}</span>
</div>
</div>
</div>}
<div className="flex flex-row ml-3 text-[10px] justify-between">
{uptime && <div className="flex flex-row" title={t("unifi.uptime")}>
<div className="pr-0.5 text-theme-800 dark:text-theme-200">
-1
View File
@@ -6,7 +6,6 @@ import Head from "next/head";
import "styles/globals.css";
import "styles/theme.css";
import "styles/manrope.css";
import "styles/custom.css";
import nextI18nextConfig from "../../next-i18next.config";
import { ColorProvider } from "utils/contexts/color";
+16 -8
View File
@@ -53,17 +53,25 @@ export default async function handler(req, res) {
})
.catch(() => []);
// For now we are only interested in the first one (in case replicas > 1).
// TODO: Show the result for all replicas/containers?
const taskContainerId = tasks.at(0)?.Status?.ContainerStatus?.ContainerID;
// We can only get stats for 'local' containers so try to find one
const localContainerIDs = containers.map(c => c.Id);
const task = tasks.find(t => localContainerIDs.includes(t.Status?.ContainerStatus?.ContainerID)) ?? tasks.at(0);
const taskContainerId = task?.Status?.ContainerStatus?.ContainerID;
if (taskContainerId) {
const container = docker.getContainer(taskContainerId);
const stats = await container.stats({ stream: false });
try {
const container = docker.getContainer(taskContainerId);
const stats = await container.stats({ stream: false });
return res.status(200).json({
stats,
});
return res.status(200).json({
stats,
});
} catch (e) {
return res.status(200).json({
error: "Unable to retrieve stats"
})
}
}
}
+49 -16
View File
@@ -44,32 +44,65 @@ export default async function handler(req, res) {
}
if (dockerArgs.swarm) {
const tasks = await docker.listTasks({
const serviceInfo = await docker.getService(containerName).inspect()
.catch(() => undefined);
if (!serviceInfo) {
return res.status(404).send({
status: "not found",
});
}
const tasks = await docker
.listTasks({
filters: {
service: [containerName],
// A service can have several offline containers, we only look for an active one.
"desired-state": ["running"],
},
})
.catch(() => []);
// For now we are only interested in the first one (in case replicas > 1).
// TODO: Show the result for all replicas/containers?
const taskContainerId = tasks.at(0)?.Status?.ContainerStatus?.ContainerID;
if (taskContainerId) {
const container = docker.getContainer(taskContainerId);
const info = await container.inspect();
return res.status(200).json({
status: info.State.Status,
health: info.State.Health?.Status,
});
if (serviceInfo.Spec.Mode?.Replicated) {
// Replicated service, check n replicas
const replicas = parseInt(serviceInfo.Spec.Mode?.Replicated?.Replicas, 10);
if (tasks.length === replicas) {
return res.status(200).json({
status: `running ${tasks.length}/${replicas}`,
});
}
if (tasks.length > 0) {
return res.status(200).json({
status: `partial ${tasks.length}/${replicas}`,
});
}
} else {
// Global service, prefer 'local' containers
const localContainerIDs = containers.map(c => c.Id);
const task = tasks.find(t => localContainerIDs.includes(t.Status?.ContainerStatus?.ContainerID)) ?? tasks.at(0);
const taskContainerId = task?.Status?.ContainerStatus?.ContainerID;
if (taskContainerId) {
try {
const container = docker.getContainer(taskContainerId);
const info = await container.inspect();
return res.status(200).json({
status: info.State.Status,
health: info.State.Health?.Status,
});
} catch (e) {
if (task) {
return res.status(200).json({
status: task.Status.State
})
}
}
}
}
}
return res.status(200).send({
error: "not found",
return res.status(404).send({
status: "not found",
});
} catch (e) {
logger.error(e);
+4 -1
View File
@@ -19,7 +19,10 @@ export default async function handler(req, res) {
return hash(readFileSync(configYaml, "utf8"));
});
const combinedHash = hash(hashes.join(""));
// this ties hash to specific build which should force revaliation between versions
const buildTime = process.env.NEXT_PUBLIC_BUILDTIME?.length ? process.env.NEXT_PUBLIC_BUILDTIME : '';
const combinedHash = hash(hashes.join("") + buildTime);
res.send({
hash: combinedHash,
+1
View File
@@ -32,6 +32,7 @@ export default async function handler(req, res) {
}
req.method = mapping?.method || "GET";
if (mapping?.body) req.body = mapping?.body;
req.query.endpoint = endpoint;
if (req.query.segments) {
+5 -6
View File
@@ -100,7 +100,7 @@ function Index({ initialSettings, fallback }) {
localStorage.setItem("hash", hashData.hash);
}
if (!initialSettings.isValid || (previousHash && previousHash !== hashData.hash)) {
if (previousHash && previousHash !== hashData.hash) {
setStale(true);
localStorage.setItem("hash", hashData.hash);
@@ -112,7 +112,7 @@ function Index({ initialSettings, fallback }) {
}
}
}
}, [hashData, initialSettings]);
}, [hashData]);
if (stale) {
return (
@@ -175,7 +175,7 @@ function Home({ initialSettings }) {
const { data: services } = useSWR("/api/services");
const { data: bookmarks } = useSWR("/api/bookmarks");
const { data: widgets } = useSWR("/api/widgets");
const servicesAndBookmarks = [...services.map(sg => sg.services).flat(), ...bookmarks.map(bg => bg.bookmarks).flat()]
useEffect(() => {
@@ -252,7 +252,7 @@ function Home({ initialSettings }) {
/>
<meta name="theme-color" content={themes[initialSettings.color || "slate"][initialSettings.theme || "dark"]} />
</Head>
<div className="relative container m-auto flex flex-col justify-between z-10">
<div className="relative container m-auto flex flex-col justify-between z-10 h-full">
<div
className={classNames(
"flex flex-row flex-wrap justify-between",
@@ -265,7 +265,6 @@ function Home({ initialSettings }) {
setSearchString={setSearchString}
isOpen={searching}
close={setSearching}
searchDescriptions={settings.quicklaunch?.searchDescriptions}
searchProvider={settings.quicklaunch?.hideInternetSearch ? null : searchProvider}
/>
{widgets && (
@@ -310,7 +309,7 @@ function Home({ initialSettings }) {
</div>
<div className="flex p-8 pt-4 w-full justify-end">
<Version />
{!initialSettings?.hideVersion && <Version />}
</div>
</div>
</>
-3
View File
@@ -1,3 +0,0 @@
/*
Mount this file and define your custom styles
*/
+2 -15
View File
@@ -1,6 +1,6 @@
/* eslint-disable no-console */
import { join } from "path";
import { existsSync, copyFile, readFileSync, statSync } from "fs";
import { existsSync, copyFile, readFileSync } from "fs";
import yaml from "js-yaml";
@@ -32,18 +32,5 @@ export function getSettings() {
const settingsYaml = join(process.cwd(), "config", "settings.yaml");
const fileContents = readFileSync(settingsYaml, "utf8");
let stats;
try {
stats = statSync(settingsYaml);
} catch (e) {
stats = {};
}
const yamlLoaded = yaml.load(fileContents) ?? {};
return {
...yamlLoaded,
isValid: fileContents !== "-\n" && stats.size !== 2 // see https://github.com/benphelps/homepage/pull/609
};
return yaml.load(fileContents) ?? {};
}
+11
View File
@@ -164,10 +164,17 @@ export async function servicesFromKubernetes() {
weight: ingress.metadata.annotations[`${ANNOTATION_BASE}/weight`] || '0',
icon: ingress.metadata.annotations[`${ANNOTATION_BASE}/icon`] || '',
description: ingress.metadata.annotations[`${ANNOTATION_BASE}/description`] || '',
external: false,
};
if (ingress.metadata.annotations[`${ANNOTATION_BASE}/external`]) {
constructedService.external = String(ingress.metadata.annotations[`${ANNOTATION_BASE}/external`]).toLowerCase() === "true"
}
if (ingress.metadata.annotations[ANNOTATION_POD_SELECTOR]) {
constructedService.podSelector = ingress.metadata.annotations[ANNOTATION_POD_SELECTOR];
}
if (ingress.metadata.annotations[`${ANNOTATION_BASE}/ping`]) {
constructedService.ping = ingress.metadata.annotations[`${ANNOTATION_BASE}/ping`];
}
Object.keys(ingress.metadata.annotations).forEach((annotation) => {
if (annotation.startsWith(ANNOTATION_WIDGET_BASE)) {
shvl.set(constructedService, annotation.replace(`${ANNOTATION_BASE}/`, ""), ingress.metadata.annotations[annotation]);
@@ -233,6 +240,7 @@ export function cleanServiceGroups(groups) {
currency, // coinmarketcap widget
symbols,
defaultinterval,
site, // unifi widget
namespace, // kubernetes widget
app,
podSelector,
@@ -256,6 +264,9 @@ export function cleanServiceGroups(groups) {
if (server) cleanedService.widget.server = server;
if (container) cleanedService.widget.container = container;
}
if (type === "unifi") {
if (site) cleanedService.widget.site = site;
}
if (type === "kubernetes") {
if (namespace) cleanedService.widget.namespace = namespace;
if (app) cleanedService.widget.app = app;
+9
View File
@@ -53,3 +53,12 @@ export function jsonArrayTransform(data, transform) {
export function jsonArrayFilter(data, filter) {
return jsonArrayTransform(data, (items) => items.filter(filter));
}
export function sanitizeErrorURL(errorURL) {
// Dont display sensitive params on frontend
const url = new URL(errorURL);
["apikey", "api_key", "token", "t"].forEach(key => {
if (url.searchParams.has(key)) url.searchParams.set(key, "***")
});
return url.toString();
}
+1 -1
View File
@@ -34,6 +34,6 @@ export function addCookieToJar(url, headers) {
}
for (let i = 0; i < cookies.length; i += 1) {
cookieJar.setCookieSync(cookies[i], url.toString());
cookieJar.setCookieSync(cookies[i], url.toString(), { ignoreError: true });
}
}
+8 -4
View File
@@ -1,5 +1,5 @@
import getServiceWidget from "utils/config/service-helpers";
import { formatApiCall } from "utils/proxy/api-helpers";
import { formatApiCall, sanitizeErrorURL } from "utils/proxy/api-helpers";
import validateWidgetData from "utils/proxy/validate-widget-data";
import { httpProxy } from "utils/proxy/http";
import createLogger from "utils/logger";
@@ -44,8 +44,9 @@ export default async function credentialedProxyHandler(req, res, map) {
} else if (widget.type === "miniflux") {
headers["X-Auth-Token"] = `${widget.key}`;
} else if (widget.type === "cloudflared") {
headers["X-Auth-Email"] = `${widget.email}`;
headers["X-Auth-Key"] = `${widget.key}`;
headers.Authorization = `Bearer ${widget.key}`;
} else if (widget.type === "pterodactyl") {
headers.Authorization = `Bearer ${widget.key}`;
} else {
headers["X-API-Key"] = `${widget.key}`;
}
@@ -68,7 +69,10 @@ export default async function credentialedProxyHandler(req, res, map) {
}
if (!validateWidgetData(widget, endpoint, data)) {
return res.status(500).json({error: {message: "Invalid data", url, data}});
if (data.error && data.error.url) {
data.error.url = sanitizeErrorURL(url);
}
return res.status(500).json({error: {message: "Invalid data", url: sanitizeErrorURL(url), data}});
}
if (status === 200 && map) {
+13 -5
View File
@@ -1,5 +1,5 @@
import getServiceWidget from "utils/config/service-helpers";
import { formatApiCall } from "utils/proxy/api-helpers";
import { formatApiCall, sanitizeErrorURL } from "utils/proxy/api-helpers";
import validateWidgetData from "utils/proxy/validate-widget-data";
import { httpProxy } from "utils/proxy/http";
import createLogger from "utils/logger";
@@ -27,15 +27,23 @@ export default async function genericProxyHandler(req, res, map) {
};
}
const [status, contentType, data] = await httpProxy(url, {
const params = {
method: req.method,
headers,
});
}
if (req.body) {
params.body = req.body;
}
const [status, contentType, data] = await httpProxy(url, params);
let resultData = data;
if (!validateWidgetData(widget, endpoint, resultData)) {
return res.status(status).json({error: {message: "Invalid data", url, data: resultData}});
if (resultData.error && resultData.error.url) {
resultData.error.url = sanitizeErrorURL(url);
}
return res.status(status).json({error: {message: "Invalid data", url: sanitizeErrorURL(url), data: resultData}});
}
if (status === 200 && map) {
@@ -50,7 +58,7 @@ export default async function genericProxyHandler(req, res, map) {
if (status >= 400) {
logger.debug("HTTP Error %d calling %s//%s%s...", status, url.protocol, url.hostname, url.pathname);
return res.status(status).json({error: {message: "HTTP Error", url, data}});
return res.status(status).json({error: {message: "HTTP Error", url: sanitizeErrorURL(url), data}});
}
return res.status(status).send(resultData);
+176
View File
@@ -0,0 +1,176 @@
import cache from "memory-cache";
import getServiceWidget from "utils/config/service-helpers";
import { asJson, formatApiCall } from "utils/proxy/api-helpers";
import { httpProxy } from "utils/proxy/http";
import createLogger from "utils/logger";
import widgets from "widgets/widgets";
const INFO_ENDPOINT = "{url}/webapi/query.cgi?api=SYNO.API.Info&version=1&method=query";
const AUTH_ENDPOINT = "{url}/webapi/{path}?api=SYNO.API.Auth&version={maxVersion}&method=login&account={username}&passwd={password}&session=DownloadStation&format=cookie";
const AUTH_API_NAME = "SYNO.API.Auth";
const proxyName = "synologyProxyHandler";
const logger = createLogger(proxyName);
async function login(loginUrl) {
const [status, contentType, data] = await httpProxy(loginUrl);
if (status !== 200) {
return [status, contentType, data];
}
const json = asJson(data);
if (json?.success !== true) {
// from page 16: https://global.download.synology.com/download/Document/Software/DeveloperGuide/Os/DSM/All/enu/DSM_Login_Web_API_Guide_enu.pdf
/*
Code Description
400 No such account or incorrect password
401 Account disabled
402 Permission denied
403 2-step verification code required
404 Failed to authenticate 2-step verification code
*/
let message = "Authentication failed.";
if (json?.error?.code >= 403) message += " 2FA enabled.";
logger.warn("Unable to login. Code: %d", json?.error?.code);
return [401, "application/json", JSON.stringify({ code: json?.error?.code, message })];
}
return [status, contentType, data];
}
async function getApiInfo(serviceWidget, apiName, serviceName) {
const cacheKey = `${proxyName}__${apiName}__${serviceName}`
let { cgiPath, maxVersion } = cache.get(cacheKey) ?? {};
if (cgiPath && maxVersion) {
return [cgiPath, maxVersion];
}
const infoUrl = formatApiCall(INFO_ENDPOINT, serviceWidget);
// eslint-disable-next-line no-unused-vars
const [status, contentType, data] = await httpProxy(infoUrl);
if (status === 200) {
try {
const json = asJson(data);
if (json?.data?.[apiName]) {
cgiPath = json.data[apiName].path;
maxVersion = json.data[apiName].maxVersion;
logger.debug(`Detected ${serviceWidget.type}: apiName '${apiName}', cgiPath '${cgiPath}', and maxVersion ${maxVersion}`);
cache.put(cacheKey, { cgiPath, maxVersion });
return [cgiPath, maxVersion];
}
}
catch {
logger.warn(`Error ${status} obtaining ${apiName} info`);
}
}
return [null, null];
}
async function handleUnsuccessfulResponse(serviceWidget, url, serviceName) {
logger.debug(`Attempting login to ${serviceWidget.type}`);
// eslint-disable-next-line no-unused-vars
const [apiPath, maxVersion] = await getApiInfo(serviceWidget, AUTH_API_NAME, serviceName);
const authArgs = { path: apiPath ?? "entry.cgi", maxVersion: maxVersion ?? 7, ...serviceWidget };
const loginUrl = formatApiCall(AUTH_ENDPOINT, authArgs);
const [status, contentType, data] = await login(loginUrl);
if (status !== 200) {
return [status, contentType, data];
}
return httpProxy(url);
}
function toError(url, synologyError) {
// commeon codes (100 => 199) from:
// https://global.download.synology.com/download/Document/Software/DeveloperGuide/Os/DSM/All/enu/DSM_Login_Web_API_Guide_enu.pdf
const code = synologyError.error?.code ?? synologyError.error ?? synologyError.code ?? 100;
const error = { code };
switch (code) {
case 102:
error.error = "The requested API does not exist.";
break;
case 103:
error.error = "The requested method does not exist.";
break;
case 104:
error.error = "The requested version does not support the functionality.";
break;
case 105:
error.error = "The logged in session does not have permission.";
break;
case 106:
error.error = "Session timeout.";
break;
case 107:
error.error = "Session interrupted by duplicated login.";
break;
case 119:
error.error = "Invalid session or SID not found.";
break;
default:
error.error = synologyError.message ?? "Unknown error.";
break;
}
logger.warn(`Unable to call ${url}. code: ${code}, error: ${error.error}.`)
return error;
}
export default async function synologyProxyHandler(req, res) {
const { group, service, endpoint } = req.query;
if (!group || !service) {
return res.status(400).json({ error: "Invalid proxy service type" });
}
const serviceWidget = await getServiceWidget(group, service);
const widget = widgets?.[serviceWidget.type];
const mapping = widget?.mappings?.[endpoint];
if (!widget.api || !mapping) {
return res.status(403).json({ error: "Service does not support API calls" });
}
const [cgiPath, maxVersion] = await getApiInfo(serviceWidget, mapping.apiName, service);
if (!cgiPath || !maxVersion) {
return res.status(400).json({ error: `Unrecognized API name: ${mapping.apiName}`})
}
const url = formatApiCall(widget.api, {
apiName: mapping.apiName,
apiMethod: mapping.apiMethod,
cgiPath,
maxVersion,
...serviceWidget
});
let [status, contentType, data] = await httpProxy(url);
if (status !== 200) {
logger.debug("Error %d calling url %s", status, url);
return res.status(status, data);
}
let json = asJson(data);
if (json?.success !== true) {
logger.debug(`Attempting login to ${serviceWidget.type}`);
[status, contentType, data] = await handleUnsuccessfulResponse(serviceWidget, url, service);
json = asJson(data);
}
if (json.success !== true) {
data = toError(url, json);
status = 500;
}
if (contentType) res.setHeader("Content-Type", contentType);
return res.status(status).send(data);
}
+14 -2
View File
@@ -9,25 +9,34 @@ const components = {
cloudflared: dynamic(() => import("./cloudflared/component")),
coinmarketcap: dynamic(() => import("./coinmarketcap/component")),
deluge: dynamic(() => import("./deluge/component")),
diskstation: dynamic(() => import("./diskstation/component")),
downloadstation: dynamic(() => import("./downloadstation/component")),
docker: dynamic(() => import("./docker/component")),
kubernetes: dynamic(() => import("./kubernetes/component")),
emby: dynamic(() => import("./emby/component")),
fileflows: dynamic(() => import("./fileflows/component")),
flood: dynamic(() => import("./flood/component")),
gluetun: dynamic(() => import("./gluetun/component")),
gotify: dynamic(() => import("./gotify/component")),
grafana: dynamic(() => import("./grafana/component")),
hdhomerun: dynamic(() => import("./hdhomerun/component")),
homebridge: dynamic(() => import("./homebridge/component")),
healthchecks: dynamic(() => import("./healthchecks/component")),
immich: dynamic(() => import("./immich/component")),
jackett: dynamic(() => import("./jackett/component")),
jellyfin: dynamic(() => import("./emby/component")),
jellyseerr: dynamic(() => import("./jellyseerr/component")),
komga: dynamic(() => import("./komga/component")),
kopia: dynamic(() => import("./kopia/component")),
lidarr: dynamic(() => import("./lidarr/component")),
mastodon: dynamic(() => import("./mastodon/component")),
medusa: dynamic(() => import("./medusa/component")),
miniflux: dynamic(() => import("./miniflux/component")),
mikrotik: dynamic(() => import("./mikrotik/component")),
moonraker: dynamic(() => import("./moonraker/component")),
mylar: dynamic(() => import("./mylar/component")),
navidrome: dynamic(() => import("./navidrome/component")),
nextcloud: dynamic(() => import("./nextcloud/component")),
nextdns: dynamic(() => import("./nextdns/component")),
npm: dynamic(() => import("./npm/component")),
nzbget: dynamic(() => import("./nzbget/component")),
@@ -37,12 +46,15 @@ const components = {
opnsense: dynamic(() => import("./opnsense/component")),
overseerr: dynamic(() => import("./overseerr/component")),
paperlessngx: dynamic(() => import("./paperlessngx/component")),
photoprism: dynamic(() => import("./photoprism/component")),
proxmoxbackupserver: dynamic(() => import("./proxmoxbackupserver/component")),
pihole: dynamic(() => import("./pihole/component")),
plex: dynamic(() => import("./plex/component")),
portainer: dynamic(() => import("./portainer/component")),
prometheus: dynamic(() => import("./prometheus/component")),
prowlarr: dynamic(() => import("./prowlarr/component")),
proxmox: dynamic(() => import("./proxmox/component")),
pterodactyl: dynamic(() => import("./pterodactyl/component")),
pyload: dynamic(() => import("./pyload/component")),
qbittorrent: dynamic(() => import("./qbittorrent/component")),
radarr: dynamic(() => import("./radarr/component")),
@@ -60,10 +72,10 @@ const components = {
tubearchivist: dynamic(() => import("./tubearchivist/component")),
truenas: dynamic(() => import("./truenas/component")),
unifi: dynamic(() => import("./unifi/component")),
unmanic: dynamic(() => import("./unmanic/component")),
uptimekuma: dynamic(() => import("./uptimekuma/component")),
watchtower: dynamic(() => import("./watchtower/component")),
xteve: dynamic(() => import("./xteve/component")),
immich: dynamic(() => import("./immich/component")),
uptimekuma: dynamic(() => import("./uptimekuma/component")),
};
export default components;
+55
View File
@@ -0,0 +1,55 @@
import { useTranslation } from "next-i18next";
import Container from "components/services/widget/container";
import Block from "components/services/widget/block";
import useWidgetAPI from "utils/proxy/use-widget-api";
export default function Component({ service }) {
const { t } = useTranslation();
const { widget } = service;
const { data: infoData, error: infoError } = useWidgetAPI(widget, "system_info");
const { data: storageData, error: storageError } = useWidgetAPI(widget, "system_storage");
const { data: utilizationData, error: utilizationError } = useWidgetAPI(widget, "utilization");
if (storageError || infoError || utilizationError) {
return <Container error={ storageError ?? infoError ?? utilizationError } />;
}
if (!storageData || !infoData || !utilizationData) {
return (
<Container service={service}>
<Block label="diskstation.uptime" />
<Block label="diskstation.volumeAvailable" />
<Block label="resources.cpu" />
<Block label="resources.mem" />
</Container>
);
}
// uptime info
// eslint-disable-next-line no-unused-vars
const [hour, minutes, seconds] = infoData.data.up_time.split(":");
const days = Math.floor(hour / 24);
const uptime = `${ t("common.number", { value: days }) } ${ t("diskstation.days") }`;
// storage info
// TODO: figure out how to display info for more than one volume
const volume = storageData.data.vol_info?.[0];
const usedBytes = parseFloat(volume?.used_size);
const totalBytes = parseFloat(volume?.total_size);
const freeBytes = totalBytes - usedBytes;
// utilization info
const { cpu, memory } = utilizationData.data;
const cpuLoad = parseFloat(cpu.user_load) + parseFloat(cpu.system_load);
const memoryUsage = 100 - ((100 * (parseFloat(memory.avail_real) + parseFloat(memory.cached))) / parseFloat(memory.total_real));
return (
<Container service={service}>
<Block label="diskstation.uptime" value={ uptime } />
<Block label="diskstation.volumeAvailable" value={ t("common.bbytes", { value: freeBytes, maximumFractionDigits: 1 }) } />
<Block label="resources.cpu" value={ t("common.percent", { value: cpuLoad }) } />
<Block label="resources.mem" value={ t("common.percent", { value: memoryUsage }) } />
</Container>
);
}
+27
View File
@@ -0,0 +1,27 @@
import synologyProxyHandler from '../../utils/proxy/handlers/synology'
const widget = {
// cgiPath and maxVersion are discovered at runtime, don't supply
api: "{url}/webapi/{cgiPath}?api={apiName}&version={maxVersion}&method={apiMethod}",
proxyHandler: synologyProxyHandler,
mappings: {
"system_storage": {
apiName: "SYNO.Core.System",
apiMethod: "info&type=\"storage\"",
endpoint: "system_storage"
},
"system_info": {
apiName: "SYNO.Core.System",
apiMethod: "info",
endpoint: "system_info"
},
"utilization": {
apiName: "SYNO.Core.System.Utilization",
apiMethod: "get",
endpoint: "utilization"
}
},
};
export default widget;
+1 -1
View File
@@ -22,7 +22,7 @@ export default function Component({ service }) {
return <Container error={finalError} />;
}
if (statusData && statusData.status !== "running") {
if (statusData && !(statusData.status.includes("running") || statusData.status.includes("partial"))) {
return (
<Container>
<Block label={t("widget.status")} value={t("docker.offline")} />
-88
View File
@@ -1,88 +0,0 @@
import { formatApiCall } from "utils/proxy/api-helpers";
import { httpProxy } from "utils/proxy/http";
import createLogger from "utils/logger";
import widgets from "widgets/widgets";
import getServiceWidget from "utils/config/service-helpers";
const logger = createLogger("downloadstationProxyHandler");
async function login(loginUrl) {
const [status, contentType, data] = await httpProxy(loginUrl);
if (status !== 200) {
return [status, contentType, data];
}
const json = JSON.parse(data.toString());
if (json?.success !== true) {
// from https://global.download.synology.com/download/Document/Software/DeveloperGuide/Package/DownloadStation/All/enu/Synology_Download_Station_Web_API.pdf
/*
Code Description
400 No such account or incorrect password
401 Account disabled
402 Permission denied
403 2-step verification code required
404 Failed to authenticate 2-step verification code
*/
let message = "Authentication failed.";
if (json?.error?.code >= 403) message += " 2FA enabled.";
logger.warn("Unable to login. Code: %d", json?.error?.code);
return [401, "application/json", JSON.stringify({ code: json?.error?.code, message })];
}
return [status, contentType, data];
}
export default async function downloadstationProxyHandler(req, res) {
const { group, service, endpoint } = req.query;
if (!group || !service) {
return res.status(400).json({ error: "Invalid proxy service type" });
}
const widget = await getServiceWidget(group, service);
const api = widgets?.[widget.type]?.api;
if (!api) {
return res.status(403).json({ error: "Service does not support API calls" });
}
const url = formatApiCall(api, { endpoint, ...widget });
let [status, contentType, data] = await httpProxy(url);
if (status !== 200) {
logger.debug("Error %d calling endpoint %s", status, url);
return res.status(status, data);
}
const json = JSON.parse(data.toString());
if (json?.success !== true) {
logger.debug("Attempting login to DownloadStation");
const apiInfoUrl = formatApiCall("{url}/webapi/query.cgi?api=SYNO.API.Info&version=1&method=query", widget);
let path = "entry.cgi";
let maxVersion = 7;
[status, contentType, data] = await httpProxy(apiInfoUrl);
if (status === 200) {
try {
const apiAuthInfo = JSON.parse(data.toString()).data['SYNO.API.Auth'];
if (apiAuthInfo) {
path = apiAuthInfo.path;
maxVersion = apiAuthInfo.maxVersion;
logger.debug(`Deteceted Downloadstation auth API path: ${path} and maxVersion: ${maxVersion}`);
}
} catch {
logger.debug(`Error ${status} obtaining DownloadStation API info`);
}
}
const authApi = `{url}/webapi/${path}?api=SYNO.API.Auth&version=${maxVersion}&method=login&account={username}&passwd={password}&session=DownloadStation&format=cookie`
const loginUrl = formatApiCall(authApi, widget);
[status, contentType, data] = await login(loginUrl);
if (status !== 200) {
return res.status(status).end(data)
}
[status, contentType, data] = await httpProxy(url);
}
if (contentType) res.setHeader("Content-Type", contentType);
return res.status(status).send(data);
}
+7 -4
View File
@@ -1,12 +1,15 @@
import downloadstationProxyHandler from "./proxy";
import synologyProxyHandler from '../../utils/proxy/handlers/synology'
const widget = {
api: "{url}/webapi/DownloadStation/task.cgi?api=SYNO.DownloadStation.Task&version=1&method={endpoint}",
proxyHandler: downloadstationProxyHandler,
// cgiPath and maxVersion are discovered at runtime, don't supply
api: "{url}/webapi/{cgiPath}?api={apiName}&version={maxVersion}&method={apiMethod}",
proxyHandler: synologyProxyHandler,
mappings: {
"list": {
endpoint: "list&additional=transfer",
apiName: "SYNO.DownloadStation.Task",
apiMethod: "list&additional=transfer",
endpoint: "list"
},
},
};
+37
View File
@@ -0,0 +1,37 @@
import { useTranslation } from "next-i18next";
import Container from "components/services/widget/container";
import Block from "components/services/widget/block";
import useWidgetAPI from "utils/proxy/use-widget-api";
export default function Component({ service }) {
const { t } = useTranslation();
const { widget } = service;
const { data: fileflowsData, error: fileflowsError } = useWidgetAPI(widget, "status");
if (fileflowsError) {
return <Container error={fileflowsError} />;
}
if (!fileflowsData) {
return (
<Container service={service}>
<Block label="fileflows.queue" />
<Block label="fileflows.processing" />
<Block label="fileflows.processed" />
<Block label="fileflows.time" />
</Container>
);
}
return (
<Container service={service}>
<Block label="fileflows.queue" value={t("common.number", { value: fileflowsData.queue })} />
<Block label="fileflows.processing" value={t("common.number", { value: fileflowsData.processing })} />
<Block label="fileflows.processed" value={t("common.number", { value: fileflowsData.processed })} />
<Block label="fileflows.time" value={fileflowsData.time?.length ? fileflowsData.time : "0:00"} />
</Container>
);
}
+14
View File
@@ -0,0 +1,14 @@
import genericProxyHandler from "utils/proxy/handlers/generic";
const widget = {
api: "{url}/api/{endpoint}",
proxyHandler: genericProxyHandler,
mappings: {
"status": {
endpoint: "status",
},
},
};
export default widget;
+2 -2
View File
@@ -45,9 +45,9 @@ export default function Component({ service }) {
return (
<Container service={service}>
<Block label="flood.leech" value={t("common.number", { value: leech })} />
<Block label="flood.download" value={t("common.bitrate", { value: rateDl })} />
<Block label="flood.download" value={t("common.byterate", { value: rateDl })} />
<Block label="flood.seed" value={t("common.number", { value: completed })} />
<Block label="flood.upload" value={t("common.bitrate", { value: rateUl })} />
<Block label="flood.upload" value={t("common.byterate", { value: rateUl })} />
</Container>
);
}
+37
View File
@@ -0,0 +1,37 @@
import { useTranslation } from "next-i18next";
import Container from "components/services/widget/container";
import Block from "components/services/widget/block";
import useWidgetAPI from "utils/proxy/use-widget-api";
export default function Component({ service }) {
const { t } = useTranslation();
const { widget } = service;
const { data: statsData, error: statsError } = useWidgetAPI(widget, "stats");
const { data: alertsData, error: alertsError } = useWidgetAPI(widget, "alerts");
if (statsError || alertsError) {
return <Container error={statsError ?? alertsError} />;
}
if (!statsData || !alertsData) {
return (
<Container service={service}>
<Block label="grafana.dashboards" />
<Block label="grafana.datasources" />
<Block label="grafana.totalalerts" />
<Block label="grafana.alertstriggered" />
</Container>
);
}
return (
<Container service={service}>
<Block label="grafana.dashboards" value={t("common.number", { value: statsData.dashboards })} />
<Block label="grafana.datasources" value={t("common.number", { value: statsData.datasources })} />
<Block label="grafana.totalalerts" value={t("common.number", { value: statsData.alerts })} />
<Block label="grafana.alertstriggered" value={t("common.number", { value: alertsData.filter(a => a.state === "alerting").length })} />
</Container>
);
}
+20
View File
@@ -0,0 +1,20 @@
import genericProxyHandler from "utils/proxy/handlers/generic";
const widget = {
api: "{url}/api/{endpoint}",
proxyHandler: genericProxyHandler,
mappings: {
alerts: {
endpoint: "alerts",
},
stats: {
endpoint: "admin/stats",
validate: [
"dashboards"
]
},
},
};
export default widget;
+54
View File
@@ -0,0 +1,54 @@
import { useTranslation } from "next-i18next";
import { i18n } from "../../../next-i18next.config";
import Block from "components/services/widget/block";
import Container from "components/services/widget/container";
import useWidgetAPI from "utils/proxy/use-widget-api";
function formatDate(dateString) {
const date = new Date(dateString);
const now = new Date();
let dateOptions = {
month: "numeric",
day: "numeric",
hour: "numeric",
minute: "numeric",
};
if (date.getFullYear() === now.getFullYear() && date.getMonth() === now.getMonth() && date.getDate() === now.getDate()) {
dateOptions = { timeStyle: "short" };
}
return new Intl.DateTimeFormat(i18n.language, dateOptions).format(date);
}
export default function Component({ service }) {
const { t } = useTranslation();
const { widget } = service;
const { data, error } = useWidgetAPI(widget, "checks");
if (error) {
return <Container error={error} />;
}
if (!data) {
return (
<Container service={service}>
<Block label={t("healthchecks.status")} />
<Block label={t("healthchecks.last_ping")} />
</Container>
);
}
return (
<Container service={service}>
<Block label={t("healthchecks.status")} value={t(`healthchecks.${data.status}`)} />
<Block
label={t("healthchecks.last_ping")}
value={data.last_ping ? formatDate(data.last_ping) : t("healthchecks.never")}
/>
</Container>
);
}
+18
View File
@@ -0,0 +1,18 @@
import credentialedProxyHandler from "utils/proxy/handlers/credentialed";
const widget = {
api: "{url}/api/v2/{endpoint}/{uuid}",
proxyHandler: credentialedProxyHandler,
mappings: {
checks: {
endpoint: "checks",
validate: [
"status",
"last_ping",
]
},
},
};
export default widget;
+3 -2
View File
@@ -50,7 +50,7 @@ async function apiCall(widget, endpoint, service) {
headers,
});
if (status === 401) {
if (status === 401 || status === 403) {
logger.debug("Homebridge API rejected the request, attempting to obtain new session token");
const { accessToken } = login(widget, service);
headers.Authorization = `Bearer ${accessToken}`;
@@ -63,7 +63,8 @@ async function apiCall(widget, endpoint, service) {
}
if (status !== 200) {
logger.error("Error getting data from Homebridge: %d. Data: %s", status, data);
logger.error("Error getting data from Homebridge: %s status %d. Data: %s", url, status, data);
return { status, contentType, data: null, responseHeaders };
}
return { status, contentType, data: JSON.parse(data.toString()), responseHeaders };
+37
View File
@@ -0,0 +1,37 @@
import { useTranslation } from "next-i18next";
import Container from "components/services/widget/container";
import Block from "components/services/widget/block";
import useWidgetAPI from "utils/proxy/use-widget-api";
export default function Component({ service }) {
const { t } = useTranslation();
const { widget } = service;
const { data: libraryData, error: libraryError } = useWidgetAPI(widget, "libraries");
const { data: seriesData, error: seriesError } = useWidgetAPI(widget, "series");
const { data: bookData, error: bookError } = useWidgetAPI(widget, "books");
if (libraryError || seriesError || bookError) {
const finalError = libraryError ?? seriesError ?? bookError;
return <Container error={finalError} />;
}
if (!libraryData || !seriesData || !bookData) {
return (
<Container service={service}>
<Block label="komga.libraries" />
<Block label="komga.series" />
<Block label="komga.books" />
</Container>
);
}
return (
<Container service={service}>
<Block label="komga.libraries" value={t("common.number", { value: libraryData.total })} />
<Block label="komga.series" value={t("common.number", { value: seriesData.totalElements })} />
<Block label="komga.books" value={t("common.number", { value: bookData.totalElements })} />
</Container>
);
}
+30
View File
@@ -0,0 +1,30 @@
import genericProxyHandler from "utils/proxy/handlers/generic";
import { jsonArrayFilter } from "utils/proxy/api-helpers";
const widget = {
api: "{url}/api/v1/{endpoint}",
proxyHandler: genericProxyHandler,
mappings: {
libraries: {
endpoint: "libraries",
map: (data) => ({
total: jsonArrayFilter(data, (item) => !item.unavailable).length,
}),
},
series: {
endpoint: "series",
validate: [
"totalElements"
]
},
books: {
endpoint: "books",
validate: [
"totalElements"
]
},
},
};
export default widget;
+68
View File
@@ -0,0 +1,68 @@
import { useTranslation } from "next-i18next";
import Container from "components/services/widget/container";
import Block from "components/services/widget/block";
import useWidgetAPI from "utils/proxy/use-widget-api";
function relativeDate(date) {
const seconds = Math.abs(Math.floor((new Date() - date) / 1000));
let interval = Math.abs(seconds / 31536000);
if (interval > 1) {
return `${Math.floor(interval)} y`;
}
interval = seconds / 2592000;
if (interval > 1) {
return `${Math.floor(interval)} mo`;
}
interval = seconds / 86400;
if (interval > 1) {
return `${Math.floor(interval)} d`;
}
interval = seconds / 3600;
if (interval > 1) {
return `${Math.floor(interval)} h`;
}
interval = seconds / 60;
if (interval > 1) {
return `${Math.floor(interval)} m`;
}
return `${Math.floor(seconds)} s`;
}
export default function Component({ service }) {
const { t } = useTranslation();
const { widget } = service;
const { data: statusData, error: statusError } = useWidgetAPI(widget, "status");
if (statusError) {
return <Container error={statusError} />;
}
const source = statusData?.sources[0];
if (!statusData || !source) {
return (
<Container service={service}>
<Block label="kopia.status" />
<Block label="kopia.size" />
<Block label="kopia.lastrun" />
<Block label="kopia.nextrun" />
</Container>
);
}
const lastRun = source.lastSnapshot.stats.errorCount === 0 ? new Date(source.lastSnapshot.startTime) : t("kopia.failed");
const nextTime = source.nextSnapshotTime ? new Date(source.nextSnapshotTime) : null;
return (
<Container service={service}>
<Block label="kopia.status" value={ source.status } />
<Block label="kopia.size" value={t("common.bbytes", { value: source.lastSnapshot.stats.totalSize, maximumFractionDigits: 1 })} />
<Block label="kopia.lastrun" value={ relativeDate(lastRun) } />
{nextTime && <Block label="kopia.nextrun" value={ relativeDate(nextTime) } />}
</Container>
);
}
+14
View File
@@ -0,0 +1,14 @@
import genericProxyHandler from "utils/proxy/handlers/generic";
const widget = {
api: "{url}/{endpoint}",
proxyHandler: genericProxyHandler,
mappings: {
status: {
endpoint: "api/v1/sources",
},
},
};
export default widget;
+40
View File
@@ -0,0 +1,40 @@
import { useTranslation } from "next-i18next";
import Container from "components/services/widget/container";
import Block from "components/services/widget/block";
import useWidgetAPI from "utils/proxy/use-widget-api";
export default function Component({ service }) {
const { t } = useTranslation();
const { widget } = service;
const { data: seriesData, error: seriesError } = useWidgetAPI(widget, "series");
const { data: issuesData, error: issuesError } = useWidgetAPI(widget, "issues");
const { data: wantedData, error: wantedError } = useWidgetAPI(widget, "wanted");
if (seriesError || issuesError || wantedError) {
const finalError = seriesError ?? issuesError ?? wantedError;
return <Container error={finalError} />;
}
if (!seriesData || !issuesData || !wantedData) {
return (
<Container service={service}>
<Block label="mylar.series" />
<Block label="mylar.issues" />
<Block label="mylar.wanted" />
</Container>
);
}
const totalIssues = issuesData.data.reduce((acc, series) => acc + series.totalIssues, 0);
return (
<Container service={service}>
<Block label="mylar.series" value={t("common.number", { value: seriesData.data.length })} />
<Block label="mylar.issues" value={t("common.number", { value: totalIssues })} />
<Block label="mylar.wanted" value={t("common.number", { value: wantedData.issues.length })} />
</Container>
);
}
+20
View File
@@ -0,0 +1,20 @@
import genericProxyHandler from "utils/proxy/handlers/generic";
const widget = {
api: "{url}/api?cmd={endpoint}&apikey={key}",
proxyHandler: genericProxyHandler,
mappings: {
issues: {
endpoint: "getIndex"
},
series: {
endpoint: "seriesjsonListing"
},
wanted: {
endpoint: "getWanted"
},
},
};
export default widget;
+39
View File
@@ -0,0 +1,39 @@
import { useTranslation } from "next-i18next";
import Container from "components/services/widget/container";
import Block from "components/services/widget/block";
import useWidgetAPI from "utils/proxy/use-widget-api";
export default function Component({ service }) {
const { t } = useTranslation();
const { widget } = service;
const { data: nextcloudData, error: nextcloudError } = useWidgetAPI(widget, "serverinfo");
if (nextcloudError) {
return <Container error={nextcloudError} />;
}
if (!nextcloudData) {
return (
<Container service={service}>
<Block label="nextcloud.cpuload" />
<Block label="nextcloud.memoryusage" />
<Block label="nextcloud.freespace" />
<Block label="nextcloud.activeusers" />
</Container>
);
}
const nextcloudInfo = nextcloudData.ocs.data.nextcloud;
const memoryUsage = 100 * ((parseFloat(nextcloudInfo.system.mem_total) - parseFloat(nextcloudInfo.system.mem_free)) / parseFloat(nextcloudInfo.system.mem_total));
return (
<Container service={service}>
<Block label="nextcloud.cpuload" value={t("common.percent", { value: nextcloudInfo.system.cpuload[0] })} />
<Block label="nextcloud.memoryusage" value={t("common.percent", { value:memoryUsage })} />
<Block label="nextcloud.freespace" value={t("common.bbytes", { value: nextcloudInfo.system.freespace, maximumFractionDigits: 1 })} />
<Block label="nextcloud.activeusers" value={t("common.number", { value: nextcloudData.ocs.data.activeUsers.last5minutes })} />
</Container>
);
}
+14
View File
@@ -0,0 +1,14 @@
import genericProxyHandler from "utils/proxy/handlers/generic";
const widget = {
api: "{url}/{endpoint}",
proxyHandler: genericProxyHandler,
mappings: {
serverinfo: {
endpoint: "ocs/v2.php/apps/serverinfo/api/v1/info?format=json",
},
},
};
export default widget;
-1
View File
@@ -33,7 +33,6 @@ export default function Component({ service }) {
<Block label="omada.activeUser" value={t( "common.number", { value: omadaData.activeUser })} />
<Block label="omada.alerts" value={t( "common.number", { value: omadaData.alerts })} />
{ omadaData.connectedGateways > 0 && <Block label="omada.connectedGateway" value={t("common.number", { value: omadaData.connectedGateways})} /> }
{ omadaData.connectedSwitches > 0 && <Block label="omada.connectedSwitches" value={t("common.number", { value: omadaData.connectedSwitches})} /> }
</Container>
);
}
+37
View File
@@ -0,0 +1,37 @@
import { useTranslation } from "next-i18next";
import Container from "components/services/widget/container";
import Block from "components/services/widget/block";
import useWidgetAPI from "utils/proxy/use-widget-api";
export default function Component({ service }) {
const { t } = useTranslation();
const { widget } = service;
const { data: photoprismData, error: photoprismError } = useWidgetAPI(widget);
if (photoprismError) {
return <Container error={photoprismError} />;
}
if (!photoprismData) {
return (
<Container service={service}>
<Block label="photoprism.albums" />
<Block label="photoprism.photos" />
<Block label="photoprism.videos" />
<Block label="photoprism.people" />
</Container>
);
}
return (
<Container service={service}>
<Block label="photoprism.albums" value={t("common.number", { value: photoprismData.albums })} />
<Block label="photoprism.photos" value={t("common.number", { value: photoprismData.photos })} />
<Block label="photoprism.videos" value={t("common.number", { value: photoprismData.videos })} />
<Block label="photoprism.people" value={t("common.number", { value: photoprismData.people })} />
</Container>
);
}
+48
View File
@@ -0,0 +1,48 @@
import { formatApiCall } from "utils/proxy/api-helpers";
import { httpProxy } from "utils/proxy/http";
import getServiceWidget from "utils/config/service-helpers";
import createLogger from "utils/logger";
const logger = createLogger("photoprismProxyHandler");
export default async function photoprismProxyHandler(req, res) {
const { group, service } = req.query;
if (!group || !service) {
logger.debug("Invalid or missing service '%s' or group '%s'", service, group);
return res.status(400).json({ error: "Invalid proxy service type" });
}
const widget = await getServiceWidget(group, service);
if (!widget) {
logger.debug("Invalid or missing widget for service '%s' in group '%s'", service, group);
return res.status(400).json({ error: "Invalid proxy service type" });
}
const url = new URL(formatApiCall("{url}/api/v1/session", { ...widget }));
const params = {
method: "POST",
headers: { "Content-Type": "application/json" },
body: null
};
if (widget.username && widget.password) {
params.body = JSON.stringify({
"username": widget.username,
"password": widget.password
});
}
const [status, contentType, data] = await httpProxy(url, params);
if (status !== 200) {
logger.error("HTTP %d getting data from PhotoPrism. Data: %s", status, data);
return res.status(status).json({error: {message: `HTTP Error ${status}`, url, data}});
}
const json = JSON.parse(data.toString())
if (contentType) res.setHeader("Content-Type", contentType);
return res.status(200).send(json?.config?.count);
}
+7
View File
@@ -0,0 +1,7 @@
import photoprismProxyHandler from "./proxy";
const widget = {
proxyHandler: photoprismProxyHandler,
};
export default widget;
+38
View File
@@ -0,0 +1,38 @@
import { useTranslation } from "next-i18next";
import Container from "components/services/widget/container";
import Block from "components/services/widget/block";
import useWidgetAPI from "utils/proxy/use-widget-api";
export default function Component({ service }) {
const { t } = useTranslation();
const { widget } = service;
const { data: targetsData, error: targetsError } = useWidgetAPI(widget, "targets");
if (targetsError) {
return <Container error={targetsError} />;
}
if (!targetsData) {
return (
<Container service={service}>
<Block label="prometheus.targets_up" />
<Block label="prometheus.targets_down" />
<Block label="prometheus.targets_total" />
</Container>
);
}
const upCount = targetsData.data.activeTargets.filter(a => a.health === "up").length;
const downCount = targetsData.data.activeTargets.filter(a => a.health === "down").length;
const totalCount = targetsData.data.activeTargets.length;
return (
<Container service={service}>
<Block label="prometheus.targets_up" value={t("common.number", { value: upCount })} />
<Block label="prometheus.targets_down" value={t("common.number", { value: downCount })} />
<Block label="prometheus.targets_total" value={t("common.number", { value: totalCount })} />
</Container>
);
}
+17
View File
@@ -0,0 +1,17 @@
import genericProxyHandler from "utils/proxy/handlers/generic";
const widget = {
api: "{url}/api/v1/{endpoint}",
proxyHandler: genericProxyHandler,
mappings: {
targets: {
endpoint: "targets",
validate: [
"data"
]
},
},
};
export default widget;
+3 -9
View File
@@ -8,18 +8,15 @@ export default function Component({ service }) {
const { t } = useTranslation();
const { widget } = service;
const { data: indexersData, error: indexersError } = useWidgetAPI(widget, "indexer");
const { data: grabsData, error: grabsError } = useWidgetAPI(widget, "indexerstats");
if (indexersError || grabsError) {
const finalError = indexersError ?? grabsError;
return <Container error={finalError} />;
if (grabsError) {
return <Container error={grabsError} />;
}
if (!indexersData || !grabsData) {
if (!grabsData) {
return (
<Container service={service}>
<Block label="prowlarr.enableIndexers" />
<Block label="prowlarr.numberOfGrabs" />
<Block label="prowlarr.numberOfQueries" />
<Block label="prowlarr.numberOfFailGrabs" />
@@ -28,8 +25,6 @@ export default function Component({ service }) {
);
}
const indexers = indexersData?.filter((indexer) => indexer.enable === true);
let numberOfGrabs = 0;
let numberOfQueries = 0;
let numberOfFailedGrabs = 0;
@@ -43,7 +38,6 @@ export default function Component({ service }) {
return (
<Container service={service}>
<Block label="prowlarr.enableIndexers" value={t("common.number", { value: indexers.length })} />
<Block label="prowlarr.numberOfGrabs" value={t("common.number", { value: numberOfGrabs })} />
<Block label="prowlarr.numberOfQueries" value={t("common.number", { value: numberOfQueries })} />
<Block label="prowlarr.numberOfFailGrabs" value={t("common.number", { value: numberOfFailedGrabs })} />
+4 -4
View File
@@ -24,8 +24,8 @@ export default function Component({ service }) {
<Container service={service}>
<Block label="proxmox.vms" />
<Block label="proxmox.lxc" />
<Block label="proxmox.cpu" />
<Block label="proxmox.ram" />
<Block label="resources.cpu" />
<Block label="resources.ram" />
</Container>
);
}
@@ -46,8 +46,8 @@ export default function Component({ service }) {
<Container service={service}>
<Block label="proxmox.vms" value={`${runningVMs} / ${vms.length}`} />
<Block label="proxmox.lxc" value={`${runningLXC} / ${lxc.length}`} />
<Block label="proxmox.cpu" value={t("common.percent", { value: (node.cpu * 100) })} />
<Block label="proxmox.mem" value={t("common.percent", { value: ((node.mem / node.maxmem) * 100) })} />
<Block label="resources.cpu" value={t("common.percent", { value: (node.cpu * 100) })} />
<Block label="resources.mem" value={t("common.percent", { value: ((node.mem / node.maxmem) * 100) })} />
</Container>
);
}
@@ -22,7 +22,7 @@ export default function Component({ service }) {
return (
<Container service={service}>
<Block label="proxmoxbackupserver.datastore_usage" />
<Block label="proxmoxbackupserver.failed_tasks" />
<Block label="proxmoxbackupserver.failed_tasks_24h" />
<Block label="proxmoxbackupserver.cpu_usage" />
<Block label="proxmoxbackupserver.memory_usage" />
</Container>
+34
View File
@@ -0,0 +1,34 @@
import Container from "components/services/widget/container";
import Block from "components/services/widget/block";
import useWidgetAPI from "utils/proxy/use-widget-api";
export default function Component({ service }) {
const {widget} = service;
const {data: nodesData, error: nodesError} = useWidgetAPI(widget, "nodes");
if (nodesError) {
return <Container error={ nodesError } />;
}
if (!nodesData) {
return (
<Container service={service}>
<Block label="pterodactyl.nodes" />
<Block label="pterodactyl.servers" />
</Container>
);
}
const totalServers = nodesData.data.reduce((total, node) =>
node.attributes?.relationships?.servers?.data?.length ?? 0 + total, 0);
return (
<Container service={service}>
<Block label="pterodactyl.nodes" value={nodesData.data.length} />
<Block label="pterodactyl.servers" value={totalServers} />
</Container>
);
}
+17
View File
@@ -0,0 +1,17 @@
import credentialedProxyHandler from "utils/proxy/handlers/credentialed";
const widget = {
api: "{url}/api/application/{endpoint}",
proxyHandler: credentialedProxyHandler,
mappings: {
nodes: {
endpoint: "nodes?include=servers",
validate: [
"data"
]
},
},
};
export default widget;
+66 -16
View File
@@ -1,6 +1,48 @@
import RuTorrent from "rutorrent-promise";
import getServiceWidget from "utils/config/service-helpers";
import { httpProxy } from "utils/proxy/http";
import widgets from "widgets/widgets";
import { formatApiCall } from "utils/proxy/api-helpers";
import createLogger from "utils/logger";
const logger = createLogger("rutorrentProxyHandler");
// from https://github.com/ctessier/node-rutorrent-promise/blob/next/utils.js
const getTorrentInfo = (data) => ({
'd.is_open': data[0],
'd.is_hash_checking': data[1],
'd.is_hash_checked': data[2],
'd.get_state': data[3],
'd.get_name': data[4],
'd.get_size_bytes': data[5],
'd.get_completed_chunks': data[6],
'd.get_size_chunks': data[7],
'd.get_bytes_done': data[8],
'd.get_up_total': data[9],
'd.get_ratio': data[10],
'd.get_up_rate': data[11],
'd.get_down_rate': data[12],
'd.get_chunk_size': data[13],
'd.get_custom1': data[14],
'd.get_peers_accounted': data[15],
'd.get_peers_not_connected': data[16],
'd.get_peers_connected': data[17],
'd.get_peers_complete': data[18],
'd.get_left_bytes': data[19],
'd.get_priority': data[20],
'd.get_state_changed': data[21],
'd.get_skip_total': data[22],
'd.get_hashing': data[23],
'd.get_chunks_hashed': data[24],
'd.get_base_path': data[25],
'd.get_creation_date': data[26],
'd.get_tracker_focus': data[27],
'd.is_active': data[28],
'd.get_message': data[29],
'd.get_custom2': data[30],
'd.get_free_diskspace': data[31],
'd.is_private': data[32],
'd.is_multi_file': data[33],
});
export default async function rutorrentProxyHandler(req, res) {
const { group, service } = req.query;
@@ -9,27 +51,35 @@ export default async function rutorrentProxyHandler(req, res) {
const widget = await getServiceWidget(group, service);
if (widget) {
const constructedUrl = new URL(widget.url);
const api = widgets?.[widget.type]?.api;
const url = new URL(formatApiCall(api, { ...widget }));
let rtPort = constructedUrl.port;
if (rtPort === '') {
rtPort = constructedUrl.protocol === "https:" ? 443 : 80;
const headers = {}
if (widget.username) {
headers.Authorization = `Basic ${Buffer.from(`${widget.username}:${widget.password}`).toString("base64")}`;
}
const rutorrent = new RuTorrent({
host: constructedUrl.hostname,
port: rtPort,
path: constructedUrl.pathname,
ssl: constructedUrl.protocol === "https:",
username: widget.username,
password: widget.password,
const [status, , data] = await httpProxy(url, {
method: "POST",
headers,
body: 'mode=list'
});
const data = await rutorrent.get(["d.get_down_rate", "d.get_up_rate", "d.get_state"]);
if (status !== 200) {
logger.error("HTTP Error %d calling %s", status, url.toString());
return res.status(status).json({error: {message: "HTTP Error", url, data}});
}
return res.status(200).send(data);
try {
const rawData = JSON.parse(data);
const parsedData = Object.keys(rawData.t).map((hashString) => getTorrentInfo(rawData.t[hashString]));
return res.status(200).send(parsedData);
} catch (e) {
return res.status(500).json({error: {message: e?.toString() ?? 'Error parsing rutorrent data', url, data}});
}
}
}
return res.status(400).json({ error: "Invalid proxy service type" });
return res.status(500).json({ error: "Invalid proxy service type" });
}
+2 -2
View File
@@ -36,9 +36,9 @@ export default function Component({ service }) {
return (
<Container service={service}>
<Block label="transmission.leech" value={t("common.number", { value: leech })} />
<Block label="transmission.download" value={t("common.bitrate", { value: rateDl * 8 })} />
<Block label="transmission.download" value={t("common.byterate", { value: rateDl })} />
<Block label="transmission.seed" value={t("common.number", { value: completed })} />
<Block label="transmission.upload" value={t("common.bitrate", { value: rateUl * 8 })} />
<Block label="transmission.upload" value={t("common.byterate", { value: rateUl })} />
</Container>
);
}
+9 -1
View File
@@ -15,7 +15,7 @@ export default function Component({ service }) {
return <Container error={statsError} />;
}
const defaultSite = statsData?.data?.find(s => s.name === "default");
const defaultSite = widget.site ? statsData?.data.find(s => s.desc === widget.site) : statsData?.data?.find(s => s.name === "default");
if (!defaultSite) {
return (
@@ -38,6 +38,14 @@ export default function Component({ service }) {
const uptime = wan["gw_system-stats"] ? `${t("common.number", { value: wan["gw_system-stats"].uptime / 86400, maximumFractionDigits: 1 })} ${t("unifi.days")}` : null;
if (!(wan.show || lan.show || wlan.show || uptime)) {
return (
<Container service={service}>
<Block value={ t("unifi.empty_data") } />
</Container>
)
}
return (
<Container service={service}>
{uptime && <Block label="unifi.uptime" value={ uptime } />}
+10 -3
View File
@@ -42,12 +42,15 @@ async function getWidget(req) {
return widget;
}
async function login(widget) {
async function login(widget, csrfToken) {
const endpoint = (widget.prefix === udmpPrefix) ? "auth/login" : "login";
const api = widgets?.[widget.type]?.api?.replace("{prefix}", ""); // no prefix for login url
const loginUrl = new URL(formatApiCall(api, { endpoint, ...widget }));
const loginBody = { username: widget.username, password: widget.password, remember: true };
const headers = { "Content-Type": "application/json" };
if (csrfToken) {
headers["X-CSRF-TOKEN"] = csrfToken;
}
const [status, contentType, data, responseHeaders] = await httpProxy(loginUrl, {
method: "POST",
body: JSON.stringify(loginBody),
@@ -70,6 +73,7 @@ export default async function unifiProxyHandler(req, res) {
let [status, contentType, data, responseHeaders] = [];
let prefix = cache.get(`${prefixCacheKey}.${service}`);
let csrfToken;
if (prefix === null) {
// auto detect if we're talking to a UDM Pro, and cache the result so that we
// don't make two requests each time data from Unifi is required
@@ -77,12 +81,12 @@ export default async function unifiProxyHandler(req, res) {
prefix = "";
if (responseHeaders?.["x-csrf-token"]) {
prefix = udmpPrefix;
csrfToken = responseHeaders["x-csrf-token"];
}
cache.put(`${prefixCacheKey}.${service}`, prefix);
}
widget.prefix = prefix;
const { endpoint } = req.query;
const url = new URL(formatApiCall(api, { endpoint, ...widget }));
const params = { method: "GET", headers: {} };
@@ -92,7 +96,10 @@ export default async function unifiProxyHandler(req, res) {
if (status === 401) {
logger.debug("Unifi isn't logged in or rejected the reqeust, attempting login.");
[status, contentType, data, responseHeaders] = await login(widget);
if (responseHeaders?.["x-csrf-token"]) {
csrfToken = responseHeaders["x-csrf-token"];
}
[status, contentType, data, responseHeaders] = await login(widget, csrfToken);
if (status !== 200) {
logger.error("HTTP %d logging in to Unifi. Data: %s", status, data);
+33
View File
@@ -0,0 +1,33 @@
import Container from "components/services/widget/container";
import Block from "components/services/widget/block";
import useWidgetAPI from "utils/proxy/use-widget-api";
export default function Component({ service }) {
const { widget } = service;
const { data: workersData, error: workersError } = useWidgetAPI(widget, "workers");
const { data: pendingData, error: pendingError } = useWidgetAPI(widget, "pending");
if (workersError || pendingError) {
const finalError = workersError ?? pendingError;
return <Container error={finalError} />;
}
if (!workersData || !pendingData) {
return (
<Container service={service}>
<Block label="unmanic.active_workers" />
<Block label="unmanic.total_workers" />
<Block label="unmanic.records_total" />
</Container>
);
}
return (
<Container service={service}>
<Block label="unmanic.active_workers" value={workersData.active_workers} />
<Block label="unmanic.total_workers" value={workersData.total_workers} />
<Block label="unmanic.records_total" value={pendingData.recordsTotal} />
</Container>
);
}
+27
View File
@@ -0,0 +1,27 @@
import genericProxyHandler from "utils/proxy/handlers/generic";
import { asJson } from "utils/proxy/api-helpers";
const widget = {
api: "{url}/unmanic/api/v2/{endpoint}",
proxyHandler: genericProxyHandler,
mappings: {
workers: {
endpoint: "workers/status",
map: (data) => ({
total_workers: (asJson(data).workers_status).length,
active_workers: (asJson(data).workers_status).filter(worker => !worker.idle).length,
})
},
pending: {
method: "POST",
body: "{}",
endpoint: "pending/tasks",
validate: [
"recordsTotal"
]
},
},
};
export default widget;
+28 -5
View File
@@ -6,22 +6,31 @@ import changedetectionio from "./changedetectionio/widget";
import cloudflared from "./cloudflared/widget";
import coinmarketcap from "./coinmarketcap/widget";
import deluge from "./deluge/widget";
import diskstation from "./diskstation/widget";
import downloadstation from "./downloadstation/widget";
import emby from "./emby/widget";
import fileflows from "./fileflows/widget";
import flood from "./flood/widget";
import gluetun from "./gluetun/widget";
import gotify from "./gotify/widget";
import grafana from "./grafana/widget";
import hdhomerun from "./hdhomerun/widget";
import homebridge from "./homebridge/widget";
import healthchecks from "./healthchecks/widget";
import immich from "./immich/widget";
import jackett from "./jackett/widget";
import jellyseerr from "./jellyseerr/widget";
import komga from "./komga/widget";
import kopia from "./kopia/widget";
import lidarr from "./lidarr/widget";
import mastodon from "./mastodon/widget";
import medusa from "./medusa/widget";
import miniflux from "./miniflux/widget";
import mikrotik from "./mikrotik/widget";
import moonraker from "./moonraker/widget";
import mylar from "./mylar/widget";
import navidrome from "./navidrome/widget";
import nextcloud from "./nextcloud/widget";
import nextdns from "./nextdns/widget";
import npm from "./npm/widget";
import nzbget from "./nzbget/widget";
@@ -31,12 +40,15 @@ import ombi from "./ombi/widget";
import opnsense from "./opnsense/widget";
import overseerr from "./overseerr/widget";
import paperlessngx from "./paperlessngx/widget";
import photoprism from "./photoprism/widget";
import proxmoxbackupserver from "./proxmoxbackupserver/widget";
import pihole from "./pihole/widget";
import plex from "./plex/widget";
import portainer from "./portainer/widget";
import prometheus from "./prometheus/widget";
import prowlarr from "./prowlarr/widget";
import proxmox from "./proxmox/widget";
import pterodactyl from "./pterodactyl/widget";
import pyload from "./pyload/widget";
import qbittorrent from "./qbittorrent/widget";
import radarr from "./radarr/widget";
@@ -54,10 +66,10 @@ import transmission from "./transmission/widget";
import tubearchivist from "./tubearchivist/widget";
import truenas from "./truenas/widget";
import unifi from "./unifi/widget";
import unmanic from "./unmanic/widget";
import uptimekuma from "./uptimekuma/widget";
import watchtower from "./watchtower/widget";
import xteve from "./xteve/widget";
import immich from "./immich/widget";
import uptimekuma from "./uptimekuma/widget";
const widgets = {
adguard,
@@ -68,24 +80,32 @@ const widgets = {
cloudflared,
coinmarketcap,
deluge,
diskstation: downloadstation,
diskstation,
downloadstation,
emby,
fileflows,
flood,
gluetun,
gotify,
grafana,
hdhomerun,
homebridge,
healthchecks,
immich,
jackett,
jellyfin: emby,
jellyseerr,
komga,
kopia,
lidarr,
mastodon,
medusa,
miniflux,
mikrotik,
moonraker,
mylar,
navidrome,
nextcloud,
nextdns,
npm,
nzbget,
@@ -95,12 +115,15 @@ const widgets = {
opnsense,
overseerr,
paperlessngx,
photoprism,
proxmoxbackupserver,
pihole,
plex,
portainer,
prometheus,
prowlarr,
proxmox,
pterodactyl,
pyload,
qbittorrent,
radarr,
@@ -119,10 +142,10 @@ const widgets = {
truenas,
unifi,
unifi_console: unifi,
unmanic,
uptimekuma,
watchtower,
xteve,
immich,
uptimekuma,
};
export default widgets;