强制 gettext 读取默认语言
Force gettext to read default language
我的 WP 插件中有一个显示天数的循环。
为此,我这样做:
for ($day = 0; $day <= 4; $day++) {
__('day'.$day,'textdomain')
}
在我的 pot-files 中,我翻译了 day0、day1 等
除默认语言为英语外,这一切都很好。英文只是显示 "day0".
求助!
您所看到的行为已记录在案并且是预期的,即翻译是针对母语的,而不是任意字符串。至少有四种方法可以解决这三种正确的方法和有趣的方法。两者都是:
由于您没有指定您使用的是什么语言,所以我假设是 perl。
正确的方法#1
my @day=(
__x('Sun', 'textdomain'),
__x('Mon', 'textdomain'),
__x('Tue', 'textdomain'),
__x('Wed', 'textdomain'),
__x('Thu', 'textdomain'),
__x('Fri', 'textdomain'),
__x('Sat', 'textdomain')
)
for ($day = 0; $day <= 4; $day++) {
__($day[$day],'textdomain')
}
正确的方法#2
my @day=(
__('Sun', 'textdomain'),
__('Mon', 'textdomain'),
__('Tue', 'textdomain'),
__('Wed', 'textdomain'),
__('Thu', 'textdomain'),
__('Fri', 'textdomain'),
__('Sat', 'textdomain')
)
for ($day = 0; $day <= 4; $day++) {
$day[$day]
}
这两种方法都需要更新您的所有翻译。
正确的方法#3
使用已经本地化的日期函数。
有趣的方式
if(__('day0', 'textdomain')eq'day0'){
$ENV{LC_ALL}='en_US';
setlocale(LC_ALL, 'en_US');
}
for ($day = 0; $day <= 4; $day++) {
__('day.'$day,'textdomain')
}
我的 WP 插件中有一个显示天数的循环。
为此,我这样做:
for ($day = 0; $day <= 4; $day++) {
__('day'.$day,'textdomain')
}
在我的 pot-files 中,我翻译了 day0、day1 等
除默认语言为英语外,这一切都很好。英文只是显示 "day0".
求助!
您所看到的行为已记录在案并且是预期的,即翻译是针对母语的,而不是任意字符串。至少有四种方法可以解决这三种正确的方法和有趣的方法。两者都是:
由于您没有指定您使用的是什么语言,所以我假设是 perl。
正确的方法#1
my @day=(
__x('Sun', 'textdomain'),
__x('Mon', 'textdomain'),
__x('Tue', 'textdomain'),
__x('Wed', 'textdomain'),
__x('Thu', 'textdomain'),
__x('Fri', 'textdomain'),
__x('Sat', 'textdomain')
)
for ($day = 0; $day <= 4; $day++) {
__($day[$day],'textdomain')
}
正确的方法#2
my @day=(
__('Sun', 'textdomain'),
__('Mon', 'textdomain'),
__('Tue', 'textdomain'),
__('Wed', 'textdomain'),
__('Thu', 'textdomain'),
__('Fri', 'textdomain'),
__('Sat', 'textdomain')
)
for ($day = 0; $day <= 4; $day++) {
$day[$day]
}
这两种方法都需要更新您的所有翻译。
正确的方法#3
使用已经本地化的日期函数。
有趣的方式
if(__('day0', 'textdomain')eq'day0'){
$ENV{LC_ALL}='en_US';
setlocale(LC_ALL, 'en_US');
}
for ($day = 0; $day <= 4; $day++) {
__('day.'$day,'textdomain')
}