我想开发一个网站有2种语言,一个默认的,我的母语和一个可选的英语.我计划将我的域设置为:

www.mydomain.com/tr/
www.mydomain.com/en/

默认情况下,一旦用户输入mydomain.com.他们将被重定向至/tr/版本,并 Select 通过顶部菜单转到/en/.这是我的问题.

什么是最好的Django方式来维护两种语言,请注意,我不想要自动翻译,但我想自己维护两种语言的文本.

谢谢

推荐答案

在我看来,您有两个主要 Select :

(1)您可以保留两个单独的站点副本作为不同的Django应用程序,只需将您的urlconf点指向这些应用程序--因此url(r'^/en/', include(myproject.en))将在您的urlconf中指向您的英语应用程序,而另一个指向另一种语言.这将涉及到为这两个应用程序维护不同的urlconfs集和不同的html模板等,如果您想让URL本身也反映不同的语言(例如,西班牙语"/pagina/uno"vs英语"/page/one"),这可能会很有用.

(2)使用Django sessions将语言首选项记录在cookie中(无论如何都应该这样做),然后让模板从该cookie提供您喜欢的文本的适当版本.此操作的代码可能是:

# views.py

# default to your native language
request.session['lang'] = 'tr'

# someone clicks the link to change to English
def switch_to_English_link(request):
    request.session['lang'] = 'en'

然后在模板中,要收集此信息,您可以使用:

<!-- my_django_template.html -->
<div>
  <span>
     {% if request.session.lang == "en" %}
        This is my text in English!
     {% else %}
        Şimdi benim sitede Türk var!
     {% endif %}
  </span>
</div>

Django相关问答推荐

__init__()获取了意外的关键字参数';id';

没有与给定查询匹配的监视列表

如何保护单个数据库行/模型实例?

情节主题更改问题

如何访问 django 模板中的字典值?

测试 - 两个类共享相同的登录代码,但它只能在一个类中工作

如何在两个字段上查找 django 模型的副本?

使用 Pytest 在 Django 中编写测试用例时如何加载特定目录中的所有固定装置

NoneType对象没有属性保存Django

为什么在 Docker 映像中运行我的 Django 应用程序后下载属性不再起作用?

如何使用自定义 AdminSite 类?

如何将 Django forms.ChoiceField 呈现为 Twitter Bootstrap 下拉菜单

django npm 和 node 包架构

Django - 如何从模型实例中获取管理员 URL

如何将 ManyToManyField 呈现为复选框?

如何在 django 2.0 admin 中使用 allow_tags?

Django 多项 Select 字段/复选框 Select 多个

Django:按位置排序,忽略 NULL

将 AND 和 OR 与 Q 对象组合的 Django 查询过滤器不返回预期结果

我将如何package打包和销售 Django 应用程序?