Im Allgemeinen schreibe ich auf vielen Plattformen meine Zeichenfolgenressourcen in eine RESX- oder XML-Datei und erhalte sie dann mithilfe eines plattformabhängigen Ansatzes.
Das heißt, unter iOS erhalte ich sie über NSBundle.MainBundle
und unter Context.Resources
Android.
Was sind die Vorteile dieses Ansatzes und warum ist er nicht direkt im Code verfügbar? Zum Beispiel:
In einem plattformübergreifenden Projekt kann jede Plattform ohne Integration direkt darauf zugreifen.
Während des Aufbaus gibt es keine Bedenken, ob die Ressourcen gut aufgebaut sind oder nicht.
- Der Codierer kann Funktionen wie das Handling in mehreren Sprachen verwenden
Lange Rede kurzer Sinn: Aus welchem Grund sind String-Ressourcen so strukturiert?
[Bearbeiten]
Angenommen, meine Datei ist Teil eines "Kernprojekts", das von anderen Projekten gemeinsam genutzt wird. (Denken Sie an eine plattformübergreifende PCL-Projektdateistruktur.)
Angenommen, meine Datei ähnelt einer .resx / .xml-Datei und sieht so aus (ich bin kein Profi in XML, sorry!): Parameters Paramètres
Dies ist also im Grunde eine benutzerdefinierte XML, bei der Sie auf den Schlüssel / die Sprache zeigen, um die richtige Zeichenfolge zu erhalten.
Die Datei ist Teil der Anwendung, genauso wie Sie eine barrierefreie Datei in einer App hinzufügen und das System, um auf die mit PCL codierten Zeichenfolgenressourcen zuzugreifen. Würde dies einen zusätzlichen Aufwand für die Anwendungen bedeuten?
quelle
Antworten:
Lokalisierung und Internationalisierung,
Wenn Sie die Zeichenfolgen extern lassen, können Sie sie ändern (lesen: übersetzt), ohne sie neu kompilieren zu müssen (höchstens ein erneuter Link und bestenfalls das Ablegen in einem neuen Ordner).
quelle
Wenn Sie eine Datei haben, die nur die Zeichenkettenressourcen enthält, können Sie die Ressourcendatei einer Übersetzungsagentur oder ähnlichem geben und eine Übersetzung erhalten. Ich denke, Sie können sich vorstellen, wie schwer das werden könnte, wenn Sie einem Laien eine Menge Codefiles geben müssten, um eine Übersetzung zu machen (zusätzlich dazu, dass Sie Ihren Code möglicherweise nicht an jemanden weitergeben möchten).
quelle
Neben der Internationalisierung / Lokalisierung kann ein Korrektor auch Korrekturen an Rechtschreibung / Grammatik / Interpunktion vornehmen
messages.${LOCALE}
, ohne eine echte Quellcodedatei anfassen zu müssen. Möglicherweise haben Sie einen Blackout bei Codeänderungen, akzeptieren jedoch solche Textkorrekturen. Wenn Sie gleichzeitig Änderungen an Code und Nachrichten akzeptieren, können Sie die Patches einfacher zusammenführen, wenn Sie sie getrennt halten, vorausgesetzt, die Codeänderungen definieren keine Nachrichten neu, die beim Auschecken des Korrekturlesers vorhanden warenmessages.en_US
.Abhängig von der Implementierung ist es möglicherweise nicht einmal erforderlich, die Anwendung erneut zu verknüpfen. Der Code kann einfach die Zeile 138
messages.${LOCALE}
für eine bestimmte Nachricht abrufen, wobei die Zeilennummer zur Laufzeit bestimmt wird.quelle
Auf diese Weise hat sich Ihre Sprache / Plattform entschieden, die Lokalisierung von Zeichenfolgen zu implementieren.Alle Lokalisierungsansätze benötigen externe Ressourcendateien, von denen die Übersetzungen stammen. Der Hauptschmerzpunkt ist, wie Sie diese Ressourcen pflegen.
Sieht so aus, als müssten Sie diese Ressourcendateien manuell verwalten , was eine ziemliche Belastung sein kann. Dies erschwert auch das Teilen wiederholter Zeichenfolgen. Und dies zu tun, wenn Sie derzeit nur eine Sprache versenden, ist noch mehr eine Belastung.
Eine gebräuchliche Alternative ist der GNU Gettext- Ansatz, einfach die übersetzbaren Zeichenfolgen im Quellcode zu markieren und diese Zeichenfolgen automatisch in Standard-PO-Dateien zu extrahieren, die plattform- und sprachenübergreifend funktionieren. Aus Entwicklersicht schlägt es die manuelle Pflege von XML-Ressourcendateien jeden Tag.
quelle