strerror()によって返されるISO CおよびPOSIXエラーメッセージによれば、ファミリはロケール固有である必要があります。私の例(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'で示されるロケールのどれかを試すことができます。新しいロケールをインストールする必要があります。言語パックをインストールするにはソフトウェアマネージャーに入ることができます。 'language-pack-fr-base'にはいくつかのフランス語ロケールが含まれています。それらの中には' fr_FR.utf-8'があります。私はドイツ語のロケール( 'de_DE.utf-8')も働かせて、ドイツ語のエラーメッセージを出しました。しかし、 'he_IL.utf-8'ロケール(' locale -a 'で見ることができる)に 'language-pack-he-base'をインストールしました。私のエラーメッセージは英語ではありませんでした。 –