public class CmsLocaleManager extends java.lang.Object implements I_CmsEventListener
Locale configuration is done in the configuration file opencms-system.xml
in the opencms/system/internationalization
node and it's sub-nodes.
限定符和类型 | 字段和说明 |
---|---|
static java.lang.String |
LOCALE_HANDLER
Runtime property name for locale handler.
|
static java.lang.String |
PARAMETER_ENCODING
Request parameter to force encoding selection.
|
static java.lang.String |
PARAMETER_LOCALE
Request parameter to force locale selection.
|
EVENT_BEFORE_PUBLISH_PROJECT, EVENT_CLEAR_CACHES, EVENT_CLEAR_OFFLINE_CACHES, EVENT_CLEAR_ONLINE_CACHES, EVENT_CLEAR_PRINCIPAL_CACHES, EVENT_FLEX_CACHE_CLEAR, EVENT_FLEX_PURGE_JSP_REPOSITORY, EVENT_FULLSTATIC_EXPORT, EVENT_GROUP_MODIFIED, EVENT_LOGIN_USER, EVENT_OU_MODIFIED, EVENT_PROJECT_MODIFIED, EVENT_PROPERTY_DEFINITION_CREATED, EVENT_PROPERTY_DEFINITION_MODIFIED, EVENT_PROPERTY_MODIFIED, EVENT_PUBLISH_PROJECT, EVENT_REBUILD_SEARCHINDEXES, EVENT_RESOURCE_AND_PROPERTIES_MODIFIED, EVENT_RESOURCE_COPIED, EVENT_RESOURCE_CREATED, EVENT_RESOURCE_DELETED, EVENT_RESOURCE_MODIFIED, EVENT_RESOURCE_MOVED, EVENT_RESOURCES_AND_PROPERTIES_MODIFIED, EVENT_RESOURCES_MODIFIED, EVENT_SITEMAP_CHANGED, EVENT_UPDATE_EXPORTS, EVENT_USER_MODIFIED, KEY_CHANGE, KEY_DBCONTEXT, KEY_GROUP_ID, KEY_GROUP_NAME, KEY_INDEX_NAMES, KEY_OU_ID, KEY_OU_NAME, KEY_PROJECTID, KEY_PUBLISHID, KEY_PUBLISHLIST, KEY_REPORT, KEY_RESOURCE, KEY_RESOURCES, KEY_USER_ACTION, KEY_USER_ID, KEY_USER_NAME, LISTENERS_FOR_ALL_EVENTS, VALUE_GROUP_MODIFIED_ACTION_CREATE, VALUE_GROUP_MODIFIED_ACTION_DELETE, VALUE_GROUP_MODIFIED_ACTION_WRITE, VALUE_OU_MODIFIED_ACTION_CREATE, VALUE_OU_MODIFIED_ACTION_DELETE, VALUE_USER_MODIFIED_ACTION_ADD_USER_TO_GROUP, VALUE_USER_MODIFIED_ACTION_CREATE_USER, VALUE_USER_MODIFIED_ACTION_DELETE_USER, VALUE_USER_MODIFIED_ACTION_REMOVE_USER_FROM_GROUP, VALUE_USER_MODIFIED_ACTION_RESET_PASSWORD, VALUE_USER_MODIFIED_ACTION_SET_OU, VALUE_USER_MODIFIED_ACTION_WRITE_USER
构造器和说明 |
---|
CmsLocaleManager()
Initializes a new CmsLocaleManager, called from the configuration.
|
CmsLocaleManager(java.util.Locale defaultLocale)
Initializes a new CmsLocaleManager, used for OpenCms runlevel 1 (unit tests) only.
|
限定符和类型 | 方法和说明 |
---|---|
void |
addAvailableLocale(java.lang.String localeName)
Adds a locale to the list of available locales.
|
void |
addDefaultLocale(java.lang.String localeName)
Adds a locale to the list of default locales.
|
void |
cmsEvent(CmsEvent event)
Implements the CmsEvent interface,
the locale manager the events to clear
the list of cached keys .
|
java.util.List<java.util.Locale> |
getAvailableLocales()
Returns the list of available
Locale s configured in opencms-system.xml ,
in the opencms/system/internationalization/localesconfigured node. |
java.util.List<java.util.Locale> |
getAvailableLocales(CmsObject cms,
CmsResource resource)
Returns an array of available locale names for the given resource.
|
java.util.List<java.util.Locale> |
getAvailableLocales(CmsObject cms,
java.lang.String resourceName)
Returns an array of available locale names for the given resource.
|
java.util.List<java.util.Locale> |
getAvailableLocales(java.lang.String names)
Returns a List of available locales from a comma separated string of locale names.
|
java.util.Locale |
getBestMatchingLocale(java.util.Locale requestedLocale,
java.util.List<java.util.Locale> defaults,
java.util.List<java.util.Locale> available)
Tries to find the given requested locale (eventually simplified) in the collection of available locales,
if the requested locale is not found it will return the first match from the given list of default locales.
|
static java.util.Locale |
getDefaultLocale()
Returns the default locale configured in
opencms-system.xml ,
that is the first locale from the list provided
in the opencms/system/internationalization/localesdefault node. |
java.util.Locale |
getDefaultLocale(CmsObject cms,
CmsResource resource)
Returns the "the" default locale for the given resource.
|
java.util.Locale |
getDefaultLocale(CmsObject cms,
java.lang.String resourceName)
Returns the "the" default locale for the given resource.
|
java.util.List<java.util.Locale> |
getDefaultLocales()
Returns the list of default
Locale s configured in opencms-system.xml ,
in the opencms/system/internationalization/localesdefault node. |
java.util.List<java.util.Locale> |
getDefaultLocales(CmsObject cms,
CmsResource resource)
Returns an array of default locales for the given resource.
|
java.util.List<java.util.Locale> |
getDefaultLocales(CmsObject cms,
java.lang.String resourceName)
Returns an array of default locales for the given resource.
|
java.util.Locale |
getFirstMatchingLocale(java.util.List<java.util.Locale> locales,
java.util.List<java.util.Locale> available)
Returns the first matching locale (eventually simplified) from the available locales.
|
CmsI18nInfo |
getI18nInfo(javax.servlet.http.HttpServletRequest req,
CmsUser user,
CmsProject project,
java.lang.String resource)
Returns the the appropriate locale/encoding for a request,
using the "right" locale handler for the given resource.
|
static java.util.Locale |
getLocale(java.lang.String localeName)
Returns a locale created from the given full name.
|
I_CmsLocaleHandler |
getLocaleHandler()
Returns the configured locale handler.
|
static java.lang.String |
getLocaleNames(java.util.List<java.util.Locale> locales)
Returns the locale names from the given List of locales as a comma separated String.
|
static java.util.List<java.util.Locale> |
getLocales(java.util.List<java.lang.String> localeNames)
Returns a List of locales from an array of locale names.
|
static java.util.List<java.util.Locale> |
getLocales(java.lang.String localeNames)
Returns a List of locales from a comma-separated string of locale names.
|
static java.util.Locale |
getMainLocale(CmsObject cms,
CmsResource res)
Utility method to get the primary locale for a given resource.
|
static java.lang.String |
getResourceEncoding(CmsObject cms,
CmsResource res)
Returns the content encoding set for the given resource.
|
java.util.TimeZone |
getTimeZone()
Returns the OpenCms default the time zone.
|
void |
initialize(CmsObject cms)
Initializes this locale manager with the OpenCms system configuration.
|
boolean |
isInitialized()
Returns
true if this locale manager is fully initialized. |
void |
setLocaleHandler(I_CmsLocaleHandler localeHandler)
Sets the configured locale handler.
|
void |
setTimeZone(java.lang.String timeZoneName)
Sets OpenCms default the time zone.
|
public static final java.lang.String LOCALE_HANDLER
public static final java.lang.String PARAMETER_ENCODING
public static final java.lang.String PARAMETER_LOCALE
public CmsLocaleManager()
public CmsLocaleManager(java.util.Locale defaultLocale)
defaultLocale
- the default locale to usepublic static java.util.Locale getDefaultLocale()
opencms-system.xml
,
that is the first locale from the list provided
in the opencms/system/internationalization/localesdefault
node.opencms-system.xml
public static java.util.Locale getLocale(java.lang.String localeName)
The full name must consist of language code, country code(optional), variant(optional) separated by "_".
This method will always return a valid Locale! If the provided locale name is not valid (i.e. leads to an Exception when trying to create the Locale, then the configured default Locale is returned.
localeName
- the full locale namenull
if not availablepublic static java.lang.String getLocaleNames(java.util.List<java.util.Locale> locales)
For example, if the input List contains
and
Locale.ENGLISH
, the result will be Locale.GERMANY
"en, de_DE"
.
An empty String is returned if the input is null
, or contains no elements.
locales
- the locales to generate a String frompublic static java.util.List<java.util.Locale> getLocales(java.util.List<java.lang.String> localeNames)
localeNames
- array of locale namespublic static java.util.List<java.util.Locale> getLocales(java.lang.String localeNames)
localeNames
- a comma-separated string of locale namespublic static java.util.Locale getMainLocale(CmsObject cms, CmsResource res)
cms
- the current CMS contextres
- the resource for which the locale should be retrievedpublic static final java.lang.String getResourceEncoding(CmsObject cms, CmsResource res)
The content encoding is controlled by the property CmsPropertyDefinition.PROPERTY_CONTENT_ENCODING
,
which can be set on the resource or on a parent folder for all resources in this folder.
In case no encoding has been set, the default encoding from
CmsSystemInfo.getDefaultEncoding()
is returned.
cms
- the current OpenCms user contextres
- the resource to read the encoding forpublic void addAvailableLocale(java.lang.String localeName)
localeName
- the locale to addpublic void addDefaultLocale(java.lang.String localeName)
localeName
- the locale to addpublic void cmsEvent(CmsEvent event)
cmsEvent
在接口中 I_CmsEventListener
event
- CmsEvent that has occurredpublic java.util.List<java.util.Locale> getAvailableLocales()
Locale
s configured in opencms-system.xml
,
in the opencms/system/internationalization/localesconfigured
node.The list of configured available locales contains all locales that are allowed to be used in the VFS, for example as languages in XML content files.
The available locales are a superset of the default locales, see getDefaultLocales()
.
It's possible to reduce the system default by setting the propery
to a comma separated list of locale names. However, you can not add new available locales,
only remove from the configured list.CmsPropertyDefinition.PROPERTY_AVAILABLE_LOCALES
en, de
getDefaultLocales()
public java.util.List<java.util.Locale> getAvailableLocales(CmsObject cms, CmsResource resource)
cms
- the current cms permission objectresource
- the resourcegetAvailableLocales()
public java.util.List<java.util.Locale> getAvailableLocales(CmsObject cms, java.lang.String resourceName)
cms
- the current cms permission objectresourceName
- the name of the resourcegetAvailableLocales()
public java.util.List<java.util.Locale> getAvailableLocales(java.lang.String names)
All names are filtered against the allowed available locales
configured in opencms-system.xml
.
names
- a comma-separated String of locale namesgetAvailableLocales()
public java.util.Locale getBestMatchingLocale(java.util.Locale requestedLocale, java.util.List<java.util.Locale> defaults, java.util.List<java.util.Locale> available)
requestedLocale
- the requested locale, if this (or a simplified version of it) is available it will be returneddefaults
- a list of default locales to use in case the requested locale is not availableavailable
- the available locales to find a match inpublic java.util.Locale getDefaultLocale(CmsObject cms, CmsResource resource)
It's possible to override the system default (see getDefaultLocale()
) by setting the property
to a comma separated list of locale names.
This property is inherited from the parent folders.
This method will return the first locale from that list.CmsPropertyDefinition.PROPERTY_LOCALE
The default locale must be contained in the set of configured available locales,
see getAvailableLocales()
.
In case an invalid locale has been set with the property, this locale is ignored and the
same result as getDefaultLocale()
is returned.
In case the property
has not been set
on the resource or a parent folder,
this method returns the same result as CmsPropertyDefinition.PROPERTY_LOCALE
getDefaultLocale()
.
cms
- the current cms permission objectresource
- the resourcegetDefaultLocales()
,
getDefaultLocales(CmsObject, String)
public java.util.Locale getDefaultLocale(CmsObject cms, java.lang.String resourceName)
It's possible to override the system default (see getDefaultLocale()
) by setting the property
to a comma separated list of locale names.
This property is inherited from the parent folders.
This method will return the first locale from that list.CmsPropertyDefinition.PROPERTY_LOCALE
The default locale must be contained in the set of configured available locales,
see getAvailableLocales()
.
In case an invalid locale has been set with the property, this locale is ignored and the
same result as getDefaultLocale()
is returned.
In case the property
has not been set
on the resource or a parent folder,
this method returns the same result as CmsPropertyDefinition.PROPERTY_LOCALE
getDefaultLocale()
.
cms
- the current cms permission objectresourceName
- the name of the resourcegetDefaultLocales()
,
getDefaultLocales(CmsObject, String)
public java.util.List<java.util.Locale> getDefaultLocales()
Locale
s configured in opencms-system.xml
,
in the opencms/system/internationalization/localesdefault
node.Since the default locale is always available, the result list will always contain at least one Locale.
It's possible to override the system default by setting the property
to a comma separated list of locale names.
This property is inherited from the parent folders.CmsPropertyDefinition.PROPERTY_LOCALE
The default locales must be a subset of the configured available locales, see getAvailableLocales()
.
In case an invalid locale has been set with the property, this locale is ignored.
The default locale names are used as a fallback mechanism in case a locale is requested that can not be found, for example when delivering content form an XML content.
There is a list of default locales (instead of just one default locale) since there are scenarios when one default is not enough. Consider the following example: The main default locale is set to "en". An example XML content file contains just one language, in this case "de" and not "en". Now a request is made to the file for the locale "fr". If there would be only one default locale ("en"), we would have to give up. But since we allow more then one default, we can deliver the "de" content instead of a blank page.
en, de
getAvailableLocales()
public java.util.List<java.util.Locale> getDefaultLocales(CmsObject cms, CmsResource resource)
Since the default locale is always available, the result list will always contain at least one Locale.
It's possible to override the system default (see getDefaultLocales()
) by setting the property
to a comma separated list of locale names.
This property is inherited from the parent folders.CmsPropertyDefinition.PROPERTY_LOCALE
The default locales must be a subset of the configured available locales, see getAvailableLocales()
.
In case an invalid locale has been set with the property, this locale is ignored.
In case the property
has not been set
on the resource or a parent folder,
this method returns the same result as CmsPropertyDefinition.PROPERTY_LOCALE
getDefaultLocales()
.
Use this method in case you need to get all configured default options for a resource,
if you just need the "the" default locale for a resource,
use
.getDefaultLocale(CmsObject, String)
cms
- the current cms permission objectresource
- the resource to read the default locale properties forgetDefaultLocales()
,
getDefaultLocale(CmsObject, String)
,
getDefaultLocales(CmsObject, String)
public java.util.List<java.util.Locale> getDefaultLocales(CmsObject cms, java.lang.String resourceName)
Since the default locale is always available, the result list will always contain at least one Locale.
It's possible to override the system default (see getDefaultLocales()
) by setting the property
to a comma separated list of locale names.
This property is inherited from the parent folders.CmsPropertyDefinition.PROPERTY_LOCALE
The default locales must be a subset of the configured available locales, see getAvailableLocales()
.
In case an invalid locale has been set with the property, this locale is ignored.
In case the property
has not been set
on the resource or a parent folder,
this method returns the same result as CmsPropertyDefinition.PROPERTY_LOCALE
getDefaultLocales()
.
Use this method in case you need to get all configured default options for a resource,
if you just need the "the" default locale for a resource,
use
.getDefaultLocale(CmsObject, String)
cms
- the current cms permission objectresourceName
- the name of the resourcegetDefaultLocales()
,
getDefaultLocale(CmsObject, String)
,
getDefaultLocales(CmsObject, CmsResource)
public java.util.Locale getFirstMatchingLocale(java.util.List<java.util.Locale> locales, java.util.List<java.util.Locale> available)
In case no match is found, code null
is returned.
locales
- must be an ascending sorted list of locales in order of preferenceavailable
- the available locales to find a match innull
in case no match is foundpublic CmsI18nInfo getI18nInfo(javax.servlet.http.HttpServletRequest req, CmsUser user, CmsProject project, java.lang.String resource)
Certain system folders (like the Workplace) require a special locale handler different from the configured handler. Use this method if you want to resolve locales exactly like the system does for a request.
req
- the current http requestuser
- the current userproject
- the current projectresource
- the URI of the requested resource (with full site root added)public I_CmsLocaleHandler getLocaleHandler()
This handler is used to derive the appropriate locale/encoding for a request.
public java.util.TimeZone getTimeZone()
public void initialize(CmsObject cms)
cms
- an OpenCms context object that must have been initialized with "Admin" permissionspublic boolean isInitialized()
true
if this locale manager is fully initialized.This is required to prevent errors during unit tests, simple unit tests will usually not have a fully initialized locale manager available.
public void setLocaleHandler(I_CmsLocaleHandler localeHandler)
localeHandler
- the locale handler to setpublic void setTimeZone(java.lang.String timeZoneName)
If the name can not be resolved as time zone ID, then "GMT" is used.
timeZoneName
- the name of the time zone to set, for example "GMT"