问题标签 [nslocalizedstring]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
423 浏览

iphone - iPhone App本地化——让用户选择语言

我了解如何本地化应用程序,并且显示的语言基于用户在手机设置中选择的语言/地区。

我的问题是,如果我想让用户在应用程序本身中选择语言,而不是默认设置中的设置(例如,有一个用户选择语言的屏幕),该怎么办。

我可以采用这种方法吗?我可以以某种方式使用现有的本地化过程(即有一个带有字符串的 plist 并使用 NSLocalised 字符串吗?)?

谢谢 !

0 投票
1 回答
2618 浏览

ios - 使用 nsattributedstring 和 nslocalizedstring

我的旧代码使用 NSLocalizedString 来显示以下内容,其中 outputText 是一个 NSMutableString,它在单个输出会话中包含许多这样的行:

我正在尝试更改各种 ipAddress 字符串的颜色,但在使用 NSMutableAttributedString 时找不到类似的方法。

我面临的最大问题是,由于整个字符串都将被本地化,如果不破坏格式化输出的每个部分,我就无法可靠地设置 NSRange。

我是否需要剖析这个字符串的每一部分,将其转换为 NSAttributedString 并将每一部分附加到 outputText 中?

0 投票
5 回答
21045 浏览

ios - iOS App Bundle 中的多个本地化 .strings 文件

我有一个相当复杂的项目,由几个大型本地化子项目组成。

我的大多数子项目都通过单个Localizable.strings文件进行本地化。该文件被复制到一个目标中,该目标与主项目中SubProjectName.bundle的静态库一起使用。SubProjectName.a这工作正常。

但是,我的一个子项目包含许多本地化的 .strings 文件。无论设备(或模拟器)如何配置,该项目都无法读取除 English 以外的任何语言的字符串。

例如,这行代码总是返回英文字符串:

其中MyTable对应于本地化为多种语言的 MyTable.strings 文件。当我查看 .app 包时,所有的本地化都在那里,位于应用程序内的“MyBundle.bundle”资源中。

但是,以下代码可以在所有本地化中正确找到给定字符串的翻译:

因此,当捆绑包是实际MyBundle.bundle/<LanguageCode>.lproj文件夹时,字符串查找有效。但这显然违背了 iOS 提供的自动查找的目的。

(请注意,[NSBundle myResourcesBundle]上面只是为子项目获取我的自定义包的静态便捷方法)。

--

编辑:我一直在尝试这个,如果我en.lproj从我的子项目的包中删除文件夹,那么它会正确使用设备或模拟器的语言环境。

例如,我有:

当我将模拟器(或设备)设置为简体中文时,en.lproj即使语言环境是zh-Hans. 如果我删除en.lproj文件夹并重新启动应用程序,它会正确使用 zh-Hans 本地化。

0 投票
4 回答
7500 浏览

iphone - 使用按钮更改 iphone 应用程序语言,无需重新启动应用程序

我想更改我的应用程序的语言。目前我正在按照以下方式进行操作。我有两个按钮可以更改 NSUserDefaults 中的语言。但在这影响我的应用程序之前,我需要重新启动它。

这是我的代码。

这工作正常。但我不想每次都重新启动我的应用程序。谁能告诉我该怎么做?

亲切的问候!

0 投票
1 回答
228 浏览

objective-c - NSLocalizedString 问题

我有 eng、span、port、rus、arab、chin 的 Localizable.strings 文件。

一个非常奇怪的问题开始发生,关键是显示而不是值。奇怪的是,这就是导致它停止工作的原因:

我有:

在 ViewControllerA 中,效果很好。然后我将这行代码复制并粘贴到 ViewControllerB。现在显示键 '1OF5' 而不是 .strings 文件中的值。

所有其他 NSLocalizedStrings 在整个应用程序中都可以正常工作(其中 100 多个),除了这个 >:|

我试过了:

  1. 删除应用程序并重新安装
  2. 重启设备
  3. 清理项目并重新安装
  4. 重启设备,清理项目,重新安装
  5. 删除 .strings 文件并再次添加

我正在把头发拉出来。任何帮助将非常感激。

0 投票
3 回答
5930 浏览

ios - iOS - NSLocalizedString 只返回密钥字符串

我在调试我的NSLocalizedString实现时遇到了一些麻烦。应该很简单,但是无论我做什么,该函数都只返回KEY字符串。

