親愛なるアラブ首長国連邦からのアラブの読者へ
Linux コードを純粋な Windows に移植しようとしています。このコードは、とりわけ、グレゴリオ暦の日付 (内部的には Unix の日付) をイスラム暦の日付に変換し、アラブ首長国連邦のロケールを使用して結果を表示するふりをしています。
私があなたを必要とする本当の理由は、あなたの国のロケールを Windows とその C ランタイムの下で正しく設定することです。これまでのところ、マイクロソフトによって明確に文書化されているように、「Arabic_United Arab Emirates.1256」文字列の多くの組み合わせをテストしました。私の試みはすべてnullを返しました。私が直面している問題は、問題なく設定できるため、アラブ首長国連邦に非常に固有のもののようです: Arab_Saudi Arabia.1256 または Arabia_Egypt.1256.
そこで、自分の Windows PC にインストールされた Microsoft Visual Studio スイートを所有している開発者がそこにいる場合、CMD ターミナルで次のコマンドを使用して、次の純粋な Windows C コードをビルドして実行してくれませんか?
/*
* File : foo.c
*
* To build :
* C:\path>vcvars64
* C:\path>cl /c /Tp foo.c
* C:\path>link /subsystem:console foo.obj kernel32.lib
*
* Goal:
* find the Windows C locale suited for the United Arab Emirates
*
* OS: Microsoft Windows 7 Entreprise N
*/
#include <windows.h>
#include <stdio.h>
#include <locale.h>
void usage(char *str)
{
printf("Usage: %s <CRT localename>");
exit(EXIT_FAILURE);
}
int main(int argc, char **argv)
{
wchar_t localename[100];
if (argc != 2) usage(argv[0]);
MultiByteToWideChar(CP_UTF8, 0, argv[1], -1, localename, sizeof(localename));
wprintf(L"%s\n",_wsetlocale(LC_TIME,localename));
exit(EXIT_SUCCESS);
}
地域と言語の Windows 設定 (コントロール パネル) がアラビア語 (アラブ首長国連邦) に設定されている場合は、次のようにコードを実行する必要があります。
C:\path>foo ""
読んだ内容をこの投稿に返信してください。
Windows 7 で、Windows の地域設定を使用すると、上記のコードと提供された CMD コマンドを今夜表示すると、「French_France.1252」と表示されます。
ノートブックをアラビア語 (アラブ首長国連邦) に変えるのが怖いです。私は純粋なフランス市民であり、彼の公開 Web サイトを通じて世界中の IT コミュニティを最大限に満足させようとしています。私はアラビア語、さらにはアラビア語の地方の方言をまったく紹介されていません。地域の設定をあなたの国の設定に変更したら、間違いなく Windows に別れを告げなければならないのではないかと本当に恐れています。私の Windows ノートブックは、Windows がプリインストールされた状態で出荷されています。したがって、Windows を再インストールするための CD はありません。
この投稿への返信者の皆様、どうぞよろしくお願いいたします。予想される答えを持ってきてくれればなおさらです。可能であれば解決策を。
フィリップ・ヴーテル