Internacionalización de Aplicaciones con Vue I18n
Clase 51 de 53 • Curso Profesional de Vue.js 2
Contenido del curso
- 3

Herramientas esenciales para desarrollar con BioJS y NodeJS
06:13 - 4

Creación de una Aplicación Vue.js con CLI y Webpack Simple
12:50 - 5

Configuración y uso de Webpack en proyectos JavaScript
10:38 - 6

Configuración y uso de Babel para compatibilidad JavaScript
05:06 - 7

Configuración de eSlimt con EstándarJS y Webpack
15:34 - 8

Integración de SaaS y Bulma en Aplicaciones Vue.js
06:18 - 9

Configuración de Pag para optimizar el workflow de desarrollo HTML
04:23 - 10
Diseño de Mockups: Práctica y Colaboración en Comunidad
00:20 - 11
Creación de Vistas con Mockups y Vue.js
00:32
- 12

Expresiones en Vue: Manipulación Dinámica del DOM
03:49 - 13

Directivas de Vue: Uso y Funciones Principales
06:22 - 14

Data Binding y Directivas en Vue: bmodel y bevined
04:11 - 15

Propiedades Computadas en JavaScript: Creación y Uso Práctico
04:13 - 16

Uso de Watchers en Biomóvil para Gestión de Cambios de Propiedades
02:25 - 17

Manipulación de Eventos y Métodos en Aplicaciones Web
06:12 - 18

Creación de Interfaz con Vue.js y Framework CSS Bulma
19:03 - 19
Manipulación del DOM con Vue.js: Práctica y Ejercicios
03:00
- 23

Creación y Registro de Componentes en Vue.js
08:46 - 24

Creación de Componentes en Vue.js con Bulma para Platzi Music
09:50 - 25

Reactividad y Virtual DOM en Vue.js: Conceptos y Soluciones
06:14 - 26

Ciclo de Vida de Componentes en Vue.js: Hooks y Ejecución de Código
05:38 - 27

Comunicación entre Componentes en Vue.js: Props y Eventos
23:27 - 28

Comunicación entre Componentes en Vue: Eventos de Hijo a Padre
12:04 - 29

Uso de Slots para Inyección Dinámica de HTML en Componentes Vue
13:42 - 30

Comunicación entre Componentes Vue con Event Bus y Plugins
19:19
- 39

Gestión de Estados Centralizados con la Librería BuX
03:41 - 40

Integración de VueX y arquitectura Flux en Vue.js
17:32 - 41

Mutaciones en Vuex: Gestión y Actualización del Estado Reactivo
08:16 - 42

Uso de Getters en Vuex para Acceso Personalizado de Estado
07:35 - 43

Acciones asincrónicas en Vuex: cómo implementarlas y utilizarlas
07:55 - 44

Integración de VueX y Babel en PlatziMusic
26:37
¿Qué es la internacionalización y cómo se implementa en Vue?
La internacionalización, o i18n como se le conoce comúnmente, consiste en adaptar nuestras aplicaciones para que puedan funcionar de manera óptima en varios idiomas y regiones. Se le llama i18n porque entre la "i" de "internacionalización" y la "n" hay 18 letras. Usar una biblioteca especializada en Vue, como vue-i18n, nos permite integrar esta funcionalidad de manera eficiente. Esta herramienta, aunque no es oficial, es una recomendación confiable, probada en producción, que facilita la traducción de los textos de nuestra aplicación.
¿Cómo instalamos y configuramos vue-i18n?
El primer paso para integrar vue-i18n en nuestra aplicación Vue es su instalación a través del gestor de paquetes npm.
npm install -s vue-i18n
Una vez instalada, es necesario crear un archivo de configuración. Este archivo actúa de manera similar a otras herramientas de Vue como el router o Vuex. Dentro de src, se crea un archivo llamado i18n.js, donde se realizan las importaciones necesarias:
import Vue from 'vue';
import VueI18n from 'vue-i18n';
Vue.use(VueI18n);
¿Cómo configuramos los mensajes y establecemos el idioma por defecto?
El siguiente paso es definir un objeto messages que contiene los textos que se desean traducir. Este objeto tiene sub-objetos por cada idioma soportado, cada uno almacenando las traducciones necesarias:
const messages = {
en: {
search: 'Search',
about: 'About'
},
es: {
search: 'Búsqueda',
about: 'Nosotros'
}
};
Creamos una instancia de VueI18n donde configuramos los mensajes y el idioma por defecto:
const i18n = new VueI18n({
locale: 'en', // Idioma por defecto
messages,
});
export default i18n;
¿Cómo se integran las traducciones en los componentes?
Para que los componentes puedan acceder a las traducciones, el objeto i18n debe ser inyectado en el archivo main.js de manera similar al router y el store:
import i18n from './i18n';
new Vue({
i18n,
// otros elementos de la instancia
}).$mount('#app');
En los componentes, podemos usar el método t que proporciona vue-i18n para mostrar las traducciones:
<template>
<div>
<p>{{ $t('search') }}</p>
<p>{{ $t('about') }}</p>
</div>
</template>
¿Cómo configuramos el cambio dinámico de idioma?
Para permitir que el usuario cambie de idioma y vea cómo las traducciones se actualizan en tiempo real, es necesario crear métodos que cambien la propiedad locale. Esto suele hacerse desde métodos dentro de un componente Vue:
methods: {
selectLang(lang) {
this.$i18n.locale = lang;
}
}
Dentro del componente, se pueden incluir iconos o textos que, al ser clickeados, llamen este método con el idioma deseado:
<button @click="selectLang('en')">🇬🇧</button>
<button @click="selectLang('es')">🇪🇸</button>
Finalmente, probar el funcionamiento cambiando de idioma con los botones agregados y observando cómo los textos cambian dinámicamente gracias a Vuex y el sistema de reactividad de Vue. Este enfoque no solo facilita la traducción de nuestra aplicación, sino que también mejora significativamente la experiencia del usuario multilenguaje.