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回复.

posted @ 2013-01-10 21:35  半山无极  阅读(839)  评论(0编辑  收藏