cocos2d-x-3.1 国际化strings.xml解决乱码问题 (coco2d-x 学习笔记四)

今天敲代码的时候发现输出文字乱码,虽然在实际开发中把字符串写在代码里是不好的做法,但是有时候也是为了方便,遇到此问题第一时间在脑子里面联想到android下的strings.xml来做国际化,本文就只针对解析xml来实现cocos2d-x的国际化解决乱码问题。

寻找解决方法的时候在cocos2d-x的cpp-tests文件中发现strings.xml,因此在事例源码中发现此方法。

为了方便,我直接将C:\cocos2d-x-3.1\tests\cpp-tests\Resources\fonts的strings.xml文件拷贝到自己的fonts文件夹下。

strings.xml内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>chinese1</key>
	<string>美好的一天</string>
	<key>japanese</key>
	<string>良い一日を</string>
	<key>russian</key>
	<string>Хорошего дня</string>
	<key>spanish</key>
	<string>Buen día</string>
</dict>
</plist>

xml解析代码实现如下:

auto strings = FileUtils::getInstance()->getValueMapFromFile("fonts/strings.xml");
	std::string chinese = strings["chinese1"].asString();
	std::string russian = strings["russian"].asString();
	std::string spanish = strings["spanish"].asString();
	std::string japanese = strings["japanese"].asString();

查看源码的时候也发现此方式用的是sax解析,所以读者可以不用担心效率及内存问题。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值