Bloomberg Automation - (4).更改 Bloomberg 界面的語系

Change Bloomberg UI language

本系列的主題如下,所有的程式碼可以從 這裡 下載。

 

Bloomberg有些功能需要在畫面上輸入查詢的條件,條件的內容在中英文版的Bloomberg 會顯示不同的中英文字,因此程式需針對不同語言處理不同的條件內容,這樣程式就必需維護多套版本,為了避免這個問題我們可以先將Bloomberg 切換成英文版,待程式處理完畢後再切換回原本使用者慣用的語言,讓程式只要維護一套就好。

以HP的畫面為例,市場欄位在中文版要輸入 "買價",英文版則需輸入Bid Price,要避免中英文字不同的問題可用同一種語言界面解決,例如統一用英文界面輸入Bid Price,下圖是中英文界面內容的差異。

 

若不改變界面的語言,以上圖繁體中文為例也可以輸入代碼4,Bloomberg會自動帶出買價中文字,這種作法的前題是代碼需固定不變,以下圖為例買價的代碼是3,跟之前的代碼4不同,所以若是遇到代碼是不固定的情況下就無法使用填入代碼的方式解決,仍必需填入字串內容。

 

Bloomberg 更改顯示的語系

Bloomberg 中輸入 LANG1、LANG2、LANG3....可以更改語系,LANG後面的數字代表語言代碼,LANG1代表英文,LANG8代表繁體中文,以下圖為例在繁體中文的界面下輸入 LANG1 切換成英文,Bloomberg 會出現一個小畫面,提示輸入 99<GO> 重新啟動 Terminal,讓界面套用新的語系。

程式邏輯

上面提到的 LANG1、LANG2、LANG3...,我將整理好的代碼定義在BloombergLanguage Class,定義如下供各位參考:

public enum BloombergLanguage
{
  English = 1,        //Bloomberg function: LANG1
  Japanese,           //Bloomberg function: LANG2
  French,             //Bloomberg function: LANG3
  German,             //Bloomberg function: LANG4
  Spanish,            //Bloomberg function: LANG5
  Portuguese,         //Bloomberg function: LANG6
  Italian,            //Bloomberg function: LANG7
  TraditionalChinese, //Bloomberg function: LANG8
  Korean,             //Bloomberg function: LANG9
  SimplifiedChinese,  //Bloomberg function: LANG10
  Russian             //Bloomberg function: LANG11
}

接下來在BloombergDDEBase Class加入下面程式

public void ChangeLanguage(BloombergLanguage blpLanguage)
{
  int windowsNum = 1;
  string command;

  // use LANG1, LANG2.... to change UI
  // LANG1 is English , LANG8 is Traditional Chinese
  // After change UI , send  99<GO> to reload Terminal
  command = BloombergFunctions.Language + (int)blpLanguage +
		BloombergKeys.Go +
		"99" +
		BloombergKeys.Go;

  DDEInputCommand(windowsNum, command);

  Sleep(TimeSpan.FromSeconds(5));
}

程式 windowsNum = 1指定使用第1個視窗執行指令,BloombergFunctions.Language變數內容為字串 LANG,傳入的參數 blpLanguage 為語言代碼,若是英文則傳入值為1,所以 BloombergFunctions.Language + (int)blpLanguage 的結果為 LANG1,最後組出的指令為 LANG1<GO>99<GO>,代表切換成英文(LANG1),同時執行 99 重新載入Terminal套用新的語系,最後再等5秒完成載入的動作。

接下來寫一支測試程式,我們繼續延用上一篇文章建立的 frmDDE Form , 增加 Change Language To English 以及 Change Language To Chinese按鈕

程式碼如下

private void btnChangeLanguageToEnglish_Click(object sender, EventArgs e)
{
  using (BloombergDDEBase bloombergDDE = new BloombergDDEBase())
  {
    bloombergDDE.ChangeLanguage(BloombergLanguage.English);
  }
}

private void btnChangeLanguageToChinese_Click(object sender, EventArgs e)
{
  using (BloombergDDEBase bloombergDDE = new BloombergDDEBase())
  {
    bloombergDDE.ChangeLanguage(BloombergLanguage.TraditionalChinese);
  }
}

程式呼叫ChangeLanguage method,傳入 BloombergLanguage.English 或 BloombergLanguage.TraditionalChinese 切換成英文或繁體中文界面。

這幾篇文章介紹了使用DDE控制Bloomberg的一些基本功能,各位對於傳送DDE指令已經有一些基本的了解,接下來就要開始活用這些指令,讓使用者看到後可以讚嘆:哇!原來Bloomberg 也可以這樣玩。下一篇將開始說明比較實用的功能 - ALLQ的處理。