Django: рдЕрдВрддрд░реНрд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рддреНрд╡рд░рд┐рдд рдЧрд╛рдЗрдб

рд╡рд┐рднрд┐рдиреНрди рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдХрд┐рд╕реА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдФрд░ рдЙрд╕рдХрд╛ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬрд┐рд╕рд╕реЗ рд╕рднреА рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдирд┐рдкрдЯрдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред рд╕рд╛рдордЧреНрд░реА, рдЬрд┐рд╕рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдЖрдЬ рд╣рдо рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, Django рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдЕрдВрддрд░реНрд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг рдкрд░ рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдЧрд╛рдЗрдб рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

рдпрд╣рд╛рдБ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рдХрд┐рд╕реА рднреА рдмрд╛рдд рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдХрд┐рд╕реА рднреА рдкрд╛рдпрдерди рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрдЧрд╛ред рдмреБрдирд┐рдпрд╛рджреА рдмрд╛рддреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдЕрдВрддрд░реНрд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг рдХреЗ рдкреНрд░рдпрд╛рд╕реЛрдВ рдореЗрдВ рддреЗрдЬреА рд▓рд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рд╡рд╛рдХреНрдпрд╛рдВрд╢ рдордВрдЪ рдХреЗ рдЙрдкрдпреЛрдЧ рдкрд░ ред рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рд╕рд╛рдордЧреНрд░реА рдХреЗ рдкрд╛рдардХ рдХреЗ рдкрд╛рд╕ рдПрдХ рдХрд╛рдордХрд╛рдЬреА Django рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╣реИ, рдФрд░ рдЙрд╕рдХреЗ рдкрд╛рд╕ рдПрдХ рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рд╣реИ (рдЖрдк рдЗрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде )ред рдпрджрд┐ рдЖрдкрдиреЗ рдкрд╣рд▓реЗ Django (рд▓реЛрдХрдкреНрд░рд┐рдп рдкрд╛рдпрдерди-рдЖрдзрд╛рд░рд┐рдд рд╡реЗрдм рдлреНрд░реЗрдорд╡рд░реНрдХ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЗ рд▓рд┐рдП рдЗрд╕ рдкрд░ рдкрд╣рд▓реЗ рдирдЬрд╝рд░ рдбрд╛рд▓рдирд╛ рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред



gettextpip install gettextрдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдЧрд╛рдЗрдб , рдФрд░ рдлрд┐рд░ рдЗрд╕ рд▓реЗрдЦ рдкрд░ рд▓реМрдЯреЗрдВред

рдмреБрдирд┐рдпрд╛рджреА рдХрд╛рдо рдкрд░реНрдпрд╛рд╡рд░рдг рд╕реЗрдЯрд┐рдВрдЧреНрд╕


рддреЛ, рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ Django рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╣реИ mysite, рдФрд░ рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╣реИ рдЬрд┐рд╕реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ pollsред рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрдиреА рдЪрд╛рд╣рд┐рдП:

/
    manage.py
    mysite/
        __init__.py
        settings.py
        urls.py
        wsgi.py
    polls/
        migrations/
        __init__.py
        admin.py
        models.py
        tests.py
        views.py

рд╣рдорд╛рд░реЗ рдХрд╛рдо рдХрд╛ рдкрд╣рд▓рд╛ рдЪрд░рдг рдпрд╣ рдЬрд╛рдВрдЪрдирд╛ рд╣реИ рдХрд┐ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдЕрдВрддрд░реНрд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг рд╡рд┐рдХрд▓реНрдк рд╕рдХреНрд░рд┐рдп рд╣реИ рдпрд╛ рдирд╣реАрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдиреЗ рд╣реЛрдВрдЧреЗ mysite/settings.py:

# mysite/settings.py
LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'UTC'
USE_I18N = True
USE_L10N = True
USE_TZ = True

рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдХрд╛ рдЕрдВрддрд░реНрд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг


рдЕрдм рдЖрдкрдХреЛ рдЙрди рд╕рднреА рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рд╡рд┐рднрд┐рдиреНрди рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдЕрдиреБрд╡рд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдорд╛рди рд▓реЗрдВ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдирд┐рдореНрди рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдлрд╝рд╛рдЗрд▓ рд╣реИ polls/templates/polls/index.html:

<!-- polls/templates/polls/index.html -->
<h1>Welcome to our site!</h1>
<p>Here you find polls.</p>

рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

<!-- polls/templates/polls/index.html -->
{% load i18n %}
<h1>{% trans 'WelcomeHeading' %}</h1>
<p>{% trans 'WelcomeMessage' %}</p>

рдпрд╣рд╛рдВ рд╣рдордиреЗ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдкреИрдХреЗрдЬ рдЖрдпрд╛рдд рдХрд┐рдпрд╛ рдФрд░ рд╕рднреА рдкрд╛рдареЛрдВ рдХреЛ рджреГрд╢реНрдп рдирд┐рд░реНрдорд╛рдгреЛрдВ рд╕реЗ рдмрджрд▓ рджрд┐рдпрд╛ trans 'SomeTranslationKeyName'ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд░реВрдк рдореЗрдВ, рдЖрдк рдЕрдиреБрд╡рд╛рдж рдХреБрдВрдЬреА рдХреЗ рд░реВрдк рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЕрдиреБрд╡рд╛рдж рдЧреНрд░рдВрдереЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде, рдЖрдкрдХреЗ рдкрд╛рд╕ рд╣рдореЗрд╢рд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкрд╛рда рд╣реЛрдЧрд╛ рдпрджрд┐ рдХреЛрдИ рдирд┐рд╢реНрдЪрд┐рдд рдХреБрдВрдЬреА рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЕрдиреБрд╡рд╛рдж рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИред

рдкрд╛рдпрдерди рдХреЛрдб рдореЗрдВ рдЕрдВрддрд░реНрд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг


рдпрджрд┐ рдЖрдк рдкрд╛рдпрдерди рдХреЛрдб рдХреЗ рдЕрдВрджрд░ рддрд╛рд░ рдХреЛ рд╕реНрдерд╛рдиреАрдп рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдлрд╝рд╛рдЗрд▓ рдореЗрдВ polls/views.py), рддреЛ рдЖрдкрдХреЛ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЖрдпрд╛рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ ugettextред рдЙрд╕рдХреЗ рд▓рд┐рдП, рдЬреЛ рдХрд╛рдлреА рд╕рд╛рдорд╛рдиреНрдп рд╣реИ, рдЖрдк рдПрдХ рдЙрдкрдирд╛рдо рджреЗ рд╕рдХрддреЗ рд╣реИрдВ _ред рдпрд╣рд╛рдБ рдПрдХ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рд╕реНрдерд╛рдиреАрдпрдХреГрдд рд╕рдВрд╕реНрдХрд░рдг рдХреИрд╕рд╛ рджрд┐рдЦреЗрдЧрд╛ views.py:

