有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)
但是,它很长并且根本不方便.
我本地化了我的应用程序的一部分,创建了一个base.lproj故事板和3个字符串文件.这是一个月前,之后我向app添加了新的视图控制器,但是这个控制器的按钮和标签没有出现在字符串文件中
是否可以更新这3个故事板附加的字符串文件,或者我必须使用NSLocalizableString和Localizable.strings以编程方式添加新的字符串翻译?
我打算提出一个关于准备桌面应用程序以支持UI上的多种语言的问题.
在我搜索关于该主题的现有问题时,我正在考虑"国际"这个词,因此我选择了国际化标签并阅读了一些匹配的问题.
最终我意识到我应该在标记为Localization的问题下查找.然而,似乎我并不是唯一一个让这两个术语混淆的人.
那么,它们在本地化和国际化之间的主要区别是什么?
还有,他们之间是否真的那么重要?
我无法编译/调试我们的Android应用程序,因为本地化文件还不完善.
我的IDE的验证工具Lint创建错误说:
newCardsOrderVals未翻译为ar,bg,ca,cs
使用Ant编译/安装/运行工作正常,但我想使用我的IDE来简化调试.
有没有办法关闭这个特定的检查,或理想情况下使其成为警告而不是错误?
我知道在发布之前我们确实需要正确地获取本地化文件,但暂时不是优先级,因为屏幕本身正在经常被修改.
eclipse localization android-resources android-lint android-studio
我有一个本地化为十几种语言的网站(Flash),我想根据用户的浏览器设置自动定义默认值,以便最大限度地减少访问内容的步骤.
仅供参考,由于代理限制,我无法使用服务器脚本,因此我猜JavaScript或ActionScript适合解决问题.
问题:
什么是"猜测"用户的语言环境的最佳方法?
是否有任何现有的简单类/功能可以帮助我(没有复杂的本地化捆绑)?特别是以智能方式将所有可能的语言分解为较小的数字(我有的翻译).
我可以相信这样的解决方案?
还有其他解决方法或建议吗?
我已经在这个问题上苦苦挣扎了好几个月,但我还没有遇到过需要探索所有可能的选择的情况.现在,我觉得是时候了解可能性并创建我自己的个人偏好,以便在我即将开展的项目中使用.
让我先描绘一下我正在寻找的情况
我即将升级/重新开发我已经使用了很长一段时间的内容管理系统.但是,我觉得多语言是对这个系统的一个很大的改进.在我没有使用任何框架之前,我将使用Laraval4进行即将到来的项目.Laravel似乎是更简洁的PHP编码方式的最佳选择.Sidenote: Laraval4 should be no factor in your answer.我正在寻找独立于平台/框架的一般翻译方式.
应该翻译什么
由于我正在寻找的系统需要尽可能用户友好,管理翻译的方法应该在CMS内部.应该没有必要启动FTP连接来修改翻译文件或任何html/php解析模板.
此外,我正在寻找最简单的方法来翻译多个数据库表,而不需要创建额外的表.
我自己想出了什么
正如我一直在寻找,阅读和尝试自己.我有几个选择.但我仍然觉得我没有达到我真正寻求的最佳实践方法.现在,这是我想出来的,但这种方法也有它的副作用.
Controller.View.parameter.数据库表将使用字段将这些字段设置为long value.在模板内部,我们可以使用类似的排序方法echo __('Controller.View.welcome', array('name', 'Joshua')),参数包含Welcome, :name.因此结果是Welcome, Joshua.这似乎是一个很好的方法,因为参数如:name很容易被编辑器理解.languages/en_EN/Controller/View.php或.ini,最适合你的.也许.ini甚至可以在最后解析得更快.这个应该包含的数据format parameter=value;
.我想这是执行此操作的最佳方式,因为呈现的每个View都可以包含它自己的语言文件(如果存在).然后,语言参数应加载到特定视图而不是全局范围,以防止参数相互覆盖.News和News_translations)是一个选项,但是为了获得一个好的系统感觉很多.我想出的一件事是基于data versioning我写的一个系统:有一个数据库表名Translations,这个表有一个独特的组合language,tablename和primarykey.例如:en_En/News/1(参考ID = 1的新闻项目的英文版本).但是这个方法存在两个巨大的缺点:首先,这个表在数据库中有大量数据需要很长时间,其次使用这个设置搜索表是一件很麻烦的工作.例如,搜索项目的SEO slug将是一个全文搜索,这是相当愚蠢的.但另一方面:它是一种快速的方式,可以非常快速地在每个表格中创建可翻译内容,但我不相信这个专业人士会超过这个内容.所以,他们就是.我的想法到目前为止.他们甚至不包括日期等的本地化选项,但是因为我的服务器支持PHP5.3.2 +,最好的选择是使用intl扩展,如下所述:http://devzone.zend.com/1500/internationalization-in -php-53 / - 但这将在任何后期的开发体育场中使用.目前,主要问题是如何在网站上获得最佳的内容翻译实践.
除了我在这里解释的一切,我还有另一件我尚未决定的事情,它看起来像一个简单的问题,但事实上它让我头痛:
网址翻译?我们应该这样做吗?以什么方式?
所以..如果我有这个网址:http://www.domain.com/about-us …
新的Google Chrome自动翻译功能在我们的某个应用程序中的一个页面上绊倒.每当我们导航到此特定页面时,Chrome都会告诉我们该页面是丹麦文并提供翻译.该页面是英文的,就像我们的应用程序中的每个其他页面一样.此特定页面是一个内部测试页面,其中包含几十个带有英文标签的表单字段.我不知道为什么Chrome认为此页面是丹麦文.
有没有人深入了解这种语言检测功能的工作原理以及我如何确定导致Chrome认为该页面是丹麦语的原因是什么?
我有一个本地化的应用程序,我想知道是否可以DisplayName从资源中设置某个模型属性.
我想做这样的事情:
public class MyModel {
[Required]
[DisplayName(Resources.Resources.labelForName)]
public string name{ get; set; }
}
Run Code Online (Sandbox Code Playgroud)
但是我不能这样,因为编译器说:"属性参数必须是常量表达式,typeof表达式或属性参数类型的数组创建表达式":(
有没有解决方法?我手动输出标签,但我需要这些用于验证器输出!
我有一些像这样的代码:
If key.Equals("search", StringComparison.OrdinalIgnoreCase) Then
DoSomething()
End If
Run Code Online (Sandbox Code Playgroud)
我不关心这个案子.我应该使用OrdinalIgnoreCase,InvariantCultureIgnoreCase或CurrentCultureIgnoreCase?
我想将我的JVM的默认语言环境设置为fr_CA.有什么可能的选择呢?
我只知道一个选项 Locale.setDefault()
localization ×10
ios ×2
.net ×1
android-lint ×1
asp.net-mvc ×1
browser ×1
c# ×1
eclipse ×1
flash ×1
html ×1
java ×1
javascript ×1
multilingual ×1
mysql ×1
php ×1
resources ×1
resx ×1
storyboard ×1
string ×1
swift ×1
vb.net ×1
xcode ×1