diff --git a/package-lock.json b/package-lock.json index 59d220d..6a1a5e5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -795,7 +795,6 @@ "version": "7.11.2", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.11.2.tgz", "integrity": "sha512-TeWkU52so0mPtDcaCTxNBI/IHiz0pZgr8VEFqXFtZWpYD08ZB6FaSwVAS8MKRQAP3bYKiVjwysOJgMFY28o6Tw==", - "dev": true, "requires": { "regenerator-runtime": "^0.13.4" } @@ -942,6 +941,21 @@ "node-fetch": "^2.6.0" } }, + "@panter/vue-i18next": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/@panter/vue-i18next/-/vue-i18next-0.15.2.tgz", + "integrity": "sha512-7VX9GyxHJNEJKa2CRzC294Oz5EEbzVDZ1o3O/P8gL/PWBmcFOFsuivRbP/1a9ga2ihv/NBzoCWMCNIEEeCcONQ==", + "requires": { + "deepmerge": "^2.0.0" + }, + "dependencies": { + "deepmerge": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-2.2.1.tgz", + "integrity": "sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA==" + } + } + }, "@soda/friendly-errors-webpack-plugin": { "version": "1.7.1", "resolved": "https://registry.npmjs.org/@soda/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.7.1.tgz", @@ -3246,7 +3260,8 @@ "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", - "dev": true + "dev": true, + "optional": true }, "coa": { "version": "2.0.2", @@ -6554,6 +6569,32 @@ "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", "dev": true }, + "i18next": { + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-20.2.1.tgz", + "integrity": "sha512-JLruWDEQ3T6tKT6P7u+DsNtToMHUwUcQIYOMRcnNBdUhSfKkoIDUKdVDKgGtmqr//LrirxjADUdr3d5Gwbow6g==", + "requires": { + "@babel/runtime": "^7.12.0" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.13.10.tgz", + "integrity": "sha512-4QPkjJq6Ns3V/RgpEahRk+AGfL0eO6RHHtTWoNNr5mO49G6B5+X6d6THgWEAvTrznU5xYpbAlVKRYcsCgh/Akw==", + "requires": { + "regenerator-runtime": "^0.13.4" + } + } + } + }, + "i18next-browser-languagedetector": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/i18next-browser-languagedetector/-/i18next-browser-languagedetector-6.1.0.tgz", + "integrity": "sha512-NXbr/qPqkg6VyUwPrzmVOAafqIk1zdjzhYVxZWoSi338XEGmuOeroEglLdR8nJUJcf5BfOSHva80tqCPwXFTFQ==", + "requires": { + "@babel/runtime": "^7.5.5" + } + }, "iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -8982,7 +9023,8 @@ "version": "2.2.2", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", - "dev": true + "dev": true, + "optional": true }, "pify": { "version": "4.0.1", @@ -10131,8 +10173,7 @@ "regenerator-runtime": { "version": "0.13.7", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", - "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==", - "dev": true + "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==" }, "regenerator-transform": { "version": "0.14.5", @@ -10518,7 +10559,8 @@ "version": "4.0.8", "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=", - "dev": true + "dev": true, + "optional": true }, "rx-lite-aggregates": { "version": "4.0.8", diff --git a/package.json b/package.json index 911a4b7..0dea714 100644 --- a/package.json +++ b/package.json @@ -8,6 +8,7 @@ "lint": "vue-cli-service lint" }, "dependencies": { + "@panter/vue-i18next": "^0.15.2", "@vuex-orm/core": "^0.36.3", "@vuex-orm/plugin-change-flags": "https://github.com/mareksmakosz/plugin-change-flags.git", "bootstrap": "^4.5.2", @@ -15,6 +16,8 @@ "core-js": "^2.6.5", "dayjs": "^1.10.3", "es6-promise": "^4.2.6", + "i18next": "^20.2.1", + "i18next-browser-languagedetector": "^6.1.0", "localforage": "^1.9.0", "lodash": "^4.17.21", "register-service-worker": "^1.7.1", diff --git a/public/locales/en.json b/public/locales/en.json new file mode 100644 index 0000000..680c869 --- /dev/null +++ b/public/locales/en.json @@ -0,0 +1,6 @@ +{ + "invoices": { + "title": "Invoices", + "new_invoice": "New invoice" + } +} diff --git a/public/locales/est.json b/public/locales/est.json new file mode 100644 index 0000000..9d3e4cf --- /dev/null +++ b/public/locales/est.json @@ -0,0 +1,6 @@ +{ + "invoices": { + "title": "Arved", + "new_invoice": "Uus arve" + } +} diff --git a/src/components/LanguageSwitcher.vue b/src/components/LanguageSwitcher.vue new file mode 100644 index 0000000..533b10e --- /dev/null +++ b/src/components/LanguageSwitcher.vue @@ -0,0 +1,35 @@ + + diff --git a/src/components/TheFooter.vue b/src/components/TheFooter.vue index 48b2e4e..f886c29 100644 --- a/src/components/TheFooter.vue +++ b/src/components/TheFooter.vue @@ -6,6 +6,7 @@ {{ theme === 'dark' ? 'wb_sunny' : 'brightness_2' }} +
-

Invoices

+

{{ $t('title') }}

- +