# polls/views.py
from django.http import HttpResponse
from django.utils.translation import ugettext as _
def index(request):
    output = _('StatusMsg')
    return HttpResponse(output)

рдЕрдиреБрд╡рд╛рдж рдлрд╝рд╛рдЗрд▓реЗрдВ рдмрдирд╛рдирд╛


рдЕрдм рд╣рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рднрд╛рд╖рд╛ рд╕реЗрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд╡рд╛рдж рдлрд╛рдЗрд▓ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдмрдирд╛рдПрдВ polls/localeрдФрд░ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ pollsрдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ:

django-admin makemessage -l de

рдпрд╣рд╛рдВ deрдЖрдк рдЙрд╕ рднрд╛рд╖рд╛ рдХреЗ рд▓рд┐рдП рд▓реЛрдХреЗрд▓ рдХреЛрдб рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рдЖрдк рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдЗрд╕ рдХрдорд╛рдВрдб рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рд╕реЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд╛рдордЧреНрд░реА рдХреЗ gettextрд╕рд╛рде -рдлрд╛рдЗрд▓ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рд╣реЛрдЧрд╛ polls/locale/de/LC_MESSAGES/django.po:

# polls/locale/de/LC_MESSAGES/django.po
...
#: templates/polls/index.html:3
msgid "WelcomeHeading"
msgstr ""
#: templates/polls/index.html:4
msgid "WelcomeMessage"
msgstr ""

