Übersetzungen mit Variablen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Übersetzungen mit Variablen

    Hallo zusammen,

    ich habe zum Beispiel meine App nach Englisch (Base), Deutsch und Spanisch übersetzen lassen. Jetzt habe ich aber für die Länder England, Holland, Frankreich, Deutschland und Spanien einzelne Werte (NSString), die in den Übersetzen Texten angezeigt werden sollen. Ein konkretes Beispiel wäre Holland und Frankreich. Hier wird die App ja in Englisch angezeigt, wenn das Sprache & Region entsprechend auf Holland oder Frankreich eingestellt ist. Nun möchte ich aber die Werte für Holland und Frankreich in dem englischen Text angezeigt bekommen. Wie mache ich das ? Gibt es hier etwas fertiges von iOS oder muss ich mir einen eigenen Wrapper bauen ?
  • Ich bin nicht sicher, Dich richtig verstanden zu haben: Du hast die App in z. B. englisch lokalisiert. Nun hast Du eine Untermenge der zu übersetzenden Texte auch in z. B. französisch. Du möchtest jetzt Teile in Strings, die in englisch ausgegeben werden, durch französische Substrings ersetzen?

    Das wirst Du nur erreichen können, indem Du die Locale des Benutzers auswertest und dann entsprechende Platzhalter in Deinen lokalisierten Strings ersetzt. Also quasi String A in die Teilstrings B und C zerlegen, wobei B durch die automatische Lokalisierung (Englisch) gesetzt wird, während Du C manuell mittels Locale setzt (Französisch). Hierbei hilft Dir die Klasse NSLocale, aber Du wirst Deinen Ausgabe-Code massiv überarbeiten müssen und das für eine inkonsistente Bastellösung.

    Ich würde den Aufwand lieber in 100% Übersetzungen stecken, alles andere holt Dich m. E. kurz über lang ein und Du wirst die von Dir momentan favorisierte Anpassung wieder rückgängig machen ... Mach es direkt richtig :)

    Mattes
    Diese Seite bleibt aus technischen Gründen unbedruckt.
  • Ich versuche es nochmal anders zu beschreiben. Ich habe alle Texte der App in Englisch (Base), Deutsch und Spanisch übersetzen lassen. Hier ist Englisch meine Basissprache, also die Sprache die genommen wird, wenn das Handy in den Einstellungen bei Sprache und Region Frankreich/Französisch eingestellt hat. Jetzt habe ich aber einen zweiten Teil, der mir landesspezifische Infos zur Verfügung stellt. Diese landesspezifischen Infos sollen nach der Ländereinstellung des Gerätes ausgegeben werden.

    Konkretes Beispiel für Sprache & Region Frankreich/Französisch, welches auf dem Gerät eingestellt ist :

    falsch:
    "You find the next info point in West Way 10, London"

    richtig:
    "You find the next info point in Avenue de Maine 10, Paris"

    Der in Fett geschriebene Teil ist die länderspezifische Info. Der andere Text ist der Standardtext aus der Übersetzung. Ich bin hier auf der Suche nach einer Möglichkeit innerhalb des Standardtextes vielleicht Variablen zu nutzen, die mir dann aus einer anderen Übersetzungsdatei die landesspezifischen Infos automatisch in der Übersetzung anzeigt. Das ganze am besten ohne den Quelltext der App anzufassen.

    Ich hoffe jetzt kommt es verständlicher rüber, was ich umsetzen muss.
  • MODWORLD schrieb:

    Der in Fett geschriebene Teil ist die länderspezifische Info. Der andere Text ist der Standardtext aus der Übersetzung. Ich bin hier auf der Suche nach einer Möglichkeit innerhalb des Standardtextes vielleicht Variablen zu nutzen, die mir dann aus einer anderen Übersetzungsdatei die landesspezifischen Infos automatisch in der Übersetzung anzeigt. Das ganze am besten ohne den Quelltext der App anzufassen.
    Dann hatte ich Dich doch richtig verstanden. Eine Option, die ich oben nicht bedacht hatte: Du kannst natürlich die Lokalisierungen schlicht doppeln und dann in den französischen Strings-Dateien die entsprechenden Teile ersetzen ... so kommst Du ohne Code-Änderungen aus. Ansonsten hindert Dich ja keiner, auch im lokalisierten Text Platzhalter wie %@ zu nutzen und diese Zeichenketten als Format-Strings zu verwenden, um Inhalte einzusetzen. Und diese Inhalte nimmst Du dann auf Basis der NSLocale.

    Dein Beispiel oben finde ich allerdings eher verwirrend: Der variable Anteil ist doch eher standort- und weniger locale-spezifisch ... und damit auch während der App-Nutzung dynamisch. Liegt es am Beispiel oder verstehe ich noch immer etwa falsch. Geht es wirklich nur um Übersetzungen? Dann mache es konsequent über Strings-Dateien und vermeide den o. g. Mischmasch. Brauchst Du dynamische Inhalte in den Übersetzungen, nutze Format-Strings - hier kannst Du sogar die Reihenfolge der Variablen sprachenspezifisch unterschiedlich haben.

    Mattes
    Diese Seite bleibt aus technischen Gründen unbedruckt.
  • Dann bleibe ich dabei :) Entweder im Code selber NSLocale auswerten und die entsprechenden Teilzeichenketten ersetzen - Stichwort Format-String. Oder strings-Dateien duplizieren und dort die Zeichenketten anpassen. Das zweite ist code-seitig neutral und m. E. weniger Aufwand. Ausserdem erlaubt es Dir später, leicht auf eine durchgehend lokalisierte Version zu wechseln.

    Just my $0.02 , Mattes
    Diese Seite bleibt aus technischen Gründen unbedruckt.
  • Eine andere Option, die ich gefunden habe ist, dass ich für die länderspezifischen Infos in eine separate strings-Datei (z.B. landspec.strings) packe und dann über

    Quellcode

    1. NSLocalizedString(keyname, tableName:"landspec", comment: "")
    entsprechend einfüge. Der Standardtext enthält dann an der entsprechenden Stelle die entsprechenden Platzhalter %1$@ oder %2$@. Diese Platzhalter werden dann über Format-String und obenstehenden NSLocalizedString Befehl entsprechend gefüllt.

    Ich weiß, das es viel Arbeit im Quelltext der App ist. Ich bin der Meinung, wenn ich mir jetzt die Arbeit mache, steigere ich meine Flexibilität dadurch.
  • MODWORLD schrieb:

    Ich weiß, das es viel Arbeit im Quelltext der App ist. Ich bin der Meinung, wenn ich mir jetzt die Arbeit mache, steigere ich meine Flexibilität dadurch.
    Deine Entscheidung. Ich halte das Konstrukt für unnötig kompliziert und würde (vorerst) mit Redundanzen in den strings-Dateien leben ... um dann später evt. konsequent zu lokalisieren.

    Mattes
    Diese Seite bleibt aus technischen Gründen unbedruckt.