簡體   English   中英

翻譯 'Django-Oscar'

[英]Translating 'Django-Oscar'

我想學習如何構建一個開源電子商務網站。 為此,我使用帶有“Oscar”擴展名的“Django”框架。

我在這里閱讀了整個教程: https : //django-oscar.readthedocs.io/en/releases-1.5/index.html ,其中有一個Translation教程。 我跟着它(必須說它缺少步驟)。 這部分說,為了翻譯一個頁面,你必須創建兩個文件夾和一個符號鏈接:

mkdir locale i18n
ln -s $PATH_TO_OSCAR i18n/oscar

然后,對於您要翻譯的每種語言:

./manage.py makemessages --symlinks --locale=<language code>

這是正確的,但除此之外,您必須編譯.po文件才能獲得locale文件夾( .mo文件)中的最終翻譯。 之后,您必須將翻譯包含在項目(或應用程序)的settings.py中。 這是通過以下代碼完成的:

  • 在終端(從項目的根目錄): $ django-admin.py compilemessages
  • settings.py添加:

    LANGUAGES = [ ('de', _('German')), ('en', _('English')), ('es', _('Spanish')), ]

注意:這是我的情況,我想將商店翻譯成德語、西班牙語和英語)

這樣做之后,我運行我的服務器,只有這三種語言出現在選擇語言框中,但是當我按下按鈕以翻譯頁面時,它每次都返回默認語言(英語),在每個翻譯請求中都得到這個:

"POST /i18n/setlang/ HTTP/1.1" 302 0
"GET / HTTP/1.1" 200 8379

有沒有我跳過的步驟或我做錯了什么?

提前致謝。

我有一個部分(幾乎完整)的解決方案。 由於我要使用的語言很常見,我直接使用了 Django 翻譯中間件,沒有使用 Oscar 提供的一個。 因此,我的解決方案是通過在MIDDLEWARE (或MIDDLEWARE_CLASES取決於 Django 版本)中包含 Django 國際化中間件來編輯settings.pydjango.middleware.locale.LocaleMiddleware

之后,導入ugettextfrom django.utils.translation import ugettext as _ ),隨意添加語言如下:

LANGUAGES = [
    ('es', 'Spanish'),
    ('de', 'German'),
    ('en', 'English'),
    ('pt-br', 'Brazilian'),
    #... and so on
]

此解決方案不需要創建符號鏈接或其他文件夾。

暫無
暫無

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

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