【发布时间】:2013-08-24 09:09:03
【问题描述】:
我目前正在为将用于多种语言的界面创建一个 GUI。
我工作的环境是 Unity 4.2 和 Mono C#。应用程序必须保持非常跨平台兼容(包括 web、ios、Linux、windows)。
我想要实现的是一种处理多种语言的好方法,允许轻松添加额外的语言或额外的字段。如果我在 ruby 或 python 中工作,我相信这可能是一个不错的解决方案;
class RegionalDB:
def __init__(self):
# Maybe connect to a data source such as a db, or files
def set_language(self, lang):
# Verify we have this lang, error if not
# Set an attribute on self for every field entry in this language
text = RegionalDB()
text.set_language('de')
print text.exit_button
上述方法将允许我使用 python 对象的强大功能,能够在运行时动态分配成员。上面的代码将以德语打印数据源的“exit_button”字段中的文本。在 ruby 中我可以做类似的事情,或者我可以使用 attribute_missing 函数直接查询数据源,而不是一次将内存中的所有变量分配给对象。
不幸的是,C# 的反射代码不如上面提到的脚本那么优雅。所以我的问题如下;
- 使用编译的强类型语言创建优雅、可维护的区域化工具。
- 使用统一以有效的方式存储语言数据
对于问题 1。老实说,我找不到设计模式,或者根本找不到太多信息。
问题 2。我相信可以通过一些统一编辑器编程来解决,但我没有过多地触及这个话题并且愿意提出建议。
所以问题形式;
- 有没有人知道任何可以与 C# 一起很好地用于区域化的设计模式
- 关于统一编辑器中的接口/存储机制的前进方向的任何建议
谢谢。
附:我必须能够在运行时更改语言
【问题讨论】:
标签: c# design-patterns internationalization mono unity3d