當本地化Django應用程序makemessages
命令簡單地解析所有的TXT,HTML和PY文件併爲它們生成PO文件時,但是在本地化JS文件時,您需要運行djangojs
命令。我還沒有深入研究Django源代碼來弄清楚爲什麼這樣做的方式不同。有人可以解釋嗎?爲什麼JavaScript文件應該在Django中進行不同的本地化?
我讀過,在生產環境中,Apache用於提供應用程序文件,而像Nginx這樣的簡單代理用於提供靜態文件,因爲這大大減少了應用程序服務器的負載。在這種情況下,我猜想它是這樣工作的:在呈現模板時,Django檢查請求的語言環境,加載適當的本地化文件並提供模板,但另一方面,作爲靜態媒體的JS不會被Django解析。是這個嗎?
(在與Django的本地化的世界和我的第一次嘗試,我裝得滿滿的問題,很多是誰的答案,我似乎無法找到,因此這個職位。)
感謝
感謝您的優秀和翔實的答覆。關於你提到的三點 - 我曾在文檔中閱讀過關於它們的內容,但它沒有解釋爲什麼以類似的方式將JS本地化爲模板是一個問題。我覺得這有點奇怪,我想這就是爲什麼django-mediagenerator是方便的。例如:如果你有一個帶有簡單行alert('Hello')的JS文件,並且這是從http:// www.example.com/en/static/example.js提供的,那麼你可以德文版本來自'http:// www.example.com/de/static/example.js'。你甚至可以緩存這個。我希望我一直冗長。 –
是的,這就是爲什麼我喜歡django-mediagenerator;)你可以對靜態文件做很高級的事情,比如捆綁它們,壓縮,讓他們意識到i18n ......其中一個重要特性是能夠對它們進行版本化,你使用沉重的緩存瀏覽器端。如果你改變你的靜態文件,mediagenerator只會做_cache busting_並使瀏覽器的緩存失效。 –