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

随着全球化的发展,地球变得平坦了。我有一个同事现在还在美国 ORACLE进行学习,说明软件是真正的无国界产品。那么在第二人生里,到底是怎么样实现多语言的支持呢?带着这个问题来分析下面一段代码,如下:
#001 void 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:            [email protected]
EMAIL:          [email protected]

你可能感兴趣的:(oracle,xml,语言,Path,开发工具,Parsing)