Heim Web-Frontend uni-app Die Uniapp-Sprachumschaltung ist nur einmal wirksam

Die Uniapp-Sprachumschaltung ist nur einmal wirksam

May 22, 2023 pm 03:10 PM

Mit der rasanten Entwicklung der Globalisierung müssen immer mehr Anwendungen mehrere Sprachen unterstützen. Als plattformübergreifendes Framework hat Uniapp auch bei der Implementierung der Mehrsprachenumschaltung große Beachtung gefunden. Einige Entwickler berichteten jedoch, dass sie bei der Verwendung des Uniapp-Frameworks zum Wechseln mehrerer Sprachen festgestellt haben, dass der Sprachwechsel nur einmal wirksam wurde, d wurde nicht vollständig wiederhergestellt. Dies führte dazu, dass sich viele Entwickler Sorgen machten und das Uniapp-Framework eingehend untersuchten. In diesem Artikel wird das Problem, dass die Uniapp-Sprachumschaltung nur einmal wirksam wird, erörtert und eine Lösung bereitgestellt.

1. Problembeschreibung

In der Uniapp-Entwicklung werden wir das Uni-i18n-Plug-In verwenden, um eine Mehrsprachenumschaltung zu erreichen. Dieses Plug-In ist sehr praktisch und muss nur in die Haupteintragsdatei eingeführt werden. Der Code lautet wie folgt:

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;
Nach dem Login kopieren

Verwenden Sie dann innerhalb jeder Komponente die Methode $t(), um die Übersetzung der entsprechenden Sprache zu erhalten. Zum Beispiel:

<template>
  <view>{{ $t('home.title') }}</view>
</template>
<script>
  export default {
    mounted() {
      console.log(this.$t('home.title')); // 打印出对应语言的翻译
    }
  }
</script>
Nach dem Login kopieren

Auf diese Weise können wir problemlos zwischen mehreren Sprachen wechseln. Einige Entwickler haben jedoch berichtet, dass der Sprachwechsel im tatsächlichen Einsatz nur einmal wirksam wird. Mit anderen Worten: Nach einem Sprachwechsel wird beim erneuten Wechsel zur Originalsprache der Originalzustand nicht vollständig wiederhergestellt. In diesem Fall müssen wir die Ursache finden und beheben.

2. Ursachenanalyse

Durch das Studium des Quellcodes des uni-i18n-Plug-Ins können wir feststellen, dass die Sprachumschaltung durch Ändern des Gebietsschemaattributs erreicht wird. Das Gebietsschemaattribut wird im app.globalData-Objekt gespeichert. Daher kann das Problem, dass der Sprachwechsel nur einmal wirksam wird, darauf zurückgeführt werden, dass das Locale-Attribut nicht korrekt aktualisiert wird.

Beim Wechsel zwischen mehreren Sprachen speichern wir das neue Gebietsschemaattribut im Speicher. Jedes Mal, wenn die Anwendung geöffnet wird, wird das Gebietsschemaattribut zuerst aus dem Speicher gelesen Die Standardsprache wird verwendet. Beim Wechseln der Sprache aktualisieren wir zunächst das Gebietsschemaattribut und speichern dann das neue Gebietsschemaattribut im Speicher. Gemäß diesem Prozess können wir feststellen, dass der Grund dafür, dass die Sprachumschaltung nur einmal wirksam wird, darin besteht, dass wir das Gebietsschemaattribut im app.globalData-Objekt nicht rechtzeitig aktualisiert haben. Wenn wir also wieder zur Originalsprache wechseln, wird das alte Locale-Attribut weiterhin gelesen, was dazu führt, dass die Schnittstelle nicht vollständig wiederhergestellt wird.

3. Lösung

Tatsächlich ist die Lösung dieses Problems relativ einfach. Durch Ändern des Gebietsschemaattributs müssen wir es nur im app.globalData-Objekt ändern. Der spezifische Code lautet wie folgt:

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;
Nach dem Login kopieren

Die Hauptsache hier ist das Hinzufügen einer vm.$watch-Methode. Wenn sich das Gebietsschemaattribut ändert, wird das Gebietsschemaattribut im app.globalData-Objekt automatisch aktualisiert. Dadurch wird das Problem des Sprachwechsels gelöst. Ein Problem, das nur einmal auftritt.

Zusammenfassung

