鼓勵此網誌:0
終於把 Multi-language 的部分搞出來啦!!\(>▽<)/
真是漫長的旅程......(毆)
在Symbian 開發日誌(6)有提到,
當初在建立專案時,所有的字串都是分開放在不同的 loc 檔中,
只是真正多語系的規範沒有去遵守而已,
而這次遵照網路上的步驟,
弄好了 mmp、pkg、loc 等檔案,
卻還是不行......
同事實作過後發現所有的字串都會變成 qtn_xxx_xxx。
查了查資料,疑似因為 Carbibe 一次只能 compile 一種資源檔所造成的現象。
輪我接手時,我查了查網路資料,
在Carbide.c++ Express中如何编译多语言资源文件 at wolfg’s Weblog這一篇找到了很實用的資訊。
沒錯,問題的確是出在 Carbibe 一次只能 compile 一種資源檔身上,
不過會出現 qtn_xxx_xxx 則是因為沒有在專案屬性中的「Resource Compiler」 設定欄設定變數,
如下圖所示(轉自Carbide.c++ Express中如何编译多语言资源文件 at wolfg’s Weblog):

雖然此篇文章的作者有提供程式讓 Carbide 可以自動處理不同語系的檔案,
可是我不會用...用不出來......=A=|||
所以最後還是手動把 .rsc 做更名的動作。
結果是成功啦!喔耶!!XD
順帶一題,我是使用 Carbide 1.1,
請不要相信某些人所說的要使用 Carbide 1.2 才可以編譯,
因為沒用,這是我同事的慘痛經歷~~XD|||b
然後 Multilingual Application Development | NewLC 這篇文章也很棒,
在仔細看這篇之前我還詢問過同事說「有沒有在 pkg 中標明各個語系有什麼差別」,
結果這篇文中就有仔細地講解。
簡單來講,如果你是要安裝全部的語系到使用者的手機,
當使用者切換手機語系時可以自動顯示相對應的語言選單或訊息時,
可以這樣做:
|
; ;Languages ; ;Supports Series 60 v 2.0 ; |
語系一種即可,然後所有的 resource 都要安裝部署,
當然這樣的做法很佔記憶體空間,
但是如果有此需求的話就是這樣處理。
另一種是在安裝時詢問使用者要安裝什麼語系,
然後只安裝該語系的元件到手機上,
其處理方式為
|
; ;Languages ; ;Supports Series 60 v 2.0 ; |
不同於第一種方案的寫法,
在 .pkg 中明確標明所含的語系,
在安裝時就會要求使用者作選擇,
將來不管使用者如何切換系統語系都不會改變。
除了標明 Lang 之外,resource 安裝寫法也不同,
將每一個 resource 檔依據不同的選擇而另外儲存成 .rsc 檔案,
所以手機內只會存在一份資源檔,自然檔案容量較小。
很實用的知識~~ ^__^
最後,如果要在程式中判斷語系以處理不同動作的話,可以使用
| User::Language() |
這個 API 喔~~=ˇ=
- Carbide.c++ Express中如何编译多语言资源文件 at wolfg’s Weblog
- Multilingual Application Development | NewLC
- Localization | NewLC
- How to provide the Multi-Language support at runtime for Series 60. |
NewLC - How to define localization messages - Forum Nokia Wiki
- Resource information: S60 Platform: Localization Example
- Carbide getting started questions | NewLC (這個跟 Example 相關,但我沒試過該 Example 所以也不清楚)








