[英]Translation doesn't work Symfony
我正在嘗試翻譯我的平台。 首先我做了一個簡單的布局來嘗試轉換。 當我確定它時,我會針對真實情況進行處理。 你可以看到控制器、index.html.twig、config.yml、messages.es和messages.en:
....
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Translation\Translator;
class DummyController extends Controller
{
/**
* @Route("/prova",name="role_public_dummy")
* @Template()
*/
public function indexAction(Request $request)
{
//$locale = $request->getLocale();
$request=$this->getRequest();
$locale = $request->getPreferredLanguage();//catching browser language
$request->setLocale($locale);
$this->get('session')->set('_locale', $locale);
return array();
}
}
index.html.twig
{% trans %}index.1{% endtrans %}
配置文件
framework:
#esi: ~
translator: { fallback: "%locale%" }
secret: "%secret%"
router:
resource: "%kernel.root_dir%/config/routing.yml"
strict_requirements: ~
form: ~
csrf_protection: ~
validation: { enable_annotations: true }
templating:
engines: ['twig']
#assets_version: SomeVersionScheme
default_locale: "%locale%"
trusted_hosts: ~
trusted_proxies: ~
session:
# handler_id set to null will use default session handler from php.ini
handler_id: ~
fragments: ~
http_method_override: true
消息.es
index.1: "CASA"
消息.en
index.1: "HOME"
所以,我不明白為什么 symfony 在使用“trans”函數時總是使用語言環境“en”。 就好像它沒有捕獲會話的語言環境。
您正在嘗試將區域設置設置為Request
對象,但在控制器中它對Translator
服務沒有影響,因為它之前已經配置過了。 我想您應該嘗試直接為您的Translator
服務設置語言環境或創建單獨的操作,您只需將語言環境設置為會話並重定向到其他操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.