随着全球化的发展,地球变得平坦了。我有一个同事现在还在美国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:            caimouse1976@sina.com
EMAIL:          ccaimouse@gmail.com

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

  1. 第二人生的源码分析(二十六)底层网络协议

    为了理解第二人生的客户端与服务器的沟通,那么下面就来分析一下第二人生采用的网络协议.在目前的网络里,主要有两个协议:TCP和UDP,而第二人生里是采用UDP协议.TCP协议与UDP协议的主要区别,就是 ...

  2. spark 源码分析之十八 -- Spark存储体系剖析

    本篇文章主要剖析BlockManager相关的类以及总结Spark底层存储体系. 总述 先看 BlockManager相关类之间的关系如下: 我们从NettyRpcEnv 开始,做一下简单说明. Ne ...

  3. spark 源码分析之十九 -- DAG的生成和Stage的划分

    上篇文章 spark 源码分析之十八 -- Spark存储体系剖析 重点剖析了 Spark的存储体系.从本篇文章开始,剖析Spark作业的调度和计算体系. 在说DAG之前,先简单说一下RDD. 对RD ...

  4. 【转】ABP源码分析二十八:ABP.MemoryDB

    这个模块简单,且无实际作用(该模块用于支持ABP框架单元测试的).一般实际项目中都有用数据库做持久化,用了数据库就无法用这个MemoryDB 模块了.原因在于ABP限制了UnitOfWork的类型只能 ...

  5. ABP源码分析二十八:ABP.MemoryDB

    这个模块简单,且无实际作用.一般实际项目中都有用数据库做持久化,用了数据库就无法用这个MemoryDB 模块了.原因在于ABP限制了UnitOfWork的类型只能有一个(前文以作介绍),一般用了数据库 ...

  6. Docker源码分析(十):Docker镜像下载

    http://www.infoq.com/cn/articles/docker-source-code-analysis-part10 1.前言 说Docker Image是Docker体系的价值所在 ...

  7. 【转】ABP源码分析二十九:ABP.MongoDb

    这个Module通过建立一个MongoDbRepositoryBase<TEntity> 基类,封装了对MongoDb数据库的操作. 这个module通过引用MongoDB.Driver, ...

  8. Spring Security源码分析八:Spring Security 退出

    为什么80%的码农都做不了架构师?>>> Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架.它提供了一组可以在Spr ...

  9. ABP源码分析三十四:ABP.Web.Mvc

    ABP.Web.Mvc模块主要完成两个任务: 第一,通过自定义的AbpController抽象基类封装ABP核心模块中的功能,以便利的方式提供给我们创建controller使用. 第二,一些常见的基础 ...

  10. ABP源码分析三十:ABP.RedisCache

    ABP 通过StackExchange.Redis类库来操作Redis数据库. AbpRedisCacheModule:完成ABP.RedisCache模块的初始化(完成常规的依赖注入) AbpRed ...

最新文章

  1. 重定向和转发之间的区别
  2. 485串口测试工具软件下载_串口调试助手详细讲解(结合实操),通讯问题不再是问题...
  3. Docker应用的四个关键设计因素
  4. 都匀中专学计算机,都匀计算机专业中专学校学几年
  5. No package ‘libusb‘ found
  6. PostgreSQL 的 window函数
  7. 使用yolo v3训练自己的模型
  8. 好看流光风格个人主页源码
  9. 如何查看文件md5值
  10. ios睡眠分析 卧床 睡眠_AutoSleep 5 测评:一款自动化监测睡眠的 iOS + watchOS App
  11. 成田机场坐access到品川_下了飞机看不懂日语?这篇干货告诉你从羽田/成田机场到东京市区怎样方便又省钱!...
  12. 有道云笔记markdown最好的转PDF格式文档方法
  13. google多开设置
  14. 2022年湖南省中医执业医师考试第二单元中医诊断学(四)
  15. Spring入门基础
  16. 在HTML中制作贪吃蛇游戏
  17. 【BZOJ4864】【BJWC2017】神秘物质 - Splay
  18. 25人赛跑问题-得出前三名
  19. java基础小记_Java基础学习小记--多态
  20. base64图片 复制到系统剪切板

热门文章

  1. 读书会招募 | 一起来读《蛤蟆先生去看心理医生》吧
  2. 弘玑Cyclone上榜36氪中国超自动化先锋企业
  3. 宾州州立 计算机 硕士,宾州州立大学公园计算机
  4. 流媒体之播放flv格式的视频
  5. PT100热敏电阻原理解析
  6. 学习笔记—bootstrap(2)
  7. 2019年天梯赛第一阶段(1-8)全解
  8. 用友财务系统对接第三方业务系统达到财务业务一体化管理
  9. 随机过程之平稳过程与各态历经过程
  10. [RedHat] RHCE_RHEL6_实战精品 6.postfix邮件服务器