Source code for vmware.vapi.stdlib.client.l10n
"""
Helper classes for client side localization.
"""
__author__ = 'VMware, Inc.'
__copyright__ = 'Copyright (c) 2015 VMware, Inc. All rights reserved.'
from vmware.vapi.l10n.formatter import StringFormatter
[docs]class MessageLocalizer(object):
"""
Helper class to localize vAPI LocalizableMessages.
Before initializating the MessageLocalizer, locale
has to be explicitly set if the user wants a locale
other than English (U.S.).
Typically, at the start of the application, the following
two lines are required to set the locale.
import locale
locale.setlocale(locale.LC_ALL,<locale_type>)
If the locale_type is empty string, locale is set to user's
default setting (typically specified in the LANG environment
variable). Otherwise, the specified locale type has to be
installed in the system.
"""
def __init__(self, bundle, formatter=StringFormatter):
"""
Initialize MessageLocalizer
:type bundle: :class:`vmware.vapi.message.MessageBundle`
:param bundle: Message bundle to retrieve the templates for the
messages
:type formatter: :class:`vmware.vapi.message.MessageFormatter`
:param formatter: Message formatter to format the messages
"""
self._bundle = bundle
self._formatter = formatter
[docs] def localize(self, msg):
"""
Localize a given LocalizableMessage.
:type msg: :class:`com.vmware.vapi.std_client.LocalizableMessage`
:param msg: LocalizableMessage
:rtype: :class:`str`
:return: Localized string
"""
try:
template = self._bundle.get(msg.id)
except KeyError:
raise Exception('Invalid message identifier: %s' % msg.id)
return self._formatter.format_msg(template, msg.args)