Nic*_*ari 5 cocoa localization nslocalizedstring ios
所以,我正在将应用程序从日语本地化为英语.
在日语中,(例如)"先生"之间没有区别 和"女士"(/"太太"),所以我需要做这样的事情:
/* Salutation format for user (male) */
"%@?" = "Mr. %@";
/* Salutation format for user (female) */
"%@?" = "Ms. %@";
Run Code Online (Sandbox Code Playgroud)
如您所见,日语本地化在两种情况下都使用相同的字符串.我的印象是,当字符串文件包含多个具有相同"源"(即左侧)字符串的条目时,"注释"用于确定使用哪一个.事实证明我错了,评论参数只是对人工翻译的一种帮助,完全被忽略了NSLocalizedString().
因此,如果我运行应用程序,则无论用户的性别如何,下面的两个代码路径都会生成相同的字符串:
NSString* userName;
BOOL userIsMale;
/* userName and userIsMale are set... */
NSString* format;
if(userIsMale){
// MALE
format = NSLocalizedString(@"%@?",
@"Salutation format for user (male)");
}
else{
// FEMALE
format = NSLocalizedString(@"%@?",
@"Salutation format for user (female)");
}
NSString* salutation = [NSString stringWithFormat:format, userName];
Run Code Online (Sandbox Code Playgroud)
那么,我应该如何处理这样的案件呢?
嗯,实际上"左侧" NSLocalizedString是关键.所以你可以这样做:
NSLocalizedString(@"SalutForUserMale", @"Salutation format for user (male)");
NSLocalizedString(@"SalutForUserFemale", @"Salutation format for user (female)");
Run Code Online (Sandbox Code Playgroud)
然后在你的基本*.strings文件(日语我推测)你会有:
"SalutForUserMale" = "%@?";
"SalutForUserFemale" = "%@?";
Run Code Online (Sandbox Code Playgroud)
在您的英文*.strings文件中,您将拥有:
"SalutForUserMale" = "Mr. %@";
"SalutForUserFemale" = "Ms. %@";
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
331 次 |
| 最近记录: |