2017-05-03 3 views
0

ich django und das Standard-Internationalisierung Paket verwenden wie in der gezeigt: in Form des Benutzers auf dem Web und mobilenWie übersetzt man eine Länderliste in einem django views.py?

excellent marina mele tuto. habe ich in den Sprache Benutzer eine Liste der Ländernamen zeigen.

Um die Länderliste zu erstellen, habe ich vor, django-country zu verwenden, es scheint einfach und gut dokumentiert.

Ich könnte eine API, keine Vorlage, um die Liste der Länder zu beantragen.

Aber wie übersetzt man diese Länderliste in der views.py?

Jedes Beispiel wäre willkommen.

Dank

Antwort

0

Sie einen Blick auf django-modeltranslation nehmen konnte, wird die Bibliothek zu tun Übersetzung aus dem Modelldaten verwendet.

Andernfalls, wenn Sie eine Liste von Ländern übersetzen möchten, können Sie eine neue Liste erstellen und die integrierten Django-Übersetzungstools für jedes Element in der Liste verwenden.

+0

Es scheint gut ... ich bin auf der Suche nach Codebeispielen, um wirklich zu verstehen – alvaro562003

0

Ich nehme an, Sie sprechen über django-countries? Sie sollten nichts anderes tun müssen, als sicherzustellen, dass die Sprache Ihres Benutzers aktiviert ist translation.activate(language), die auch in Djangos Middleware behandelt wird, wenn Sie i18n_urlpatterns verwenden. Von dort wird es die eingebaute gettext-Maschinerie verwenden, um den Ländernamen in der Sprache des Benutzers abzurufen.

Sie können die Länder Objekte in einem Serializer mit django_countries.serializer_fields.CountryField, oder in einer Ansicht mit

from django_countries import countries 
from django.http import JsonResponse 

def countries_list(request): 
    for code, name in list(countries): 
     print(code, name) 

    return JsonResponse({ 
     code: name for code, name in list(countries) 
    }) 

verwenden Oder aber Sie möchten. In einer Vorlage:

{% load countries %} 
{% get_country 'BR' as country %} 
{{ country.name }} 

sollte funktionieren, solange die Sprache Ihres Benutzers aktiviert ist.

+0

In einer Vorlage funktioniert es perfekt. Aber ich habe keine Vorlage. Da der Code in der mobilen App und im Web laufen muss, programmiere ich eine API. Vielen Dank – alvaro562003

0

Schließlich bin ich mit einem einfachen Array

TranslatedCountries = { 
'france': { 
       'en': u'france', 
       'fr': u'france', 
       }, 

'belgium': { 
       'en': u'belgium', 
       'fr': u'belgique', 
       }, 
'spain': { 
       'en': u'spain', 
       'fr': u'espagne', 
       }, 
'morocco': { 
       'en': u'morocco', 
       'fr': u'maroc', 
       }, 

}

und ich auf sie zugreifen:

try: 
      CCC = TranslatedCountries[test_country.lower()][user_language.lower()] 
     except : 
      print "The country %s is not defines for the language %s" % (test_country.lower(),user_language.lower()) 
      CCC = test_country 

print CCC 

Ich hoffe jemand uns geben wil eine einfachere, schnellere und sauberere Lösung. Danke dir für deine Hilfe. Al

Verwandte Themen