簡體   English   中英

如何更改整個 Django CMS 網站的語言?

[英]How can I change the language of a whole Django CMS website?

我想改變從Django的CMS寫一個網站的語言en-usde的方式,在所有現存內容en-us將顯示為de的未來。

我試過

Page.objects.all().update(languages='de')

但后來到處都是404錯誤。

我還需要改變什么?

要更改django CMS站點上所有內容的語言代碼,請運行以下命令(從'en-us'切換到'de'

Page.objects.filter(language='en-us').update('de')
Title.objects.filter(language='en-us').update(language='de')
CMSPlugin.objects.filter(language='en-us').update(language='de')

要添加@ ojii的答案,使用django-cms 3.6.0和django 1.11.20,現在的程序是:

  1. 修改settings.py
#LANGUAGE_CODE = 'en-us'
LANGUAGE_CODE = 'en'
  1. 更新頁面,標題,CMSPlugins(注意Pages的languages ):
Page.objects.filter(languages='en-us').update(languages='en')
Title.objects.filter(language='en-us').update(language='en')
CMSPlugin.objects.filter(language='en-us').update(language='en')

接受的答案與較新版本的 Django CMS 不兼容。 language屬性已更改為languages (另請參閱https://stackoverflow.com/a/56162296/522248 )。 對於頁面的draft mode版本,這包含可用語言的逗號分隔列表。 簡單地搜索確切的語言並將其更新到下一個版本是行不通的。

鑒於我們要將 'nl' 更改為 'nl-nl',以下內容應匹配:

nl,en,de
de,nl,en
en,de,nl
nl

我們不能只搜索 'nl',因為以下必須不匹配:

nl-nl
nl-nl,en

我的解決方案:

from_lang = 'nl'
to_lang = 'nl-nl'

# Match our lang at start, middle or end of list
lang_regex = r'^(.*,)?{}(,.*)?$'.format(from_lang)

# Get all distinct combinations of languages that contain our language
language_combinations = Page.objects\
    .filter(languages__regex=lang_regex)\
    .values('languages')\
    .distinct()

# Create a mapping for each combination, replacing the old for the new lang
language_mappings = [
    (
        page['languages'],
        re.sub(lang_regex, '\\1{}\\2'.format(to_lang), page['languages'])
    ) for page in language_combinations
]

# Update all pages to new lang
for old_languages, new_languages in language_mappings:
    Page.objects\
        .filter(languages=old_languages)\
        .update(languages=new_languages)

# Also update Title and CMSPlugins
Title.objects.filter(language=from_lang).update(language=to_lang)
CMSPlugin.objects.filter(language=from_lang).update(language=to_lang)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM