2009-01-15 19 views
8

Standart Delphi sabitlerini DayMonday vb. Kullanıyorum ve bunları yerel dizelere dönüştürmek istiyorum (örn. "Lundi"). Bunun için basit bir RTL veya VCL çağrısı var mı?Delphi'de yerelleştirilmiş gün isimleri nasıl edinilir?

var 
    fs : TFormatSettings; 
    x : string; 
begin 
    GetLocaleFormatSettings(GetThreadlocale, fs); 
    x:= FormatDateTime('%mmmm', Now, fs); 
    // etc.. 
end; 

GetThreadLocale geçerli LCID verir ancak başka numarayı kendiniz kullanabilirsiniz:

+0

Bu arada, güzel bir soruyla, detayları aramak zorundaydım, ancak mümkündür ;-). –

cevap

3

Ben diye düşündüm "Mevcut yerel ayar" için basit bir yol bulmuştum.

Label.Text = LongDayName[DayMonday]; 

örneğin çalışması gerektiğini .. küresel diziler LongDayNames [] ve ShortDayNames [] system.pas

Yani tanımlanan vardır. Bunun dışında "Pazar" döndürür. Bunun nedeni Delphi'nin iki gün numaralandırma düzenini dahili olarak desteklemesi ve DayMonday'ın bir ISO8601 sabiti 1 olması, LongDayName dizisinin ise haftanın ilk günü olarak pazar beklemesidir. C++ Builder şeyleri daha fazla karıştırır çünkü dize dizisi sıfırdan başlar, bir değil.

+0

Evet, GetFormatSettings ;-) kullanılarak başlatıldı. Hedefe her zaman farklı yollar vardır, ancak bu durumda aynı kaynağa sahiptirler. –

7

Sen tarafından farklı yerel ayarları alabilirsiniz.

TFormatSettings rekor:

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; 

tam listesi için de http://www.microsoft.com/globaldev/reference/lcid-all.mspx bakınız.

Hatta kendinizi gerçekten fantezi sonuçlar oluşturmak için formatsettings değiştirebilir.

İlgili konular