返回顶部
首页 > 资讯 > 移动开发 >iOS 国际化(多语言)
  • 303
分享到

iOS 国际化(多语言)

iosxcodeiOS多语言iOS国际化 2023-09-25 13:09:45 303人浏览 独家记忆
摘要

一、应用程序国际化 包括app名称和各种权限的提示文字。 1.1 创建工程,再在“PROJECT”的“Info”里面,添加所需语言。 1.2 从代码中分离出文本 创建一个 “.strings” 扩展名

一、应用程序国际化

包括app名称和各种权限的提示文字。

1.1 创建工程,再在“PROJECT”的“Info”里面,添加所需语言。在这里插入图片描述
1.2 从代码中分离出文本

创建一个 “.strings” 扩展名的文件
来本地化字符串,需要把这些字符串全部放在一个单独的文件中。它将会在包中简单地引用这些字符串,而不是在实现、使用的方法中进行硬编码。
Xcode使用带有 “.strings” 扩展名的文件来存储和检索 程序中使用的所有字符串,以及支持的每种语言。根据iOS设备当前所使用的语言,在代码中一个简单的方法调用将会查找并返回符合设备语言要求的字符串。点击右键,选择“New File…”,选择“ioS”对应的“Resource”中的“Strings File”,如图:在这里插入图片描述
点击“Next”,为文件命名为InfoPlist.strings,然后点击“save”。

1.3 添加语言

创建完“InfoPlist.strings”(命名随意~),工程目录结构文件如下,单击“InfoPlist.strings”,查看右边的属性,在Localizable栏添加语言。如图:
在这里插入图片描述
在这里插入图片描述

添加之后,效果如下:

在这里插入图片描述
这个时候就可以在对应语言的“InfoPlist.strings”文件中,添加所支持的字符串了。

中文对应的文件里添加:

"CFBundleDisplayName" = "App名字";"NSCameraUsageDescription" = "App 需要访问您的相机来扫描二维码绑定设备";"NSContactsUsageDescription" = "App 需要访问您的通讯录来实现通讯录备份";"NSPhotoLibraryAddUsageDescription" = "App 需要访问您的相册来保存图片或视频";"NSPhotoLibraryUsageDescription" = "App 需要访问您的相册来发送图片或扫描二维码";"NSLocationWhenInUseUsageDescription" = "App 需要您允许定位以把位置保存到照片中";

英文对应的文件里添加:

"CFBundleDisplayName" = "=App Name";"NSCameraUsageDescription" = "App needs access to your camera to scan QR code binding devices";"NSContactsUsageDescription" = "App needs to access your address book to achieve address book backup";"NSPhotoLibraryAddUsageDescription" = "App needs access to your photo album to save images or videos";"NSPhotoLibraryUsageDescription" = "App needs to access your photo album to send pictures or scan QR code";"NSLocationWhenInUseUsageDescription" = "App requires you to allow positioning to save the location to the photo";

二、内容国际化

2.1 创建一个“Localizable.strings” 文件

创建一个“Localizable.strings” 文件(点击右键,选择“New File…”,选择“iOS”对应的“Resource”中的“Strings File”)。
在这里插入图片描述
注意:Localizable.strings 是系统默认名字,不能更改。

2.2 添加内容

添加语言在Localization.strings 中,按照"key" = “value"的格式。在使用时,用NSLocalizedString(@“key”, @”")读取内容。

Localization.strings (English)文件中,添加:

"第一!绝对不意气用事!" = "The first!Absolutely not impulsive!";"第二!绝对不漏判任何一件坏事!" = "The second!Definitely not missing any bad thing!";"第三!绝对裁判的公正漂亮!" = "The third!Absolutely the referee just beautiful!";

Localization.strings (Chinese)文件中,添加:

"第一!绝对不意气用事!" = "第一!绝对不意气用事!";"第二!绝对不漏判任何一件坏事!" = "第二!绝对不漏判任何一件坏事!";"第三!绝对裁判的公正漂亮!" = "第三!绝对裁判的公正漂亮!";

如图所示:

在这里插入图片描述

在这里插入图片描述

调用:

  NSString * label_Str1 = NSLocalizedString(@"第一!绝对不意气用事!", nil);  NSString * label_Str2 = NSLocalizedString(@"第二!绝对不漏判任何一件坏事!", nil);  NSString * label_Str3 = NSLocalizedString(@"第三!绝对裁判的公正漂亮!", nil);  NSString * label_Str = [NSString stringWithFORMat:@"%@\n%@\n%@",label_Str1,label_Str2,label_Str3];  UILabel * label = [[UILabel alloc] initWithFrame:CGRectMake(10, 240, self.view.frame.size.width, 120.f)];  label.text = label_Str;  //自动换行  label.numberOfLines = 0;  [self.view addSubview:label];

优化: 在pch头文件中,定义一个国际化对应的宏!

 //宏定义国际化字符 #define NSLocalString(a)   (NSLocalizedString(a, nil))使用: NSString * label_Str1 = NSLocalString(@"第一!绝对不意气用事!");

判断支持的语言、当前语言:

NSArray *languages = [NSLocale preferredLanguages];       NSLog(@"支持的languages:%@",languages);NSString *currentLanguage = [languages objectAtIndex:0];NSLog(@"当前语言currentLanguage:%@",currentLanguage); //日语:ja-CN、法语:fr-CN、fr-CA

三、多语言文件编译报错

项目实现国际化功能,编译时遇到错误,read failed: Couldn’t parse property list because the input data was in an invalid format。

3.1 问题分析

数据格式错误一般会有下面几种情况:

末尾少了分号
字符使用了全角字符(中文字符)
中间少了 =
少了双引号或者引号没有成对出现
文本中出现了不必要的特殊字符
这是个小问题,主要看怎么快速查找出问题,下面给出三种方法

3.2 问题解决
3.1 肉眼检索

最简单最直接的方式,肉眼检索,找到问题改正。

这种方式一般适用于文件小,内容少的情况。

如果内容多,有十几个国家的翻译文件,这种方法显然不合适。

3.2 减半筛查

把翻译文件中的内容每次注释掉一半,再编译,如果没有报错,问题就出现另外一半。将另外一半再注释掉一半,再编译,如此重复也能快速的排查出问题所在。

3.3 借助工具 Localizable (付费)

Localizable 是 Mac 上的一款桌面工具,在商店搜索 Localizable 就可以找到,使用方式也很简单,只需要将 Localizable.strings 文件拖到对应区域就可以,然后会反馈哪一行格式有问题,对应解决就好,非常方便。

来源地址:https://blog.csdn.net/u010545480/article/details/128734679

--结束END--

本文标题: iOS 国际化(多语言)

本文链接: https://lsjlt.com/news/417411.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • iOS 国际化(多语言)
    一、应用程序国际化 包括app名称和各种权限的提示文字。 1.1 创建工程,再在“PROJECT”的“Info”里面,添加所需语言。 1.2 从代码中分离出文本 创建一个 “.strings” 扩展名...
    99+
    2023-09-25
    ios xcode iOS 多语言 iOS 国际化
  • Flutter之国际化(多语言处理)
    项目内最近加入国际化内容,那么我们需要转化对应语言内容,来展示UI App国际化开发主要包括: 文本国际化Widget显示的国际化某些文本在对应语言环境下应该显示为所选择语言内容; 多语言适配: 目前...
    99+
    2023-09-17
    flutter android ui ios
  • 3分钟实现iOS语言本地化/国际化(图文教程)
    前言 语言本地化,又叫做语言国际化。是指根据用户操作系统的语言设置,自动将应用程序的语言设置为和用户操作系统语言一致的语言。往往一些应用程序需要提供给多个国家的人群使用,或者一个国家...
    99+
    2022-05-19
    iOS 本地化 国际化
  • 商城开发中多语言国际化技术
    随着全球化的不断发展,越来越多的公司开始将目光投向海外市场。为了更好地拓展海外市场,商城开发中多语言国际化技术显得尤为重要。本文将从以下几方面进行讨论:国际化的概念、商城开发中应用多语言国际化技术的原因、实现多语言国际化的具体方法以及遇到的...
    99+
    2023-05-14
    国际化技术 多语言 商城开发
  • PHP 多语言:国际化网站的必备技能
    在全球化互联网时代,构建多语言网站已成为企业拓展国际市场的必要条件。PHP 作为一种流行的 Web 开发语言,为多语言网站提供了强大的支持。掌握 PHP 多语言技能至关重要,可以帮助开发人员创建满足全球受众需求的交互式网站。 PHP 多语...
    99+
    2024-04-02
  • PHP 多语言支持的巅峰:化身国际化大师
    国际化与本地化 国际化(i18n)是一个将应用程序准备成支持不同语言和区域设置的过程。本地化是针对特定语言或区域设置对应用程序进行定制的过程。 翻译 PHP 提供了多种内置函数,如 gettext() 和 sprintf(),用于翻译文...
    99+
    2024-04-02
  • PHP开发中如何处理多语言和国际化支持
    引言:在当前全球化的时代,为了满足不同语言和文化背景用户的需求,将应用程序进行多语言和国际化支持变得尤为重要。在PHP开发中,我们可以利用一些常见的方法来实现多语言和国际化支持,使得应用程序能够灵活地切换语言,提供更好的用户体验。本文将重点...
    99+
    2023-10-21
    翻译 多语言 国际化
  • PHP开发中如何处理多语言和国际化问题
    随着互联网的发展,人们对于多语言和国际化的需求越来越高。在PHP开发中,如何有效地处理多语言和国际化问题成为了开发者们需要解决的重要任务。字符编码的处理在PHP开发中,我们首先要确保正确处理字符编码。在多语言环境中,使用UTF-8编码是最常...
    99+
    2023-10-21
    处理 多语言 国际化
  • 征服多语言世界:使用 Vue 进行无缝国际化
    简介 国际化对于现代 Web 应用程序至关重要,它允许应用程序针对不同的语言和地区进行定制。Vue.js,一个流行的 JavaScript 框架,提供了内置支持,可实现无缝的国际化。 Vue.js 的国际化特性 Vue.js 的国际化特...
    99+
    2024-04-02
  • Flex国际化怎么支持其他语言
    这篇文章主要为大家展示了“Flex国际化怎么支持其他语言”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Flex国际化怎么支持其他语言”这篇文章吧。Flex国际化内部的Flex国际化文件/库只支持...
    99+
    2023-06-17
  • vue实现网页语言国际化切换
    一、基本步骤 1:安装 yarn add vue-i18n  在此路径新建一个.js文件:src/lang/index.js后:   2:导入 import VueI18n from...
    99+
    2024-04-02
  • Android国际化之中英文语言切换
    不想废话,直接上干货 @Override protected void attachBaseContext(Context newBase) { Loca...
    99+
    2024-04-02
  • 基于springboot i18n国际化后台多种语言设置的方式
    之前有做过手机端后台的国际化,因为手机统一传递了language参数 所以只要设置LocaleChangeInterceptor就行了 @Configuration publi...
    99+
    2024-04-02
  • 【android studio 简单配置多语言国际化app 一行代码实现切换语言】
    文章目录 前言一、语言文件二、一行代码切换语言1.切换语言2.保存语言状态3.界面闪动解决之返回主界面 总结 前言 新版本的android studio配置多语言其实很简单,不过目前网上找到的几个博客都搞得很复杂,可能是版...
    99+
    2023-08-16
    android studio android ide 自动翻译
  • 打破语言壁垒:Vue 的国际化指南
    设置国际化 Vue 提供了 VueI18n 库,用于管理应用程序的国际化。要设置国际化,请遵循以下步骤: 安装 VueI18n:npm install vue-i18n 在 main.js 文件中导入 VueI18n 并创建实例: i...
    99+
    2024-04-02
  • 消除语言障碍:Vue 国际化的艺术
    引言 在构建全球化的应用程序时,语言障碍是一个常见的挑战。Vue.js 提供了全面的国际化支持,使开发人员能够无缝地将应用程序本地化到多种语言。 什么是国际化? 国际化是使应用程序能够适应不同区域和语言的过程。这包括翻译文本、适应文化差异...
    99+
    2024-04-02
  • Android Studio快速实现Flutter应用的国际化和多语言支持
    文章目录 Flutter实现国际化和多语言支持添加依赖库Android Studio 安装flutter Intl插件项目初始化增加语言app中使用国际化在应用中切换语言:运行应用 总结...
    99+
    2023-10-27
    android studio flutter android 国际化 多国语言 Intl
  • C语言软件国际化设计要点解析
    C语言软件国际化设计要点解析 随着全球化的发展,软件开发中的国际化设计变得越来越重要。对于使用C语言开发的软件项目来说,如何进行国际化设计成为一个关键问题。本文将从C语言软件国际化设计...
    99+
    2024-04-02
  • 超越语言界限:Vue 中的国际化策略
    vue-i18n 库 vue-i18n 是 Vue.js 官方推荐的国际化库。它提供了一套全面的 API,用于定义翻译、切换语言以及格式化日期和数字。 使用 vue-i18n 安装库:npm install vue-i18n 创建实例:...
    99+
    2024-04-02
  • PHP 多语言:让你的网站成为国际巨星
    在当今全球化的数字环境中,网站多语言至关重要,因为它可以接触到更广阔的受众,建立信任,并提升整体用户体验。PHP是一种流行的Web开发语言,提供了一种简单有效的方法来实现网站多语言。 内容: 选择多语言库: PHP提供了多种多语言库,包括...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作