动态覆盖首选字符串本地化以进行测试

2024-01-06

使用 iPhone 模拟器中的“设置”应用程序切换语言是测试本地化调整的 PITA 方法。我正在尝试找出一种在我的应用程序中使用调试设置动态切换本地化(en/fr/es/etc)的方法,而无需重新启动应用程序。

NSBundle 提供了从任意本地化请求本地化资源的方法,例如

- (NSString *)pathForResource:(NSString *)name ofType:(NSString *)extension inDirectory:(NSString *)subpath forLocalization:(NSString *)localizationName

但我找不到字符串管理子系统的等效项。听起来来自these https://stackoverflow.com/questions/1669645/how-to-force-nslocalizedstring-to-use-a-specific-language 问题 https://stackoverflow.com/questions/1305564/use-specific-localization-in-cocoa-app您可以覆盖注册的默认值,这听起来很愚蠢并且需要重新启动应用程序。

这里还有其他策略吗?如果我用在调试构建中完成其自己工作的东西包装 NSLocalizedString ,那么加载给定的最短路径是什么.strings文件?是否有一种编程方式来访问这些字符串表,而无需自己亲自解析它们?

Thanks.


我发现的唯一方法是使用建议的微妙技巧这个答案 https://stackoverflow.com/questions/1669645/how-to-force-nslocalizedstring-to-use-a-specific-language/1746920#1746920。你可以包裹NSLocalizedString()在知道本地化“覆盖”的函数中,并根据是否设置来选择如何获取其字符串。当您想要覆盖时,您可以从本地化目录创建一个“子包”,然后从该包中提取字符串。这是它的要点:

if (CurrentLocalization != nil) {
    NSBundle * locBundle = [NSBundle bundleWithPath:[[NSBundle mainBundle] pathForResource:CurrentLocalization ofType:@"lproj"]];
    return [locBundle localizedStringForKey:key value:nil table:nil];
} else {
    return NSLocalizedString(key, @"");
}    

etc.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