рдЕрдм рдЖрдк рдЗрд╕ рдлрд╛рдЗрд▓ рдореЗрдВ рд▓рд╛рдЗрди рдлреАрдб рджрд░реНрдЬ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

# polls/locale/de/LC_MESSAGES/django.po
...
#: templates/polls/index.html:3
msgid "WelcomeHeading"
msgstr "Willkommen auf unserer Seite!"
#: templates/polls/index.html:4
msgid "WelcomeMessage"
msgstr "Hier findet Ihr Umfragen."

рдЬрдм рдЕрдиреБрд╡рд╛рдж рддреИрдпрд╛рд░ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдорд╛рдВрдб рдЪрд▓рд╛рдХрд░ рд╕рдм рдХреБрдЫ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛:

$ django-admin compilemessages

рдЗрд╕ рдХрдорд╛рдВрдб рдХреЛ рдлрд┐рд░ рд╕реЗ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рдЪрд▓рд╛рдПрдВ pollsред

рдЕрдиреБрд╡рд╛рдж рдХреА рд╕рдВрдЪрд╛рд▓рдирд╢реАрд▓рддрд╛ рдХреЛ рдЬрд▓реНрджреА рд╕реЗ рдЬрд╛рдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рднрд╛рд╖рд╛ рдХреЛрдб рдХреЛ рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛ mysite/settings.pyред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕ рддрд░рд╣:

# mysite/settings.py
LANGUAGE_CODE = 'de'

рдпрджрд┐ рдЖрдк рдЕрдм рдХрд┐рд╕реА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЦреЛрд▓рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕рдХрд╛ рдЬрд░реНрдорди рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╡рд╛рдХреНрдпрд╛рдВрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдХреЛ рдЧрддрд┐ рджреЗрдВ


рдпрджрд┐ рдЖрдк рд╕реНрдерд╛рдиреАрдп рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдкрд░ рдХрд╛рдо рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рдХреНрдпрд╛рдВрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ * .po рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдмрдирд╛рдиреЗ рдФрд░ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ! рдЖрдкрдХреЛ рдмрд╕ рдХреБрдВрдЬрд┐рдпрд╛рдБ WelcomeHeadingрдФрд░ WelcomeMessageрд╡рд╛рдХреНрдпрд╛рдВрд╢ рдмрдирд╛рдиреЗ рдФрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ * .po-files рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрдпрд╛рдд рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╣рдорд╛рд░реА рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдЯреВрд▓ рд╕реНрдерд╛рдкрд┐рдд рд╣реИ Phrase Client, рддреЛ рдЖрдкрдХрд╛ рдХрд╛рдо рдФрд░ рднреА рд╕рд░рд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ .phraseapp.ymlрдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рдореВрд▓ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдПрдХ рд╡рд┐рдиреНрдпрд╛рд╕ рдлрд╛рдЗрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ :

# .phraseapp.yml
phraseapp:
  access_token: <your access token>
  project_id: <your project's id on PhraseApp>
  file_format: po
  pull:
    targets:
        file: "polls/locale/<locale_code>/LC_MESSAGES/django.po

рдлрд┐рд░ рдЖрдкрдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд░реВрдЯ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдорд╛рдВрдб рдЪрд▓рд╛рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ:

phraseapp pull && django-admin compilemessages

рдЗрд╕рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╕рднреА рдЕрдиреБрд╡рд╛рдж рдЕрдкрдбреЗрдЯ рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдкрдХреЗ Django рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рд╣рдорд╛рд░реЗ рдЗрди-рдХреЙрдирдЯреЗрдХреНрд╕реНрдЯ рдПрдбрд┐рдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд╛рд░реНрдп рдХреЛ рдФрд░ рд╕рд░рд▓ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИ ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╕ django-phraseрдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ pip:

