iOS 多语言本地化 完美解决方案【自动+手动】

多语言本地化,是我们在做IOS项目的时候经常用的,下面根据自己的经验和使用场景,来全面的说说多语言本地化的解决方案。


首先我们要明白本地化的原理和过程,才能更好的理解本地化的方案,本地化主要包括下面几个部分:

  • 本地化应用程序名称
  • 本地化字符串
  • 本地化图片
  • 本地化其他文件


一、本地化应用程序名称,这个只有一种方案:

    • 点击“new file”然后在弹出窗口左侧选择IOS的resource项,在右侧就可以看到“String File”的图标。创建这个文件,命名为“InfoPlist”(一定是这个文件名) 就生成一个InfoPlist.strings文件;
    • 选中InfoPlist.strings 点击 XCode-> View-> Utilities -> File Inspector,在Localization中点“+”,添加chinese (zh-Hans)类型的为简体中文,english 应该会自动添加上。然后在InfoPlish.strings 左边会多出一个三角形,点击展开后可以看到InfoPlish.strings(english)和InfoPlish.strings(chinese)两个版本的文件;
    • 在InfoPlish.strings(english)文件中加入:
    • CFBundleDisplayName ="Program";   其中“Program”为英文应用程序名称,同理在InfoPlish.strings(chinese)文件中加入:
    • CFBundleDisplayName ="应用程序";   其中“应用程序”为中文名称,注意:CFBundleDisplayName加不加双引号都行
    • 编辑Info.plist,添加一个新的属性Application has localized display name, 设置其类型为boolean,并将其value设置为YES即可


二、本地化字符串和本地化图片的解决方案有下面两种:

    • 程序中提供给用户自己选择的机会,用户可以使用按钮等方式自有切换语言,和当前系统的语言没有关系;
    • 根据当前用户当前移动设备的语言自动将我们的app切换对应语言。


第一种做法看似比较简,当时其实想灵活实现也需要费点心思,具体的实现方法如下:

  • 创建多个strings文件,名字不能用Localizable.strings。
  • 多个strings文件如:English.strings/Chinese.strings/German.strings等等。
  • 每个文件中的内容和写法与Localizable.strings类似。
  • 使用方式:NSLocalizedStringFromTable(@"start",@"Chinese", nil)  。
  • 根据用户的操作,来更新页面的多语言显示。
  • 图片的本地化,不同语言获取不同的图片名称即可。  

第二种做法,主要分一下几点:

  • 类似“本地化应用程序名称”第一步,点击“new file”然后在弹出窗口左侧选择IOS的resource项,在右侧就可以看到“String File”的图标。创建这个文件,命名为“Localizable”(一定是这个文件名否则后面调用会有一些区别)就生成一个Localizable.strings文件;
  • 类似“本地化应用程序名称”第二第三步,在Localizable.strings(english)文件中加入:
  • "welcome"="Click on the screen to continue...";  

     同理在Localizable.strings(chinese)文件中加入:

    "welcome"="点击屏幕继续...";  
    在代码中使用NSLocalizedString(<#key#>, <#comment#>)来读取本地化字符串。

注:图片的本地化,  这里不同语言的图片的名称要一样,但是要放到不同的语言文件夹中。


三、本地化其他文件

本地化其他文件和本地化图片第二种方法类似,先在Localization中添加语言,然后把对应版本拷贝到en.lproj和zh-Hans.lproj文件夹中,最后引用就行了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您的问题不太清晰,我猜测您想问的是如何使用 Python 进行 iOS 自动化测试时的 OCR 文字识别和坐标定位。 OCR 文字识别可以使用 Python 的第三方库 pytesseract 来实现,它是一个基于 Google 的开源 OCR 引擎 Tesseract 的 Python 封装。您可以通过以下命令安装: ``` pip install pytesseract ``` 在使用 pytesseract 进行 OCR 识别时,您需要先对需要识别的区域进行截图,然后使用 pytesseract.image_to_string() 方法来获取识别结果。例如: ```python import pytesseract from PIL import Image # 截图 im = Image.open('screenshot.png') region = im.crop((x1, y1, x2, y2)) # OCR 识别 text = pytesseract.image_to_string(region, lang='eng') print(text) ``` 坐标定位可以通过 iOS 自动化测试框架 XCTest 来实现。您可以使用 XCTest 提供的 XCUIElementQuery 来查找您需要的 UI 元素,然后使用 XCUIElement 的坐标信息来进行操作。例如: ```python import time import unittest from appium import webdriver class iOSAutomationTest(unittest.TestCase): def setUp(self): desired_caps = { "platformName": "iOS", "platformVersion": "14.5", "deviceName": "iPhone 12", "app": "/path/to/your/app", "automationName": "XCUITest", "udid": "your-device-udid" } self.driver = webdriver.Remote("http://localhost:4723/wd/hub", desired_caps) def tearDown(self): self.driver.quit() def test_example(self): # 查找 UI 元素 button = self.driver.find_element_by_xpath("//XCUIElementTypeButton[@name='Example']") # 获取坐标信息 x = button.location['x'] y = button.location['y'] # 点击 self.driver.tap([(x, y)]) # 等待 time.sleep(2) if __name__ == '__main__': unittest.main() ``` 需要注意的是,iOS 自动化测试需要使用 Appium 作为驱动,并且需要在您的 iOS 设备上安装 Appium 的 WebDriverAgent 服务。同时,您需要在 Appium 中设置正确的 capabilities 和启动参数,才能进行 iOS 自动化测试。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值