app的本地化 国际化

2024-06-14 02:38
文章标签 app 国际化 本地化

本文主要是介绍app的本地化 国际化,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

IOS篇

1. app name 多语言设置

注意:xcode 8 以后没有support Files 文件夹了,不用care,

只要配置文件名称填对就行   InfoPlist.strings , 在右边工具栏的localization 中选择对应的语言打勾就会

自动生成对应的子文件例如:InfoPlist.strings(English)

如果是自定义的文本命名:  Localizable.strings

名称切勿填错了,否则无效果

申明方式

"Login"="登录";

程序内引用方式:

NSLocalizedString(@"Login",@“这是注释无影响可填写nil”);

参考链接:

浅谈Xcode8通过创建strings文件来实现app名称和内容的语言国际化

iOS项目的本地化处理(多国语言)

 

2. Appstore 多语言设置

https://developer.apple.com/library/content/documentation/LanguagesUtilities/Conceptual/iTunesConnect_Guide_zh_CN/Chapters/DisplayInMoreLanguages.html

 

内购的本地化

 

在应用客户端里,商品信息通过向AppStore发起SKProductsRequest获得

 

void IOSIAP::requestProducts(std::vector <std::string> &productIdentifiers)
{NSMutableSet *set = [NSMutableSet setWithCapacity:productIdentifiers.size()];std::vector <std::string>::iterator iterator;for (iterator = productIdentifiers.begin(); iterator != productIdentifiers.end(); iterator++) {[set addObject:[NSString stringWithUTF8String:(*iterator).c_str()]];}SKProductsRequest *productsRequest = [[SKProductsRequest alloc] initWithProductIdentifiers:set];iAPProductsRequestDelegate *delegate = [[iAPProductsRequestDelegate alloc] init];delegate.iosiap = this;productsRequest.delegate = delegate;[productsRequest start];
}

 

- (void)productsRequest:(SKProductsRequest *)requestdidReceiveResponse:(SKProductsResponse *)response
{// release oldif (_iosiap->skProducts) {[(NSArray *)(_iosiap->skProducts) release];}// record new product_iosiap->skProducts = [response.products retain];for (int index = 0; index < [response.products count]; index++) {SKProduct *skProduct = [response.products objectAtIndex:index];// check is validbool isValid = true;for (NSString *invalidIdentifier in response.invalidProductIdentifiers) {NSLog(@"invalidIdentifier:%@", invalidIdentifier);if ([skProduct.productIdentifier isEqualToString:invalidIdentifier]) {isValid = false;break;}}IOSProduct *iosProduct = new IOSProduct;iosProduct->productIdentifier = std::string([skProduct.productIdentifier UTF8String]);iosProduct->localizedTitle = std::string([skProduct.localizedTitle UTF8String]);iosProduct->localizedDescription = std::string([skProduct.localizedDescription UTF8String]);// locale price to stringNSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];[formatter setFormatterBehavior:NSNumberFormatterBehavior10_4];[formatter setNumberStyle:NSNumberFormatterCurrencyStyle];[formatter setLocale:skProduct.priceLocale];NSString *priceStr = [formatter stringFromNumber:skProduct.price];[formatter release];iosProduct->localizedPrice = std::string([priceStr UTF8String]);iosProduct->index = index;iosProduct->isValid = isValid;_iosiap->iOSProducts.push_back(iosProduct);}
}

 

 

注意:本地化的判断 根据用户手机登录的账号所对应的——应用市场的区域。

 

 

priceStr 是拼接好当地货币符号的价格描述

国际货币符号表

3. 官方提供的 app 内容的本地化方案

真的是非常方便!

https://developer.apple.com/library/content/documentation/MacOSX/Conceptual/BPInternational/LocalizingYourApp/LocalizingYourApp.html#//apple_ref/doc/uid/10000171i-CH5-SW1

4. 本地化货币描述 和货币价格

(1)IOS渠道如何判断应该展示 什么货币?  根据用户登录的 APPID

(2)如果用户没有登录 APPID ? 那么根据下载游戏的时候记录的 APPID 来展示(猜测的)

(3)如何获得本地化的 商品描述?  APPSTORE 后台自己配置的。获取商品列表的时候可以拿到。

当然,原生弹窗展示的信息,也是在后台配置的。

(4)需要关心汇率问题吗? 不用,苹果给予的商品列表是 转换了货币符号和价格的。也就是拿到直接展示即可

