From 7e6f6d77804c2efdb3c1bdd32d5c4ce66542c608 Mon Sep 17 00:00:00 2001 From: rainu Date: Wed, 30 Oct 2024 16:29:03 +0100 Subject: [PATCH] introduce i18n (english, german atm) --- package-lock.json | 65 +++++++++- package.json | 3 +- src/App.vue | 31 +++-- src/components/DeviceIndicator.vue | 16 +-- src/components/DirectoryPicker.vue | 2 +- src/components/Settings.vue | 56 +++++++-- src/components/exchange/FileExporter.vue | 4 +- src/components/exchange/FileImporter.vue | 2 +- src/components/image/ImageDeletion.vue | 23 ++-- src/components/progress/Bar.vue | 2 +- src/components/text/AutoTokenizerLoader.vue | 2 +- src/components/text/ClipTextModelLoader.vue | 2 +- src/components/text/TextEmbedding.vue | 4 +- .../vision/ClipVisionModelLoader.vue | 2 +- src/components/vision/ProcessorLoader.vue | 2 +- src/components/vision/VisionEmbedding.vue | 26 ++-- src/i18n/de.json | 101 +++++++++++++++ src/i18n/en.json | 115 ++++++++++++++++++ src/i18n/index.ts | 13 ++ src/main.ts | 13 ++ src/router/middleware/support.ts | 13 +- src/store/settings.ts | 6 + src/views/Unsupported.vue | 5 +- src/views/directory/Search.vue | 9 +- 24 files changed, 445 insertions(+), 72 deletions(-) create mode 100644 src/i18n/de.json create mode 100644 src/i18n/en.json create mode 100644 src/i18n/index.ts diff --git a/package-lock.json b/package-lock.json index 961b2eb..dfb2d63 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,16 +1,17 @@ { "name": "image-fainder", - "version": "0.0.0", + "version": "0.1.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "image-fainder", - "version": "0.0.0", + "version": "0.1.0", "dependencies": { "@huggingface/transformers": "^3.0.0", "pinia": "^2.2.4", "vue": "^3.5.10", + "vue-i18n": "^10.0.4", "vue-router": "^4.4.5", "vuetify": "^3.7.3" }, @@ -852,6 +853,47 @@ "url": "https://opencollective.com/libvips" } }, + "node_modules/@intlify/core-base": { + "version": "10.0.4", + "resolved": "https://registry.npmjs.org/@intlify/core-base/-/core-base-10.0.4.tgz", + "integrity": "sha512-GG428DkrrWCMhxRMRQZjuS7zmSUzarYcaHJqG9VB8dXAxw4iQDoKVQ7ChJRB6ZtsCsX3Jse1PEUlHrJiyQrOTg==", + "dependencies": { + "@intlify/message-compiler": "10.0.4", + "@intlify/shared": "10.0.4" + }, + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://github.com/sponsors/kazupon" + } + }, + "node_modules/@intlify/message-compiler": { + "version": "10.0.4", + "resolved": "https://registry.npmjs.org/@intlify/message-compiler/-/message-compiler-10.0.4.tgz", + "integrity": "sha512-AFbhEo10DP095/45EauinQJ5hJ3rJUmuuqltGguvc3WsvezZN+g8qNHLGWKu60FHQVizMrQY7VJ+zVlBXlQQkQ==", + "dependencies": { + "@intlify/shared": "10.0.4", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://github.com/sponsors/kazupon" + } + }, + "node_modules/@intlify/shared": { + "version": "10.0.4", + "resolved": "https://registry.npmjs.org/@intlify/shared/-/shared-10.0.4.tgz", + "integrity": "sha512-ukFn0I01HsSgr3VYhYcvkTCLS7rGa0gw4A4AMpcy/A9xx/zRJy7PS2BElMXLwUazVFMAr5zuiTk3MQeoeGXaJg==", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://github.com/sponsors/kazupon" + } + }, "node_modules/@isaacs/cliui": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", @@ -2424,6 +2466,25 @@ } } }, + "node_modules/vue-i18n": { + "version": "10.0.4", + "resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-10.0.4.tgz", + "integrity": "sha512-1xkzVxqBLk2ZFOmeI+B5r1J7aD/WtNJ4j9k2mcFcQo5BnOmHBmD7z4/oZohh96AAaRZ4Q7mNQvxc9h+aT+Md3w==", + "dependencies": { + "@intlify/core-base": "10.0.4", + "@intlify/shared": "10.0.4", + "@vue/devtools-api": "^6.5.0" + }, + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://github.com/sponsors/kazupon" + }, + "peerDependencies": { + "vue": "^3.0.0" + } + }, "node_modules/vue-router": { "version": "4.4.5", "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.4.5.tgz", diff --git a/package.json b/package.json index 0d266a6..e694094 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "image-fainder", "private": true, - "version": "0.1.0", + "version": "0.2.0", "type": "module", "scripts": { "dev": "vite", @@ -13,6 +13,7 @@ "@huggingface/transformers": "^3.0.0", "pinia": "^2.2.4", "vue": "^3.5.10", + "vue-i18n": "^10.0.4", "vue-router": "^4.4.5", "vuetify": "^3.7.3" }, diff --git a/src/App.vue b/src/App.vue index e6c1e7c..d1fd2a3 100644 --- a/src/App.vue +++ b/src/App.vue @@ -18,20 +18,20 @@ - - + + @@ -51,10 +51,10 @@ import { defineComponent } from 'vue' import { mapState } from 'pinia' import { useFileStore } from './store/file.ts' import { useSettingsStore } from './store/settings.ts' -import { RouteDirectoryAnalyse, RouteDirectorySearch, RouteExport, RouteHome, RouteImport } from "./router" +import { RouteDirectoryAnalyse, RouteDirectorySearch, RouteExport, RouteHome, RouteImport } from './router' import DirectoryPicker from './components/DirectoryPicker.vue' -import Settings from "./components/Settings.vue" -import DeviceIndicator from "./components/DeviceIndicator.vue" +import Settings from './components/Settings.vue' +import DeviceIndicator from './components/DeviceIndicator.vue' export default defineComponent({ components: { DeviceIndicator, Settings, DirectoryPicker }, @@ -72,9 +72,22 @@ export default defineComponent({ } }, computed: { - ...mapState(useSettingsStore, ['theme']), + ...mapState(useSettingsStore, ['theme', 'locale']), ...mapState(useFileStore, ['mainDirectory']), }, + methods: { + applyLocale() { + this.$i18n.locale = this.locale + }, + }, + watch: { + locale() { + this.applyLocale() + }, + }, + mounted() { + this.applyLocale() + }, }) diff --git a/src/components/DeviceIndicator.vue b/src/components/DeviceIndicator.vue index 43bf88d..955cef8 100644 --- a/src/components/DeviceIndicator.vue +++ b/src/components/DeviceIndicator.vue @@ -7,13 +7,13 @@