국제화

다국어 콘텐츠

개요

기본적으로 Wagtail은 모든 콘텐츠가 단일 언어로 작성된다고 가정합니다. 이 문서는 여러 언어로 콘텐츠를 작성하도록 Wagtail을 구성하는 방법을 설명합니다.

참고

Wagtail은 여러 언어로 콘텐츠를 생성하고 제공하기 위한 인프라를 제공합니다. 관리 인터페이스에서 다른 언어 간의 번역을 관리하는 두 가지 옵션이 있습니다: wagtail.contrib.simple_translation 또는 더 고급인 wagtail-localize (타사 패키지).

이 문서는 Wagtail이 관리하는 콘텐츠의 국제화만 다룹니다. 템플릿 파일, JavaScript 코드 등의 정적 콘텐츠를 번역하는 방법에 대한 정보는 Django 국제화 문서를 참조하십시오. 또는 헤드리스 사이트를 구축하는 경우 사용 중인 프런트엔드 프레임워크의 문서를 참조하십시오.

Wagtail의 다국어 콘텐츠 접근 방식

이 섹션에서는 Wagtail의 국제화 접근 방식에 대한 설명을 제공합니다. 급하다면 구성으로 건너뛸 수 있습니다.

요약하자면:

  • Wagtail은 각 로케일에 대해 별도의 페이지 트리에 콘텐츠를 저장합니다.

  • 내장된 Locale 모델이 있으며 모든 페이지는 locale 외래 키 필드를 사용하여 Locale 에 연결됩니다.

  • translation_key 필드에 저장된 공유 UUID를 사용하여 서로 번역된 페이지를 기록합니다.

  • 사이트 홈페이지의 번역을 통해 요청을 자동으로 라우팅합니다.

  • 언어 감지를 위해 Django의 i18n_patternsLocaleMiddleware 를 사용합니다.

페이지 구조

Wagtail은 각 로케일에 대해 별도의 페이지 트리에 콘텐츠를 저장합니다.

예를 들어, 두 로케일에 두 개의 사이트가 있는 경우 탐색기에서 페이지 계층 구조의 최상위 수준에 네 개의 홈페이지가 표시됩니다.

이 접근 방식은 편집자 경험에도 몇 가지 이점이 있습니다.

  • 편집을 위한 기본 언어가 없으므로 콘텐츠를 어떤 언어로든 작성한 다음 다른 언어로 번역할 수 있습니다.

  • 페이지의 번역은 별도의 페이지이므로 다른 시간에 게시할 수 있습니다.

  • 편집자에게 한 로케일의 콘텐츠를 편집할 수 있는 권한을 부여하고 다른 로케일의 콘텐츠는 편집할 수 없도록 할 수 있습니다.

로케일 및 번역이 데이터베이스에 기록되는 방식

모든 페이지(및 번역이 활성화된 모든 스니펫)에는 localetranslation_key 필드가 있습니다.

  • localeLocale 모델에 대한 외래 키입니다.

  • translation_key 는 콘텐츠의 번역을 찾는 데 사용되는 UUID입니다. 동일한 페이지/스니펫의 번역은 이 필드에 동일한 값을 공유합니다.

이 두 필드에는 ‘고유 제약 조건’이 있으므로 동일한 로케일에 두 개 이상의 번역을 가질 수 없습니다.

번역된 홈페이지

Wagtail에서 사이트를 설정할 때 ‘루트 페이지’ 필드에서 사이트의 홈페이지를 선택하면 해당 사이트의 루트 URL에 대한 모든 요청이 해당 페이지로 라우팅됩니다.

다국어 사이트에는 페이지 트리에서 형제로 존재하는 각 로케일에 대한 별도의 홈페이지가 있습니다. Wagtail은 사이트의 ‘루트 페이지’ 번역을 찾아 다른 홈페이지를 찾습니다.

