【发布时间】:2013-08-07 13:56:26
【问题描述】:
我需要一种方法来使用文化特定资源文件的第三“层”。这可能以应有的方式完成,并且可能以某种方式被黑客入侵。只要黑客不是太大,没关系!另一种解决方案也是可能的(如果我处理问题的方法有误,请告知更好的解决方案)。
通常你有一个默认资源文件,它可以作为后备。最重要的是,您可以拥有一种语言的文化特定资源。现在我想要的是一个“主题”特定的资源。
问题是我们有几个站点都有不同的主题(马、汽车、rc-units 等),当我们使用本地化资源文件中的字符串时,如果资源没有翻译成特定语言然而,它会回退到默认语言英语。酷!
一个问题示例:我们有短语“Add your horse”和“Add your car”,在英语中可能看起来相同(在语法方面),但在波兰语或罗马尼亚语中不一定如此!
所以我想,如果可能的话,我们应该有一个带有“添加您的 {0}”的英文文件,然后是一个带有波兰语等效句子的波兰语文件,除此之外还有一个“汽车”特定的波兰语翻译语法适合单词“Car”的地方,以及语法适合单词“Horse”的“Horse”波兰语翻译。
使用两种或三种语言的两个或三个主题可能不会那么糟糕。很容易认为我们可以在处理这少数情况的代码中进行切换。问题是,我们有 15 个主题,使用 6 种不同的语言,并且还在不断扩展。
希望有一些巧妙的技巧或一些很少使用的奇异功能的知识!
提前致谢
【问题讨论】:
-
这听起来太复杂了,很容易变得难以管理。为什么不坚持标准方法,将“添加您的汽车”和“添加您的马”作为两个完全独立的字符串?
-
那么我还需要: * 添加你的遥控单元 * 添加你的拖拉机 * 添加你的猫 * 添加你的狗 * 添加你的护卫舰 德语三串,丹麦语十串,法语三串,最后一个用于罗马尼亚语、西班牙语、波兰语和奥地利语。我们还计划进一步扩展(目前有四个新站点排队)
-
假设您愿意解决具体单词带来的性别/变格/等差异(正如 ThoBa 在他的回答中提到的),您的具体示例 可能 起作用:即,而不是“添加您的 {0}”,您需要一个更通用的模板,例如“添加您的 [女性] {0}”、“添加您的 [男性] {0}”等,所有这些都取决于语言 - 正如我说,这将很快成为一场噩梦。字符串应该尽可能简单且易于翻译 - 翻译人员的时间通常比开发人员花费在整理本地化问题和实施关键解决方案上的时间便宜。