2010年3月8日 星期一

Genero技轉沒教的事(08)-Genero的多語言機制

Genero本身其實是有自己的多語言機制,這個機制也和TIPTOP GP走的路不相同。相信各位對TIPTOP GP多語機制都已經非常瞭解﹝?﹞了,所以本篇先略過不談,專心focus在Genero機制上。

『Genero有這種機制為啥TIPTOP GP不用?』,原因上是在開發TIPTOP GP時這種解法還沒有well develop,而它已經有一定成熟度時,TIPTOP GP已是穩定的產品,就沒有再考量調整底層架構來應用它了。

因此,以下和TIPTOP GP5.2﹝含﹞之前的版本,都沒有任何關係唷!

Genero在程式執行的過程中,只要有吃到resource file﹝4ad,4st,4tb﹞及42m,42f等處,都可以『自行』尋找是否有要做『語言轉換』的地方,這樣的機制可以協助partner快速的開發出『在地版』的程式﹝請注意,沒有多少程式開發商是像TIPTOP GP這樣一次附上--如果有買的話--多種語言包,讓END User作線上切換的﹞。

看一下怎麼讓42m進行轉換

要讓42m可以進行轉換,就得要在程式內加『%』或寫『LSTR』function:

01 MAIN
02   DISPLAY %"common.helloworld"
03 END MAIN
01 MAIN
02   DISPLAY LSTR("common.helloworld")
03 END MAIN

原來作DISPLAY的字串,就會轉為字串代碼,到『訊息字串檔﹝42s﹞』內找出對應的在地字串,顯示出來。

而42f也是在per的『TEXT』屬性前加上『%』就可以了,例如:

LABEL lab01 : TEXT=%"myform.label01";

如果您是用Genero Studio的4fd來編輯的,或開發其他資源檔﹝4st, 4tb, 4ad﹞,那就是在property內勾選使用42s就可以了。使用上更簡單。

接下來談42s怎麼作

首先必需用文字編輯器來編一個文字檔,附檔名請用『.str』﹝規定﹞,內容如下:

"id001" = "Some text"

"common.helloworld" = "哈囉,世界!"

產生此檔後,使用『fglmkstr  文字檔檔名』﹝可以不用含入.str﹞,接著就會產出編譯完成的『42s』檔。

最後,請把此檔放在『FGLRESOURCEPATH』有指到的路徑下﹝或把現行42s所在路徑加入此環境變數﹞,這樣在執行時就會叫用到42s檔了。

差異和結語在下面
如果要做N種語言的42s該怎麼做?嗯,那就要準備N種的str再轉換成42s囉,另外若要節省環境變數的記憶空間或是加快查找效率,那麼在進行『線上語系切換』時就又要一起變動『FGLRESOURCEPATH』環境變數…等,會不會比較麻煩?各位自由心證啦…

總上所述,希望各位也撥空對此機制有概略瞭解,有昭一日﹝TIPTOP GP?﹞就會有應用的機會了…

做出來的範例畫面呢?啊…偷懶沒做…當大家的作業吧…

沒有留言:

張貼留言