Vue.js에서 사용자의 선택에 따라 한국어 또는 영어 두가지의 다국어를 적용시키는 방법!🤔
(저는 vue3에서 진행했습니다!)
우선 다국어를 적용 시키기 위해 프로젝트에 vue-i18n (다국어 처리를 쉽게 도와주는 라이브러리)을 설치합니다.
npm install vue-i18n
설치 후 저는 경로를 아래와 같이 잡았고, 언어는 각각의 json 파일로 분리 시켜 관리가 편하도록 하였습니다
src/
...
├── i18n
│ └── i18n.js
├── locales
│ ├── ko.json
│ └── en.json
├── store
│ └── index.js
├── App.vue
└── main.js
그리고 i18n에 대한 설정을 잡아주기 위해서 i18n.js 파일에는 아래와 같이 설정을 추가해주었습니다.
// i18n.js
import { createI18n } from 'vue-i18n'
import ko from '@/locales/ko.json'
import en from '@/locales/en.json'
export const i18n = new creatI18n({
locales: 'ko',
fallbacklocale: 'en',
messages: {
'ko': ko,
'en': en
}
})
locales는 기본으로 적용될 다국어, fallbacklocale에는 다국어 처리가 되어있지 않을 경우 적용될 언어입니다.
각각의 다국어 파일에는 아래와 같이 작성해줍니다.
key와 value값을 넣어 작성해줍니다.
// ko.json
{
"titleCd" : "제목",
"bananaCd" : "바나나"
}
// en.json
{
"titleCd" : "title",
"bananaCd" : "banana"
}
테스트용 다국어를 넣어준 후에 main.js에 아래와같이 추가해줍니다!
// main.js
import { createApp } from "vue"
import App from "./App.vue"
import store from "./store"
import { i18n } from "./i18n/i18n" // 추가
const app = createApp(App);
app.use(store)
.use(i18n) // 추가
.mount("#app")
따로 i18n.js로 설정값을 빼주었던 것을 main.js에서 import하여 가져옵니다👏
이렇게 설정은 끝!
이제 화면에만 잘 나오게.....
테스트용 view를 만들고 아래와 같이 다국어 테스트용 ui 생성해줍니다.
// Test.vue
<template>
<div>
<h1> 다국어 적용 테스트 </h1>
<p> {{ $t('titleCd') }} </p>
<p> {{ $t('bananaCd') }} </p>
<button @click="$i18n.locale='ko'"> 한국어 </button>
<button @click="$i18n.locale='en'"> 영어 </button>
</div>
</template>
<script>
</script>
기본으로 설정된 언어로 먼저 화면에 보여지게 됩니다.
한국어 버튼을 누르면 다국어 코드가 적용된 부분의 언어가 한국어가 적용이 되고, 영어 버튼을 누르면 영어로 변하게 됩니다.
다음번에는 셀렉트박스로 다국어 설정을 하고 변경될때마다 로컬스토리지에 저장하여 다른 뷰로 넘어갈때 초기화되지 않게 해보겠습니당
'프로그래밍 > vue' 카테고리의 다른 글
[vue.js] 왜 Vue는 axios를 권장할까? (0) | 2022.08.07 |
---|---|
[vue.js] hash mode는 도대체 뭐지? (0) | 2022.07.08 |
[vue.js] vue & springboot 404 에러 (0) | 2022.06.22 |
[vue.js] vue에 대한 지식들 (0) | 2022.06.21 |
[vue.js] 다국어 로컬스토리지 저장 - i18n (0) | 2022.06.20 |