이는 사이트를 다른 로케일에서 사용할 수 있도록 하려면 해당 새 로케일에서 홈페이지를 번역하고 게시하기만 하면 된다는 의미입니다.

Wagtail이 사용자 언어와 일치하는 홈페이지를 찾을 수 없는 경우 사이트 레코드에서 ‘루트 페이지’로 선택된 페이지로 대체되므로 이 필드를 사용하여 사이트의 기본 언어를 지정할 수 있습니다.

언어 감지 및 라우팅

사용자 언어를 감지하고 URL에 접두사(/en/, /fr-fr/ 등)를 추가하기 위해 Wagtail은 Django의 내장 국제화 유틸리티(예: i18n_patternsLocaleMiddleware)와 함께 작동하도록 설계되었습니다. 이는 Wagtail이 사이트의 다른 국제화된 Django 애플리케이션과 원활하게 작동해야 함을 의미합니다.

로케일

사이트에서 활성화된 로케일은 wagtailcoreLocale 모델에 기록됩니다. 이 모델에는 ID와 language_code 라는 두 개의 필드만 있으며, 이 필드는 이 로케일을 나타내는 BCP-47 언어 태그를 저장합니다.

로케일 레코드는 선택적 관리 UI로 설정하거나 셸에서 생성할 수 있습니다. language_code 필드의 가능한 값은 WAGTAIL_CONTENT_LANGUAGES 설정에 의해 제어됩니다.

참고

국제화를 활성화하기 전에 LANGUAGE_CODE 를 변경한 경우 이 내용을 읽으십시오.

초기 마이그레이션 시 Wagtail은 마이그레이션이 실행될 때 LANGUAGE_CODE 설정에 설정된 언어에 대한 Locale 레코드를 생성합니다. Wagtail의 국제화가 비활성화되면 모든 페이지가 이 Locale 에 할당됩니다.

Wagtail 2.11로 업데이트한 이후 LANGUAGE_CODE 설정을 변경한 경우, 국제화를 활성화하기 전에 Locale 모델의 레코드도 수동으로 업데이트해야 합니다. 기존 콘텐츠가 이전 코드로 할당되기 때문입니다.

구성

이 섹션에서는 여러 언어로 콘텐츠를 작성할 수 있도록 하는 데 필요한 최소 구성을 살펴봅니다.

국제화 활성화

Django와 Wagtail 모두에서 국제화를 활성화하려면 다음 설정을 True 로 설정하십시오.

# my_project/settings.py

USE_I18N = True
WAGTAIL_I18N_ENABLED = True

또한 Django의 지역화 지원을 활성화할 수도 있습니다. 이렇게 하면 날짜와 숫자가 사용자의 로컬 형식으로 표시됩니다.

# my_project/settings.py

USE_L10N = True

사용 가능한 언어 구성

다음으로 사용 가능한 언어를 구성해야 합니다. 이를 위한 두 가지 설정이 있으며 각각 다른 목적으로 사용됩니다.

  • LANGUAGES - 사이트의 프런트엔드에서 사용할 수 있는 언어를 설정합니다.

  • WAGTAIL_CONTENT_LANGUAGES - Wagtail 콘텐츠를 작성할 수 있는 언어를 설정합니다.

이 두 설정을 정확히 동일한 값으로 설정할 수 있습니다. 예를 들어, 영어, 프랑스어, 스페인어를 활성화하려면:

# my_project/settings.py

WAGTAIL_CONTENT_LANGUAGES = LANGUAGES = [
    ('en', "English"),
    ('fr', "French"),
    ('es', "Spanish"),
]

참고

WAGTAIL_CONTENT_LANGUAGES 가 변경될 때마다 Locale 모델도 일치하도록 업데이트해야 합니다.

이는 데이터 마이그레이션을 통해 수행하거나 다음 섹션에 설명된 선택적 로케일 관리 UI를 통해 수행할 수 있습니다.

이들을 다른 값으로 설정할 수도 있습니다. 예를 들어, 일부 프로그래밍 방식의 지역화(예: 날짜 형식 또는 통화)를 원하지만 여러 지역에서 동일한 Wagtail 콘텐츠를 사용하려는 경우 이렇게 할 수 있습니다.

# my_project/settings.py

LANGUAGES = [
    ('en-GB', "English (Great Britain)"),
    ('en-US', "English (United States)"),
    ('en-CA', "English (Canada)"),
    ('fr-FR', "French (France)"),
    ('fr-CA', "French (Canada)"),
]

WAGTAIL_CONTENT_LANGUAGES = [
    ('en-GB', "English"),
    ('fr-FR', "French"),
]

이렇게 구성하면 사이트는 첫 번째 목록의 모든 다른 로케일에서 사용할 수 있지만 Wagtail에는 두 개의 언어 트리만 있습니다.

모든 en- 로케일은 “영어” 언어 트리를 사용하고, fr- 로케일은 “프랑스어” 언어 트리를 사용합니다. 언어의 각 로케일 간의 차이는 프로그래밍 방식일 수 있습니다. 예를 들어, 사용할 날짜/숫자 형식 및 가격을 표시할 통화입니다.

로케일 관리 UI 활성화 (선택 사항)

Wagtail 관리자가 Wagtail 관리 인터페이스에서 로케일을 설정할 수 있도록 하는 선택적 로케일 관리 앱이 있습니다.

활성화하려면 wagtail.localesINSTALLED_APPS 에 추가하십시오.

# my_project/settings.py

INSTALLED_APPS = [
    # ...
    'wagtail.locales',
    # ...
]

URL에 언어 접두사 추가

모든 페이지 트리가 동일한 도메인에서 제공되도록 하려면 각 언어에 대한 URL 접두사를 추가해야 합니다.

이를 구현하기 위해 Django의 내장 i18n_patterns() 함수를 사용할 수 있습니다. 이 함수는 전달된 모든 URL 패턴에 언어 접두사를 추가합니다. 이렇게 하면 URL에 지정된 언어 코드가 활성화되고 Wagtail은 요청을 라우팅하는 방법을 결정할 때 이를 고려합니다.

프로젝트의 urls.py 에 Wagtail의 핵심 URL(및 번역하려는 다른 URL)을 i18n_patterns 블록에 추가하십시오.

# /my_project/urls.py

# ...

from django.conf.urls.i18n import i18n_patterns

# 번역 불가능한 URL
# 참고: Wagtail API 또는 사이트맵을 사용하는 경우,
# 이들도 `i18n_patterns` 에 추가해서는 안 됩니다.
urlpatterns = [
    path('django-admin/', admin.site.urls),

    path('admin/', include(wagtailadmin_urls)),
    path('documents/', include(wagtaildocs_urls)),
]

# 번역 가능한 URL
# 이들은 언어 코드 접두사 아래에서 사용할 수 있습니다. 예를 들어 /en/search/
urlpatterns += i18n_patterns(
    path('search/', search_views.search, name='search'),
    path("", include(wagtail_urls)),
)
기본 언어에 대한 언어 접두사 우회

기본 언어의 URL이 언어 접두사 없이 정상적으로 해결되도록 하려면 i18n_patternsprefix_default_language 매개변수를 False 로 설정할 수 있습니다. 예를 들어, 언어가 다음과 같이 구성된 경우:

# myproject/settings.py

# ...

LANGUAGE_CODE = 'en'
WAGTAIL_CONTENT_LANGUAGES = LANGUAGES = [
    ('en', "English"),
    ('fr', "French"),
]

# ...

그리고 urls.py 가 다음과 같이 구성된 경우:

# myproject/urls.py
# ...

# 이 URL은 LANGUAGE_CODE에서 기본값으로 설정되지 않은 언어에 대해서만 언어 코드 접두사 아래에서 사용할 수 있습니다.

