国际化 本地化

**************************C语言中的国际化  本地化********************************************
C语言中用GNU gettext实现本地化
首先要确认GNU gettext已经被安装(一般在安装linux时,一般都会安装gettext)。

写一个示例程序

1、主程序gettext_test.c:

 

#include <stdio.h>
#include <locale.h>
#include <libintl.h>

#define _(string) gettext(string)

int
main ()
{
  setlocale (LC_ALL, "");
  bindtextdomain ("gettext_test", "language");
  textdomain ("gettext_test");
  printf (_("Hello world!\n"));          //
  return 0;
}


下面先分析一下上面的源文件

locale.h包含下面要调用的setlocale函数的声明。

libintl.h包含gettext所使用的一些函数。

setlocale(LC_ALL, "");进行区域设置。(第二个参数为""说明设置成当前系统的区域)

bindtextdomain ("gettext_test", "language");设置包含给定domain的语言文件的基目录。这里domain设置为gettext_test,基目录是当前目录下的language目录。

textdomain("gettext_test");设置当前程序的domain,要与bindtextdomain中的domain保持一致(这里是"gettext_test")。

将所有要翻译的字符串写成gettext("some string.")的形式,如程序中原来的printf ("Hello world!\n");要写成printf (gettext ("Hello world!\n");根据GNU标准也可以使用_代替gettext,这样可以少写几个字...

 

2、编译源文件生成gettext_test程序:

# gcc -o gettext_test gettext_test.c

3、生成翻译文件gettext_test.po:

# xgettext -k_ gettext_test.c

4、按照bindtextdomain 中参数,建立目录结构:

在gettext_test当前目录下建立language目录,language目录下建立你的语言目录如:zh_CN、zh_TW等等,所有可以使用的名字参考setlocale的第二个参数。在所有的语言目录下建立LC_MESSAGES目录。下面建立目录结构,假设你已经位于gettext_test的当前目录下:

# mkdir -p language/zh_CN/LC_MESSAGES

# mkdir -p language/zh_TW/LC_MESSAGES





5、翻译完成后生成*.mo文件:   注意:翻译前,一定要记得修改.po

# msgfmt -o language/zh_CN/LC_MESSAGES/gettext_test.mo gettext_test.po

# msgfmt -o language/zh_TW/LC_MESSAGES/gettext_test.mo gettext_test.po

下面运行gettext_test,其中的Hello world!\n已经显示翻译后的词了!


6、运行  ./gettext_test




**********************python中的国际化和本地化*************************************
************************************************************************************************
1、编写一个internation.py脚本文件
import gettext
locale_path = './locale'
zh_trans = gettext.translation('internation',locale_path,languages=['zh_CN'])
en_trans = gettext.translation('internation',locale_path,languages=['en_US'])


print "----中文版-----"
zh_trans.install()
print _("hello world!\n")
print _("python is a good language.\n")



print "----英文版----"
en_trans.install()
print _("hello world!\n")
print _("python is a good language.\n")

2、生成.po文件

    xgettext -k_ -o internation.po_en internation.c  


    xgettext -k_ -o internation.po_zh internation.c  

3、修改.po文件  (此处只显示另外一个.po文件)

# SOME DESCRIPTIVE TITLE.  
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER  
# This file is distributed under the same license as the PACKAGE package.  
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.  
#  
#, fuzzy  
msgid ""  
msgstr ""  
"Project-Id-Version: PACKAGE VERSION\n"  
"Report-Msgid-Bugs-To: \n"  
"POT-Creation-Date: 2015-10-08 22:06+0800\n"  
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"  
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"  
"Language-Team: LANGUAGE <LL@li.org>\n"  
"MIME-Version: 1.0\n"  
"Content-Type: text/plain; charset=utf-8\n"     //修改的第一个地方
"Content-Transfer-Encoding: 8bit\n"  
 
#: internation.py:11 internation.py:16  
msgid "Hello world!"  
msgstr "您好!"     //修改的第二个地方
 
#: internation.py:12 internation.py:17  
msgid "Python is a good Language."  
msgstr "Python是一种好语言。    //修改的第三处

4、创建文件目录   即建立翻译路径(要符合自己在python中所写的路径)
在主文件目录下建立英文翻译路径./locale/en_US/LC_MESSAGES/和中文翻译路径./locale/zh_CN/LC_MESSAGES/ (对文件层次比较严格)。

5、生成.mo 文件

msgfmt -o ./locale/en_US/LC_MESSAGES/internation.mo internation.po_en
msgfmt -o ./locale/zh_CN/LC_MESSAGES/internation.mo internation.po_zh

6、运行
python internation.py

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
WinForm 是一种用于开发 Windows 桌面应用程序的技术框架,具有丰富的图形用户界面(GUI)功能。国际化(Internationalization,简称 i18n)是指将软件应用程序适应不同的语言、文化习惯和地区的过程。 在 WinForm 中进行国际化,可以通过以下步骤来实现: 1. 使用资源文件:在 WinForm 中,可以使用资源文件来存储界面元素、文字字符串等内容。不同语言的文字字符串可以存储在不同的资源文件中,根据需要切换使用不同的资源文件,从而实现界面多语言切换。 2. 多语言界面设计:在设计 WinForm 界面时,要尽量避免硬编码文字字符串,而是使用资源文件中的键值来引用需要显示的文字。这样,在切换不同语言时,只需要修改资源文件中对应的值即可,而不需要修改代码。 3. 动态文化切换:在程序运行过程中,可以根据用户选择的语言动态切换界面显示的文化。通过修改当前线程的 CurrentCulture 和 CurrentUICulture 属性,可以实现动态地切换界面语言。 4. 支持本地化格式:除了文字字符串外,日期时间、货币、数字格式等也需要根据不同文化进行本地化。在使用这些格式的地方,要使用合适的 API 来处理,以确保在不同文化环境下的正确显示。 5. 测试和迭代:在实现国际化功能后,要进行充分的测试,确保在切换不同语言时,界面和文字的显示没有问题。同时,要及时处理用户的反馈和 bug 报告,对国际化功能进行优化和迭代。 总结来说,WinForm 的国际化可以通过使用资源文件、多语言界面设计、动态文化切换、本地化格式的支持等方式来实现。这样可以使应用程序在不同语言和地区下都能提供良好的用户体验,满足不同用户的需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值