Bei der Uniapp-Entwicklung ist die Erzielung einer mehrsprachigen Umschaltung eine sehr häufige Anforderung. Wenn wir jedoch nicht auf Details achten, kann es zu dem Problem kommen, dass der Sprachwechsel nur einmal wirksam wird. Durch Recherche und Analyse des uni-i18n-Plug-ins haben wir herausgefunden, dass die Hauptursache des Problems darin liegt, dass das Gebietsschemaattribut im app.globalData-Objekt nicht rechtzeitig aktualisiert wurde. Daher müssen Sie beim Ändern des Locale-Attributs nur das Locale-Attribut im app.globalData-Objekt aktualisieren. Die Lösung dieses Problems ist sehr einfach, erinnert uns aber auch daran, während des Entwicklungsprozesses auf Details zu achten, um zu vermeiden, dass die Anwendung aufgrund kleiner Fehler nicht ordnungsgemäß funktioniert.

Das obige ist der detaillierte Inhalt vonDie Uniapp-Sprachumschaltung ist nur einmal wirksam. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Crossplay haben?
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie benutze ich Präprozessoren (sass, weniger) mit UNI-App? Wie benutze ich Präprozessoren (sass, weniger) mit UNI-App? Mar 18, 2025 pm 12:20 PM

In Artikel werden SASS und weniger Präprozessoren in Uni-App unter Verwendung von Setup, Vorteilen und doppelter Nutzung erläutert. Der Schwerpunkt liegt auf Konfiguration und Vorteilen. [159 Zeichen]

Wie benutze ich die Animations-API von Uni-App? Wie benutze ich die Animations-API von Uni-App? Mar 18, 2025 pm 12:21 PM

In dem Artikel wird erläutert, wie die Animations-API von Uni-App verwendet wird und Schritte zum Erstellen und Anwenden von Animationen, Schlüsselfunktionen und Methoden zum Kombinieren und Steuerungsanimations-Timing verwendet. Character Count: 159

Was sind die verschiedenen Arten von Tests, die Sie in einer UNIAPP -Anwendung durchführen können? Was sind die verschiedenen Arten von Tests, die Sie in einer UNIAPP -Anwendung durchführen können? Mar 27, 2025 pm 04:59 PM

In dem Artikel werden verschiedene Testtypen für UNIAPP-Anwendungen erörtert, einschließlich Einheiten, Integration, Funktions-, UI/UX-, Leistung, plattformübergreifender und Sicherheitstests. Es deckt auch die Gewährleistung der plattformübergreifenden Kompatibilität ab und empfiehlt Tools wie JES

Welche Debugging -Tools stehen für die UNIAPP -Entwicklung zur Verfügung? Welche Debugging -Tools stehen für die UNIAPP -Entwicklung zur Verfügung? Mar 27, 2025 pm 05:05 PM

In dem Artikel werden Debugging -Tools und Best Practices für die UniApp -Entwicklung erörtert und sich auf Tools wie Hbuilderx, Wechat -Entwickler -Tools und Chrome Devtools konzentriert.

Wie können Sie die Größe Ihres UNIAPP -Anwendungspakets reduzieren? Wie können Sie die Größe Ihres UNIAPP -Anwendungspakets reduzieren? Mar 27, 2025 pm 04:45 PM

In dem Artikel werden Strategien zur Reduzierung der UNIAPP -Paketgröße erörtert, wobei der Schwerpunkt auf Codeoptimierung, Ressourcenmanagement und Techniken wie Codeaufteilung und faulen Laden liegt.

Wie verwende ich die Speicher-API von Uni-App (Uni.setStorage, Uni.getStorage)? Wie verwende ich die Speicher-API von Uni-App (Uni.setStorage, Uni.getStorage)? Mar 18, 2025 pm 12:22 PM

In dem Artikel wird erläutert, wie die Speicher-APIs von UNI-Apps (Uni.setStorage, Uni.getStorage) für lokales Datenmanagement verwendet werden, Best Practices, Fehlerbehebung erörtert und Einschränkungen und Überlegungen für die effektive Verwendung hervorgehoben werden.

Wie verwende ich die API von Uni-App zum Zugriff auf Gerätefunktionen (Kamera, Geolokalisierung usw.)? Wie verwende ich die API von Uni-App zum Zugriff auf Gerätefunktionen (Kamera, Geolokalisierung usw.)? Mar 18, 2025 pm 12:06 PM

In dem Artikel werden die APIs von UNI-Apps zum Zugriff auf Gerätefunktionen wie Kamera und Geolokalisierung beschrieben, einschließlich Berechtigungseinstellungen und Fehlerbehandlung.

Wie validiere ich die Benutzereingabe in UNI-App? Wie validiere ich die Benutzereingabe in UNI-App? Mar 18, 2025 pm 12:17 PM

In dem Artikel wird die Validierung der Benutzereingaben in UNI-App mithilfe von JavaScript und Datenbindung erörtert, wodurch sowohl der Client als auch die serverseitige Validierung für die Datenintegrität betont wird. Plugins wie Uni-Validate werden für die Formularvalidierung empfohlen.

See all articles