Sprache selbst in der App einstellen

  • Sprache selbst in der App einstellen

    Hallo ihr Lieben,

    ich habe im Rahmen meines Praxissemseters eine App programmiert, nun möchte ich diese noch Multi-Lingual machen.
    Ich weiß, dass man dies mit am besten mit localization macht. Das habe ich auch schon in meiner App umgesetzt.

    Mein Arbeitgeber möchte aber darüberhinaus trotzdem in der App die Sprache ändern können (z.B. über Buttons etc.)

    Ich habe mir gedacht, dass ich einfach die über den Button gewählte Sprache in einem singleton speicher.
    An benötigter Stelle würde ich dann schauen, was in meinem singleton hinterlegt ist und die Datei mit der jeweiligen Sprache aufrufe.
    Aber weche ist denn die richtige Datei und vor allem, wie rufe ich sie auf?
    Ich habe ja die Licalizable.strings Dateien aber die heißen ja für alle Sprachen gleich, nur in Klammern steht dahinter für welche Sprache sie ist.

    Ich würde mich sehr freuen, wenn mir jemand weiterhelfen könnte :o)

    Bereits vielen Dank!
  • Die Dateien heißen für jede Sprache jeweils gleich und befinden sich lediglich in unterschiedlichen Unterordnern (.lproj-Ordnern); also z. B. deutsch ist in de.lproj. Abgesehen von der Frage, wie sinnvoll dieses Feature ist, wirst Du wahrscheinlich jede Menge graue Haare bei der Umsetzung bekommen. Deine Firma bzw. Eure Kunden müssen ja echt viel Schotter haben. ;)
    „Meine Komplikation hatte eine Komplikation.“
  • Du kannst ja das Bundle nach .lproj ordnern durchsuchen und dann den filenamen der Datei mit den ISO639 Kürzeln vergleichen. Und wozu ein Singleton? Wozu gibt es denn die UserDefaults.

    Wie Moon schon schreibt. Viel Spaß dabei.

    Gruß

    Claus
    2 Stunden Try & Error erspart 10 Minuten Handbuchlesen.

    Pre-Kaffee-Posts sind mit Vorsicht zu geniessen :)
  • Oje, das hört sich aber gar nicht lustig an. Ich glaube da muss ich nochmal Rücksprache halten ob das Feature wirklich soo wichtig ist, wenn das so ein Aufwand darstellt.
    Aber vielen Dank für die schnellen Antworten.

    @Thallius: Klar, das stimmt, die UserDefaults sind natürlich praktischer. Als ich von denen aber noch nichts wusste (am Anfang meiner App) hab ich mir ne kleine Singletonklasse
    geschrieben. Die könnte ich eigentlich auch mal durch die UsererDafaults ersetzen ... :o)
  • Keine Ahnung ob das so genau funktioniert und sauber gelöst ist, jedoch habe ich irgendwo mal sowas hier gesehen:

    Quellcode

    1. - (NSString*)localizedString:(NSString*)key forLang:(NSString*)lang
    2. {
    3. NSString *path = [[NSBundle mainBundle] pathForResource:lang ofType:@"lproj"];
    4. NSBundle *bundle = [NSBundle bundleWithPath:path];
    5. return [bundle localizedStringForKey:key value:@"" table:nil];
    6. }