动态覆盖首选字符串本地化以进行测试 的相关文章

  • 监控Mac网络流量

    我想知道如何监控 Mac 上的网络流量 就像活动监视器的方式一样 显示进出的字节 数据包 我知道这有点模糊 但我不确定最好的起点 编辑 我想用代码来完成此操作 而不是使用现有的软件 我刚刚找到了开源项目 菜单表 http www ragin
  • GameKit 蓝牙传输问题

    我正在尝试使用 GameKit 框架通过蓝牙发送文件 我遇到的问题是我一次只能发送一个 NSData 对象 但我需要将其保存在另一端 如果不知道文件名 这显然是不可能的 但我不知道如何传输它 我尝试将其转换为字符串NSData data N
  • 当日期改变时 NSNotification?

    WebKit 的 WebHistory API 按日期分隔其项目 因此 当日期发生变化时 我需要重新分配任何 昨天 和 或 早些时候 今天 或 明天 标签 有 NSNotification 吗 或者我必须依赖 NSTimer 还是 perf
  • 如何忽略系统默认Locale来检索resourceBundle

    我正在使用本地化 Web 应用程序java util ResourceBundle类和属性文件 我有两个语言环境 fr FR 和 en US 并且我想使用 en US 作为默认值 所以我编写了以下文件 messages fr FR prop
  • [NSDictionary getObjects:andKeys:] 的示例

    我找不到该方法的工作示例 NSDictionary getObjects andKeys 唯一的example http www mail archive com cocoa dev lists apple com msg24959 htm
  • 用xCode制作图表[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 您好 我需要绘制一些数组来分析信号 我有一个可可项目正在进行 谁能告诉我在哪里可以找到简化这项任务的工具 基本上我想像在图形计算器上一样显
  • 如何检测Mac上外接显示器的连接和断开?

    您知道如何检测 Cocoa 应用程序中插入 拔出的其他屏幕吗 我想检测用户将另一个屏幕插入或拔出 Mac 的时刻 我怎么能这样做呢 你的答案就在石英里 include
  • macOS 公证错误:“使用的签名算法太弱”

    我想知道是否有人熟悉这个错误 该错误仅在我将应用程序上传到 Apple 进行公证时才会发生 AppName zip AppName app Contents Resources EWSMacCompress tar gz EWSMacCom
  • 改变 Silverlight 应用程序的文化

    我目前正在开发 Silverlight 应用程序 我有一些数据网格 文本块 我使用标准绑定来显示值 其中一些是日期 例如
  • 在核心数据中伪造动态模式?

    通过阅读有关 Core Data 的 Apple 文档 我了解到当您需要动态模式时不应该使用 Core Data 如果我想为用户提供创建自己的属性的能力 那么在核心数据模型中 如果我创建一些 虚拟 属性 例如 自定义十进制 1 自定义十进制
  • 调用 AXIsProcessTrustedWithOptions 的临时权利

    当我在沙盒程序中调用 AXIsProcessTrustedWithOptions 时 请求权限的对话框未打开 并且我在控制台中收到 sandbox Deny 1 mach lookup com apple universalaccessAu
  • 在 XCode 数据模型编辑器中获取属性的最小值

    如何在 XCode 的数据模型编辑器中添加获取的属性以获得一个属性的最小值 我的型号 模型http www freeimagehosting net uploads b48853070e png http www freeimagehost
  • 根据维基百科,为什么“call super”被视为反模式? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 将 NSTabViewItem 的副本从 NSTabView 添加到同一个 NSTabView

    我正在创建一个简单的网络浏览器 并希望实现选项卡 为此 我使用NSTabView 我基本上希望每个选项卡都有一个WebView这将显示网站已加载 我从只有一个选项卡开始 并希望在创建新选项卡时添加第一个选项卡的精确副本 我尝试过类似的东西t
  • NSData initWithBytesNoCopy:length:freeWhenDone 的行为:

    我想要一个固定长度的可变内容共享数据缓冲区 这就是我如何创建它 void buffer malloc length initialize buffer content NSData sharedData NSData alloc initW
  • 将 NSWindow 的内容变灰

    我有一个NSWindow with 2 NSViews an NSSplitView和一个习惯NSView 访问数据以填充这些视图可能需要一些时间 在此期间 我想将这些视图的内容灰显 我的第一个方法是有一个黑色的第三个NSView覆盖另外2
  • 为 Linux 编译 Objective-C 应用程序(API 覆盖范围)

    我可能在这里问一些奇怪的问题 但我不确定从哪里开始 问题是我正在考虑使用 Obj C 和 Foundation 类在 Mac 上编写一个命令行工具 但存在一个非常大的风险 那就是我希望能够为不同的 Linux 发行版编译它 以便将来作为服务
  • 如何将 UILabel 的值绑定到实例变量?

    我是 mac objective c 的新手 我的问题是 我想知道是否可以将 UILabel 文本绑定到变量 而不必在值更改时手动设置文本 例如 在 Mac OS 上 当我打开新的 Finder 窗口并删除文件时 任务栏中的全局可用空间就会
  • Cocoa - 捕获 NSStatusItem 鼠标悬停事件

    当用户的鼠标悬停在我的 NSStatusItem 上时 如何执行函数 如果您分配自定义NSView给你的NSStatusItem s view属性 您可以覆盖NSResponder方法mouseEntered mouseMoved and
  • 从 NSImage 获取像素和颜色

    我创建了一个 NSImage 对象 理想情况下想确定它包含多少个像素颜色 这可能吗 此代码呈现NSImage into a CGBitmapContext void updateImageData if image return Dimen

随机推荐

  • 如何在 swift 中声明一个可在 Objective C 中使用的常量

    如果我将 swift 常数声明为全局常数 like let a 123 but the a无法在以下位置找到目标c 怎么解决这个问题呢 SWIFT代码 public class MyClass NSObject public static
  • C++ HDF5 找不到 -lhdf5d

    情况 我想创建一个程序来读取一些内容 hdf5 file 我做了什么 没什么 但添加hdf5 lib到项目 Problem 我收到两个错误 当我尝试运行该程序时 cannot find lhdf5d error ld returned 1
  • SELECT 非规范化列到单独的记录中?

    我正在使用 SQL 一点 这样如果我在工作面试中被问到 我就不会完全不知道它 我的朋友最近在面试时被问到以下问题 他答不出来 我问了工作中熟悉 SQL 的人 他也不知道 你们能帮我回答这个问题 然后解释一下它是如何工作的吗 请 问题 数据库
  • “ccache”配置

    我有一个与 ccache 配置相关的问题 在我们的开发环境中 我们有数百个使用绝对路径构建对象的 make 文件 我想加快进程并使用 ccache 不幸的是 当从不同位置编译时 我可以看到缓存未命中 下面是一个例子 简化了源文件放置在不同目
  • Java 数据流编程 API? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何在 JDBC 上执行这条 Oracle 语句

    我在使用 JDBC 准备好的语句执行以下操作时遇到问题 CREATE OR REPLACE TRIGGER Time trg BEFORE INSERT ON Time FOR EACH ROW BEGIN SELECT Time seq
  • 使用 Jackson 从字符串反序列化 LocalDateTime

    我正在尝试反序列化String to LocalDateTime与杰克逊 但它不起作用 我有一个带有 LocalDateTime 字段的数据类 Data public class Registration JsonFormat shape
  • 在 IDS4 和 ASP.NET Core 2.2 下使用 JwtToken 访问安全页面时出现 401 错误

    我通过添加以下行配置了 MVC 客户端 services AddAuthentication JwtBearerDefaults AuthenticationScheme AddJwtBearer 正如 某种程度上 预期的那样 错误消息是
  • 我可以使用 getopt 按特定顺序处理选项吗?

    我正在实现一个命令行工具 并且我需要能够处理一堆选项 某些选项完成后必须终止程序 例如我有选项a b和c 如果 a 和 b 在完成后终止 并且我发出命令 myprogram bca file 在这种情况下 有没有办法使用 getopt 给予
  • 大 O 与小 omega

    为什么 n 小于 O n 我知道什么是小欧米茄 例如 n log n 但我不明白为什么 n 小于 O n 大 Oh O 是上限 小 omega 是上限Tight下限 O g n f n 存在正常数 c 和 n0 使得 0 f n cg n
  • 如何在jmeter中对csv数据集配置的文件名文本进行参数化

    我将 csv 数据集配置中归档的文件名文本的值传递为 filename 该变量包含整个路径 并从另一个 csv 数据集配置中获取它 该配置直接存在于线程组和我所在的变量中传递到 if 控制器内部的 csv 数据集配置我无法将该值传递到文件名
  • 在 C# .net 中发送电子邮件

    我有以下代码来发送电子邮件 System Net Mail SmtpClient client new System Net Mail SmtpClient client Send email protected cdn cgi l ema
  • 使用 PHP 编写“if”条件语句有哪些不同方法?

    使用 PHP 编写 if 条件语句有哪些不同的方式 我知道以下示例 if test 1 else and if test 1 echo asdsa else echo sdaaa 有的是替代控制结构语法 http php net manua
  • 字符串字典:任何不符合协议“可解码”[重复]

    这个问题在这里已经有答案了 我正在尝试实现 Decodable 来解析 json 请求 但 json 请求在对象内部有一个字典 这是我的代码 struct myStruct Decodable let content String Any
  • iOS-将数组对象复制到另一个数组对象中

    我有一个小问题 我需要帮助 我想循环遍历一个多维数组 每次我找到一个键 ex name 等于 ex 的值 你好 我想将该数组对象复制到另一个数组中 我怎么做 您将这样做 NSArray newArray NSArray arrayWithA
  • C++20 中允许 east constexpr / constinit / consteval 吗?

    我在网上找到的大多数例子都更喜欢 西方风格 constexpr C 11 consteval and constinit C 20 consteval auto sqr int n return n n constexpr auto r s
  • 如何创建面积范围图

    我想创建area range chart如下所示link http jsfiddle net D4w7G 3 我想使用数据循环将数据添加到范围 应该是什么类型ranges创建图表 请建议 提前致谢 这是 JSFiddle 代码 HTML d
  • 如何通过 Azure Devops CI/CD 使用单臂模板部署多个逻辑应用程序?

    我有多个带有相应 ARM 模板的逻辑应用程序 现在 我想将不同的 ARM 模板合并到一个 ARM 模板中 并通过 AZURE DEVOPS 管道同时部署多个逻辑应用 对于您的场景 您需要首先更改 ARM 模板结构 例如 我想将4个ARM模板
  • HTTP/2 与 OkHttp

    我正在尝试使用 HTTP 2 服务器进行通信OkHttp http square github io okhttp client 添加到 Maven POM
  • 动态覆盖首选字符串本地化以进行测试

    使用 iPhone 模拟器中的 设置 应用程序切换语言是测试本地化调整的 PITA 方法 我正在尝试找出一种在我的应用程序中使用调试设置动态切换本地化 en fr es etc 的方法 而无需重新启动应用程序 NSBundle 提供了从任意