def _assert_translations(self, msg, locale, expected_translation): """Validates that the message translation in the given locale is as expected. For sanity, other locales are tested too and those should result in the same message being passed in. """ self.assertEqual(unicode(msg), gettextutils.get_localized_message(msg, 'en')) self.assertEqual(unicode(msg), gettextutils.get_localized_message(msg, 'XX')) self.assertEqual(unicode(msg), gettextutils.get_localized_message(msg, None)) self.assertEqual(unicode(expected_translation), gettextutils.get_localized_message(msg, locale))
def test_get_localized_message(self): non_message = 'Non-translatable Message' en_message = 'A message in the default locale' es_translation = 'A message in Spanish' zh_translation = 'A message in Chinese' message = gettextutils.Message(en_message, 'test_domain') # In the Message class the translation ultimately occurs when the # message is turned into a string, and that is what we mock here def _mock_translation_and_unicode(self): if self.locale == 'es': return es_translation if self.locale == 'zh': return zh_translation return self.data self.stubs.Set(gettextutils.Message, '__unicode__', _mock_translation_and_unicode) self.assertEqual(es_translation, gettextutils.get_localized_message(message, 'es')) self.assertEqual(zh_translation, gettextutils.get_localized_message(message, 'zh')) self.assertEqual(en_message, gettextutils.get_localized_message(message, 'en')) self.assertEqual(en_message, gettextutils.get_localized_message(message, 'XX')) self.assertEqual(en_message, gettextutils.get_localized_message(message, None)) self.assertEqual(non_message, gettextutils.get_localized_message(non_message, 'A'))