urlpatterns += i18n_patterns(
    path('search/', search_views.search, name='search'),
    path("", include(wagtail_urls)),
    prefix_default_language=False,
)

이제 URL은 웹사이트의 프랑스어 버전에 대해서만 접두사가 붙습니다. 예를 들어:

- /search/
- /fr/search/

사용자 언어 자동 감지

i18n_patterns 로 URL 패턴을 래핑한 후 사이트는 이제 URL 접두사에 응답합니다. 그러나 이제 루트 경로에는 응답하지 않습니다.

이를 해결하려면 사용자의 브라우저 언어를 감지하고 가장 적합한 언어 접두사로 리디렉션해야 합니다. 이를 수행하는 권장 방법은 Django의 LocaleMiddleware 를 사용하는 것입니다.

# my_project/settings.py

MIDDLEWARE = [
    # ...
    'django.middleware.locale.LocaleMiddleware',
    # ...
]

사용자 정의 라우팅/언어 감지

이를 위해 i18n_patterns 또는 LocaleMiddleware 를 반드시 사용해야 하는 것은 아니며 필요한 경우 자체 로직을 작성할 수 있습니다.

Wagtail에 필요한 것은 wagtail.views.serve 뷰가 호출되기 전에 언어가 활성화되는 것입니다(Django의 django.utils.translation.activate 함수 사용).

국제화된 사이트를 위한 레시피

언어/지역 선택기

아마도 사이트에 추가할 수 있는 국제화 관련 UI 중 가장 중요한 부분은 사용자가 다른 언어 간에 전환할 수 있도록 하는 선택기일 것입니다.

이것이 필요하다고 확신하지 못한다면, 몇 가지 근거에 대해 https://www.w3.org/International/questions/qa-site-conneg#stickiness를 살펴보십시오.

기본 예제

다음은 페이지 번역 간에 링크를 추가하는 방법에 대한 기본 예제입니다.

그러나 이 예제는 WAGTAIL_CONTENT_LANGUAGES 에 정의된 언어만 포함하고 LANGUAGES 에 정의될 수 있는 추가 언어는 포함하지 않습니다. 이 두 설정의 의미에 대한 자세한 내용은 사용 가능한 언어 구성을 참조하십시오.

두 설정이 동일한 값으로 설정된 경우 이 예제는 잘 작동할 것입니다. 그렇지 않으면 이를 고려하는 더 복잡한 예제가 있는 다음 섹션으로 건너뛰십시오.

