Noop 用例

(u)gettext_noop 允許你將字串標記為可翻譯而無需實際翻譯。

一個典型的用例是當你想為開發人員記錄訊息時(英文),但也希望將它顯示給客戶端(以所請求的語言)。你可以將變數傳遞給 gettext,但其內容不會被發現為可翻譯字串,因為根據定義,它是變數。

# THIS WILL NOT WORK AS EXPECTED
import logging 
from django.contrib import messages

logger = logging.getLogger(__name__)

error_message = "Oops, something went wrong!"
logger.error(error_message)
messages.error(request, _(error_message))

錯誤訊息不會出現在 .po 檔案中,你必須記住它是否存在以手動新增它。要解決此問題,你可以使用 gettext_noop

error_message = ugettext_noop("Oops, something went wrong!")
logger.error(error_message)
messages.error(request, _(error_message))

現在生成字串 Oops, something went wrong! 將在 .po 檔案中被發現並可用。對於開發人員,錯誤仍將以英語記錄。