C 一个简单的gettext示例在linux上不起作用
我是C语言的gettext新手,尝试从C开始 但我没有得到结果。这是我的工作结构和源代码。我在Linux上工作C 一个简单的gettext示例在linux上不起作用,c,gettext,C,Gettext,我是C语言的gettext新手,尝试从C开始 但我没有得到结果。这是我的工作结构和源代码。我在Linux上工作 gettext |- hello.c |- hello (executable) |- po |- hello.pot |- fr |- hello.po |- hello.mo |- fr |- LC_MESSAGES |- hello.mo 你好,c #包括 #包括 #包括 #包括 #定义(字符串)get
gettext
|- hello.c
|- hello (executable)
|- po
|- hello.pot
|- fr
|- hello.po
|- hello.mo
|- fr
|- LC_MESSAGES
|- hello.mo
你好,c
#包括
#包括
#包括
#包括
#定义(字符串)gettext(字符串)
int main()
{
setlocale(LC_ALL,“”);
bindtextdomain(“你好”,getenv(“PWD”));
textdomain(“你好”);
printf(u(“Hello!\n”);
返回0;
}
po/hello.pot
# SOME DESCRIPTIVE TITLE.
# Copyright (C) 2020 hardboiled65
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: Hello 1.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-09-16 19:11+0900\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"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: hello.c:15
#, c-format
msgid "Hello!\n"
msgstr ""
它似乎没有搜索放置的目录.mo(在本例中为PWD)
我试一试有什么问题?甚至我将.mo文件放在
/usr/local/share/locale/fr/LC\u MESSAGES
中,并将locale更改为fr\u fr,但程序仍然打印“Hello!”我发现了问题LANG=fr_fr.UTF-8./hello
有效。但是我不知道为什么别名不起作用。区域设置标识符是特定于平台的,实际上甚至是特定于系统的,因为您有很多配置选项。您在GNU/Linux上使用glibc,对吗?LANG=fr\u fr ls/exists/not
打印什么?您是否设置了环境变量LC\u ALL
或LANGUAGE
?locale-a
的输出是什么?我发现了这个问题LANG=fr_fr.UTF-8./hello
有效。但是我不知道为什么别名不起作用。区域设置标识符是特定于平台的,实际上甚至是特定于系统的,因为您有很多配置选项。您在GNU/Linux上使用glibc,对吗?LANG=fr\u fr ls/exists/not
打印什么?您是否设置了环境变量LC\u ALL
或LANGUAGE
?locale-a
的输出是什么?
# French translations for Hello package.
# Copyright (C) 2020 hardboiled65
# This file is distributed under the same license as the Hello package.
# hardboiled65 <hardboiled65@probook>, 2020.
#
msgid ""
msgstr ""
"Project-Id-Version: Hello 1.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-09-16 19:11+0900\n"
"PO-Revision-Date: 2020-09-16 19:14+0900\n"
"Last-Translator: hardboiled65 <hardboiled65@probook>\n"
"Language-Team: French <traduc@traduc.org>\n"
"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#: hello.c:15
#, c-format
msgid "Hello!\n"
msgstr "Bonjour!\n"
execve("./hello", ["./hello"], 0x7ffe98223800 /* 67 vars */) = 0
brk(NULL) = 0x55f5d6a8c000
arch_prctl(0x3001 /* ARCH_??? */, 0x7fff277f8300) = -1 EINVAL (Invalid argument)
access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=239979, ...}) = 0
mmap(NULL, 239979, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f7a399d5000
close(3) = 0
openat(AT_FDCWD, "/usr/lib/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\220\202\2\0\0\0\0\0"..., 832) = 832
pread64(3, "\6\0\0\0\4\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0"..., 784, 64) = 784
pread64(3, "\4\0\0\0\20\0\0\0\5\0\0\0GNU\0\2\0\0\300\4\0\0\0\3\0\0\0\0\0\0\0", 32, 848) = 32
pread64(3, "\4\0\0\0\24\0\0\0\3\0\0\0GNU\0\364[g\253(\257\25\201\313\250\344q>\17\323\262"..., 68, 880) = 68
fstat(3, {st_mode=S_IFREG|0755, st_size=2159552, ...}) = 0
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f7a399d3000
pread64(3, "\6\0\0\0\4\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0"..., 784, 64) = 784
mmap(NULL, 1868448, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f7a3980a000
mmap(0x7f7a39830000, 1363968, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x26000) = 0x7f7a39830000
mmap(0x7f7a3997d000, 311296, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x173000) = 0x7f7a3997d000
mmap(0x7f7a399c9000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1be000) = 0x7f7a399c9000
mmap(0x7f7a399cf000, 12960, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f7a399cf000
close(3) = 0
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f7a39808000
arch_prctl(ARCH_SET_FS, 0x7f7a399d4540) = 0
mprotect(0x7f7a399c9000, 12288, PROT_READ) = 0
mprotect(0x55f5d5e4d000, 4096, PROT_READ) = 0
mprotect(0x7f7a39a3c000, 4096, PROT_READ) = 0
munmap(0x7f7a399d5000, 239979) = 0
openat(AT_FDCWD, "/usr/lib/locale/locale-archive", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=4383248, ...}) = 0
mmap(NULL, 4383248, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f7a393d9000
close(3) = 0
brk(NULL) = 0x55f5d6a8c000
brk(0x55f5d6aad000) = 0x55f5d6aad000
openat(AT_FDCWD, "/usr/share/locale/locale.alias", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=2998, ...}) = 0
read(3, "# Locale name alias data base.\n#"..., 4096) = 2998
read(3, "", 4096) = 0
close(3) = 0
openat(AT_FDCWD, "/usr/lib/locale/fr_FR/LC_IDENTIFICATION", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/locale/fr/LC_IDENTIFICATION", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
fstat(1, {st_mode=S_IFCHR|0600, st_rdev=makedev(0x88, 0xa), ...}) = 0
write(1, "Hello!\n", 7Hello!
) = 7
exit_group(0) = ?
+++ exited with 0 +++