uniapp 언어 전환은 한 번만 적용됩니다.
세계화의 급속한 발전으로 인해 점점 더 많은 응용 프로그램이 여러 언어를 지원해야 합니다. 크로스 플랫폼 프레임워크인 uniapp은 다중 언어 전환 구현 시에도 폭넓은 주목을 받았습니다. 그러나 일부 개발자들은 다국어 전환을 위해 uniapp 프레임워크를 사용할 때 언어 전환이 한 번만 적용된다는 것을 발견했다고 보고했습니다. 즉, 다른 언어로 전환한 후 원래 언어로 다시 전환한 후 인터페이스가 작동하지 않는다는 것입니다. 완전히 복원되지 않았습니다. 이로 인해 많은 개발자가 uniapp 프레임워크에 대해 고민하고 심층적인 탐색을 수행하게 되었습니다. 이 글에서는 uniapp 언어 전환이 한 번만 적용되는 문제에 대해 논의하고 해결책을 제시합니다.
1. 문제 설명
uniapp 개발에서는 uni-i18n 플러그인을 사용하여 다국어 전환을 구현하겠습니다. 이 플러그인은 매우 편리하며 기본 항목 파일에만 도입하면 됩니다. 코드는 다음과 같습니다:
import VueI18n from 'vue-i18n'; import messages from '@/common/lang'; // 引入语言文件 Vue.use(VueI18n); const i18n = new VueI18n({ locale: uni.getStorageSync('lang') || 'zh', messages }); export default i18n;
그런 다음 각 구성 요소 내에서 $t() 메서드를 사용하여 해당 언어의 번역을 가져옵니다. 예:
<template> <view>{{ $t('home.title') }}</view> </template> <script> export default { mounted() { console.log(this.$t('home.title')); // 打印出对应语言的翻译 } } </script>
이렇게 하면 여러 언어 간에 쉽게 전환할 수 있습니다. 그러나 일부 개발자들은 실제 사용 시 언어 전환이 한 번만 적용된다고 보고했습니다. 즉, 언어를 전환한 후, 다시 원래 언어로 다시 전환하면 원래 상태로 완전히 복원되지는 않습니다. 이런 경우에는 원인을 찾아 해결해야 합니다.
2. 원인 분석
uni-i18n 플러그인의 소스 코드를 살펴보면 locale 속성을 수정하여 언어 전환이 이루어지는 것을 알 수 있습니다. 로케일 속성은 app.globalData 객체에 저장됩니다. 따라서 언어 전환이 한 번만 적용되는 문제는 로케일 속성이 올바르게 업데이트되지 않았기 때문일 수 있습니다.
여러 언어 간 전환 시 애플리케이션이 열릴 때마다 저장소에 로케일 속성이 저장되지 않으면 기본 언어가 사용됩니다. 언어를 전환할 때 먼저 로캘 속성을 업데이트한 다음 새 로캘 속성을 저장소에 저장합니다. 이 과정에 따르면 언어 전환이 한 번만 적용되는 이유는 app.globalData 객체의 locale 속성을 제때 업데이트하지 않았기 때문임을 알 수 있습니다. 따라서 원래 언어로 다시 전환하면 이전 로케일 속성이 계속 읽혀져 인터페이스가 완전히 복원되지 않습니다.
3. Solution
사실 이 문제를 해결하는 방법은 비교적 간단합니다. locale 속성을 수정하면 app.globalData 객체에서만 수정하면 됩니다. 구체적인 코드는 다음과 같습니다.
import VueI18n from 'vue-i18n'; import messages from '@/common/lang'; // 引入语言文件 Vue.use(VueI18n); const i18n = new VueI18n({ locale: uni.getStorageSync('lang') || 'zh', messages }); // 加入以下代码 i18n.vm.$watch('locale', function(val) { console.log('i18n.vm.locale:', val); uni.setStorageSync('lang', val); uni.$emit('localeChange', val); uni.getStorage({ key: 'lang', success: function(res) { if (res.data !== val) { uni.setStorageSync('lang', val); } } }); app.globalData.locale = val; }); export default i18n;
여기서 주요 목적은 vm.$watch 메소드를 추가하는 것입니다. 로케일 속성이 변경되면 app.globalData 객체의 로케일 속성이 자동으로 업데이트되어 전환 문제가 해결됩니다. 언어는 한 번만 적용됩니다.
요약
uniapp 개발에서 다국어 전환은 매우 일반적인 요구 사항입니다. 그러나 세부 사항에 주의를 기울이지 않으면 언어 전환이 한 번만 적용되는 문제에 직면할 수 있습니다. uni-i18n 플러그인에 대한 연구 및 분석을 통해 우리는 문제의 근본 원인이 app.globalData 객체의 로케일 속성을 적시에 업데이트하지 못한 데 있음을 발견했습니다. 따라서 로케일 속성을 수정하는 동안 app.globalData 객체의 로케일 속성만 업데이트하면 됩니다. 이 문제에 대한 해결책은 매우 간단하지만, 작은 오류로 인해 애플리케이션이 제대로 실행되지 않는 것을 방지하기 위해 개발 과정에서 세부 사항에 주의를 기울여야 함을 상기시켜 줍니다.
위 내용은 uniapp 언어 전환은 한 번만 적용됩니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











기사는 UNI-APP에서 SASS 및 적은 전처리기를 사용하여 설정, 혜택 및 이중 사용을 자세히 설명합니다. 주요 초점은 구성과 장점에 있습니다. [159 자]

이 기사는 Uni-App의 애니메이션 API를 사용하는 방법, 애니메이션, 주요 기능 및 애니메이션 타이밍을 결합하고 제어하는 방법을 작성하고 적용하는 단계를 자세히 설명합니다. character count : 159

이 기사는 장치, 통합, 기능, UI/UX, 성능, 크로스 플랫폼 및 보안 테스트를 포함한 UniAPP 응용 프로그램에 대한 다양한 테스트 유형에 대해 설명합니다. 또한 크로스 플랫폼 호환성을 보장하고 JES와 같은 도구를 권장합니다.

이 기사는 HBuilderx, WeChat 개발자 도구 및 Chrome Devtools와 같은 도구에 중점을 둔 UniAPP 개발을위한 디버깅 도구 및 모범 사례에 대해 설명합니다.

이 기사는 코드 최적화, 리소스 관리 및 코드 분할 및 게으른로드와 같은 기술에 중점을 둔 UNIAPP 패키지 크기를 줄이기위한 전략에 대해 설명합니다.

이 기사는 로컬 데이터 관리를 위해 Uni-App의 스토리지 API (Uni.setStorage, uni.getStorage)를 사용하는 방법을 설명하고 모범 사례, 문제 해결 및 효과적인 사용을위한 제한 사항 및 고려 사항에 대해 설명합니다.

이 기사에서는 UNI-APP의 API를 사용하여 허가 설정 및 오류 처리를 포함하여 카메라 및 지리적 위치와 같은 장치 기능에 액세스하는 것에 대해 설명합니다. 문자 수 : 158

이 기사는 JavaScript 및 데이터 바인딩을 사용하여 UNI-APP에서 사용자 입력 검증에 대해 설명하며 데이터 무결성에 대한 클라이언트 및 서버 측 유효성 검사를 모두 강조합니다. uni-validate와 같은 플러그인은 양식 검증에 권장됩니다.