我正在使用 XCode 4.5 和 iOS6,所以我:

  1. 添加了一个名为File.strings.
  2. 在我的项目设置中,我添加了英语和西班牙语作为语言设置。
  3. 单击文件检查器中的“本地化”,并确保选择了英语和西班牙语选项,并且选择了我的目标的目标成员资格。
  4. 添加"KEY" = "TestEnglish";到我的英语File.strings
  5. 添加"KEY" = "TestSpanish";到我的西班牙语中File.strings
  6. 添加NSLog(@"Localization: %@\n", NSLocalizedString(@"KEY", nil));到我的.m文件中。

当我运行应用程序时,该值"KEY"始终显示在NSLog.

为了更深入地了解这一点,我也尝试了这个:

"KEY并且仍然打印了值" ,但是,path它是一个有效的路径。

有谁知道如何调试这个?我觉得我已经阅读了所有 SO 问题/答案,但没有任何建议有帮助。

我意识到当它无法匹配键时NSLocalizedString返回KEY字符串,但我不知道如何调试我的应用程序可能与键不匹配的原因。

我还删除/清理了应用程序大约十几次。

0 投票
3 回答
109 浏览

iphone - 如何将所有支持的语言从 iphone 库中列出到应用程序中

我正在创建一个应用程序,我需要将所有支持的语言从库中列出到 tableview 中。这样用户就无需进入设置并更改语言。如果他愿意,他可以直接从应用程序更改它。我已经搜索了很多,但不知道它是否可能。所以请任何人都可以帮我解决这个问题。

提前致谢

0 投票
1 回答
246 浏览

ios - 我应该如何在 iOS 项目中存储本地化的字符串?

我正在开发一个 iOS 应用程序。我的任务之一是本地化。出于这个原因,我把所有的字符串都放在了一个 中NSLocalizedString(key,comment),一切都很好。

但我的新解决方案是创建一个 Singleton 类,它存储String我在项目中使用的所有内容。有了这个,我有一个小而棘手的问题:命名。我是否需要为每个需要本地化字符串的类(视图)创建一些字典?或者我应该为此使用前缀,或者返回具有良好、可理解的属性名称的对象的函数?

PS:我不想发明新轮子。我想创建本地化字符串的存储,将在项目中使用。所以,我的目标是制作单例:

[[[StringStorage sharedInstance] getStringsForClass:self] objectForKey:@"title"];

或类似的东西:

[StringStorage sharedInstance].stringTitleForMainView

0 投票
1 回答
3437 浏览

objective-c - NSLocalizedString - Use of undeclared identifier issue

I'm using NSLocalizedString in a particular message that works fine if the second parameter is passed as a variable, but fails with Use of undeclared identifier 'NSLocalizedString' and Too many arguments provided to function-like macro invocation if the second parameter is written exactly the same as the variable was set. I have working code using the variable, which is fine, I just want to understand the reasons for the failure to know how to avoid it in other situations.

With the following declarations:

This works fine with no errors:

... but this, which seems identical to me, fails with the errors noted above:

Searching here and elsewhere I haven't found an explanation. I read through a number of hits on each error message and various NSLocalizedString issues, but nothing that tied them together. What I found about the second error message implied maybe an issue with clang and the number of commas in the statement, indicating that even though the extra comma is within the NSMutableString message, it was still being seen as an extra parameter by NSLocalizedString. Does that make any sense?

Not important for the question, but the statement is intended to set the localized version of a navigation bar title based on the English version pulled from a dictionary, which varies for different views. The NSMutableString portion defines the comment for the localization based on the English title.

EDIT: After resolving this issue per the accepted answer, below, I noticed another related issue. The declaration of localString was producing an "Unused variable" compiler warning, though it was clearly being used. This is also due to it being within a C-macro and for completeness, I'm adding a link to a relevant post here about suppressing that warning: How can I get rid of an “unused variable” warning in Xcode

0 投票
4 回答
571 浏览

iphone - 本地化动态 NSString

通过许多关于 NSLocalizedString 的示例,我发现我们需要在 Localized.string 文件中为您想要本地化的任何语言预先定义所有字符串。但是,是否可以本地化动态字符串。我的想法是,我在 UILabel 中显示了一些在 Web 请求后获得的文本。这意味着字符串现在本质上是动态的。