Lokalisierung nach dem Land

  • Mister Fu schrieb:

    Wenn ich eine nicht vorhandene Fantasie-NIB statt "MainWindow" angebe, lädt die App und der Bildschirm bleibt einfach nur schwarz.
    Kann mir da jemand einen Hinweis geben, wo der Fehler liegt?
    Der Eigentümer von MainWindow.nib ist in der Regel die Applikation und nicht das Delegate. Statt self solltest Du also [UIApplication sharedApplication] übergeben.

    Wieso lädst Du überhaupt das NIB von Hand? Das ist doch schon im Applikationsskelett enthalten.
    „Meine Komplikation hatte eine Komplikation.“
  • Manfred Kreß schrieb:

    Das ist die Komische Sache mit dem Delegate. Es
    wird versucht, das Property delegate beim Delegate zu setzen, warum auch
    immer. Wenn du dem AppDelegate dieses Property einbaust, ist der
    zufrieden.

    Gruß
    Manfred

    Ich habe in den AppDelegate.h

    Quellcode

    1. @property (assign) id delegate;


    unter die anderen Properties eingefügt... der Fehler besteht leider weiterhin? Wie man merkt, habe ich von Objective-C und den Zusammenhängen keine große Ahnung, ich versuche nur, eine bestehende App etwas in Richtung Internationalisierung zu bewegen. Falls das erfolgreich ist, werde ich für die Weiterentwicklung auf jeden Fall professionelle Hilfe in Anspruch nehmen und mir das nicht durch Trial-And-Error weiter beibringen. ;)
  • a) Ich verstehe nicht, was dieser "Kickstarter" soll. Man kann sich doch einfach in MainMenu.nib allein ein App-Delegate legen, welches nichts anderes macht, als in -aaplicationDidFinishLaunching einen weiteren Nib zu laden. Ist es zu unmännlich, die spärlich bekleidete Dame neben meinem Chopper darum zu bitten, den Startknopf zu drücken?

    b) Hast du den – richtigen – Ratschlag von Macmoonshine befolgt? Ein App-Delegate ist üblicherweise nicht Eigentümer eines Nibs, sondern darin enthalten.
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • Mister Fu schrieb:

    eine bestehende App etwas in Richtung Internationalisierung zu bewegen.

    Da kann ich dir nur zur "normalen" Lokalisierung raten. Die wird nach den preferedLocalizations und nicht nach irgendeiner Landeseinstellung gemacht. Dabei hat man sich Mitte der 90er bei Next wohl viele Gedanken gemacht. Und das wird hervorragend implementiert. Und macht Sinn. Und ist gut.

    Dieses fürchterliche gehacke hier, hat eben damit angefangen, das ein Kunde meint das anders haben zu wollen und so muss man alle Standards umschiffen.
    Seminare, Artikel, Code. ObjectiveCeeds - alles für die Apfelzucht.
  • Manfred Kreß schrieb:

    Mister Fu schrieb:

    eine bestehende App etwas in Richtung Internationalisierung zu bewegen.

    Da kann ich dir nur zur "normalen" Lokalisierung raten. Die wird nach den preferedLocalizations und nicht nach irgendeiner Landeseinstellung gemacht. Dabei hat man sich Mitte der 90er bei Next wohl viele Gedanken gemacht. Und das wird hervorragend implementiert. Und macht Sinn. Und ist gut.

    Dieses fürchterliche gehacke hier, hat eben damit angefangen, das ein Kunde meint das anders haben zu wollen und so muss man alle Standards umschiffen.
    Dazu habe ich diese Information gefunden: NSBundle Class Reference

    Da ist die Rede von "current user's language preferences" - und kann ich damit wirklich unterscheiden, ob sich ein Benutzer in Österreich oder Deutschland befindet und ihm eine unterschiedliche GUI präsentieren? Das ist aus markenrechtlichen Gründen für die App nämlich sehr wichtig.
  • Der Benutzer stellt seine Spracheinstellungen selbst ein. Und wenn ein Schweizer Spanisch als erste Sprache hat, dann bekommt er Spanisch, auch wenn er gerade in Ostsibirien ist. NSLocalizedString, oder meinetwegen auch die nib Lokalisierung implementieren genau das. Die vorhandenen Lokalisationen der App werden mit den eingestellten Lokalisationen abgeglichen, und was als erstes passt wird genommen.
    Seminare, Artikel, Code. ObjectiveCeeds - alles für die Apfelzucht.
  • Mister Fu schrieb:

    Manfred Kreß schrieb:

    Mister Fu schrieb:

    eine bestehende App etwas in Richtung Internationalisierung zu bewegen.

    Da kann ich dir nur zur "normalen" Lokalisierung raten. Die wird nach den preferedLocalizations und nicht nach irgendeiner Landeseinstellung gemacht. Dabei hat man sich Mitte der 90er bei Next wohl viele Gedanken gemacht. Und das wird hervorragend implementiert. Und macht Sinn. Und ist gut.

    Dieses fürchterliche gehacke hier, hat eben damit angefangen, das ein Kunde meint das anders haben zu wollen und so muss man alle Standards umschiffen.
    Dazu habe ich diese Information gefunden: NSBundle Class Reference

    Da ist die Rede von "current user's language preferences" - und kann ich damit wirklich unterscheiden, ob sich ein Benutzer in Österreich oder Deutschland befindet und ihm eine unterschiedliche GUI präsentieren? Das ist aus markenrechtlichen Gründen für die App nämlich sehr wichtig.

    Nein, das kannst du nicht, weil eine spanische Sekretärin in Deutschland möglicherweise Spanisch ausgewählt hat. Was du willst, ist einfach ein anderen Thema.
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • Ich glaube das gerät gerade etwas durcheinander.

    Für die Spracheinstellung solltest du die Standards nutzen (das meine ich übrigens mit Lokalisierung).

    Wenn die App in Deutschland anders aussehen soll als in Österreich, musst du deinen Standort bestimmen, herausfinden zu welchen Staat die Geokoordinaten gehören und nimmst dann als Key für die Lokalisierung eben Raider statt Twix, wenn das Markenrechtlich relevant ist. Und das auf Deutsch, Englisch, Spanisch....

    Überleg mal, viele haben z.B. Englisch als erste Sprache eingestellt obwohl es nicht ihre Muttersprache ist, weil sie z.B. Ungarisch sprechen. Jetzt landet der in Frankfurt, und plötzlich spricht das iPhone Deutsch mit Twix, er fliegt nach Wien und hat deutsch mit Raider, dann weiter nach Paris, wo die App plötzlich Französisch spricht.

    Ganz schnell die App löschen...

    Und ob die Apple tester das toll finden, wenn die App in Kalifornien auf deutsch zurückfällt, obwohl das als letzte Sprache eingestellt ist, ist fraglich.
    Seminare, Artikel, Code. ObjectiveCeeds - alles für die Apfelzucht.
  • Manfred Kreß schrieb:

    Ich glaube das gerät gerade etwas durcheinander.
    Das glaube ich auch. ;)

    Es soll von der App mehrere Sprachversionen geben: Deutsch, Englisch, Italienisch, Französisch. Das stellt soweit auch überhaupt kein Problem dar. Egal, ob ein Benutzer sich jetzt gerade in Honolulu oder in Deutschland befindet, es zählt nur die Spracheinstellung seines iPhones, wenn es um die Texte geht.

    Es gibt nur den Sonderfall, dass ein Benutzer, der als Land "Österreich" ausgewählt hat ein anderes Logo in der GUI sehen soll.
  • OK, meinst du mit Land die Spracheinstellung oder den Ländercode, das sind zwei verschiedene Dinge. Ich kann als Land DE einstellen aber trotzdem Englisch als erste Sprache haben.

    Die Landeseinstellung:

    Quellcode

    1. NSLocale *locale = [NSLocale currentLocale];
    2. NSString *countryCode = [locale objectForKey: NSLocaleCountryCode];


    oder

    Die Spracheinstellung:

    Quellcode

    1. NSLocale *locale = [NSLocale currentLocale];
    2. NSArray *languages = [locale preferedLanguages];

    Liefert die Sprachen in der Reihenfolge, die der User eingestellt hat. Index 0 ist die bevorzugte und dann der Reihe nach durch.

    Mit den Informationen setzt du dann einfach das entsprechende Logo beim Start und die Sache ist erledigt.

    Die Lokalisierung läuft dann 0815, siehe Apple Doku.
    Seminare, Artikel, Code. ObjectiveCeeds - alles für die Apfelzucht.