2012-03-27 89 views
0

我的Flex應用程序中的一些地方,我使用ResourceManager.getInstance()。getString和其他地方使用mxml @Resource標記來檢索從ResourceManager動態加載的資源屬性。爲什麼flex資源標籤不支持本地化?

resourceManager.loadResourceModule(resourceModuleURL);

但從ResourceManager.getInstance()。唯一的getString字符串顯示基於正確的語言環境值,而@Resource標籤只能從EN_US資源返回值。我想這是因爲en_US是我編譯的(-locale = en_US)。

所以我想知道如果我使用動態加載的資源,我必須放棄@Resource標記並使用ResourceManager.getInstance()。getString?

謝謝。

回答

1

當你編譯,您需要包含逗號分隔的語言環境的列表:

-locale=en_US,es_ES

這應該允許再用於本地化@Resource。在幫助文檔中

更多細節:

http://help.adobe.com/en_US/flex/using/WS2db454920e96a9e51e63e3d11c0bf69084-7f3a.html#WS2db454920e96a9e51e63e3d11c0bf6119c-7fef

摘錄:

爲了能夠在運行時更改語言環境,而無需使用資源 模塊,編譯所有可用的語言環境通過將它們作爲語言環境選項的一部分包含進編譯時的 應用程序中。此編譯器選項使用逗號分隔的區域設置列表。如果添加 第二區域,如es_ES,以下更改區域選項來 :

-locale=en_US,es_ES

編輯:

要在語言環境中分離到單獨的SWF文件,請嘗試創建資源模塊。下面是摘錄:

資源模塊SWF文件,從您的應用程序SWF文件 分開,包含單一語言環境資源束。您的 應用程序可以在其啓動時預加載一個或多個資源模塊,即 ,然後顯示其用戶界面。它也可以稍後加載資源 模塊,例如響應於用戶選擇新的區域設置。 ResourceManager與所有資源包交互相同,它管理的包最初是編譯到 應用程序還是從資源模塊加載。

它們非常適合用於本地化,因爲您可以將每種語言分隔成不同的swf文件。

資源模塊本地化比 編譯時的資源更好的辦法,因爲你是外化可以在運行時加載的資源模塊 。這會創建一個較小的應用程序SWF 文件,但隨後需要爲您使用的每個 資源模塊加載單獨的SWF文件。如果您將區域設置資源編譯到應用程序中,結果可能是網絡請求的數量增加,並且聚合的應用程序大小大於 。但是,如果 您有許多區域設置,則從長遠來看,分別加載它們應節省 資源。

這裏的解釋資源模塊的鏈接: http://help.adobe.com/en_US/flex/using/WS2db454920e96a9e51e63e3d11c0bf69084-7f3c.html

我的建議是創建資源模塊需要本地化的主權財富基金的使用,然後要麼將它們編譯到應用程序在編譯時,或動態在運行時引導每個ResourceModule,以便您可以訪問它。

+0

謝謝,但它意味着將資源文件放在一個swf文件中。出於某種原因,我不能這樣做,我仍然需要動態加載資源文件。任何建議? – BlueDolphin 2012-03-28 00:31:46

+0

爲什麼你不使用資源模塊?編輯我的答案解釋。 – 2012-03-28 11:40:11

相關問題