设计思路
通过VS编辑resx文件并生成resources文件,然后用诸多API对资源进行部署、枚举和输出
具体来说:
1.LangList.resx
存储配置好的所有语言名称,以及对应于名称的区域性名称(如zh-CN)
2.Resource.XX.resx
XX对应区域性名称
存储对应语言的提示文字等等
3. ResourceManager类
public : ResourceManager(System::String^ baseName, System::Reflection::Assembly^ assembly)
baseName: 资源的根名称。例如,名为“MyResource.en-US.resources”的资源文件的根名称为“MyResource”。
assembly: 资源的主 System::Reflection::Assembly。
通过ResourceManager
“管理”不同语言所用的资源文件,除此以外也用来便利地管理单个资源文件
4. ResourceSet类
public : ref class ResourceSet
存储已针对某个特定区域性进行了本地化的所有资源,忽略所有其他区域性(包括任何代用规则)。
在本程序中实际用来存储LangList并利用System::Resources::ResourceSet::GetEnumerator()
实现对Langlist的遍历
5.Cultrueinfo类
public : ref class CultureInfo
提供有关特定区域性的信息(对于非托管代码开发,则称为“区域设置”)。这些信息包括区域性的名称、书写系统、使用的日历以及对日期和排序字符串的格式化设置。
通过Cultrueinfo
指定区域性配合System::Resources::ResourceManager::GetString(System::String^, System::Globalization::CultureInfo^)
函数提取资源文件Resource.XX.resx中key(即string^
)对应的value
6.System::Console类
通过Console
类的函数便利地输出string^
类型的数据
7.System::Text::UnicodeEncoding
通过设置Console::OutputEncoding
和Console::OutputEncoding
为System::Text::UnicodeEncoding
,使得输入输出采用Unicode编码,从而解决不同语言而产生的乱码问题。
程序实现和结果测试的截图
github的提交链接和提交日志截图
两位同学的分工和协作证据截图
本次作业感想
刚看到这次作业要求是我是一脸茫然的。。。还是问王源同学才知道是什么意思。。。
这次的实现方法看起来很刁钻,但是仔细想想却发觉自己早就知晓这种方法的存在了。比如一款游戏,它的图片文件,bgm文件等都在一个相应的文件夹,然后等待调用。那么,如果我找好相应素材,运用调用素材的方式是否就能写出贪吃蛇,坦克大战等简单小游戏咯?等等,所以这次的作业是为以后的windows程序作业作铺垫?!!(惊恐脸)