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:
- Pokaż 3 przyciski do użytkownika; każdy przycisk ma inny tytuł i cenę.
- 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ć).
- Z powodu # 2, nie mogę sztywno zakodować nazwy IAP lub ceny na przycisku.
- 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:
- konfiguracji IAP jest na ITC i dodaje języki i wyświetlanie nazwy:
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.
Czy to wymyśliłeś? Obecnie doświadczam tego samego problemu. – Bobby
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
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