delphi XE6 switch元件簡繁體問題

XE6的Switch元件增加了多國語系的功能,不過很遺憾的是它在中文的部份只認得zh,不會分辨zh_CN、zh_TW、zh_SG跟zh_HK。但是幸好Delphi是可以自己修正原始碼的 🙂

 

將 Program Files\Embarcadero\Studio\14.0\source\fmx下的

FMX.Styles.Switch.pas與FMX.Platform.Android.pas複製到自己專案的目錄下

 
FMX.Styles.Switch.pas
第42行修改如下
[pascal]
// 2014.5.29 by lin shou shan
// 修正switch文字只有簡體中文問題
//LocalizedStates: array [0..6] of TStatesForLocale = (
LocalizedStates: array [0..7] of TStatesForLocale = ( // by lin shou shan
(Locale: ‘en’; OnText: ‘ON’; OffText: ‘OFF’),
(Locale: ‘jp’; OnText: ‘ON’; OffText: ‘OFF’),
(Locale: ‘ja’; OnText: ‘ON’; OffText: ‘OFF’),
(Locale: ‘ko’; OnText: ‘ON’; OffText: ‘OFF’),
(Locale: ‘de’; OnText: ‘AN’; OffText: ‘AUS’),
(Locale: ‘fr’; OnText: ‘OUI’; OffText: ‘NON’),
//(Locale: ‘zh’; OnText: #25171#24320; OffText: #20851#38381) // by lin shou shan
(Locale: ‘zh_CN’; OnText: #25171#24320; OffText: #20851#38381), // by lin shou shan
(Locale: ‘zh_TW’; OnText: ‘開’; OffText: ‘關’) // by lin shou shan
);
[/pascal]
FMX.Platform.Android.pas
第3330行修改如下
[pascal]
function TPlatformAndroid.GetCurrentLangID: string;
var
Locale: JLocale;
begin
Locale := TJLocale.JavaClass.getDefault;
Result := JStringToString(Locale.toString); // 回傳 zh_TW 2014.5.29 lin shou shan
//Result := JStringToString(Locale.getISO3Language); // lin shou shan
//if Length(Result) > 2 then // lin shou shan
// Delete(Result, 3, MaxInt); // lin shou shan
end;
[/pascal]

作者: 林壽山

林壽山 目前任職於軟體公司研究開發部門主管,主要採用.net core/.net 5/6 開發,收銀機pos系統開發,第三方支付設計(綠界、馬來西亞epay/happypay、台新one碼),金流設計,行動支付設計(悠遊卡/一卡通),支付寶,微信,街口支付,信用卡機(聯合信用卡),擅長PHP網頁設計(CodeIgniter、Laravel)框架、Delphi程式設計、資料庫設計、C# WinForm/WebForm程式設計、ASP.net MVC、LINE串接、API串接設計

在〈delphi XE6 switch元件簡繁體問題〉中有 1 則留言

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料