标签: nslocalizedstring

如何强制NSLocalizedString使用特定语言

在iPhone上NSLocalizedString返回iPhone 语言的字符串.是否可以强制NSLocalizedString使用特定语言使应用程序使用与设备不同的语言?

localization objective-c internationalization nslocalizedstring ios

261
推荐指数
16
解决办法
14万
查看次数

什么是Swift中的NSLocalizedString等价物?

有Swift相当于NSLocalizedString(...)?在Objective-C,我们通常使用:

NSString *string = NSLocalizedString(@"key", @"comment");
Run Code Online (Sandbox Code Playgroud)

我怎样才能在Swift中实现同样的目标?我发现了一个功能:

func NSLocalizedString(
    key: String,
    tableName: String? = default,
    bundle: NSBundle = default,
    value: String = default,
    #comment: String) -> String
Run Code Online (Sandbox Code Playgroud)

但是,它很长并且根本不方便.

localization nslocalizedstring ios swift

218
推荐指数
8
解决办法
10万
查看次数

如何在Swift中提供具有错误类型的本地化描述?

我正在使用Swift 3语法定义自定义错误类型,我想提供一个用户友好的错误描述,该描述由对象的localizedDescription属性返回Error.我该怎么做?

public enum MyError: Error {
  case customError

  var localizedDescription: String {
    switch self {
    case .customError:
      return NSLocalizedString("A user-friendly description of the error.", comment: "My error")
    }
  }
}

let error: Error = MyError.customError
error.localizedDescription
// "The operation couldn’t be completed. (MyError error 0.)"
Run Code Online (Sandbox Code Playgroud)

有没有办法让localizedDescription我返回我的自定义错误描述("用户友好的错误描述.")?请注意,此处的错误对象是类型Error而不是MyError.当然,我可以将对象强制转换为MyError

(error as? MyError)?.localizedDescription
Run Code Online (Sandbox Code Playgroud)

但是有没有办法让它工作而不会转换为我的错误类型?

error-handling nslocalizedstring swift swift3

175
推荐指数
4
解决办法
4万
查看次数

使用NSLocalizedString的最佳实践

我(和所有其他人一样)使用NSLocalizedString本地化我的应用程序.

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

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

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

// In strings.h
#define NSLS_COMMON_CANCEL NSLocalizedString(@"Cancel", nil)
// Somewhere else
NSLog(@"%@", NSLS_COMMON_CANCEL);
Run Code Online (Sandbox Code Playgroud)

这基本上提供了代码完成,一个更改变量名称的位置(因此不再需要genstring),以及一个自动重构的唯一关键字.但是,这需要花费大量结果来解决一系列#define非固有结构的语句(例如LocString.Common.Cancel或类似的东西).

所以,虽然这有点好,但我想知道你们是如何在你的项目中做到的.是否有其他方法可以简化NSLocalizedString的使用?甚至可能有一个封装它的框架?

localization objective-c nslocalizedstring ios

134
推荐指数
3
解决办法
7万
查看次数

iOS 8.1模拟器本地化中断(NSLocalizedString)

TL; DR:
似乎本地化不适用于xCode 6.1和8.1模拟器.
解决方法:
转到"编辑方案">>"运行"(侧栏)>>"选项"选项卡>>"应用程序语言"
在模拟器上选择要运行应用程序的语言.


很长的故事:

我已将xCode更新为6.1.更新删除了iOS 7.x模拟器,只留下8.x模拟器.
我已经完成了以下步骤:

  • 我已经安装了7.x模拟器
  • 清理了这个项目
  • 从模拟器中删除了应用程序
  • 删除了项目的派生文件夹

该项目支持英语和日语.
在7.1模拟器(5s)上,本地化按预期工作.
在8.1模拟器(5s)它不起作用.

我猜测Apple在模拟器上破坏了一些东西,因为它适用于真实设备.

关于这个的任何意见,其他人都遇到过类似的问题吗?


编辑
它似乎是模拟器中的一个错误,参考:
Apple Dev Forums

xcode nslocalizedstring ios ios-simulator xcode6.1

104
推荐指数
1
解决办法
2万
查看次数

NSLocalizedString with swift variable

I'm trying to localize my app using NSLocalizedString. When i import the XLIFF file, most works like a charm but something do not and some string is not localized. I have noticed that the problem is from NSLocalizedString containing something variable inside like:

NSLocalizedString(" - \(count) Notifica", comment: "sottotitolo prescrizione per le notifiche al singolare")
Run Code Online (Sandbox Code Playgroud)

or

NSLocalizedString("Notifica per \(medicina!) della prescrizione \(prescription!)\nMemo: \(memoTextView.text)", comment: "Messaggio della Local Notification")
Run Code Online (Sandbox Code Playgroud)

Maybe this is not the correct syntax for thi kind of stuff. …

localization nslocalizedstring ios xliff swift

74
推荐指数
5
解决办法
4万
查看次数

可以在NSLocalizedString中使用变量和/或参数吗?

我已经尝试使用变量作为NSLocalizedString的输入参数,但我得到的所有内容都是输入参数.我究竟做错了什么?是否可以使用变量字符串值作为NSLocalized字符串的索引?

例如,我有一些字符串,我希望显示本地化版本.但是,我想使用变量作为NSLocalizedString的参数,而不是常量字符串.同样,我想在NSLocalizedString的参数中包含格式化元素,因此我将能够使用相同的格式参数检索字符串的本地化版本.我可以做以下事情:

案例1:变量NSLocalizedstring:

NSString *varStr = @"Index1";
NSString *string1 = NSLocalizedString(varStr,@"");
Run Code Online (Sandbox Code Playgroud)

案例2:格式化的NSLocalizedString:

NSString *string1 = [NSString stringWithFormat:NSLocalizedString(@"This is an %@",@""),@"Apple"];
Run Code Online (Sandbox Code Playgroud)

(请注意,变量可以包含任何内容,而不仅仅是一组固定的字符串.)

谢谢!

localization objective-c nslocalizedstring

60
推荐指数
5
解决办法
3万
查看次数

如何本地化iOS故事板

我有一个带有一些观点的iPhone故事板.例如,命名导航项目标题News,应该为其他语言翻译.

当我向故事板添加新的本地化时,它创建了我当前新语言故事板的副本.在这里我可以更改导航项的标题,但对我来说它似乎没有用.如果我的故事板包含100个视图并且我需要支持10种语言怎么办?如果我需要在原始故事板中更改某些内容,我必须对所有语言进行相同的更改.这看起来很奇怪.在哪些情况下这可能有用?

我该怎么做?我应该只有英文故事板并使用ViewController手动翻译每个元素NSLocalizedString吗?

objective-c nslocalizedstring ios uistoryboard

56
推荐指数
4
解决办法
5万
查看次数

NSLocalizedString只检索键,而不是Localizable.strings(IOS)中的值

我创建了一个名为"Localizable.strings"的字符串文件,并为其添加了两种语言,如下所示:

"CONNECTIONERROR" = "Check that you have a working internet connection.";
"CONNECTIONERRORTITLE" = "Network error";
Run Code Online (Sandbox Code Playgroud)

我还将文件转换为Unicode UTF-8但是,当我创建这样的UIAlertView时:

 UIAlertView *myAlert = [[UIAlertView alloc]
 initWithTitle:NSLocalizedString(@"CONNECTIONERRORITLE",nil)
 message:NSLocalizedString(@"CONNECTIONERROR",nil)                    
 delegate:self
 cancelButtonTitle:@"Ok"
 otherButtonTitles:nil];
Run Code Online (Sandbox Code Playgroud)

警报视图仅显示关键文本,而不显示值.例如,如果我将UITextviews文本设置为NSLocalizedString(@"CONNECTIONERROR",nil),则它可以工作,但警报视图仅显示密钥.谁知道什么是错的?

xcode uialertview localizable.strings nslocalizedstring ios

41
推荐指数
13
解决办法
4万
查看次数

NSLocalizedString格式

我将如何使用NSLocalizedString此字符串:

[NSString stringWithFormat:@"Is “%@“ still correct for “%@“ tap “OK“ otherwise tap “Change“ to choose new contact details", individual.contactInfo, individual.name];
Run Code Online (Sandbox Code Playgroud)

在使用stringWithFormat之前我以下列方式使用它:

[NSString stringWithFormat:@"%d %@", itemCount, NSLocalizedString(@"number of items", nil)];
Run Code Online (Sandbox Code Playgroud)

objective-c nslocalizedstring

38
推荐指数
3
解决办法
2万
查看次数