{# 이들이 파일 맨 위에 있는지 확인하십시오 #}
{% load wagtailcore_tags %}

{% if page %}
    {% for translation in page.get_translations.live %}
        <a href="{% pageurl translation %}" rel="alternate" hreflang="{{ translation.locale.language_code }}">
            {{ translation.locale.language_name_local }}
        </a>
    {% endfor %}
{% endif %}

이를 분석해 봅시다.

{% if page %}
    ...
{% endif %}

이것이 공유 기본 템플릿의 일부인 경우 404 오류 응답과 같이 페이지 개체를 사용할 수 없는 상황에서 사용될 수 있으므로 진행하기 전에 페이지가 있는지 확인하십시오.

{% for translation in page.get_translations.live %}
    ...
{% endfor %}

for 블록은 현재 페이지의 게시된 모든 번역을 반복합니다.

<a href="{% pageurl translation %}" rel="alternate" hreflang="{{ translation.locale.language_code }}">
    {{ translation.locale.language_name_local }}
</a>

이것은 번역에 대한 링크를 추가합니다. {{ translation.locale.language_name_local }} 을 사용하여 로케일의 이름을 해당 언어로 표시합니다. 또한 SEO를 위해 <a> 태그에 relhreflang 속성을 추가합니다. translation.localeLocale 모델의 인스턴스입니다.

또는 Django의 내장 태그를 사용하여 번역 언어에 대한 정보를 가져올 수 있습니다. 자세한 내용은 Django 문서의 {% get_language_info %}를 참조하십시오.

{% load i18n %}

{% get_language_info for translation.locale.language_code as lang %}
콘텐츠를 공유하는 로케일 처리

페이지를 반복하는 대신 이 예제는 구성된 모든 언어를 반복하고 각 언어에 대한 페이지를 찾습니다. 이는 기본 예제보다 더 잘 작동합니다. 위의 예제는 동일한 Wagtail 콘텐츠를 공유하는 추가 Django LANGUAGES 가 있는 사이트에서 더 잘 작동합니다.

이 예제가 작동하려면 먼저 Django의 django.template.context_processors.i18n 컨텍스트 프로세서를 TEMPLATES 설정에 추가해야 합니다.

# myproject/settings.py

TEMPLATES = [
    {
        # ...
        'OPTIONS': {
            'context_processors': [
                # ...
                'django.template.context_processors.i18n',
            ],
        },
    },
]

이제 예제 자체입니다.

{% for language_code, language_name in LANGUAGES %}
    {% get_language_info for language_code as lang %}

    {% language language_code %}
        <a href="{% pageurl page.localized %}" rel="alternate" hreflang="{{ language_code }}">
            {{ lang.name_local }}
        </a>
    {% endlanguage %}
{% endfor %}

이것도 분석해 봅시다.

{% for language_code, language_name in LANGUAGES %}
    ...
{% endfor %}

for 블록은 사이트에 구성된 모든 언어를 반복합니다. LANGUAGES 변수는 django.template.context_processors.i18n 컨텍스트 프로세서에서 가져옵니다.

{% get_language_info for language_code as lang %}

이전 예제와 정확히 동일하게 작동합니다.

{% language language_code %}
    ...
{% endlanguage %}

language 태그는 Django의 i18n 태그 라이브러리에서 가져옵니다. 이 태그는 내부에 포함된 코드에 대해서만 활성 언어를 변경합니다.

<a href="{% pageurl page.localized %}" rel="alternate" hreflang="{{ language_code }}">
    {{ lang.name_local }}
</a>

여기서 <a> 태그와 이전 예제의 <a> 태그의 유일한 차이점은 페이지의 URL을 가져오는 방법입니다: {% pageurl page.localized %}.

Wagtail의 모든 페이지 인스턴스에는 현재 활성 언어로 페이지의 번역을 가져오는 .localized 속성이 있습니다. 이것이 이전에 언어를 활성화한 이유입니다.

또 다른 차이점은 동일하게 번역된 페이지가 두 로케일에서 공유되는 경우 Wagtail이 현재 활성 로케일을 기반으로 페이지에 대한 올바른 URL을 생성한다는 것입니다. 이것이 이 예제와 이전 예제의 주요 차이점입니다. 이전 예제는 기본 로케일에서만 페이지의 URL을 가져올 수 있기 때문입니다.

헤드리스 사이트를 위한 API 필터

헤드리스 사이트의 경우 Wagtail API는 국제화된 사이트에 대해 두 가지 추가 필터를 지원합니다.

  • ?locale= 주어진 로케일로 페이지 필터링

  • ?translation_of= 주어진 페이지 ID의 번역만 포함하도록 페이지 필터링

자세한 내용은 국제화된 사이트를 위한 특수 필터를 참조하십시오.

번역 가능한 스니펫

wagtail.models.TranslatableMixin 을 상속받도록 하여 스니펫을 번역 가능하게 만들 수 있습니다. 예시:

# myapp/models.py

from django.db import models

from wagtail.models import TranslatableMixin
from wagtail.snippets.models import register_snippet


@register_snippet
class Advert(TranslatableMixin, models.Model):
    name = models.CharField(max_length=255)

TranslatableMixin 모델은 localetranslation_key 필드를 모델에 추가합니다.

기존 데이터가 있는 스니펫을 번역 가능하게 만들기

기존 데이터가 있는 스니펫의 경우 TranslatableMixin 을 추가하고 마이그레이션을 만들고 실행하는 것만으로는 불가능합니다. 이는 localetranslation_key 필드가 모두 필수이며 translation_key 는 각 인스턴스에 대해 고유한 값이 필요하기 때문입니다.

기존 데이터를 올바르게 마이그레이션하려면 먼저 이러한 제약 조건을 제외하는 BootstrapTranslatableMixin 을 사용한 다음, 두 필드를 설정하는 데이터 마이그레이션을 추가한 다음, TranslatableMixin 으로 전환해야 합니다.

이는 데이터베이스에 레코드가 있는 경우에만 필요합니다. 따라서 모델이 비어 있으면 TranslatableMixin 을 추가하고 이 단계를 건너뛸 수 있습니다.

1단계: 모델에 BootstrapTranslatableMixin 추가

이렇게 하면 제약 조건 없이 두 필드가 추가됩니다.

# myapp/models.py

from django.db import models

from wagtail.models import BootstrapTranslatableMixin
from wagtail.snippets.models import register_snippet


@register_snippet
class Advert(BootstrapTranslatableMixin, models.Model):
    name = models.CharField(max_length=255)

    # 모델에 Meta 클래스가 있는 경우,
    # BootstrapTranslatableMixin.Meta도 상속받도록 하십시오.
    class Meta(BootstrapTranslatableMixin.Meta):
        verbose_name = 'adverts'

스키마 마이그레이션을 생성하려면 python manage.py makemigrations myapp 을 실행하십시오.

2단계: 데이터 마이그레이션 생성

다음 명령을 사용하여 데이터 마이그레이션을 생성하십시오.

python manage.py makemigrations myapp --empty

이렇게 하면 앱의 migrations 폴더에 새 빈 마이그레이션이 생성됩니다. 해당 마이그레이션을 편집하고 해당 앱에서 부트스트랩할 각 모델에 대해 BootstrapTranslatableModel 을 추가하십시오.


from django.db import migrations
from wagtail.models import BootstrapTranslatableModel

class Migration(migrations.Migration):
    dependencies = [
        ('myapp', '0002_bootstraptranslations'),
    ]

    # 여기에 부트스트랩할 각 모델에 대한 작업을 하나씩 추가하십시오.
    # 참고: 동일한 앱에 있는 모델만 포함하십시오!
    operations = [
        BootstrapTranslatableModel('myapp.Advert'),
    ]

부트스트랩할 모델이 포함된 다른 앱에 대해서도 이 작업을 반복하십시오.

3단계: BootstrapTranslatableMixinTranslatableMixin 으로 변경

이제 필요한 필드를 채우는 마이그레이션이 있으므로 BootstrapTranslatableMixin 을 모든 제약 조건이 있는 TranslatableMixin 으로 바꿀 수 있습니다.

# myapp/models.py

from wagtail.models import TranslatableMixin  # 이 줄을 변경하십시오.

@register_snippet
class Advert(TranslatableMixin, models.Model):  # 이 줄을 변경하십시오.
    name = models.CharField(max_length=255)

    class Meta(TranslatableMixin.Meta):  # 이 줄을 변경하십시오 (있는 경우).
        verbose_name = 'adverts'
4단계: makemigrations 를 실행하여 스키마 마이그레이션을 생성한 다음 마이그레이션하십시오!

makemigrations 를 실행하여 데이터베이스에 제약 조건을 추가하는 스키마 마이그레이션을 생성한 다음, migrate 를 실행하여 모든 마이그레이션을 실행하십시오.

python manage.py makemigrations myapp
python manage.py migrate

nullable 필드 ‘locale’이 non-nullable로 변경되는 것에 대한 수정 사항을 선택하라는 메시지가 표시되면 “지금은 무시” 옵션을 선택하십시오(데이터 마이그레이션에서 처리되었으므로).

번역 워크플로

처음에 언급했듯이 Wagtail은 wagtail.contrib.simple_translation 을 제공합니다.

simple_translation 모듈은 사용자가 페이지와 번역 가능한 스니펫을 다른 언어로 복사할 수 있는 사용자 인터페이스를 제공합니다.

  • 복사본은 원본 언어로 생성됩니다(번역되지 않음).

  • 페이지 복사본은 초안 상태입니다.

콘텐츠 편집자는 콘텐츠를 번역하고 페이지를 게시해야 합니다.

활성화하려면 "wagtail.contrib.simple_translation"INSTALLED_APPS 에 추가하고 python manage.py migrate 를 실행하여 submit_translation 권한을 생성하십시오. Wagtail 관리자에서 설정으로 이동하여 일부 사용자 또는 그룹에 “번역 제출 가능” 권한을 부여하십시오.

참고

Simple Translation은 선택 사항입니다. 더 고급인 wagtail-localize와 같은 타사 패키지로 교체할 수 있습니다.

Wagtail Localize

Wagtail 코어의 국제화를 구현하기 위한 초기 작업의 일환으로 wagtail-localize 라는 번역 패키지도 만들었습니다. 이 패키지는 PO 파일, 기계 번역 및 번역 서비스와의 외부 통합을 사용하여 Wagtail 내에서 페이지를 번역하는 것을 지원합니다.

GitHub: https://github.com/wagtail/wagtail-localize

대체 국제화 플러그인

Wagtail에 공식 다국어 지원이 추가되기 전에 사이트 구현자는 외부 플러그인을 사용해야 했습니다. 이들은 Wagtail 자체 구현으로 대체되지 않았습니다. 약간 다른 접근 방식을 사용하므로 그 중 하나가 사용 사례에 더 적합할 수 있습니다.

이러한 옵션에 대한 비교는 AccordBox의 블로그 게시물 Wagtail CMS에서 다국어 지원 방법을 참조하십시오.

Wagtail 관리자 번역

Wagtail 관리자 백엔드는 여러 다른 언어로 번역되었습니다. Wagtail의 Transifex 페이지에서 현재 사용 가능한 번역 목록을 찾을 수 있습니다. (참고: 이전 버전의 Wagtail을 사용하는 경우 이 페이지가 사용 가능한 언어를 정확하게 반영하지 않을 수 있습니다.)

해당 페이지에 언어가 나열되어 있지 않으면 새 언어를 쉽게 기여하거나 실수를 수정할 수 있습니다. Transifex에 가입하여 변경 사항을 제출하십시오. 번역 업데이트는 일반적으로 제출 후 한 달 이내에 공식 릴리스에 병합됩니다.

사용자별 Wagtail 관리자 언어 변경

로그인한 사용자는 /admin/account/ 에서 선호하는 언어를 설정할 수 있습니다. 기본적으로 Wagtail은 90% 이상의 번역 범위를 가진 언어 목록을 제공합니다. WAGTAILADMIN_PERMITTED_LANGUAGES 설정을 통해 이 목록을 재정의할 수 있습니다.

허용되는 언어가 0개 또는 1개인 경우 양식은 숨겨집니다.

사용자가 언어를 선택하지 않은 경우 LANGUAGE_CODE 가 사용됩니다.

Wagtail 설치의 기본 언어 변경

Wagtail의 기본 언어는 en-us(미국 영어)입니다. 몇 가지 Django 설정을 조정하여 변경할 수 있습니다.

  • USE_I18NTrue 로 설정되어 있는지 확인하십시오.

  • LANGUAGE_CODE를 웹사이트의 기본 언어로 설정하십시오.

언어에 대한 번역이 있는 경우 Wagtail 관리자 백엔드는 이제 선택한 언어로 표시됩니다.