Класс ResourceBundle.Control
- Окружающий класс:
- ResourceBundle
public static class ResourceBundle.Control extends Object
ResourceBundle.Control определяет набор методов обратного вызова, которые вызываются методами-фабриками ResourceBundle.getBundle во время процесса загрузки ресурсного файла. Другими словами, ResourceBundle.Control взаимодействует с методами-фабриками для загрузки ресурсных файлов. Реализация методов обратного вызова по умолчанию предоставляет информацию, необходимую методам-фабрикам для выполнения стандартного поведения. ResourceBundle.Control предназначен для приложения, развернутого в модуле без имени, например, для поддержки ресурсных файлов в нестандартных форматах или упаковки локализованных ресурсов в нетрадиционной конвенции. ResourceBundleProvider является заменой для ResourceBundle.Control при миграции к модулям. UnsupportedOperationException будет брошен, когда вызывается метод-фабрика, принимающий параметр ResourceBundle.Control.
Помимо методов обратного вызова, методы toBundleName и toResourceName определены в основном для удобства реализации методов обратного вызова. Однако, метод toBundleName может быть переопределён для предоставления различных конвенций в организации и упаковке локализованных ресурсов. Метод toResourceName final для предотвращения использования неправильных разделителей имен ресурсов и имен классов.
Два метода-фабрики, getControl(List) и getNoFallbackControl(List), предоставляют экземпляры ResourceBundle.Control, которые реализуют общие вариации стандартного процесса загрузки ресурсных файлов.
Форматы, возвращаемые методом getFormats, и кандидаты локалей, возвращаемые методом getCandidateLocales, должны быть согласованы во всех ResourceBundle.getBundle вызовах для одного и того же базового ресурсного файла. В противном случае, методы ResourceBundle.getBundle могут вернуть нежелательные файлы. Например, если метод getFormats возвращает только "java.class" при первом вызове ResourceBundle.getBundle и только "java.properties" при втором вызове, то второй вызов вернёт файловый, кэшированный во время первого вызова.
Экземпляр ResourceBundle.Control должен быть потокобезопасным, если он одновременно используется несколькими потоками. ResourceBundle.getBundle не синхронизирует вызовы методов ResourceBundle.Control. Стандартные реализации методов потокобезопасны.
Приложения могут указать экземпляры ResourceBundle.Control, возвращаемые методами-фабриками getControl или созданными из подкласса ResourceBundle.Control для настройки процесса загрузки ресурсных файлов. Ниже приведены примеры изменения стандартного процесса загрузки ресурсных файлов.
Пример 1
Следующий код позволяет ResourceBundle.getBundle искать только ресурсы в формате properties.
import java.util.*;
import static java.util.ResourceBundle.Control.*;
...
ResourceBundle bundle =
ResourceBundle.getBundle("MyResources", new Locale("fr", "CH"),
ResourceBundle.Control.getControl(FORMAT_PROPERTIES));
Учитывая ресурсные файлы в примере примера в описании ResourceBundle.getBundle, этот вызов ResourceBundle.getBundle загружает MyResources_fr_CH.properties, родительским для MyResources_fr.properties, родительским для MyResources.properties. (MyResources_fr_CH.properties не скрыт, но MyResources_fr_CH.class скрыт.) Пример 2
Следующий пример загрузки ресурсных файлов в формате XML с помощью Properties.loadFromXML.
ResourceBundle rb = ResourceBundle.getBundle("Messages",
new ResourceBundle.Control() {
public List<String> getFormats(String baseName) {
if (baseName == null)
throw new NullPointerException();
return Arrays.asList("xml");
}
public ResourceBundle newBundle(String baseName,
Locale locale,
String format,
ClassLoader loader,
boolean reload)
throws IllegalAccessException,
InstantiationException,
IOException {
if (baseName == null || locale == null
|| format == null || loader == null)
throw new NullPointerException();
ResourceBundle bundle = null;
if (format.equals("xml")) {
String bundleName = toBundleName(baseName, locale);
String resourceName = toResourceName(bundleName, format);
InputStream stream = null;
if (reload) {
URL url = loader.getResource(resourceName);
if (url != null) {
URLConnection connection = url.openConnection();
if (connection != null) {
// Disable caches to get fresh data for
// reloading.
connection.setUseCaches(false);
stream = connection.getInputStream();
}
}
} else {
stream = loader.getResourceAsStream(resourceName);
}
if (stream != null) {
BufferedInputStream bis = new BufferedInputStream(stream);
bundle = new XMLResourceBundle(bis);
bis.close();
}
}
return bundle;
}
});
...
private static class XMLResourceBundle extends ResourceBundle {
private Properties props;
XMLResourceBundle(InputStream stream) throws IOException {
props = new Properties();
props.loadFromXML(stream);
}
protected Object handleGetObject(String key) {
return props.getProperty(key);
}
public Enumeration<String> getKeys() {
...
}
}
- Примечание API:
-
ResourceBundle.Controlне поддерживается в именованных модулях. Если методResourceBundle.getBundleс параметромResourceBundle.Controlвызывается в именованном модуле, метод бросит исключениеUnsupportedOperationException. Любые поставщики сервисовResourceBundleControlProviderигнорируются в именованных модулях. - С:
- 1.6
- См. также:
Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
static final List<String> |
FORMAT_CLASS |
Только формат класса List, содержащий "java.class". |
static final List<String> |
FORMAT_DEFAULT |
Формат по умолчанию List, содержащий строки "java.class" и "java.properties", в таком порядке. |
static final List<String> |
FORMAT_PROPERTIES |
Только формат properties List, содержащий "java.properties". |
static final long |
TTL_DONT_CACHE |
Постоянная времени жизни для некэширования загруженных экземпляров ресурсных файлов. |
static final long |
TTL_NO_EXPIRATION_CONTROL |
Постоянная времени жизни для отключения управления истечением срока действия загруженных экземпляров ресурсных файлов в кэше. |
Краткое описание конструкторов
| Модификатор | Конструктор | Описание |
|---|---|---|
protected |
Единственный конструктор. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
List<Locale> |
getCandidateLocales |
Возвращает список List Locale как кандидатов локалей для baseName и locale. |
static final ResourceBundle.Control |
getControl |
|
Locale |
getFallbackLocale |
Возвращает Locale, который будет использоваться в качестве локали по умолчанию для дальнейшего поиска ресурсных файлов методом-фабрикой ResourceBundle.getBundle. |
List<String> |
getFormats |
Возвращает List String, содержащий форматы для загрузки ресурсных файлов для данной baseName. |
static final ResourceBundle.Control |
getNoFallbackControl |
Возвращает ResourceBundle.Control, в котором метод getFormats возвращает указанный formats и метод getFallbackLocale возвращает null. |
long |
getTimeToLive |
Возвращает значение времени жизни (TTL) для ресурсных файлов, загруженных при помощи данного ResourceBundle.Control. |
boolean |
needsReload |
Определяет, нужно ли перезагружать истекший bundle в кэше на основе времени загрузки, указанном loadTime или по другим критериям. |
ResourceBundle |
newBundle |
Создаёт экземпляр ресурсного файла для данного имени файла, формата и локали, используя необходимый класс загрузчика. |
String |
toBundleName |
Преобразует данное baseName и locale в имя файла. |
final String |
toResourceName |
Преобразует данное bundleName в формат, требуемый методом ClassLoader.getResource, заменив все вхождения '.' в bundleName на '/' и добавив '.' и заданный файл suffix. |
Подробное описание полей
FORMAT_DEFAULT
public static final List<String> FORMAT_DEFAULT
List, который содержит строки "java.class" и "java.properties", в этом порядке. Этот List не изменяется.- См. также:
FORMAT_CLASS
public static final List<String> FORMAT_CLASS
List содержащий "java.class". Этот List не изменяется.- См. также:
FORMAT_PROPERTIES
public static final List<String> FORMAT_PROPERTIES
List содержащий "java.properties". Этот List не изменяется.- См. также:
TTL_DONT_CACHE
public static final long TTL_DONT_CACHE
TTL_NO_EXPIRATION_CONTROL
public static final long TTL_NO_EXPIRATION_CONTROL
Подробное описание конструкторов
Control
protected Control()
Подробное описание методов
getControl
public static final ResourceBundle.Control getControl(List<String> formats)
ResourceBundle.Control, в котором метод getFormats возвращает указанные formats. formats должен быть равен одному из FORMAT_PROPERTIES, FORMAT_CLASS или FORMAT_DEFAULT. Экземпляры ResourceBundle.Control возвращаемые этим методом являются синглтонами и потокобезопасными. Указание FORMAT_DEFAULT эквивалентно созданию экземпляра класса ResourceBundle.Control, за исключением того, что этот метод возвращает синглтон.
- Параметры:
-
formats- форматы, которые должны возвращаться методомResourceBundle.Control.getFormats - Возвращает:
ResourceBundle.Controlподдерживающий указанныеformats- Исключение:
-
NullPointerException- еслиformatsравенnull -
IllegalArgumentException- еслиformatsнеизвестен
getNoFallbackControl
public static final ResourceBundle.Control getNoFallbackControl(List<String> formats)
ResourceBundle.Control, в котором метод getFormats возвращает указанные formats, а метод getFallbackLocale возвращает null. formats должен быть равен одному из FORMAT_PROPERTIES, FORMAT_CLASS или FORMAT_DEFAULT. Экземпляры ResourceBundle.Control возвращаемые этим методом являются синглтонами и потокобезопасными.- Параметры:
-
formats- форматы, которые должны возвращаться методомResourceBundle.Control.getFormats - Возвращает:
ResourceBundle.Controlподдерживающий указанныеformatsбез поддержки обратного поискаLocale- Исключение:
-
NullPointerException- еслиformatsравенnull -
IllegalArgumentException- еслиformatsнеизвестен
getFormats
public List<String> getFormats(String baseName)
List String содержащих форматы, используемые для загрузки ресурсных пакетов для заданного baseName. Метод фабрики ResourceBundle.getBundle пытается загрузить ресурсные пакеты с форматами в указанном в списке порядке. Возвращаемый этим методом список должен содержать как минимум один String. Предопределенные форматы - "java.class" для ресурсных пакетов на основе класса и "java.properties" для основанных на свойствах. Строки, начинающиеся с "java.", зарезервированы для будущих расширений и не должны использоваться для форматов, определённых приложением. Необязательно возвращать неизменяемый (unmodifiable) List. Однако возвращаемый List не должен изменяться после возврата методом getFormats.
Реализация по умолчанию возвращает FORMAT_DEFAULT, чтобы метод фабрики ResourceBundle.getBundle сначала искал ресурсные пакеты на основе класса, затем на основе свойств.
- Параметры:
-
baseName- базовое имя ресурсного пакета, полное имя класса - Возвращает:
ListStringсодержащих форматы для загрузки ресурсных пакетов.- Исключение:
-
NullPointerException- еслиbaseNameравно null - См. также:
getCandidateLocales
public List<Locale> getCandidateLocales(String baseName, Locale locale)
Locale и locale. Этот метод вызывается фабричным методом ResourceBundle.getBundle каждый раз, когда фабричный метод пытается найти набор ресурсов для целевого Locale.
Последовательность кандидатов соответствует пути поиска ресурсов во время выполнения (также известному как цепь предков), если соответствующие наборы ресурсов для кандидатов существуют, а их предки не определены загруженными наборами ресурсов. Последний элемент списка должен быть корневым языком, если желательно использовать базовый набор как конечную точку цепи предков.
Если заданный язык равен Locale.ROOT (корневой язык), должен быть возвращен список, содержащий только корневой Locale. В этом случае, фабричный метод ResourceBundle.getBundle загружает только базовый набор как результирующий набор ресурсов.
Не обязательно возвращать неизменяемый (unmodifiable) список. Однако возвращённый список не должен изменяться после возвращения методом getCandidateLocales.
Реализация по умолчанию возвращает список, содержащий кандидатов, используя правила, описанные ниже. В описании ниже L, S, C и V соответственно обозначают непустой язык, сценарий, страну и вариант. Например, [L, C] представляет список, содержащий непустые значения только для языка и страны. Форма L("xx") означает, что (непустое) значение языка равно "xx". Во всех случаях списки, чьи значения конечного компонента являются пустой строкой, пропускаются.
- Для входного языка со значением сценария, равным пустой строке, добавляются кандидаты, опуская конечный компонент по одному, как показано ниже:
- [L, C, V]
- [L, C]
- [L]
-
Locale.ROOT
- Для входного языка с непустым значением сценария, добавляются кандидаты, опуская конечный компонент до языка, затем добавляются кандидаты, сгенерированные из входного языка, с восстановленными страной и вариантом:
- [L, S, C, V]
- [L, S, C]
- [L, S]
- [L, C, V]
- [L, C]
- [L]
-
Locale.ROOT
- Для входного языка со значением варианта, состоящего из нескольких подтегов, разделённых знаком нижнего подчёркивания, генерируются кандидаты, опуская подтеги варианта по одному, затем вставляются после каждого вхождения подтегов со значением полного варианта в исходном списке. Например, если вариант состоит из двух подтегов V1 и V2:
- [L, S, C, V1, V2]
- [L, S, C, V1]
- [L, S, C]
- [L, S]
- [L, C, V1, V2]
- [L, C, V1]
- [L, C]
- [L]
-
Locale.ROOT
- Специальные случаи для китайского языка. Когда входной язык имеет язык "zh" (китайский) и пустое значение сценария, могут быть заданы либо "Hans" (упрощённый), либо "Hant" (традиционный), в зависимости от страны. Когда страна "CN" (Китай) или "SG" (Сингапур), используется "Hans". Когда страна "HK" (Гонконг), "MO" (Макао) или "TW" (Тайвань), используется "Hant". Для всех других стран или когда страна пуста, сценарий не задаётся. Например, для
Locale("zh", "CN"), список кандидатов будет:- [L("zh"), S("Hans"), C("CN")]
- [L("zh"), S("Hans")]
- [L("zh"), C("CN")]
- [L("zh")]
-
Locale.ROOT
Locale("zh", "TW"), список кандидатов будет:- [L("zh"), S("Hant"), C("TW")]
- [L("zh"), S("Hant")]
- [L("zh"), C("TW")]
- [L("zh")]
-
Locale.ROOT
- Специальные случаи для норвежского языка. Как
Locale("no", "NO", "NY"), так иLocale("nn", "NO")представляют норвежский нюнорск. Когда языком локализации является "nn", генерируется стандартный список кандидатов до [L("nn")], а затем добавляются следующие кандидаты:- [L("no"), C("NO"), V("NY")]
- [L("no"), C("NO")]
- [L("no")]
-
Locale.ROOT
Locale("no", "NO", "NY"), она сначала преобразуется вLocale("nn", "NO"), а затем применяется указанный выше алгоритм.Также, Java считает язык "no" синонимом норвежского бокмола "nb". За исключением отдельного случая
Locale("no", "NO", "NY")(обработанного выше), когда входной язык имеет язык "no" или "nb", кандидаты со значениями языка "no" и "nb" чередуются, сначала с запрошенным языком, затем с его синонимом. Например,Locale("nb", "NO", "POSIX")генерирует следующий список кандидатов:- [L("nb"), C("NO"), V("POSIX")]
- [L("no"), C("NO"), V("POSIX")]
- [L("nb"), C("NO")]
- [L("no"), C("NO")]
- [L("nb")]
- [L("no")]
-
Locale.ROOT
Locale("no", "NO", "POSIX")сгенерирует тот же список, за исключением того, что локали с "no" будут появляться перед соответствующими локали с "nb".
Реализация по умолчанию использует ArrayList, которую реализации, переопределяющие этот метод, могут изменить перед возвратом вызывающей стороне. Однако подкласс не должен изменять её после возвращения методом getCandidateLocales.
Например, если заданный baseName - "Messages", а заданный locale - Locale("ja", "", "XX"), то список List из Locale возвращается:
Locale("ja", "", "XX")
Locale("ja")
Locale.ROOT
Возвращается. И если ресурсы для "ja" и пустые Locale найдены, то путь поиска ресурсов во время выполнения (цепь предков) будет
Messages_ja -> Messages
- Parameters:
-
baseName- базовое имя набора ресурсов, полное имя класса -
locale- язык, для которого требуется набор ресурсов - Returns:
- Список кандидатов
Localeдля заданногоlocale - Throws:
-
NullPointerException- еслиbaseNameилиlocalenull
getFallbackLocale
public Locale getFallbackLocale(String baseName, Locale locale)
ResourceBundle.getBundle. Этот метод вызывается из фабричного метода каждый раз, когда для baseName и locale не удалось найти результирующий набор ресурсов, где язык является параметром для ResourceBundle.getBundle или предыдущим языком по умолчанию, возвращенным этим методом.
Метод возвращает null если дальнейший поиск по умолчанию не требуется.
Реализация по умолчанию возвращает стандартный язык, если заданный язык не является стандартным. В противном случае, возвращается null.
- Parameters:
-
baseName- базовое имя набора ресурсов, полное имя класса, для которого методResourceBundle.getBundleне смог найти какие-либо наборы ресурсов (кроме базового) -
locale- язык, для которого методResourceBundle.getBundleне смог найти какие-либо наборы ресурсов (кроме базового) - Returns:
- язык для поиска по умолчанию, или
nullесли дальнейший поиск по умолчанию не требуется. - Throws:
-
NullPointerException- еслиbaseNameилиlocalenull
newBundle
public ResourceBundle newBundle(String baseName, Locale locale, String format, ClassLoader loader, boolean reload) throws IllegalAccessException, InstantiationException, IOException
null , если для заданных параметров нет ресурсного пакета. Если ресурсный пакет нельзя инициализировать из-за непредвиденной ошибки, ошибка должна быть сообщена путём выброса Error или Exception, а не простым возвращением null. Флаг reload равен true, если этот метод вызывается, потому что ранее загруженный ресурсный пакет истек.
- Требования к реализации:
- Ресурсные пакеты в именованных модулях подчиняются правилам инкапсуляции, указанным в
Module.getResourceAsStream. Ресурсный пакет в именованном модуле, видимом для данного загрузчика классов, доступен, когда пакет файла ресурса, соответствующего ресурсному пакету, открыт безусловно.В реализации по умолчанию инициализируется
ResourceBundleследующим образом.- Имя пакета получается вызовом
toBundleName(baseName, locale). - Если
formatравно"java.class", то классClass, указанный именем пакета, загружается с помощью заданного загрузчика классов. Если классClassнайден и доступен, тоResourceBundleинициализируется. Ресурсный пакет доступен, если пакет файла класса пакета открыт безусловно; в противном случае будет брошенIllegalAccessException. Обратите внимание, что флагreloadигнорируется при загрузке ресурсных пакетов, основанных на классах, в этой реализации по умолчанию. - Если
formatравно"java.properties", вызываетсяtoResourceName(bundlename, "properties")для получения имени ресурса. Еслиreloadравноtrue, вызываетсяload.getResourceдля полученияURLдля созданияURLConnection. ЭтотURLConnectionиспользуется для отключения кешей базовых слоёв загрузки ресурсов и для полученияInputStream. В противном случае вызываетсяloader.getResourceAsStreamдля полученияInputStream. Затем с этимInputStreamсоздаётсяPropertyResourceBundle. - Если
formatне равно ни"java.class", ни"java.properties", бросаетсяIllegalArgumentException. - Если язык
locale— один из старых или новых кодов языков, то при необходимости повторяется процесс загрузки с именем пакета с другим языком. Например, "iw" для "he" и наоборот.
- Имя пакета получается вызовом
- Параметры:
-
baseName- базовое имя ресурсного пакета, полное имя класса -
locale- регион, для которого должен быть инициализирован ресурсный пакет -
format- формат ресурсного пакета для загрузки -
loader- используемыйClassLoaderдля загрузки пакета -
reload- флаг, указывающий на перезагрузку пакета;trueпри перезагрузке истекшего ресурсного пакета,falseв противном случае - Возвращает:
- экземпляр ресурсного пакета или
null, если ни один не был найден. - Выбрасывает:
-
NullPointerException- еслиbundleName,locale,format, илиloaderравноnull, или еслиnullвозвращаетсяtoBundleName -
IllegalArgumentException- еслиformatнеизвестен или найденный ресурс для заданных параметров содержит неверные данные. -
ClassCastException- если загруженный класс нельзя привести к типуResourceBundle -
IllegalAccessException- если класс или его конструктор без аргументов недоступен. -
InstantiationException- если инициализация класса завершается неудачно по другим причинам. -
ExceptionInInitializerError- если инициализация, вызванная этим методом, завершается неудачно. -
SecurityException- Если присутствует менеджер безопасности и создание новых экземпляров запрещено. Подробности см. вClass.newInstance(). -
IOException- если произошла ошибка при чтении ресурсов с помощью операций ввода-вывода - См. также:
getTimeToLive
public long getTimeToLive(String baseName, Locale locale)
ResourceBundle.Control. Положительные значения времени жизни задают количество миллисекунд, в течение которого пакет может оставаться в кэше, не проверяясь на соответствие исходным данным, из которых он был создан. Значение 0 указывает, что пакет должен проверяться каждый раз при извлечении из кэша. TTL_DONT_CACHE указывает, что загруженные ресурсные пакеты не помещаются в кэш. TTL_NO_EXPIRATION_CONTROL указывает, что загруженные ресурсные пакеты помещаются в кэш без контроля истечения срока действия. Истечение срока действия влияет только на процесс загрузки пакета методом ResourceBundle.getBundle factory. То есть, если метод factory находит в кэше ресурсный пакет, срок действия которого истек, метод factory вызывает метод needsReload, чтобы определить, требуется ли перезагрузка ресурсного пакета. Если needsReload возвращает true, экземпляр кэшированного ресурсного пакета удаляется из кэша. В противном случае экземпляр остаётся в кэше, обновлённый с новым значением TTL, возвращённым этим методом.
Все кэшированные ресурсные пакеты могут быть удалены из кэша из-за ограничений памяти среды выполнения. Возврат большого положительного значения не означает блокировки загруженных ресурсных пакетов в кэше.
В реализации по умолчанию возвращается TTL_NO_EXPIRATION_CONTROL.
- Параметры:
-
baseName- базовое имя ресурсного пакета, для которого задаётся значение срока действия. -
locale- регион ресурсного пакета, для которого задаётся значение срока действия. - Возвращает:
- время (0 или положительное смещение в миллисекундах от кэшированного времени) для истечения срока действия загруженных пакетов в кэше,
TTL_NO_EXPIRATION_CONTROLдля отключения контроля истечения срока действия илиTTL_DONT_CACHEдля отключения кэширования. - Выбрасывает:
-
NullPointerException- еслиbaseNameилиlocaleравноnull
needsReload
public boolean needsReload(String baseName, Locale locale, String format, ClassLoader loader, ResourceBundle bundle, long loadTime)
bundle в кэше, основываясь на времени загрузки, указанном в loadTime, или на каких-либо других критериях. Метод возвращает true , если перезагрузка требуется; false в противном случае. loadTime — смещение в миллисекундах с момента Calendar эпохи. Вызывающий ResourceBundle.getBundle factory метод вызывает этот метод на экземпляре ResourceBundle.Control , используемом для текущего вызова, а не на экземпляре, используемом при вызове, который изначально загрузил ресурсный пакет.
В реализации по умолчанию сравнивается loadTime и время последнего изменения исходных данных ресурсного пакета. Если установлено, что исходные данные изменены после loadTime, возвращается true. В противном случае возвращается false. Эта реализация предполагает, что данный format — это та же строка, что и его суффикс файла, если он не является одним из форматов по умолчанию, "java.class" или "java.properties".
- Параметры:
-
baseName- базовое имя ресурсного пакета, полное имя класса -
locale- регион для которого ресурсный пакет должен быть инициализирован -
format- формат ресурсного пакета для загрузки -
loader- используемыйClassLoaderдля загрузки пакета -
bundle- экземпляр ресурсного пакета, срок действия которого истек в кэше -
loadTime- время, когдаbundleбыл загружен и помещён в кэш - Возвращает:
-
true, если истекший пакет требует перезагрузки;falseв противном случае. - Выбрасывает:
-
NullPointerException- еслиbaseName,locale,format,loader, илиbundleравноnull
toBundleName
public String toBundleName(String baseName, Locale locale)
baseName и locale в имя набора ресурсов. Этот метод вызывается из реализации по умолчанию методов newBundle и needsReload. Эта реализация возвращает следующее значение:
baseName + "_" + language + "_" + script + "_" + country + "_" + variant
где language, script, country, и variant — соответственно значения языка, сценария, страны и варианта locale. Конечные компоненты со значением пустой строки опускаются вместе с предшествующим '_'. Если сценарий пустой, значение сценария опускается вместе с предшествующим '_'. Если все значения являются пустыми строками, возвращается baseName. Например, если baseName равно "baseName" и locale равно Locale("ja", "", "XX"), то возвращается "baseName_ja_ _XX". Если заданный locale равен Locale("en"), то возвращается "baseName_en".
Переопределение этого метода позволяет приложениям использовать различные соглашения при организации и упаковке локализованных ресурсов.
- Parameters:
-
baseName- базовая часть имени набора ресурсов, полное имя класса -
locale- locale, для которого должен загружаться набор ресурсов - Returns:
- имя набора ресурсов
- Throws:
-
NullPointerException- еслиbaseNameилиlocaleравныnull - See Also:
toResourceName
public final String toResourceName(String bundleName, String suffix)
bundleName в формат, необходимый методу ClassLoader.getResource, заменяя все вхождения '.' в bundleName на '/' и добавляя '.' и заданный тип файла suffix. Например, если bundleName равно "foo.bar.MyResources_ja_JP" и suffix равно "properties", то возвращается "foo/bar/MyResources_ja_JP.properties".
- Parameters:
-
bundleName- имя набора ресурсов -
suffix- суффикс типа файла - Returns:
- преобразованное имя ресурса
- Throws:
-
NullPointerException- еслиbundleNameилиsuffixравныnull
© 1993, 2021, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/ResourceBundle.Control.html