(5)如何测试国外的本地化是否真的做好了? APPID 是可以切换区域的,切换到其他国家去测呗!

 

这篇关于app的本地化 国际化的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1059144

相关文章

Android App安装列表获取方法(实践方案)

《AndroidApp安装列表获取方法(实践方案)》文章介绍了Android11及以上版本获取应用列表的方案调整,包括权限配置、白名单配置和action配置三种方式,并提供了相应的Java和Kotl... 目录前言实现方案         方案概述一、 androidManifest 三种配置方式

python使用fastapi实现多语言国际化的操作指南

《python使用fastapi实现多语言国际化的操作指南》本文介绍了使用Python和FastAPI实现多语言国际化的操作指南,包括多语言架构技术栈、翻译管理、前端本地化、语言切换机制以及常见陷阱和... 目录多语言国际化实现指南项目多语言架构技术栈目录结构翻译工作流1. 翻译数据存储2. 翻译生成脚本

Deepseek R1模型本地化部署+API接口调用详细教程(释放AI生产力)

《DeepseekR1模型本地化部署+API接口调用详细教程(释放AI生产力)》本文介绍了本地部署DeepSeekR1模型和通过API调用将其集成到VSCode中的过程,作者详细步骤展示了如何下载和... 目录前言一、deepseek R1模型与chatGPT o1系列模型对比二、本地部署步骤1.安装oll

macOS怎么轻松更换App图标? Mac电脑图标更换指南

《macOS怎么轻松更换App图标?Mac电脑图标更换指南》想要给你的Mac电脑按照自己的喜好来更换App图标?其实非常简单,只需要两步就能搞定,下面我来详细讲解一下... 虽然 MACOS 的个性化定制选项已经「缩水」,不如早期版本那么丰富,www.chinasem.cn但我们仍然可以按照自己的喜好来更换

React实现原生APP切换效果

《React实现原生APP切换效果》最近需要使用Hybrid的方式开发一个APP,交互和原生APP相似并且需要IM通信,本文给大家介绍了使用React实现原生APP切换效果,文中通过代码示例讲解的非常... 目录背景需求概览技术栈实现步骤根据 react-router-dom 文档配置好路由添加过渡动画使用

MFC中App,Doc,MainFrame,View各指针的互相获取

纸上得来终觉浅,为了熟悉获取方法,我建了个SDI。 首先说明这四个类的执行顺序是App->Doc->Main->View 另外添加CDialog类获得各个指针的方法。 多文档的获取有点小区别,有时间也总结一下。 //  App void CSDIApp::OnApp() {      //  App      //  Doc     CDocument *pD

ConstraintLayout布局里的一个属性app:layout_constraintDimensionRatio

ConstraintLayout 这是一个约束布局,可以尽可能的减少布局的嵌套。有一个属性特别好用,可以用来动态限制宽或者高app:layout_constraintDimensionRatio 关于app:layout_constraintDimensionRatio参数 app:layout_constraintDimensionRatio=“h,1:1” 表示高度height是动态变化

App Store最低版本要求汇总

1,自此日期起: 2024 年 4 月 29 日 自 2024 年 4 月 29 日起,上传到 App Store Connect 的 App 必须是使用 Xcode 15 为 iOS 17、iPadOS 17、Apple tvOS 17 或 watchOS 10 构建的 App。将 iOS App 提交至 App Store - Apple Developer 2,最低XCode版本 Xcod

鸿蒙自动化发布测试版本app

创建API客户端 API客户端是AppGallery Connect用于管理用户访问AppGallery Connect API的身份凭据,您可以给不同角色创建不同的API客户端,使不同角色可以访问对应权限的AppGallery Connect API。在访问某个API前,必须创建有权访问该API的API客户端。 1.登录AppGallery Connect网站,选择“用户与访问”。选择左侧

Xinstall助力App全渠道统计,参数传递下载提升用户体验!

在移动互联网时代,App已成为我们日常生活中不可或缺的一部分。然而,对于App开发者来说,如何有效地推广和运营自己的应用,却是一个不小的挑战。尤其是在面对众多渠道、复杂的数据统计和用户需求多样化的情况下,如何精准地触达目标用户,提升用户的下载、安装和活跃度,更是考验着每一个运营者的智慧。 今天,我们就来揭秘一个能够帮助App开发者解决这些痛点的神器——Xinstall。作为一家一站式App全渠道