iPhone:本地化/国际化默认字符串文件

znq*_*znq 6 iphone cocoa-touch localization objective-c internationalization

我目前有两种支持的语言:英语和西班牙语.因此main.strings,每种语言都有两个文件.一个在en.lproj一个在es.lproj.

我现在想要的是,main.strings如果用户的区域设置不是en或者es到达应用程序,则英语是默认文件,例如defr.

我知道我可以使用defaultString参数为代码中的每个字符串手动设置它:

NSLocalizedStringWithDefaultValue(key, @"main",[NSBundle mainBundle], defaultString, comment);
Run Code Online (Sandbox Code Playgroud)

但我宁愿不再在那里输入它(并且必须在两个地方更改它),而是将该en main.strings文件作为任何其他"不受支持"的语言环境的默认值.

zou*_*oul 11

我现在想要的是,如果具有en或es之外的语言环境的用户到达应用程序,例如de或fr,则英语main.strings是默认文件.

你试过吗?我几乎可以肯定,在你没有做任何事情的情况下,应用程序将回归英语语言环境.除非您的应用程序明确支持当前语言环境,否则即使系统对话框也会以英语显示.

  • 后备取决于[NSLocale preferredLanguages]的顺序而不是默认的英语.例如,如果你从中文切换到deutsch,第一个是deutsch,第二个是中文,所以如果应用程序支持中文,那么它显示中文而不是英文 (8认同)