質問

標準の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 を参照してください。

フォーマット設定を自分で変更して、本当に素晴らしい結果を作成することもできます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top