Lokalisierter App-Name und nicht kompatible Oberflächensprache

9

Ich stieß auf dieses Problem, bei dem der Name der App auf dem Startbildschirm in der falschen Sprache angezeigt wird. Dies geschieht nur, wenn keine der bevorzugten Sprachen des Benutzers von der App unterstützt wird. Ich habe dies in Xcode 8 und iOS 10 mit mehreren Projekten sowohl im Simulator als auch in einem echten Gerät getestet.

Wenn keine der vom Benutzer bevorzugten Sprachen von der App unterstützt wird, wird die Sprache der Benutzeroberfläche unter Verwendung des Entwicklungsbereichs der App ( CFBundleDevelopmentRegion ) angezeigt, wie in dieses Dokument . So weit, ist es gut. Der App-Name auf dem Startbildschirm berücksichtigt dies jedoch nicht und scheint Englisch oder den ersten .lproj -Ordner alphabetisch auszuwählen (falls Englisch nicht vorhanden ist).

Nehmen wir an, meine App unterstützt die folgenden Sprachen:

Und meine Geräteeinstellungen sehen so aus:

Die folgende Aussage:

%Vor%

gibt das erwartete Ergebnis zurück:

%Vor%

Und diese andere Aussage:

%Vor%

gibt auch das erwartete Ergebnis zurück:

%Vor%

Der Name der App auf dem Startbildschirm verwendet jedoch die falsche Lokalisierung:

Vermisse ich etwas? Ist jemand von Ihnen auf dieses Problem gestoßen?

Zu reproduzierende Schritte:

  1. Erstellen Sie ein neues iOS-Projekt.
  2. Gehe zu den Projekteinstellungen - & gt; Info - & gt; Lokalisierungen und Hinzufügen einer zweiten Sprache, z. Japanisch.
  3. Fügen Sie der Info.plist-Datei einen CFBundleDisplayName hinzu.
  4. Ändern Sie die CFBundleDevelopmentRegion in zh_CN.
  5. Erstellen Sie eine neue InfoPlist.strings-Datei. Klicken Sie im Inspektor unter Lokalisierung auf die Schaltfläche "Lokalisieren ...". Wählen Sie, um es aus dem Dropdown-Menü in den chinesischen lproj-Ordner zu verschieben.
  6. Aktivieren Sie auf der Registerkarte "Inspektor" unter "Lokalisierung" das Kontrollkästchen "Japanisch".
  7. Bearbeiten Sie die InfoPlist.strings-Dateien und fügen Sie "CFBundleDisplayName"="Chinese" hinzu; oder "CFBundleDisplayName"="Japanisch"; jeweils.
  8. Führen Sie die App im Simulator oder einem echten Gerät mit ihrer Sprache & amp; Regionseinstellungen, die auf etwas anderes als Chinesisch oder Japanisch, z.B. Englisch & amp; U.S.

Erwartete Ergebnisse:

Die Benutzeroberfläche und der App-Name werden voraussichtlich in der App-Entwicklungssprache (im Beispiel Chinesisch) angezeigt.

Beobachtete Ergebnisse:

Die Benutzeroberfläche wird in der App-Entwicklungssprache angezeigt (Chinesisch im Beispiel), während der App-Name in Japanisch angezeigt wird.

    
albertamg 25.07.2017, 23:54
quelle

1 Antwort

2

Zunächst ist dies eine exemplarische Frage mit vielen Details und einem guten Leitfaden, um Ihr Problem zu reproduzieren;)

Analyse

Dieses Verhalten scheint ein Bug zu sein, der mit iOS 10 beginnt. Ich konnte es nicht auf iOS9.3 reproduzieren, wo der erwartete Bundle-Anzeigename "Chinesisch" angezeigt wird. iOS 11 Beta 4 scheint auch diesen Fehler zu haben. Sie sollten Apple einen Fehler melden (siehe BugReporter )

Ich habe das alles mit einer App getestet, die von Xcode8.3.3 mit iOS 10.3 SDK erstellt wurde.

Workaround

Als einfache Abhilfemaßnahme könnten Sie den CFBundleDisplayName in der Info.plist auf den lokalisierten Wert der DevelepmentRegion-Language ("Chinese") setzen, der als Standardwert fungiert.

    
Sven Driemecker 02.08.2017, 09:40
quelle

Tags und Links