| # 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. |
| |
| # ## t5/core/messages |
| # |
| # 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 |