love2d教程15--国际化
国际化一般都是把字符串资源放到单独的文件里,这样加载不同的语言文件就可以实现
国际化了。下面介绍的是love的babel库。
首先我们先看一下它的语言文件格式:
LANGUAGE = { formats = { -- 作者说保留以后实现 }, -- List of all the translations translations = { -- [""]里的是原始字符串,等号后面是翻译后显示的字符串 ['Hello world'] = "Bonjour le monde", --可以使用变量替换,类似c里的宏,%%里的内容会在相应的地方替换成实际的内容 ['My name is %name%'] = "Mon nom est %name%" } } return LANGUAGE
可见语言文件就是一个lua表,有formats和translations两个子表。
再看一下如何调用:
require "babel" lang_zh=true -- 显示中文为真,否则假 function love.load() --初始化babel babel.init({ locale = "zh-CN",--这里的对应语言文件名,不要".lua"后缀 locales_folders = { "lang" --设置语言文件的存放的位置 } }) --设置字体,显示中文还是需要字体的, --这里没放字体,请到网上找YaHeiConsolas字体,或使用其它支持中文的字体 cnfont=love.graphics.newFont("YaHeiConsolas.ttf",18) love.graphics.setFont(cnfont) end function love.update(dt) end function love.draw() --“_()”实际是babel.translate函数的别名 love.graphics.print( _( "Hello world" ), 10, 10 ) --这句会把源字符串翻译为local对应的字符串 love.graphics.print( _( "My name is %name%", { name = "半山" } ), 10, 30 ) end function love.keypressed(key, unicode) --动态语言切换 if key=="c" then lang_zh= not lang_zh end if not lang_zh then babel.switchLocale("en-US") else babel.switchLocale("zh-CN") end end
其中设置语言文件夹可以使用不同目录,还可以使用addLocalesFolder函数在需要时添加语言文件夹.
代码下载(已clone的直接git pull)
git clone git://gitcafe.com/dwdcth/love2d-tutor.git
或git clone https://github.com/dwdcth/mylove2d-tutor-in-chinese.git
1.11--1.12回家,对于评论将在1.13回复.
作者:半山
出处:http://www.cnblogs.com/xdao/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。