Resource bundles must be in classpath to be accessible, either packaged inside a jar under WEB-INF/lib or put under WEB-INF/classes. Module resource bundles should be put inside module jar for easy deployment. see ExampleHR module.
see System Configuration for detail.
<property name="supported.locales" value="en,zh_CN"/>
moduleRootDir/src/main/resources/bundle messages.properties messages_zh.properties messages_fr.propertiesThe messages properties include I18N translations for entity types and their properties, commands and various messages. In addition, they also include I18N translations for permissions and roles if any. For example,
# Permissions ExampleHR.ModuleAll=ExampleHR:All Permissions ExampleHR.ModuleView=ExampleHR:View ExampleHR.ManageEMP=Manage Employees ExampleHR.ViewEMP=View Employees # Roles Role.HRManager=HR ManagerA permission belongs to a module and its name is prefixed with module name. But the scope of a role is instance, and it can be assigned permissions from different modules. When displaying a role, if its description is not set, then the message key Role.[roleName] of resource bundle will be used for display.
appRootDir/resources/bundle messages.properties messages_zh.properties messages_fr.propertiesBuild script will change the bundle base name to assembly.bundle.messages, which will be in runtime classpath after application is deployed.