pip install django-phrase

рдлрд┐рд░ рдЬрдм рдЖрдк рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ, рддрдм рдХреЗрд╡рд▓ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ In-Context-Editor:

<!-- polls/templates/polls/index.html -->
{% load i18n %}
{% load phrase_i18n %}
{% phrase_javascript %}
<h1>{% trans 'WelcomeHeading' %}</h1>
<p>{% trans 'WelcomeMessage' %}</p>

рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд▓реЛрдбрд┐рдВрдЧ рдХреЗ phrase_i18nрдмрд╛рдж рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП i18nред

рдЕрдВрдд рдореЗрдВ, рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирд┐рдореНрди рдЬреЛрдбрд╝реЗрдВ:

# mysite/settings.py
PHRASE_ENABLED = True
PHRASE_PROJECT_ID = 'YOUR_PROJECT_ID'
PHRASE_PREFIX = '{{__'
PHRASE_SUFFIX = '__}}'

рдЙрд╕рдХреЗ рдмрд╛рдж, рд╕рдм рдХреБрдЫ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред

рд╕реНрдерд╛рди рдЪрдпрди


рдЖрдорддреМрд░ рдкрд░, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕реНрдерд╛рди рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдлрд╝рд╛рдЗрд▓ mysite/settings.pyрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдлрд╝реЙрд░реНрдо рдореЗрдВ рд▓рд╛рдирд╛ рд╣реЛрдЧрд╛ :

# mysite/settings.py
from django.utils.translation import ugettext_lazy as _
...
MIDDLEWARE_CLASSES = (
    ...,
    'django.middleware.locale.LocaleMiddleware',
    ...,
)
...
LANGUAGE_CODE = 'en-us'
LANGUAGES = (
    ('en-us', _('English')),
    ('de', _('German')),
)

рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде, рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдкрд╛рд╕ рдПрдХ рд╕реНрдерд╛рди рд╣реИ German, рддреЛ рдЙрд╕реЗ рдПрдХ рдЕрдиреБрд╡рд╛рдж рд╡рд┐рдХрд▓реНрдк рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ deред рдЕрдиреНрдпрдерд╛, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЕрдиреБрд╡рд╛рдж рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ en-usред рдЖрдк рдЗрд╕ рддрдВрддреНрд░ рдХреЗ рд╕рд╣реА рд╕рдВрдЪрд╛рд▓рди рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ curl:

curl http://localhost:8000/polls -H "Accept-Language: de"

рдЗрд╕ рдХрдорд╛рдВрдб рдХреЛ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╕реЗ рд▓реМрдЯрдирд╛ рдЪрд╛рд╣рд┐рдП:

<h1>Willkommen auf unserer Seite!</h1>
<p>Hier findet Ihr Umfragen.</p>

рд╕рд╛рд░рд╛рдВрд╢


рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдордиреЗ Django рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдЕрдВрддрд░реНрд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг рдХреА рдореВрд▓ рдмрд╛рддреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХреАред рдпрд╣рд╛рдВ рд╣рдордиреЗ рд╡рд╛рдХреНрдпрд╛рдВрд╢ рд╕реЗрд╡рд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХреА, рдЬреЛ рдХрд╛рдо рдХреЛ рдЧрддрд┐ рджреЗрдиреЗ рдФрд░ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИред рд╣рдо рдЖрд╢рд╛ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдиреЗ рдЬреЛ рд╕реАрдЦрд╛ рд╣реИ рд╡рд╣ рдЖрдкрдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИред

рдкреНрд░рд┐рдп рдкрд╛рдардХреЛрдВ! рдЖрдк рдЕрдкрдиреЗ рдкрд╛рдпрдерди рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рдЕрдВрддрд░реНрд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рд╕реЛрдЪрддреЗ рд╣реИрдВ?


All Articles