2013-06-03 86 views
2

我想在Django的一個(或多個)單獨文件中包含所有模板的實際非html文本。此刻我的模板是相當擠滿通過通道,如:如何將可翻譯的文本(包括英文)放入Django的文件中

{% if request.session.lang == "en" %} 
    Some text in English 
{% else %} 
    Some text in the default language 
{% endif %} 

模板文本(主要語言或英語)獲取由其他人經常改變,所以我想只是有一些文件,這些文件等人們也可以編輯(而不必編輯實際的視圖文件)。 閱讀django文檔的本地化部分後,似乎仍然需要將文本(文檔示例中的英文)硬編碼到模板/視圖中。

從Django文檔實例生成.po文件:

msgid "Welcome to my site." 
msgstr "" 

我寧願是這樣的:

msgid APP-XY_VIEW-XY_INTRODUCTION 
msgstr "" 

當然,顯而易見的解決方案似乎是採用類似:

ugettext('APP-XY_VIEW-XY_INTRODUCTION') # in a view 

但是,我想確定是否沒有其他解決方案(不創建一些自定義ID字符串文字,在每個視圖/模板中硬編碼)。

非常感謝!

/編輯,Django的版本1.4.5

+0

{%trans APP-XY_VIEW-XY_INTRODUCTION%} does not help? – karthikr

+0

對不起,我不清楚這一點。我的問題是,我寧願避免烹飪一些自定義ID,如示例(APP-XY_VIEW-XY_INTRODUCTION)。我編輯了開幕帖子。謝謝。 – qzr

回答

0

你不說你使用的是什麼版本的Django的(你應該幾乎總是包含此信息 - 它會幫助你獲得最佳的答案)。但是,您應該能夠將

{% load i18n %} 

置於模板的頂部。然後,你可以叫反式和處理它,就像您的模型等

<title>{% trans "My very important title" %}</title> 

Django的電子書2.0對這個話題相當不錯的篇章。可能會讀書嗎?點擊here瞭解更多信息。

+2

問題是,我不想將「我非常重要的標題」硬編碼到任何python文件或django模板中。頁面的默認語言以及其他語言都應該位於單獨的單獨文件(如django messagefiles)中,以便其他人可以編輯它們。在Django文檔中,假設您想將主要語言的文本硬編碼到模板/視圖中。我想避免這種情況。 – qzr

0

您可以創建語言文件爲相同的語言項目,它將覆蓋硬編碼字符串(包括模板和視圖)

我的項目:

LANGUAGE_CODE = 'en-US' 

locale/en/LC_MESSAGES/django.po我的翻譯可以覆蓋我的錯誤/錯誤的選擇

相關問題