diff --git a/locales/en.json b/locales/en.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/locales/en.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/locales/es.json b/locales/es.json new file mode 100644 index 0000000..1099692 --- /dev/null +++ b/locales/es.json @@ -0,0 +1,5 @@ +{ + "projects": { + "title": "Mis projectos" + } +} \ No newline at end of file diff --git a/nuxt.config.js b/nuxt.config.js index bf6992a..575c7e8 100644 --- a/nuxt.config.js +++ b/nuxt.config.js @@ -48,6 +48,7 @@ export default { '@nuxtjs/pwa', // Doc: https://github.com/nuxt/content '@nuxt/content', + 'nuxt-i18n', [ 'nuxt-fontawesome', { @@ -66,6 +67,30 @@ export default { ** See https://content.nuxtjs.org/configuration */ content: {}, + /* + ** nuxt-i18n config + */ + i18n: { + locales: [ + { + code: 'en', + iso: 'en-US', + file: 'en.json', + }, + { + code: 'es', + iso: 'es-ES', + file: 'es.json', + }, + ], + seo: true, + lazy: true, + defaultLocale: 'es', + langDir: 'locales/', + vueI18n: { + fallbackLocale: 'es', + }, + }, /* ** Build configuration ** See https://nuxtjs.org/api/configuration-build/ diff --git a/package-lock.json b/package-lock.json index 2cbfa4a..47fe9d8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -966,6 +966,23 @@ "purgecss": "^2.3.0" } }, + "@intlify/vue-i18n-extensions": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@intlify/vue-i18n-extensions/-/vue-i18n-extensions-1.0.2.tgz", + "integrity": "sha512-rnfA0ScyBXyp9xsSD4EAMGeOh1yv/AE7fhqdAdSOr5X8N39azz257umfRtzNT9sHXAKSSzpCVhIbMAkp5c/gjQ==", + "requires": { + "@babel/parser": "^7.9.6" + } + }, + "@intlify/vue-i18n-loader": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@intlify/vue-i18n-loader/-/vue-i18n-loader-1.0.0.tgz", + "integrity": "sha512-y7LlpKEQ01u7Yq14l4VNlbFYEHMmSEH1QXXASOMWspj9ZcIdCebhhvHCHqk5Oy5Epw3PtoxyRJNpb6Wle5udgA==", + "requires": { + "js-yaml": "^3.13.1", + "json5": "^2.1.1" + } + }, "@lokidb/full-text-search": { "version": "2.0.0-beta.9", "resolved": "https://registry.npmjs.org/@lokidb/full-text-search/-/full-text-search-2.0.0-beta.9.tgz", @@ -7739,6 +7756,11 @@ "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==" }, + "is-https": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-https/-/is-https-2.0.2.tgz", + "integrity": "sha512-UfUCKVQH/6PQRCh5Qk9vNu4feLZiFmV/gr8DjbtJD0IrCRIDTA6E+d/AVFGPulI5tqK5W45fYbn1Nir1O99rFw==" + }, "is-nan": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.0.tgz", @@ -7932,6 +7954,11 @@ "integrity": "sha512-1hgLrLIrmCgZG+ID3VoLNLOSwjGnoZa8tyrUdEteMeIzsT6PH7PMLyUvbDwzNE56P3PNxyvuIOx4Uh2E5rzQIw==", "dev": true }, + "js-cookie": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-2.2.1.tgz", + "integrity": "sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ==" + }, "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -10034,6 +10061,21 @@ "@fortawesome/vue-fontawesome": "^0.1.4" } }, + "nuxt-i18n": { + "version": "6.12.2", + "resolved": "https://registry.npmjs.org/nuxt-i18n/-/nuxt-i18n-6.12.2.tgz", + "integrity": "sha512-XECHvyEGrHd4AnVFogE3XmaiOzn8j7VDssLjmMWUjZ4RbzB6pecNsxCwcUR7WGPvjXDONKAROS/zQDQL3g5Q7Q==", + "requires": { + "@babel/parser": "^7.5.5", + "@babel/traverse": "^7.5.5", + "@intlify/vue-i18n-extensions": "^1.0.1", + "@intlify/vue-i18n-loader": "^1.0.0", + "cookie": "^0.4.0", + "is-https": "^2.0.0", + "js-cookie": "^2.2.1", + "vue-i18n": "^8.18.1" + } + }, "oauth-sign": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", @@ -14902,6 +14944,11 @@ "resolved": "https://registry.npmjs.org/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz", "integrity": "sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog==" }, + "vue-i18n": { + "version": "8.18.2", + "resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-8.18.2.tgz", + "integrity": "sha512-0X5nBTCZAVjlwcrPaYJwNs3iipBBTv0AUHwQUOa8yP3XbQGWKbRHqBb3OhCYtum/IHDD21d/df5Xd2VgyxbxfA==" + }, "vue-loader": { "version": "15.9.2", "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-15.9.2.tgz", diff --git a/package.json b/package.json index 3c95525..a26ca8c 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,8 @@ "@nuxt/content": "^1.3.2", "@nuxtjs/pwa": "^3.0.0-beta.20", "nuxt": "^2.13.0", - "nuxt-fontawesome": "^0.4.0" + "nuxt-fontawesome": "^0.4.0", + "nuxt-i18n": "^6.12.2" }, "devDependencies": { "@nuxtjs/eslint-config": "^3.0.0", diff --git a/pages/projects/index.vue b/pages/projects/index.vue index 2fd8025..de36314 100644 --- a/pages/projects/index.vue +++ b/pages/projects/index.vue @@ -1,3 +1,3 @@