find-resource (プロシージャ)
public {find-resource
package:Package,
locale:Locale,
file:String,
component-type:String = "resource"
}:Url
パッケージ: CURL.RUNTIME.LOCALE

リソースの URL を規定します。

package: リソース検索をはじめるパッケージです。
locale: ロケールです。
file: リソースファイルの名前です。
component-type: manifest 内で検索する component-type です。

説明

この機能では、package、locale、file、component type で指定されたリソースのロケーションを検索します。リソースの URL が見つかれば、その URL が返されます。そうでなければ、エラーがスローされます。失敗した時に null を返す find-resource-or-null も参照してください。 次のアルゴリズムが使用されています。:
  1. package をインポートしたり、次の属性に一致するエントリをデリゲートするのに使用された Curl マニフェスト を検索します。: これは、次のような manifest のエントリに一致します。:{component component-type PACKAGE-NAME,
      [ version = "version", ]
        locale = "locale",
        file = "file",
        location = "path",
        ...
    }
    最初の manifest で一致しなければ、マニフェストのデリゲート を順に検索します。manifest で一つ以上のエントリと一致した場合、ComponentSelector.compare を使用して最も一致するものが選ばれます。
  2. 指定されたロケールを使用して manifest 内にリソースが見つからず、package.meta-data が、設定されたlocale とは異なる default-locale が指定されている場合、そのロケールで前と同じステップを繰り返します。
  3. manifest 内でリソースが見つからず、file が null ではなく、package.meta-dataresource-directory 属性が記述されている場合、そのディレクトリが以下のステップで使用されます。file が指定され resource-directory が指定されない場合、エラーがスローされます。
  4. locale に一致する指定されたローカル ディレクトリのほとんどで file によって指定されたファイルが、resource-directoryで検索されます。フル ローカル名で開始され、一致するものが見つかるまでローカル名のコンポーネントを見ていきます。ロケールに一致するディレクトリでファイルが見つからない場合は、"default" のディレクトリで検索することになります。たとえば、resource-directory が (package のロケーションに関連する) "my-resources/"の場合、file は "info.xml" で、ロケール "en-US.UTF-8" は次のファイルを順番に検索します。:
    • my-resources/en-US.UTF-8/info.xml
    • my-resources/en-US.UTF/info.xml
    • my-resources/en-US/info.xml
    • my-resources/en/info.xml
    • my-resources/default/info.xml
  5. リソースがそれでも見つからない場合は、package.meta-data が指定された locale とは異なる default-locale を指定している場合、そのロケールで前のステップが繰り返されます。
  6. 最終的に、リソースが見つからない場合は、エラーがスローされます。

注意事項

find-resource-or-nullresource-urllocalize-urlhost-localize-urlmanifest-url も参照してください。