簡體   English   中英

設置Symfony 2.5應用程序的語言環境(強制語言環境)

[英]Set locale for Symfony 2.5 application (force locale)

我想將我的Symfony 2.5應用程序的語言環境強制設置為ru_RU.UTF-8 我希望將此語言環境用於strftime()函數。

我的app/config.yml具有以下配置:

framework:
    default_locale: "ru_RU.UTF-8"

我在我的一個控制器中使用以下代碼進行調試:

//setlocale(LC_TIME, 'ru_RU.UTF-8');
var_dump(setlocale(LC_TIME, 0));
var_dump(strftime('%B', time()));
die();

像這樣執行時,它顯示: string(1) "C" string(6) "August"

但是,當第一行取消注釋時,它顯示: string(11) "ru_RU.UTF-8" string(12) "Август" ,因此語言環境已安裝在系統中並且可以正常工作。

我如何使Symfony始終使用配置中指定的語言環境?


$ locale -a

C
C.UTF-8
en_US.utf8
POSIX
ru_RU
ru_RU.iso88595
ru_RU.utf8

Symfony的語言環境設置不會影響PHP設置,而只是Symfony設置。

您必須使用setlocale()來配置PHP的語言環境。 您可以將其放置在前端控制器( web/app.phpweb/app_dev.php )中或為kernel.request創建一個偵聽器。

任何基於setlocale()解決方案(如@Wouter J的答案 ),遲早都會使您頭疼,因為它依賴於當前計算機的語言環境設置。 因此,無論何時切換服務器,它都可能停止工作。 開發服務器和生產服務器之間可能會有所不同。

更好的方法是放棄strftime() ,而使用IntlDateFormatter::formatObject

\IntlDateFormatter::formatObject($entity->getTimestamp(), \IntlDateFormatter::FULL, 'de_AT');

這僅需要安裝PHP intl擴展。 還有一個PHP的\\IntlDateFormatterSymfony替代品,但我想只有在沒有intl擴展名的情況下才有必要。

對於Twig,您可以使用localizeddate過濾器。 安裝說明: https : //stackoverflow.com/a/24390635/1668200

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM