首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用NSLocalizedString的最佳方法?

使用NSLocalizedString的最佳方法?

提问于 2018-03-25 16:01:22
回答 2关注 0查看 112

我(与其他人一样)使用NSLocalizedString本地化我的应用程序。

不幸的是,有几个“缺点”(不一定是NSLocalizedString本身的错误),包括

  • Xcode中的字符串没有自动完成。这使得工作不仅容易出错,而且令人厌烦。
  • 可能最终会重新定义一个字符串,因为不知道已经存在一个等效字符串(即“请输入密码”与“先输入密码”)
  • 与自动完成问题类似,需要“记住”/复制注释字符串,否则genstring最终会以一个字符串的多个注释结束
  • 如果想在使用genstring某些字符串之后再使用,则必须小心不要丢失旧的本地化版本。
  • 相同的字符串分散在整个项目中。例如,NSLocalizedString(@"Abort", @"Cancel action")在任何地方都使用,然后Code Review会要求重命名字符串NSLocalizedString(@"Cancel", @"Cancel action")以使代码更加一致。

我所做的(并且经过一些搜索之后,我认为很多人都这样做)是要有一个单独的strings.h文件,我需要#define所有的本地化代码。例如

代码语言:javascript
运行
AI代码解释
复制
// In strings.h
#define NSLS_COMMON_CANCEL NSLocalizedString(@"Cancel", nil)
// Somewhere else
NSLog(@"%@", NSLS_COMMON_CANCEL);

这基本上提供了代码完成,一个地方改变变量名称(所以不再需要genstring)和一个唯一的关键字自动重构。然而,这需要花费一大堆#define非固有结构的语句(即像LocString.Common.Cancel或类似的东西)。

回答 2

社会人就是

回答已采纳

发布于 2018-03-26 00:43:40

NSLocalizedString有一些限制,但它对Cocoa来说非常重要,因为编写自定义代码来处理本地化是不合理的,不得不使用它。

更新字符串文件

genstrings覆盖你的字符串文件,丢弃你之前的所有解释。有一个update_strings.py来解析旧的字符串文件,运行genstrings并填写空白,以便不必手动恢复现有的翻译。脚本尝试尽可能匹配现有的字符串文件,以避免在更新它们时出现太大差异。

命名您的字符串

如果使用NSLocalizedString

代码语言:javascript
运行
AI代码解释
复制
NSLocalizedString(@"Cancel or continue?", @"Cancel notice message when a download takes too long to proceed");

可能最终会在代码的另一部分中定义相同的字符串,这可能会因为相同的英语术语在不同的上下文中具有不同含义而发生冲突:

代码语言:javascript
运行
AI代码解释
复制
NSLocalizedString(@"DOWNLOAD_CANCEL_OR_CONTINUE", @"Cancel notice window title when a download takes too long to proceed");

龙珠粉丝255

发布于 2018-03-26 01:56:46

至于Xcode中字符串的自动完成,可以尝试http://questbe.at/lin/...

和开发者交流更多问题细节吧,去 写回答
相关文章
Swift:NSLocalizedString 国际化语言配置
总体流程就是本地配置文件Localizable.strings,然后使用Localizable.strings读取本地配置文件对应的内容】
菜菜不吃蔡
2019/11/03
3.2K0
编写SQL查询的最佳方法
毫无疑问,编写代码更像是一门艺术,而不是一门科学。即使有经验,每个编码人员也无法编写既可读又可维护的优美代码。一般来说,当您学习编码艺术时,编码会随着经验而提高。例如,组合重于继承或编码接口大于实现,但只有少数开发人员能够掌握这些技术。
liuxuewen
2018/10/17
1.7K0
使用 Python 开发桌面应用程序的最佳方法是什么?
Python 是一种通用编程语言,可用于各种任务,包括 Web 开发、数据分析和机器学习。它的最大优点之一是它还可用于创建桌面应用程序。在本文中,我们将深入探讨使用 Python 开发桌面应用程序的最佳实践。
很酷的站长
2023/02/18
7.2K0
使用 Python 开发桌面应用程序的最佳方法是什么?
解决Python编码问题的最佳方法
作者 | Luay Matalka 编译 | VK 来源 | Towards Data Science
磐创AI
2021/04/21
8710
在线学习Java编程的最佳方法[通俗易懂]
Java是使用最广泛的编程语言之一。 根据Github的最新报告 ,Java被列为仅次于JavaScript的第二大最常用的编程语言。 掌握Java的人有很多话题。 好消息是,您可以在线找到很多内容。 在本文中,我们将对所有这些主题进行分类,并提供对文章和代码示例的引用,这些文章和代码示例将指导您完成学习Java的过程。
全栈程序员站长
2022/09/08
1.8K0
下载NCBI SRA数据的最佳方法
高通量的原始数据通常情况下会上传到NCBI的SRA(Sequence Read Archive)数据库。当我们需要用到这些数据的时候,就需要合适的方法来下载。
阿凡亮
2020/04/14
2K0
实施ERP的最佳方法是什么
也许您已决定加入潮流,并在公司中实施企业资源计划或ERP,或者您要从当前的ERP系统进行升级。令人恐惧的部分可能是进行更改。您应该放弃所有内容并立即启动ERP还是可以分阶段实施?
深圳ERP
2019/12/13
9160
实施ERP的最佳方法是什么
深度学习NLP最佳方法
2017年7月26日更新:有关其他上下文,HackerNews对此帖的讨论。
花落花飞去
2018/02/05
1.7K0
Redis哨兵的工作原理、配置和使用方法,以及相应的最佳实践
Redis是一个非常流行的开源内存数据存储解决方案,包含了许多有用的功能,例如支持各种数据结构、复制、持久化等等。Redis还提供了外部Redis哨兵用于监控和管理Redis集群的高可用性。
网络技术联盟站
2023/06/06
1.2K0
使用 SQL NOWAIT 的最佳方式
摘要:SQL NOWAIT使我们能够在获取行级锁时避免阻塞,本文中我们将学会使用这个功能最佳方法。
姚远OracleACE
2023/04/06
1K0
使用 SQL NOWAIT 的最佳方式
确保云安全的最佳方法是什么?
随着云计算成为企业开展业务的一种基础技术,云安全已变得至关重要。然而,充分了解云安全的最佳策略是一个真正的挑战。
静一
2020/03/25
7090
确保云安全的最佳方法是什么?
过TP保护的最佳方法(最新整理)
https://wenku.baidu.com/view/eecc906148d7c1c708a145aa.html
战神伽罗
2019/12/20
1.9K0
构建SaaS产品的最佳方法是MVP
来源|作者:李宽wideplum  ---- 初创公司和大型IT公司越来越多地使用MVP作为创建成功软件产品的起点。专注于核心功能的最小集合,公司开发一个产品框架,如果成功地验证了需求、效率和市场可行性,就可以使用该框架来扩大供应,并建立一个成熟的业务。 然而,在定义MVP的组成部分时,初创企业所遵循的许多概念都是不正确的。例如,有一种常见的误解,认为产品的早期版本是为了快速进入市场而设计的。事实上,正如前面提到的,最小可行的解决方案旨在验证经济可行性,所以只有在MVP分析和测试目标快速实现的
腾讯SaaS加速器
2021/03/08
8200
使用 Docker 安装 Jenkins 的最佳方式
本篇内容非常简单,讲述了如何快速在 Docker 上部署一个 Jenkins 实例,避免多采坑,浪费不必要的练习时间。
Esofar
2019/07/11
2.2K0
使用 Docker 安装 Jenkins 的最佳方式
Python中类型最佳判断方法
Python在定义变量的时候不用指明具体的的类型,解释器会在运行的时候会自动检查变量的类型,并根据需要进行隐式的类型转化,因为Python是动态语言,所以一般情况下是不推荐进行类型转化的。
后场技术
2020/09/03
8870
Python中类型最佳判断方法
Java 中使用 Collections 的最佳实践
Collections 是 Java 中操作集合类数据结构的工具类。它提供了一系列可以操作 List、Set 和 Map 的静态方法,可以辅助开发人员进行集合的常用操作,如排序、搜索、遍历等。
用户1289394
2023/09/11
3670
Java 中使用 Collections 的最佳实践
物联网安全最佳实践方法
虽然新冠肺炎导致多数行业需求下降,但却提高了网络安全行业的需求。在2020年5月21日,某些网络安全供应商,提出了2020年第4季度:“新冠病毒加速了整合、整合和云转型的[安全]趋势。”
用户2605137
2022/04/12
5680
物联网安全最佳实践方法
代码阅读方法与最佳实践
阅读代码是程序员的基本技能,同时也是软件开发、维护、演进、审查和重用过程中不可或缺的组成部分。本书首次将阅读代码作为一项独立课题,系统性地加以论述。本书引用的代码均取材于开放源码项目——所有程序员都应该珍视的宝库。
一个会写诗的程序员
2022/09/19
7360
用Transformer做多元时序预测的最佳方法?
Transformer如何应用于时间序列预测一直是近期探讨的一个核心问题,这里包括多变量建模的处理方式、Transformer的结构等。在DLinear中,提出了用线性模型打败Transformer模型;在后来的PatchTST等工作中,又验证了Transformer的有效性。那么,到底如何使用Transformer进行时间序列预测效果最好呢?
圆圆的算法笔记
2023/08/17
2.4K0
用Transformer做多元时序预测的最佳方法?
点击加载更多

相似问题

PHP中自动加载类的最佳方法

2243

在jQuery中删除事件处理程序的最佳方法?

2360

在PHP和Javascript之间传输数组的最佳方法?

2210

Microsoft SQL Server中比较日期的最佳方法是什么?

2235

在input type =“text”中跟踪onchange的最佳方法是什么?

2424
相关问答用户
腾讯云TDP | TDP会员擅长3个领域
到家集团 | 技术VP擅长5个领域
web前端擅长4个领域
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文