代码国际化方式

代码国际化方式

C

1、修改test.c文件,添加国际化部分内容

#include <locale.h>
#include <libintl.h>
#define PACKAGE_NAME "test"//test为mo文件的名字
#define PACKAGE_LOCALEDIR "po" //mo文件存放文件夹
#define _(x) gettext(x)

//main函数:
setlocale(LC_MESSAGES, “zh_CN.UTF-8);//设置locale为系统默认语言环境
bindtextdomain(PACKAGE_NAME, PACKAGE_LOCALEDIR);//关联包名称及其对应的国际化翻译语言所在路径
textdomain(PACKAGE_NAME);//定义mo文件的名称

2、相关内容添加完成后 执行下列命令生成pot文件
xgettext -k --keyword=_ calculate.c -o po/zh_CN.pot
3、修改编辑pot文件 并生成最终的mo文件
cp zh_CN.pot zh_CN.po
修改po文件中的内容 charset = UTF-8
msgfmt zh_CN.po -o calculate.mo
4、将mo文件拷贝到系统可识别的国际化目录
cp calculate.mo /usr/local/zh_CN.UTF-8/LC_MESSAGES/

python

1、使用xgettext
编写internation,py,内容如下:

#-*- coding: utf-8 -*-
#!/usr/bin/env python
import gettext
import os

locale_path = './locale/'

gettext.bindtextdomain('internation', locale_path)
gettext.textdomain('internation')
_ = gettext.gettext

print (_("Hello World!"))

当前目录下执行
生成po文件 xgettext -k_ internation.py -o internation.po

‘_’为程序中指定的标记

修改po文件中 charset = UTF-8
生成mo文件 msgfmt internation.po -o internation.mo
创建本地国际化目录 mkdir -p locale/zh_CN/LC_MESSAGES/
将mo文件拷贝进目录 cp internation.mo locale/zh_CN/LC_MESSAGES/
2、在程序中获取当前系统语言环境

import gettext
import codecs
sys.stdout = codecs.getwriter("utf-8")(sys.stdout.detach())   #解决python默认输出ascii字符,此处将其修改为UTF-8

LOCALEDIR = os.path.dirname(os.path.abspath(__file__)) + '/locale'
cmd = "echo $LANG"
result = subprocess.getstatusoutput(cmd)
language = result[1].split(".",1)

language_list = ['zh_CN','en_US']
if (language[0] in language_list):
pass
else:
language[0] = 'zh_CN'

ruby

ruby + sinatra框架 web网页国际化
1、工程目录下新建i18n目录,添加文件 zh.yml并添加以下内容
mkdir i18n/
vim i18n/zh.yml

post:
Username: 用户名
Password: 密码
Login: 登陆
NODES: 节点
PERMISSIONS: 权限

同种方式添加en.yml

2、修改项目文件application.rb

require 'sinatra/r18n'

R18n.default_places = __dir__ + '/i18n/'
R18n.set('zh')

include R18n::Helpers

get '/:locale/posts/:id' do
@post = Post.find(params[:id])
haml :post
end

修改views/login.erb

<%= t.post.Username%>

js

js进行国际化

方式一 使用jquery-i18n进行国际化

本地新建i18n目录
mkdir i18n
翻译文件内容
vim i18n/sourceName_i18nLanguage_properties

Username=用户名
Password=密码
Log In=登录

加载js文件

<script src="js/jquery.js "></script>
<!-- 加载语言包文件 -->
<script src="js/jquery.i18n.properties.js"></script>
jQuery.i18n.properties({
name : sourceName, //资源文件名称
path : 'i18n/' , //资源文件路径
mode : 'map', //用Map的方式使用资源文件中的值
language : i18nLanguage, //使用语言
callback : function() {
$.i18n.prop(“Username”); //返回在翻译文件中与"Username"对应的字符串
});

jQuery查找的路径为path 文件名为name_language.properties

方式二 自己编写jquery-i18n.js

vim jquery-i18n.js

var languageType =navigator.browserLanguage?navigator.browserLanguage:navigator.language;
let lang_type = 0;
if (languageType.search("zh") != -1){
lang_type = 0;}
else{
lang_type = 1;}
let xz_lang = {
'username': [
'用户名',
'username'
],
'password': [
'密码',
'password'
]
}
function translate(name) {
let content = xz_lang[name][lang_type];

if (arguments.length > 1) { // 把占位符 {} 替换成传递的参数
for (let i = 1; i < arguments.length; i++) {
content = content.replace('{}', arguments[i]);
}
}
return content;
}

网页文件中添加翻译文件

<script src="js/jquery.js "></script>
<!-- 加载语言包文件 -->
<script src="js/jquery.i18n.properties.js"></script>
示例:
translate("username") #==>用户名
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值