国际化,切换语言的一些问题
Posted
技术标签:
【中文标题】国际化,切换语言的一些问题【英文标题】:Internationalization, some problems with switching languages 【发布时间】:2013-07-26 14:49:49 【问题描述】:我有一个英文网站,想添加俄文。 设置.py
LANGUAGE_CODE = 'zh'
语言 = ( ('en', ('English')), ('ru', ('俄语')), )
MIDDLEWARE_CLASSES = ( 'django.middleware.common.CommonMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.locale.LocaleMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', # 取消注释下一行以获得简单的点击劫持保护: # 'django.middleware.clickjacking.XFrameOptionsMiddleware', )
urls.py
url(r'^i18n/', 包含('django.conf.urls.i18n')),
简单形式的 grom django 文档
> <form action="/i18n/setlang/" method="post" id="language-select">
> <input name="next" type="hidden" value="/" />
> % csrf_token %
> <select name="language">
> % for lang in LANGUAGES %
> <option value=" lang.0 "> lang.1 </option>
> % endfor %
> </select>
> <input type="submit" value="Go" /> </form>
我安装 gettext,添加“locale”文件夹(在项目文件夹中,靠近 manage.py)。使用 .po 文件创建“ru 文件夹”并添加一些翻译。但是在更改语言后,它会返回 [26/Jul/2013 13:43:32] "POST /i18n/setlang/ HTTP/1.1" 302 0 并重定向到英文页面。这里有什么问题?
【问题讨论】:
你在 settings.py - USE_I18N=True ? 是的,USE_I18N = True,USE_L10N = True 你在 locale/ru/ 中也有 .mo 文件吗? 【参考方案1】:你必须把django.middleware.locale.LocaleMiddleware
after django.contrib.sessions.middleware.SessionMiddleware
和 before django.middleware.common.CommonMiddleware
例子:
MIDDLEWARE_CLASSES = (
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.middleware.common.CommonMiddleware',
)
https://docs.djangoproject.com/en/dev/topics/i18n/translation/#how-django-discovers-language-preference
【讨论】:
谢谢,但这对主要问题没有帮助。 Сan 你粘贴 html 代码,该代码由以下代码生成:% for lang in LANGUAGES % 在语言中 (('en', 'English'), ('ru', 'Russian')) 。 HTML 代码: 我在那里找到了解决方案 ***.com/questions/14031753/… 。我在设置中有 LOCALE_PATHS = (os.path.join(os.path.dirname(file),'locale'), ) 行,但只有当我将 'locale' 更改为 ' ../locale/'【参考方案2】:您是否在 urls.py 中使用 i18n_patterns 作为支持两种语言的 URL?
from django.conf.urls import include, url
from django.conf.urls.i18n import i18n_patterns
urlpatterns += i18n_patterns(
url(r'^about/$', views.anything, name='about'),
)
https://docs.djangoproject.com/en/1.9/topics/i18n/translation/#language-prefix-in-url-patterns
【讨论】:
以上是关于国际化,切换语言的一些问题的主要内容,如果未能解决你的问题,请参考以下文章