我目前正在为将用于多种语言的界面创建一个 GUI。
我工作的环境是带有 Mono C# 的 Unity 4.2。应用程序必须保持非常跨平台兼容(包括 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# 一起很好地进行区域化的设计模式
- 关于统一编辑器中的接口/存储机制前进方向的任何建议
谢谢。
PS我必须能够在运行时更改语言