Skip to main content
 首页 » 编程设计

python之Django 中的上下文特定本地化

2025年05月04日25lyhabc

我有一个 Django 应用程序。将其本地化为多种语言是一种简单直接的方法,但网站的一部分是复杂的富互联网应用程序。站点的这一部分允许用户进入他的工作区模式。

一切都保持不变,但术语发生了变化。例如

www.exmaple.com/myria/chemist 
www.exmaple.com/myria/biologist 
www.exmaple.com/myria/physicist 

myria 是我的富互联网应用程序。 chemist、biologist 和 physicist 等词仅表示工作空间。整个 Django 应用程序本身使用相同的代码库,没有其他任何变化。

我正在使用 django-rosetta 来管理翻译,并使用 django-localeurl 来提供基于 URL 的区域设置切换(在网站的正常部分)。

我对如何实现这一点束手无策。也许与站点框架有些混杂?

请您参考如下方法:

简短回答:您不需要它。在大多数情况下,最好在 URL 中使用拉丁字符而不是 %% 转义字符。

长答案:DjangoCMS 为每个页面提供依赖于语言环境的 URL。你可以拼凑这样的东西:

from django.utils.translations import ugettext as _ 
from django import http 
... 
def myria_view(request, localized_workspace): 
    my_workspaces = ( 
       (_('foo'), foo_view), 
       (_('bar'), bar_view), 
       (_('buz'), buz_view), 
    ) 
    for ws in my_workspaces: 
        if ws[0] == localized_workspace: 
            return ws[1](request) 
    raise http.Http404 

但是再一次,不要这样做。太不对了

更新:Django 开箱即用 https://docs.djangoproject.com/en/dev/topics/i18n/internationalization/#translating-url-patterns