penukaran bahasa uniapp hanya berkuat kuasa sekali
Dengan perkembangan pesat globalisasi, semakin banyak aplikasi perlu menyokong berbilang bahasa. Sebagai rangka kerja merentas platform, uniapp juga telah mendapat perhatian meluas apabila melaksanakan penukaran berbilang bahasa. Walau bagaimanapun, sesetengah pembangun melaporkan bahawa apabila menggunakan rangka kerja uniapp untuk penukaran berbilang bahasa, mereka mendapati penukaran bahasa hanya berkuat kuasa sekali, iaitu selepas bertukar kepada bahasa lain dan kemudian bertukar kembali kepada bahasa asal, antara muka tidak dipulihkan sepenuhnya. Ini menyebabkan ramai pembangun bimbang dan menjalankan penerokaan mendalam tentang rangka kerja uniapp. Artikel ini akan membincangkan masalah bahawa penukaran bahasa uniapp hanya berkuat kuasa sekali dan memberikan penyelesaian.
1. Penerangan Masalah
Dalam pembangunan uniapp, kami akan menggunakan pemalam uni-i18n untuk mencapai penukaran berbilang bahasa. Pemalam ini sangat mudah dan hanya perlu diperkenalkan dalam fail entri utama. Kodnya adalah seperti berikut:
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;
Kemudian dalam setiap komponen, gunakan kaedah $t() untuk mendapatkan terjemahan bahasa yang sepadan. Contohnya:
<template> <view>{{ $t('home.title') }}</view> </template> <script> export default { mounted() { console.log(this.$t('home.title')); // 打印出对应语言的翻译 } } </script>
Dengan cara ini kita boleh bertukar antara berbilang bahasa dengan mudah. Walau bagaimanapun, sesetengah pembangun telah melaporkan bahawa dalam penggunaan sebenar, penukaran bahasa hanya berkuat kuasa sekali. Dalam erti kata lain, selepas menukar bahasa, apabila menukar kembali ke bahasa asal semula, ia tidak dipulihkan sepenuhnya kepada keadaan asal. Dalam kes ini, kita perlu mencari punca dan membetulkannya.
2. Analisis sebab
Dengan mengkaji kod sumber pemalam uni-i18n, kita boleh mendapati bahawa penukaran bahasa dicapai dengan mengubah suai atribut setempat. Atribut locale disimpan dalam objek app.globalData. Oleh itu, masalah menukar bahasa hanya berkuat kuasa sekali boleh dikaitkan dengan atribut lokal yang tidak dikemas kini dengan betul.
Semasa penukaran berbilang bahasa, kami akan menyimpan atribut locale baharu dalam storan Setiap kali aplikasi dibuka, atribut locale pertama kali dibaca daripada storan Jika tiada atribut locale dalam storan, bahasa lalai digunakan. Apabila menukar bahasa, kami akan mengemas kini atribut locale dahulu dan kemudian menyimpan atribut locale baharu dalam storan. Mengikut proses ini, kami dapati bahawa sebab penukaran bahasa hanya berkuat kuasa sekali ialah kami tidak mengemas kini atribut tempat dalam objek app.globalData dalam masa. Oleh itu, apabila kita bertukar kembali kepada bahasa asal sekali lagi, atribut locale lama masih dibaca, menyebabkan antara muka tidak dipulihkan sepenuhnya.
3. Penyelesaian
Sebenarnya, menyelesaikan masalah ini agak mudah. Dengan mengubah suai atribut locale, kami hanya perlu mengubah suainya dalam objek app.globalData. Kod khusus adalah seperti berikut:
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;
Perkara utama di sini ialah menambah kaedah vm.$watch Apabila atribut locale berubah, atribut locale dalam objek app.globalData akan dikemas kini secara automatik, sekali gus menyelesaikannya. masalah bahawa menukar bahasa hanya berlaku sekali.
Ringkasan
Dalam pembangunan uniapp, penukaran berbilang bahasa adalah keperluan yang sangat biasa. Walau bagaimanapun, jika kami tidak memberi perhatian kepada butiran, kami mungkin menghadapi masalah bahawa penukaran bahasa hanya berkuat kuasa sekali. Melalui penyelidikan dan analisis pemalam uni-i18n, kami mendapati bahawa punca masalah terletak pada kegagalan untuk mengemas kini atribut tempat dalam objek app.globalData tepat pada masanya. Oleh itu, anda hanya perlu mengemas kini atribut locale dalam objek app.globalData sambil mengubah suai atribut locale. Penyelesaian kepada masalah ini adalah sangat mudah, tetapi ia juga mengingatkan kita untuk memberi perhatian kepada butiran semasa proses pembangunan untuk mengelakkan aplikasi tidak berjalan dengan baik kerana beberapa ralat kecil.
Atas ialah kandungan terperinci penukaran bahasa uniapp hanya berkuat kuasa sekali. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Artikel membincangkan menggunakan SASS dan kurang preprocessors dalam UNI-APP, memperincikan persediaan, faedah, dan penggunaan dwi. Fokus utama adalah pada konfigurasi dan kelebihan. [159 aksara]

Artikel ini menerangkan cara menggunakan API Animasi Uni-App, memperincikan langkah-langkah untuk membuat dan menggunakan animasi, fungsi utama, dan kaedah untuk menggabungkan dan mengawal masa animasi.

Artikel ini membincangkan pelbagai jenis ujian untuk aplikasi UNIAPP, termasuk unit, integrasi, fungsional, UI/UX, prestasi, silang platform, dan ujian keselamatan. Ia juga meliputi memastikan keserasian silang platform dan mengesyorkan alat seperti JES

Artikel ini membincangkan alat penyahpepijatan dan amalan terbaik untuk pembangunan UNIPP, yang memberi tumpuan kepada alat seperti HBuildex, WeChat Developer Tools, dan Chrome Devtools.

Artikel ini membincangkan strategi untuk mengurangkan saiz pakej UNIAPP, memberi tumpuan kepada pengoptimuman kod, pengurusan sumber, dan teknik seperti pemisahan kod dan pemuatan malas.

Artikel ini menerangkan cara menggunakan API penyimpanan Uni-App (uni.setstorage, uni.getstorage) untuk pengurusan data tempatan, membincangkan amalan terbaik, penyelesaian masalah, dan menyoroti batasan dan pertimbangan untuk kegunaan yang berkesan.

Artikel ini membincangkan menggunakan API UNI-APP untuk mengakses ciri peranti seperti kamera dan geolokasi, termasuk tetapan kebenaran dan pengendalian ralat.

Artikel ini membincangkan mengesahkan input pengguna dalam UNI-APP menggunakan JavaScript dan mengikat data, menekankan kedua-dua klien dan pengesahan sisi pelayan untuk integriti data. Plugin seperti Uni-Validate disyorkan untuk pengesahan borang.
