locale = (document.documentElement.getAttribute "data-locale") or "en"
define ["./messages/#{locale}", "underscore", "./console"],
(messages, _, console) ->
Copyright 2012-2013 The Apache Software Foundation
Licensed under the Apache License, Version 2.0 (the “License”); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http:#www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an “AS IS” BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
For all of these modules, we’ve turned off CoffeeScript’s normal outer function
wrapper, as each module is just a call to define()
with a function that fulfills
the same purpose. This one is different, as it is necessary to compute one of the dependencies.
On the server t5/core/messages/<locale>
is actually generated dynamically, as is a simple
mapping of message keys to message values, from the global application message catalog.
This module provides access to localized messages from the Tapestry applications’ server-side application message catalog (which is, itself, built from multiple resources, some provided by the framework, others provided by the application, or third-party libraries).
Messages in the catalog that contain Java-style format specifiers are not included, as there
is no facility for formatting those on the client. This is actually done as a simple test for the
presence of the %
character. In addition, any message key that begins with “private-“ is
assumed to contain sensitive data (such as database URLs or passwords) and will not be
exposed to the client.
In the unexpected case that the data-locale attribute is missing, assume English
locale = (document.documentElement.getAttribute "data-locale") or "en"
define ["./messages/#{locale}", "underscore", "./console"],
(messages, _, console) ->
Returns the application message catalog message for the given key. Returns a placeholder if the key is not found.
get = (key) ->
value = messages[key]
if value
return value
else
console.error "No value for message catalog key '#{key}' exists."
return "[[Missing Key: '#{key}']]"
Returns all keys that are defined by the underlying catalog, in no specific order.
get.keys = -> _.keys messages
Export get as the main function.
return get