2015-12-27 6 views
5

Używam Xcode v7.2 i Obj-c. Dodaję różne języki do istniejącej aplikacji na iOS. Głównym problemem jest to, że SKProduct localizedTitle (Display Name na iTC) zawsze wraca w języku angielskim. Mogę pokazać cenę odpowiednio zlokalizowaną i sformatowaną. Przygotowałem wiele podobnych problemów na SO i próbowałem ich rozwiązań, ale nie działa to dla mnie (na przykład: this i this).SKProduct locitTitle zawsze po angielsku

Oczekiwane rezultaty:

  1. Pokaż 3 przyciski do użytkownika; każdy przycisk ma inny tytuł i cenę.
  2. Dynamicznie zmieniaj wyświetlaną nazwę IAP na &, aktualizując ją tylko w iTC (więc nie muszę aktualizować kodu za każdym razem, gdy chcę zmienić).
  3. Z powodu # 2, nie mogę sztywno zakodować nazwy IAP lub ceny na przycisku.
  4. Przeciągnij zlokalizowany tytuł (wyświetlana nazwa na iTC) i cenę z iTC, aby użyć go jako etykiety tekstowej na przyciskach.

Oto co mam setup już:

  • Utworzony użytkownicy testów na ITC oraz przypisane im różnych sklepach: iTC test users and stores
  • konfiguracji IAP jest na ITC i dodaje języki i wyświetlanie nazwy: iTC IAP list with languages
  • Kod do pobrania SKProduct zlokalizowanyTytuł i cena od iTC

    [[FirstDrawIAPHelper sharedInstance] requestProductsWithCompletionHandler:^(BOOL success, NSArray *products) { 
        if (success) { 
         storeProducts = products; 
         SKProduct *product = (SKProduct *)storeProducts; 
         //Format price 
         priceFormatter = [[NSNumberFormatter alloc] init]; 
         [priceFormatter setFormatterBehavior:NSNumberFormatterBehavior10_4]; 
         [priceFormatter setNumberStyle:NSNumberFormatterCurrencyStyle]; 
    
         //Iterate thru the buttons using tipButton Outlet Collection 
         for (int i = 0; i < [self.tipButton count]; i++) { 
          UIButton *button = [[UIButton alloc] init]; 
          button = self.tipButton[i]; 
          //product = storeProducts[i]; 
          product = products[i]; 
          //Set the price locale 
          [priceFormatter setLocale:product.priceLocale]; 
          //Localize the button title and append the price 
          NSString *btnTxt = [product.localizedTitle stringByAppendingString:@" "]; 
          NSString *price = [priceFormatter stringFromNumber:product.price]; 
          NSString *newBtn = [btnTxt stringByAppendingString:price]; 
          NSLog(@"\nID: %@, Price: %@, Button: %@",[product localizedTitle], price, btnTxt); 
          //Set button title 
          [button setTitle:newBtn forState:UIControlStateNormal]; 
    
         } 
    
        } 
    
  • Utwórz nowy schemat Xcode więc urządzenie testowe Język, Lokalizacja i Region są ustawione do żądanego kraju

  • Znak z App Store na symulatorze Xcode (od Ustawienia). Podczas testowania symulatora początkowo zobaczę moją aplikację w poprawnym języku, ale tekst na przyciskach jest w języku angielskim. To dlatego, że jeszcze nie zmieniłem lokalizacji App Store. Stukam przycisk zakupu IAP i monituje mnie o zalogowanie.
  • Logowanie przy użyciu mojego użytkownika testowego dla tego kraju. Zatrzymuję aplikację, a następnie uruchamiam ją ponownie.

Wynik: I prawidłowo zobaczyć cenę IAP dla tego kraju, ale nie widzę zlokalizowane poprawnie tytuł przycisku. Tytuł przycisku jest nadal w języku angielskim. Dzieje się tak w każdym języku, który ustawiłem.

Czy ktoś może zauważyć, co tu robię źle? Czy mam błędne założenie, że SKProduct.localizedTitle nie zwraca nazwy wyświetlanej iTC dla tego języka (App Store)? Każda pomoc będzie doceniona, dzięki.

+0

Czy to wymyśliłeś? Obecnie doświadczam tego samego problemu. – Bobby

+0

Niestety, nie. Jak widać tutaj, również nie otrzymałem żadnej pomocy w rozwiązaniu tego problemu. Nadal szukam, jeśli ktoś ma sposób, aby to zrozumieć, proszę to opublikować tutaj. – fsb

+1

Nie jestem pewien, ale mam ten sam problem, currentLocale na moim symulatorze to ru_RU, ale product.priceLocale.localeIdentifier (taki sam, jak użyty dla localizedTitle) pokazuje en_RU, więc cena jest OK, ale tytuł jest zawsze w język angielski. W każdym razie wszystko działa poprawnie na urządzeniu dla mnie, więc może to problem związany z symulatorem. To będzie ciężka praca, ale spróbuj przetestować każde locale na urządzeniu. BTW, "Массивная наконечник" jest błędne w języku rosyjskim;) "-A" jest żeńskim przymiotnikiem postfix, natomiast "наконечник" jest rzeczownikiem męskim, więc potrzebujesz "Массивный наконечник", "-ый" jest dla przymiotnika płci męskiej. – Aft3rmath

Odpowiedz

0

podstawie In-App Purchase FAQ

localizedDescription i localizedTitle powrotnej zlokalizowanej informacji, których język jest oparty na aktualnej iTunes Store zamiast aktualnego ustawienia języka urządzenia.

Powiązane problemy