第二人生的源码分析(八十)界面语言的选择

随着全球化的发展,地球变得平坦了。我有一个同事现在还在美国ORACLE进行学习,说明软件是真正的无国界产品。那么在第二人生里,到底是怎么样实现多语言的支持呢?带着这个问题来分析下面一段代码,如下:
#001void LLUICtrlFactory::setupPaths()
#002{
获取UI资源所在目录路径,比如:F:/secondlife/linden/indra/newview/ReleaseNoOpt/skins/ paths.xml。
#003 LLString filename = gDirUtilp->getExpandedFilename(LL_PATH_SKINS, "paths.xml");
#004
下面开始分析paths.xml文件。
#005 LLXMLNodePtr root;
#006 BOOL success= LLXMLNode::parseFile(filename, root, NULL);
#007 mXUIPaths.clear();
#008
如果分析成功,就获取XML里的数据。
#009 if (success)
#010 {
#011 LLXMLNodePtr path;
取得第二人生运行程序所在的目录。
#012 LLString app_dir = gDirUtilp->getAppRODataDir();
#013
遍历XML里的目录路径。
#014 for (path = root->getFirstChild(); path.notNull(); path = path->getNextSibling())
#015 {
取得资源所在的目录路径。
#016 LLUIString path_val_ui(path->getValue());
固定设置语言为US英语。
#017 LLString language = "en-us";
查看系统配置文件里是否有其它语言的设置。
#018 if (LLUI::sConfigGroup)
#019 {
获取设置的语言。
#020 language = LLUI::sConfigGroup->getString("Language");
如果设置按系统的语言来选择。
#021 if(language == "default")
#022 {
#023 language = LLUI::sConfigGroup->getString("SystemLanguage");
#024 }
#025 }
设置当前正在设置的语言的资源所在的目录。
#026 path_val_ui.setArg("[Language]", language);
#027 LLString fullpath = app_dir + path_val_ui.getString();
#028
如果这个目录没有保存,下面就开始保存这个路径。
#029 if (std::find(mXUIPaths.begin(), mXUIPaths.end(), fullpath) == mXUIPaths.end())
#030 {
#031 mXUIPaths.push_back(app_dir + path_val_ui.getString());
#032 }
#033 }
#034 }
#035 else // parsing failed
#036 {
下面分析XML出错,使用缺省的目录路径。
#037 LLString slash = gDirUtilp->getDirDelimiter();
#038 LLString dir = gDirUtilp->getAppRODataDir() + slash + "skins" + slash + "xui" + slash + "en-us" + slash;
#039 llwarns << "XUI::config file unable to open." << llendl;
#040 mXUIPaths.push_back(dir);
#041 }
#042}
#043
下面再来仔细地看看paths.xml里是什么内容,如下:
<paths>
<directory>/skins/xui/en-us/</directory>
<directory>/skins/xui/[Language]/</directory>
</paths>
这个XML文件是目录的结构,第一个是缺省的资源目录,第二个是设置的目录。
第二人生开发包提供,价格198元/套(含邮费)。
包括内容如下:
1. 《第二人生的源码分析》PDF文档。
2. 第二人生客户端源程序。
3. 2G U盘一个,主要用来拷贝源程序以及相关开发工具。
提供三个月的技术服务,
提供快速编译指导,
提供完整的书参考。
联系方式:
QQ: 9073204
MSN: caimouse1976@sina.com
EMAIL: ccaimouse@gmail.com
阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