SK产品本地化标题始终为英文

Posted

技术标签:

【中文标题】SK产品本地化标题始终为英文【英文标题】:SKProduct localizedTitle always in english 【发布时间】:2015-12-27 17:38:37 【问题描述】:

我正在使用 Xcode v7.2 和 Obj-c。我正在向现有的 ios 应用程序添加不同的语言。主要问题是 SKProduct 本地化标题(iTC 上的显示名称)总是以英文返回。 我可以正确显示本地化和格式的价格。我已经准备好许多关于 SO 的类似问题并尝试了他们的解决方案,但它似乎对我不起作用(例如:this 和 this)。

期望的结果:

    向用户显示 3 个按钮;每个按钮都有不同的标题和价格。 仅通过在 iTC 中更新 IAP 的显示名称和价格来动态更改 IAP 的显示名称和价格(因此我不必每次想要更改时都更新代码)。 由于 #2,我无法在按钮上硬编码 IAP 名称或价格。 从 iTC 中提取本地化标题(iTC 上的显示名称)和价格,用作按钮上的文本标签。

这是我已经设置好的:

在 iTC 上创建了测试用户并为他们分配了不同的商店: 在 iTC 上设置 IAP 并添加语言和显示名称:

从 iTC 获取 SKProduct 本地化标题和价格的代码

[[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];

        

    

创建新的 Xcode 方案,以便将测试设备 LanguageLocationRegion 设置为所需的国家/地区

在 Xcode 模拟器上退出 App Store(从 设置)。在模拟器中运行测试时,我最初会以正确的语言看到我的应用程序,但按钮上的文本是英文的。这是因为我还没有更改 App Store 的位置。我点击 IAP 购买按钮,它会提示我登录。 我使用该国家/地区的测试用户登录。我停止了该应用,然后再次运行它。

结果: 我正确地看到了该国家/地区的 IAP 价格,但我没有看到正确本地化的按钮标题。按钮的标题仍然是英文。我设置的每种语言都会发生这种情况。

谁能发现我在这里做错了什么?我是否错误地假设 SKProduct.localizedTitle 不返回该语言的 iTC 显示名称(App Store)?任何帮助将不胜感激,谢谢。

【问题讨论】:

你发现了吗?我目前遇到了同样的问题。 不幸的是,没有。正如你在这里看到的那样,我也没有得到任何帮助来解决它。我还在寻找,如果有人有办法解决这个问题,请在此处发布。 我不确定,但我有同样的问题,我模拟器上的 currentLocale 是 ru_RU,但是 product.priceLocale.localeIdentifier(与用于本地化标题相同)显示 en_RU,所以价格是好的,但标题总是英文的。无论如何,一切都在我的设备上正常工作,所以可能是模拟器相关的问题。这将是一项艰巨的工作,但请尝试测试设备上的每个语言环境。顺便说一句,“Массивная наконечник”在俄语中是错误的;)“-ая”是女性形容词后缀,而“наконечник”是男性名词,所以你需要“Массивный наконечник”,“-ый”是男性形容词。 感谢@Aft3rmath!我给了你一个帮助我翻译的赞成票。 【参考方案1】:

基于 In-App Purchase FAQ

localizedDescription 和localizedTitle 返回本地化信息,其语言基于当前 iTunes Store 而不是当前设备语言设置。

【讨论】:

但加拿大 App Store 有两种语言(英语和法语)。它是如何处理的?

以上是关于SK产品本地化标题始终为英文的主要内容,如果未能解决你的问题,请参考以下文章

UITests(快照)中的本地化字符串始终为英文

iOS 本地通知 userInfo 始终为空

Netcore 2.2 本地化路由 - 始终忽略默认区域性的路由值

尝试在本地 C# Web api 中使用 Postman 放置字符串,始终为空或失败

sk5代理跟本地网速有关系吗

UIWebview 本地化