簡介
用於打包和部署資源的輪輻式模型使用後備進程來定位合適的資源。如果一個應用程式的用戶請求不可用的 ResourceSet,則公共語言運行庫搜尋該區域性的層次結構,以查找與該用戶請求最為匹配的適當的後備資源,並且只在最後迫不得已的情況下才引發異常。在層次結構的每一級別,只要發現了適當的資源,運行庫就使用該資源。如果未找到合適的資源,則繼續在下一個級別進行搜尋。資源後備進程將在下面的步驟中說明:
步驟
1.運行庫首先檢查全局程式集快取,以找到與為應用程式請求的區域性匹配的程式集。全局程式集快取可以存儲由許多應用程式共享的資源程式集。這使您免去不得不在您創建的每一應用程式的目錄結構中包括特定資源組之苦。如果運行庫找到了對程式集的引用,則它將搜尋該程式集以找到請求的資源。如果它在程式集中找到了該項,將使用請求的資源。如果它沒有找到該項,將繼續搜尋。
2.運行庫接下來檢查當前執行的程式集的目錄以找到與請求的區域性匹配的目錄。如果它找到了匹配的目錄,它將搜尋該目錄以找到請求的區域性的有效附屬程式集。然後運行庫搜尋該有效附屬程式集以找到請求的資源。如果它在程式集中找到了該資源,則使用這一資源。如果它沒有找到該資源,將繼續搜尋。
3.運行庫接下來再次搜尋全局程式集快取,這一次是為了找到請求的資源的父程式集。如果在全局程式集快取中存在資源的父程式集,則運行庫搜尋該程式集以找到請求的資源。
父程式集被定義為合適的後備區域性。將父程式集視作最適合的候選;提供任意資源要比引發一個異常更可取。此進程還允許您重複使用資源。只有在子區域性不需要本地化請求的資源時,您才需要包括父級別的特定的資源。例如,如果您提供 en(非特定英語)的附屬程式集:en-GB(英國英語)和 en-US(美國英語),則 en 附屬程式集應包含公共術語,並且 en-GB 和 en-US 附屬程式集可能只對那些不同的術語提供重寫。
4.運行庫接下來檢查當前執行的程式集的目錄,以查看該目錄中是否包含父目錄。如果存在父目錄,則運行庫搜尋該目錄以找到父區域性的有效附屬程式集。如果它找到了有效附屬程式集,則運行庫搜尋該程式集以找到請求的資源。如果它找到了該資源,則使用它。如果它沒有找到該資源,將繼續搜尋。
5.運行庫接下來在許多可能的級別搜尋父程式集(如前面步驟中所述)。每一區域性只有一個父區域性,但一個父區域性可能還有其自己的父區域性。
6.如果對最初指定的區域性以及所有父區域性都進行了搜尋但仍然未找到所需資源,則使用默認(後備)區域性的資源。
注意 默認資源是由主程式集編譯的唯一資源。它是絕對後備(最終的父級)。因此,強烈建議您始終將默認的資源組包括在您的主程式集中。這有助於確保不會引發異常。通過包括默認的資源檔案,您可以為所有資源提供後備,並且確保對於該用戶始終提供至少一個資源,即使該資源不是特定於區域性的。
7.最後,如果運行庫沒有找到默認(後備)區域性的資源,則將引發異常,指出未能找到資源。
下面舉例說明如何搜尋請求的資源,假定用戶請求本地化為墨西哥西班牙語所需的資源。與上述資源命名規則相符,運行庫首先搜尋全局程式集快取以找到與請求的區域性“es-MX”相匹配的程式集。如果沒有找到該程式集,則運行庫搜尋當前執行的程式集的目錄以找到“es-MX”目錄。如果也沒有找到該目錄,運行庫再次搜尋全局程式集快取以找到反映適當的後備區域性,在此例子中為“es”(西班牙語)的父程式集。如果沒有找到父程式集,則運行庫搜尋所有潛在的父程式集級別以找到“es-MX”區域性,直到找到相應的資源為止。如果還是沒有找到一個合適的資源,則運行庫使用默認區域性的資源。