def test_restores_old_language(self):
     """get_all_translations() restores old active language"""
     get_language = Mock(return_value='old language')
     with patch('django.utils.translation.get_language', get_language):
         with patch('django.utils.translation.activate') as activate:
             with patch_settings(LANGUAGES=(('fi', 'Finnish'),)):
                 get_all_translations('a message id')
     self.assertEqual(activate.call_args,
                      (('old language',), {}))
 def test_ugettext_plural(self):
     """get_all_translations() doesn't call ugettext for plural msgids"""
     with patch('django.utils.translation.ugettext') as ugettext:
         with patch_settings(LANGUAGES=(('fi', 'Finnish'),)):
             translations = get_all_translations('a message id',
                                                 'plural message id')
     self.assertFalse(ugettext.called)
Example #3
0
def get_translations(request):
    """
    Remember to encode quotes as html entities!
    """
    if request.method == 'POST':
        data = extract_form_data(request.POST)
        save_translations(data, PoFileSession())
        return HttpResponse('OK', content_type='text/plain')
    else:
        response = get_all_translations(request.GET['msgid'],
                                        request.GET.get('msgid_plural'))
        return HttpResponse(simplejson.dumps(response),
                            content_type='application/json')
    def test_ugettext_singular(self):
        """get_all_translations() calls ugettext for only-singular msgids"""
        data = {'ugettext_calls': []}

        def activate(langcode, data=data):
            data['langcode'] = langcode

        def ugettext(msgid, data=data):
            data['ugettext_calls'].append((msgid, data['langcode']))
            return '%s in %s' % (msgid, data['langcode'])

        with patch('django.utils.translation.activate', activate):
            with patch('django.utils.translation.ugettext', ugettext):
                with patch_settings(LANGUAGES=(('fi', 'Finnish'),
                                               ('sv', 'Swedish'))):
                    translations = get_all_translations('a message id')
        self.assertEqual(data['ugettext_calls'],
                         [('a message id', 'fi'), ('a message id', 'sv')])
    def test_results_singular(self):
        """get_all_translations() gives good translations for singular msgids"""
        get_language = Mock(return_value='en-us')

        data = {}

        def activate(langcode, data=data):
            data['langcode'] = langcode

        def ugettext(msgid, data=data):
            return '%s in %s' % (msgid, data['langcode'])

        with patch('django.utils.translation.activate', activate):
            with patch('django.utils.translation.ugettext', ugettext):
                with patch_settings(LANGUAGES=(('fi', 'Finnish'),
                                               ('sv', 'Swedish'))):
                    translations = get_all_translations('a message id')
        self.assertEqual(translations.keys(), ['singular'])
        self.assertEqual(translations['singular']['msgid'], 'a message id')
        self.assertEqual(translations['singular']['msgstrs'],
                         [('fi', 'a message id in fi'),
                          ('sv', 'a message id in sv')])
    def test_ungettext_plural(self):
        """get_all_translations() calls ungettext for msgids with plurals"""
        data = {'ungettext_calls': []}

        def activate(langcode, data=data):
            data['langcode'] = langcode

        def ungettext(msgid, msgid_plural, count, data=data):
            data['ungettext_calls'].append(
                (msgid, msgid_plural, count, data['langcode']))
            return '%s/%s(%d) in %s' % (
                msgid, msgid_plural, count, data['langcode'])

        with patch('django.utils.translation.activate', activate):
            with patch('django.utils.translation.ungettext', ungettext):
                with patch_settings(LANGUAGES=(('fi', 'Finnish'),
                                               ('sv', 'Swedish'))):
                    translations = get_all_translations('a message id',
                                                        'plural message id')
        self.assertEqual(data['ungettext_calls'],
                         [('a message id', 'plural message id', 1, 'fi'),
                          ('a message id', 'plural message id', 2, 'fi'),
                          ('a message id', 'plural message id', 1, 'sv'),
                          ('a message id', 'plural message id', 2, 'sv')])