我的翻譯組態檔中有月份名稱串列
訊息.en.yml:
basic:
months:
-
- January
- February
- March
- April
- May
- June
- July
- August
- September
- October
- November
- December
當我這樣做時,翻譯作業:
$this->translator->trans('basic.months.'.$month);
但這里的問題是php bin/console debug:translation en給出了翻譯basic.months缺失的錯誤。
如何在不更改組態檔的情況下解決問題?
我可以試試這個但是
$this->translator->trans('basic.months', ['%count%' => $month]);
此代碼不起作用,也不會翻譯訊息。
謝謝。
uj5u.com熱心網友回復:
bin/console debug:translation掃描所有源檔案以查找包含檔案中訊息 ID的靜態messages.en.yml字串。
您的訊息 ID'basic.months.'.$month是動態的,因此debug:translation無法檢測到它。因此,幾乎不可能在不更改組態檔的情況下修復錯誤。
我建議使用 icu 訊息格式:
$this->translator->trans('basic.months', ['month' => $month]);
# translations/messages intl-icu.en.yaml
basic:
months: >-
{month, select,
1 {January}
2 {February}
3 {March}
4 {April}
5 {May}
6 {June}
7 {July}
8 {August}
9 {September}
10 {October}
11 {November}
12 {December}
other {}
}
https://symfony.com/doc/current/translation/message_format.html#selecting-different-messages-based-on-a-condition
uj5u.com熱心網友回復:
因此,只需執行此操作即可解決問題:
$transId = 'basic.months.'.$month;
$this->translator->trans($transId);
現在沒有記錄除錯錯誤并且翻譯按預期作業
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/513953.html
