酉阳网站建设,动漫网页模板,活动策划公司,免费编程网站本地化子系统提供了创建多语言应用程序的简单方法。
初始化
在使用子系统之前#xff0c;需要加载本地化字符串集合。通常的做法是在应用程序启动时执行此操作。可以加载多个集合文件#xff0c;每个集合文件只能定义一种或多种语言。例如#xff1a;
Localization* l10n…本地化子系统提供了创建多语言应用程序的简单方法。
初始化
在使用子系统之前需要加载本地化字符串集合。通常的做法是在应用程序启动时执行此操作。可以加载多个集合文件每个集合文件只能定义一种或多种语言。例如
Localization* l10n GetSubsystemLocalization();
// 1st JSON file format
l10n-LoadJSONFile(StringsEnRu.json);
l10n-LoadJSONFile(StringsDe.json);// 2nd JSON file format
l10n-LoadJSONFile(StringsLv.json, lv);
JSON文件必须采用UTF8编码无BOM。示例文件位于bin/Data目录中。JSON文件必须具有以下格式之一
1.LoadJSONFile“StringsEnRu.json”方法将自动从json文件中选择语言
{string id 1:{language 1:value11,language 2:value12,language 3:value13},string id 2:{language 1:value21,language 2:value22,language 3:value23}
}
2.必须将第二个参数传递给LoadJSONFile“StringsLv.json”“lv”方法以告诉解析器将加载哪种语言
{string id 1: value 1,string id 2: value 2,string id 3: value 3
}
可以定义任意数量的语言。请记住语言名称和字符串标识符区分大小写。“En”和“en”被认为是不同的语言。在加载过程中按照查找顺序对语言进行编号。索引从零开始。第一个找到的语言被设置为初始激活。
使用
Get函数以当前语言返回具有指定字符串标识符的字符串。
Text* t new Text(context_);
t-SetName(Text1);
Localization* l10n GetSubsystemLocalization();
t-SetText(l10n-Get(string 1)); 如果字符串id为空将返回一个空字符串。如果找不到翻译将不修改地返回id并记录警告。使用SetLanguage函数在运行时更改语言。
Localization* l10n GetSubsystemLocalization();
l10n-SetLanguage(language 2); 语言更改后将发送E_CHANGELANGUAGE事件。订阅它以执行必要的用户界面重新定位文本、精灵等
SubscribeToEvent(E_CHANGELANGUAGE, URHO3D_HANDLER(Game, HandleChangeLanguage));void Game::HandleChangeLanguage(StringHash eventType, VariantMap eventData)
{Localization* l10n GetSubsystemLocalization();...Text* t static_castText*(uiRoot-GetChild(Text1, true));t-SetText(l10n-Get(string 1));
}
文本UI元素还支持自动翻译以避免手动操作。
Text* t2 new Text(context_);
t2-SetText(string 2);
t2-SetAutoLocalizable(true);
其中文本值用作标识符。另请参见示例40_Localization。