Gettext错误的默认语言

时间:2010-08-13 15:20:59

标签: c++ translation gettext

我正在使用gettext来处理我的C ++项目的翻译。我使用xgettext生成.pot文件,然后使用msginit(en.po和es.po)创建西班牙语和英语的.po文件。

问题在于,虽然我系统上的语言环境设置为西班牙语,但自动填充的.po文件为en.po,其中应为es.po,因为所有字符串都是默认情况下,在我的项目中用西班牙语编写。总而言之,en.po中的内容应该是es.po中的内容,反之亦然。

有没有办法让xgettext和/或msginit西班牙语成为默认语言?

1 个答案:

答案 0 :(得分:0)

使用英语以外的其他语言作为项目的基本语言长期以来一直被认为是解决问题的良方。今天不再如此。

使用msginit 0.19.8.1,当您运行var myList = [ {FirstName:"Chris",LastName:"Pearson"}, {FirstName:"Kate",LastName:"Johnson"}, {FirstName:"Josh",LastName:"Sutherland"}, {FirstName:"John",LastName:"Ronald"}, {FirstName:"Steve",LastName:"Pinkerton"} ]; var exampleArray = JSLINQ(myList) .Where(function(item){ return item.FirstName == "Chris"; }) .OrderBy(function(item) { return item.FirstName; }) .Select(function(item){ return item.FirstName; }); 时,将创建文件msginit -l en -i project.pot,但所有转换都将使用其原始值进行初始化。显然en.po假定英语是项目的主要语言。但这很容易解决:只需在编辑器中打开msginit并丢弃除第一个条目(PO标头)以外的所有条目即可。

调用en.po时,应始终为其选择选项xgettext。除此之外,使用英语以外的其他基本语言没有问题。