2011-10-19 123 views
5

我無法獲取翻譯以顯示我的模板。這是我所做的:Django i18n不工作

  1. 在我的模板文件(index.html)中,我已經加載了i18n並使用了trans標籤,我想要翻譯。
  2. 在我的項目目錄,我蘭特./manage.py makemessages -l es
  3. 我django.po文件是./conf/locale/es/LC_MESSAGES/django.po
  4. 我編輯與翻譯這個文件。
  5. 我然後跑./manage.py compilemessages
  6. 設置我LANGUAGE_CODE爲 'ES' 在settings.py
  7. 新增django.middleware.locale.LocaleMiddlewareMIDDLEWARE_CLASSES在SessionMiddleware和CommonMiddleware之間。
  8. 重新啓動Django,刷新我的頁面。

只有英文表述仍在顯示。我在這裏做錯了什麼?我錯過了什麼?

回答

0

好的,我發現問題...我的po文件在./conf/locale,而不是隻有./locale

我創建./conf/locale的原因是因爲當我蘭特django-admin.py makemessages時,它指示我這樣做。但是,如果它位於本地項目目錄中,那麼它只是簡單的./locale

2

Django的LocaleMiddleware嘗試確定給定請求的語言環境並相應地替換LANGUAGE_CODE。它通過以下步驟:

  1. 檢查會話中的會話變量django_language。在此會話中將語言設置爲給定的語言環境。如果不存在,它將變爲2.
  2. 檢查類似變量集的cookie(您可以自己定義名稱)。它不存在它變爲3.
  3. 嘗試確定HTTP_ACCEPT_LANGUAGE標題中的語言。如果不可能,它將變爲4.
  4. 最後它將使用LANGUAGE_CODE設置作爲給定的語言環境。

在除4之外的所有步驟中,它將檢查語言是否在您的LANGUAGES設置中給出,該設置是表示語言代碼和語言標題的2元組的元組。確保你設置/覆蓋默認值,因爲默認值是所有可用的Django語言的元組。

如果你在你的Django網站多國語言:

確保您的會議或Cookie設置是否正確。您可以使用Django的內部視圖來設置語言(django.views.i18n.set_language)。

如果你有隻使用一種語言:

如果你只有西班牙語,你通常不需要這種打擾。只要確保設置了LANGUAGESLANGUAGE_CODE即可。如果沒有在LANGUAGES中提供,它不會嘗試將頁面語言設置爲您的瀏覽器語言。另外你應該確保USE_I18N = True。這應該是默認的,所以至少確定你沒有把它設置爲False

+1

是的。我遵循了所有這些...我似乎無法讓它翻譯。這讓我瘋狂。我敢肯定,我錯過了那些不在名單上的東西,或者是一些晦澀的東西。也許經過一段時間的睡眠後,我會明白... – intargc