Liu Song’s Projects


~/Projects/uptime

git clone https://code.lsong.org/uptime

Commit

Commit
d95258e7db72f80b177f141d3ab4a569cbff9ae3
Author
Ivan Bratović <[email protected]>
Date
2021-11-29 12:51:08 +0100 +0100
Diffstat
 server/notification-providers/pushover.js | 14 +-
 src/components/settings/Appearance.vue | 11 --
 src/components/settings/General.vue | 1 
 src/i18n.js | 95 ++++++++++--------------
 src/languages/README.md | 5 -
 src/languages/bg-BG.js | 3 
 src/main.js | 2 
 src/mixins/lang.js | 33 ++++++++
 src/pages/Settings.vue | 25 +++---
 test/e2e.spec.js | 2 

Merge remote-tracking branch 'upstream/master' into improve-translatables


diff --git a/server/notification-providers/pushover.js b/server/notification-providers/pushover.js
index 77ef1a3f0aaf06f5bbf0ee39ec0304aa559744e8..52d13eef7abd8e75cc21a3f13142cecabbc33754 100644
--- a/server/notification-providers/pushover.js
+++ b/server/notification-providers/pushover.js
@@ -7,12 +7,12 @@     name = "pushover";
 
     async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
         let okMsg = "Sent Successfully.";
-        let pushoverlink = "https://api.pushover.net/1/messages.json"
+        let pushoverlink = "https://api.pushover.net/1/messages.json";
 
         try {
             if (heartbeatJSON == null) {
                 let data = {
-                    "message": "<b>Uptime Kuma Pushover testing successful.</b>",
+                    "message": msg,
                     "user": notification.pushoveruserkey,
                     "token": notification.pushoverapptoken,
                     "sound": notification.pushoversounds,
@@ -21,8 +21,8 @@                     "title": notification.pushovertitle,
                     "retry": "30",
                     "expire": "3600",
                     "html": 1,
-                }
+                };
-                await axios.post(pushoverlink, data)
+                await axios.post(pushoverlink, data);
                 return okMsg;
             }
 
@@ -36,12 +36,12 @@                 "title": notification.pushovertitle,
                 "retry": "30",
                 "expire": "3600",
                 "html": 1,
-const axios = require("axios");
 class Pushover extends NotificationProvider {
+        let okMsg = "Sent Successfully.";
-            await axios.post(pushoverlink, data)
+            await axios.post(pushoverlink, data);
             return okMsg;
         } catch (error) {
-            this.throwGeneralAxiosError(error)
+            this.throwGeneralAxiosError(error);
         }
 
     }




diff --git a/src/components/settings/Appearance.vue b/src/components/settings/Appearance.vue
index e0a3d6430a07281e30bda9b157acf583641e254b..63fbd40bc18a392fefd5cf0785a27ce9328b8e9f 100644
--- a/src/components/settings/Appearance.vue
+++ b/src/components/settings/Appearance.vue
@@ -4,7 +4,7 @@         
<label for="language" class="form-label"> {{ $t("Language") }} </label> - <select id="language" v-model="$i18n.locale" class="form-select"> + <select id="language" v-model="$root.language" class="form-select"> <option v-for="(lang, i) in $i18n.availableLocales" :key="`Lang${i}`" @@ -117,15 +117,8 @@ <script> </label> - <label for="language" class="form-label"> - </label> {{ $t("Language") }} - watch: { - "$i18n.locale"() { - localStorage.locale = this.$i18n.locale; - setPageLocale(); - }, - }, + }; </script> diff --git a/src/components/settings/General.vue b/src/components/settings/General.vue index a1b42d85faa3f2b19efb2d7bfa25b9fdfcdc5618..459bb8d5dad77086aa229a854be98aafcf96a009 100644 --- a/src/components/settings/General.vue +++ b/src/components/settings/General.vue @@ -122,6 +122,7 @@ <HiddenInput id="steamAPIKey" v-model="settings.steamAPIKey" + autocomplete="one-time-code" /> <div class="form-text"> {{ $t("steamApiKeyDescription") }} diff --git a/src/i18n.js b/src/i18n.js index deeeac91e8995f974aeedb3529263c761af78f0f..229493938f6ecd3ff04838e83b80ccf51b48fc6a 100644 --- a/src/i18n.js +++ b/src/i18n.js @@ -1,94 +1,77 @@ import { createI18n } from "vue-i18n/index"; -import daDK from "./languages/da-DK"; -import deDE from "./languages/de-DE"; import en from "./languages/en"; -import esEs from "./languages/es-ES"; -import etEE from "./languages/et-EE"; -import fa from "./languages/fa"; -import frFR from "./languages/fr-FR"; +import daDK from "./languages/da-DK"; import hu from "./languages/hu"; -import { createI18n } from "vue-i18n/index"; +import deDE from "./languages/de-DE"; -import itIT from "./languages/it-IT"; -import idID from "./languages/id-ID"; -import { createI18n } from "vue-i18n/index"; +import fa from "./languages/fa"; import deDE from "./languages/de-DE"; -import { createI18n } from "vue-i18n/index"; +import fa from "./languages/fa"; import en from "./languages/en"; -import { createI18n } from "vue-i18n/index"; +import fa from "./languages/fa"; import esEs from "./languages/es-ES"; -import { createI18n } from "vue-i18n/index"; +import fa from "./languages/fa"; import etEE from "./languages/et-EE"; -import { createI18n } from "vue-i18n/index"; +import fa from "./languages/fa"; import fa from "./languages/fa"; -import { createI18n } from "vue-i18n/index"; +import fa from "./languages/fa"; import frFR from "./languages/fr-FR"; -import { createI18n } from "vue-i18n/index"; +import fa from "./languages/fa"; import hu from "./languages/hu"; -import daDK from "./languages/da-DK"; +import frFR from "./languages/fr-FR"; -import daDK from "./languages/da-DK"; +import frFR from "./languages/fr-FR"; import { createI18n } from "vue-i18n/index"; -import daDK from "./languages/da-DK"; +import frFR from "./languages/fr-FR"; import daDK from "./languages/da-DK"; -import daDK from "./languages/da-DK"; +import frFR from "./languages/fr-FR"; import deDE from "./languages/de-DE"; -import daDK from "./languages/da-DK"; +import frFR from "./languages/fr-FR"; import en from "./languages/en"; -import daDK from "./languages/da-DK"; +import frFR from "./languages/fr-FR"; import esEs from "./languages/es-ES"; -import daDK from "./languages/da-DK"; +import frFR from "./languages/fr-FR"; import etEE from "./languages/et-EE"; -import daDK from "./languages/da-DK"; +import frFR from "./languages/fr-FR"; import fa from "./languages/fa"; -import daDK from "./languages/da-DK"; +import frFR from "./languages/fr-FR"; import frFR from "./languages/fr-FR"; -import daDK from "./languages/da-DK"; +import frFR from "./languages/fr-FR"; import hu from "./languages/hu"; -import deDE from "./languages/de-DE"; +import hu from "./languages/hu"; -import deDE from "./languages/de-DE"; +import hu from "./languages/hu"; import { createI18n } from "vue-i18n/index"; -import deDE from "./languages/de-DE"; +import hu from "./languages/hu"; import daDK from "./languages/da-DK"; -import deDE from "./languages/de-DE"; +import hu from "./languages/hu"; import deDE from "./languages/de-DE"; -import deDE from "./languages/de-DE"; +import hu from "./languages/hu"; import en from "./languages/en"; -import deDE from "./languages/de-DE"; +import hu from "./languages/hu"; import esEs from "./languages/es-ES"; -import deDE from "./languages/de-DE"; +import hu from "./languages/hu"; import etEE from "./languages/et-EE"; -import deDE from "./languages/de-DE"; +import hu from "./languages/hu"; import fa from "./languages/fa"; -import deDE from "./languages/de-DE"; +import hu from "./languages/hu"; import frFR from "./languages/fr-FR"; - "pt-BR": ptBR, +}; - "fr-FR": frFR, - "hu": hu, -import en from "./languages/en"; import daDK from "./languages/da-DK"; +import hu from "./languages/hu"; -import en from "./languages/en"; +let messages = { import deDE from "./languages/de-DE"; - "id-ID" : idID, +import { createI18n } from "vue-i18n/index"; -import en from "./languages/en"; import esEs from "./languages/es-ES"; - "da-DK": daDK, - "sr": sr, -import en from "./languages/en"; import frFR from "./languages/fr-FR"; -import en from "./languages/en"; +import daDK from "./languages/da-DK"; import hu from "./languages/hu"; -import esEs from "./languages/es-ES"; +import hrHR from "./languages/hr-HR"; -import esEs from "./languages/es-ES"; +import hrHR from "./languages/hr-HR"; import { createI18n } from "vue-i18n/index"; -import esEs from "./languages/es-ES"; +import hrHR from "./languages/hr-HR"; import daDK from "./languages/da-DK"; -import esEs from "./languages/es-ES"; +import hrHR from "./languages/hr-HR"; import deDE from "./languages/de-DE"; -import esEs from "./languages/es-ES"; +import hrHR from "./languages/hr-HR"; import en from "./languages/en"; - "et-EE": etEE, - "vi": vi, - "zh-TW": zhTW -}; const rtlLangs = ["fa"]; @@ -106,6 +89,6 @@ locale: currentLocale(), fallbackLocale: "en", silentFallbackWarn: true, silentTranslationWarn: true, -import fa from "./languages/fa"; import { createI18n } from "vue-i18n/index"; +import esEs from "./languages/es-ES"; }); diff --git a/src/languages/README.md b/src/languages/README.md index 52b70fa84f5818cb7e7f8922352e05b0a10a1930..945fc2078a7bb50995c25542ad58e5b2bd841499 100644 --- a/src/languages/README.md +++ b/src/languages/README.md @@ -5,10 +5,7 @@ 2. Create a language file (e.g. `zh-TW.js`). The filename must be ISO language code: http://www.lingoes.net/en/translator/langcode.htm 3. Run `npm run update-language-files`. You can also use this command to check if there are new strings to translate for your language. 4. Your language file should be filled in. You can translate now. 5. Translate `src/components/settings/Security.vue` (search for a `Confirm` component with `rel="confirmDisableAuth"`). -6. Import your language file in `src/i18n.js` and add it to `languageList` constant. +6. Add it into `languageList` constant. 7. Make a [pull request](https://github.com/louislam/uptime-kuma/pulls) when you have done. - -One of good examples: -https://github.com/louislam/uptime-kuma/pull/316/files If you do not have programming skills, let me know in [Issues section](https://github.com/louislam/uptime-kuma/issues). I will assist you. 😏 diff --git a/src/languages/bg-BG.js b/src/languages/bg-BG.js index f1d9b0784a47f65a6b6a671610c33a5422cb6314..3ae95b3608194b9c3e049ad49b17f93887eac52c 100644 --- a/src/languages/bg-BG.js +++ b/src/languages/bg-BG.js @@ -89,7 +89,7 @@ None: "Без", Timezone: "Часова зона", "Search Engine Visibility": "Видимост за търсачки", "Allow indexing": "Разреши индексиране", - "Discourage search engines from indexing site": "Обезкуражи индексирането на сайта от търсачките", + "Discourage search engines from indexing site": "Не позволявай на търсачките да индексират този сайт", "Change Password": "Промени парола", "Current Password": "Текуща парола", "New Password": "Нова парола", @@ -307,4 +307,5 @@ apiCredentials: "API удостоверяване", PasswordsDoNotMatch: "Паролите не съвпадат.", "Current User": "Текущ потребител", recent: "Скорошни", + shrinkDatabaseDescription: "Инициира \"VACUUM\" за \"SQLite\" база данни. Ако Вашата база данни е създадена след версия 1.10.0, \"AUTO_VACUUM\" функцията е активна и това действие не нужно.", }; diff --git a/src/main.js b/src/main.js index 14b87f49d1caf5b6d7358eaa7e90736a3db79eab..1849090815790c60d1c33b6be250c3c9fc4d102b 100644 --- a/src/main.js +++ b/src/main.js @@ -12,6 +12,7 @@ import mobile from "./mixins/mobile"; import publicMixin from "./mixins/public"; import socket from "./mixins/socket"; import theme from "./mixins/theme"; +import lang from "./mixins/lang"; import { router } from "./router"; import { appName } from "./util.ts"; @@ -22,6 +23,7 @@ theme, mobile, datetime, publicMixin, + lang, ], data() { return { diff --git a/src/mixins/lang.js b/src/mixins/lang.js new file mode 100644 index 0000000000000000000000000000000000000000..31d5a8e0b970aba3d6b6bc6d8e59f97034e9db23 --- /dev/null +++ b/src/mixins/lang.js @@ -0,0 +1,33 @@ +import { currentLocale } from "../i18n"; +import { setPageLocale } from "../util-frontend"; +const langModules = import.meta.glob("../languages/*.js"); + +export default { + data() { + return { + language: currentLocale(), + }; + }, + + async created() { + if (this.language !== "en") { + await this.changeLang(this.language); + } + }, + + watch: { + async language(lang) { + await this.changeLang(lang); + }, + }, + + methods: { + async changeLang(lang) { + let message = (await langModules["../languages/" + lang + ".js"]()).default; + this.$i18n.setLocaleMessage(lang, message); + this.$i18n.locale = lang; + localStorage.locale = lang; + setPageLocale(); + } + } +}; diff --git a/src/pages/Settings.vue b/src/pages/Settings.vue index bacda3a389f0718c62dd7c8fa08b992680f14996..3378a0e9136650fcf7a79eea1738656d90e25716 100644 --- a/src/pages/Settings.vue +++ b/src/pages/Settings.vue @@ -44,9 +44,21 @@ show: true, settings: {}, settingsLoaded: false, + }; + }, + computed: { + currentPage() { + let pathEnd = useRoute().path.split("/").at(-1); + {{ $t("Settings") }} - <div> + return "general"; + } + return pathEnd; + }, + + subMenus() { + return { general: { title: this.$t("General"), }, @@ -68,20 +80,9 @@ }, about: { title: this.$t("About"), }, - }, - }; - }, - - <template> - currentPage() { - <h1 v-show="show" class="mb-3"> - if (pathEnd == "settings" || pathEnd == null) { - </h1> - } - return pathEnd; }, }, diff --git a/test/e2e.spec.js b/test/e2e.spec.js index 66bbb794b27a7715f7d6cc42b56b895fc087a30d..d4835d1cf6ef080081811b741bfc9a40da95c2f3 100644 --- a/test/e2e.spec.js +++ b/test/e2e.spec.js @@ -83,6 +83,7 @@ }); // Settings Page + /* describe("Settings", () => { beforeEach(async () => { await page.goto(baseURL + "/settings"); @@ -261,6 +262,7 @@ // return badge && badge.innerText == "0%"; // }, { timeout: 3000 }); // }); }); + */ /* * TODO