0
根據ISO C和POSIX錯誤消息返回的strerror()系列應該是特定於語言環境的。在我的例子中(Mac OS X 10.10.5/clang/c11),他們不是。我查了幾個平臺,他們都以相同的方式表現。libc是否顯示國際錯誤信息?
我已經通過locale -a
檢查了語言環境。
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <locale.h>
#include <string.h>
int main(int argc, const char * argv[])
{
setlocale(LC_MESSAGES, "he_IL.UTF-8");
errno = 0;
// Generate unique filename.
FILE *file = fopen(tmpnam((char[L_tmpnam]){0}), "rb");
if (file) {
// Do something useful.
fclose(file);
}
else {
fprintf(stderr, "Error message : %s\n", strerror(errno));
}
return EXIT_SUCCESS;
}
顯示:
Error message : No such file or directory
我嘗試了幾個地區,包括你的,但沒有人工作。你的系統是什麼?我查了幾個在線編譯器,沒有人顯示本地化輸出。 – Ariel
我正在使用Linux Mint。您可以嘗試locale -a所顯示的任何語言環境。您可能需要安裝新的區域設置;在Mint上我可以進入軟件管理器來安裝語言包。 'language-pack-fr-base'包含幾個法語區域,其中包括'fr_FR.utf-8'。我還嘗試了一個德語區域設置('de_DE.utf-8'),它可以工作並提供德語錯誤消息。但是我爲'he_IL.utf-8'語言環境(我可以用'locale -a'查看)安裝'language-pack-he-base',正如你發現的那樣,我的錯誤信息是英文的。 –