Delphiでローカライズされた曜日名を取得する方法は?
質問
標準のDelphi定数DayMondayなどを使用しているため、それらをローカライズされた文字列(たとえば、「Lundi」)に変換します。このための単純なRTLまたはVCL呼び出しはありますか?
解決 2
I 考え"現在のロケール"の簡単な方法を見つけました。
system.pasで定義されたグローバル配列LongDayNames []およびShortDayNames []があります
だから..
Label.Text = LongDayName[DayMonday];
たとえば、動作するはずです。 " Sunday" を返す場合を除き。これは、Delphiが内部で2つの番号付けスキームをサポートしており、DayMondayがISO8601定数1であり、LongDayName配列が日曜日を週の最初の日として想定しているためです。 C ++ Builderは、文字列配列が1ではなくゼロで始まるため、さらに混乱します。
他のヒント
次の方法で異なるロケール設定を取得できます。
var
fs : TFormatSettings;
x : string;
begin
GetLocaleFormatSettings(GetThreadlocale, fs);
x:= FormatDateTime('%mmmm', Now, fs);
// etc..
end;
GetThreadLocaleは現在のLCIDを提供しますが、自分で別の番号を使用できます。
TFormatSettingsレコード:
TFormatSettings = record
CurrencyFormat: Byte;
NegCurrFormat: Byte;
ThousandSeparator: Char;
DecimalSeparator: Char;
CurrencyDecimals: Byte;
DateSeparator: Char;
TimeSeparator: Char;
ListSeparator: Char;
CurrencyString: string;
ShortDateFormat: string;
LongDateFormat: string;
TimeAMString: string;
TimePMString: string;
ShortTimeFormat: string;
LongTimeFormat: string;
ShortMonthNames: array[1..12] of string;
LongMonthNames: array[1..12] of string;
ShortDayNames: array[1..7] of string;
LongDayNames: array[1..7] of string;
TwoDigitYearCenturyWindow: Word;
end;
http://www.microsoft.com/globaldev/reference/も参照してください。完全なリストについては、lcid-all.mspx を参照してください。
フォーマット設定を自分で変更して、本当に素晴らしい結果を作成することもできます。
所属していません StackOverflow