2017-10-17 81 views
0

我想显示在阿拉伯语中的国家列表,如标题中提到的,它在localhost上正常工作,但不在我的远程服务器上!
我在config.yml阿拉伯设置为默认语言:Symfony:CountryType翻译在远程服务器上不起作用

parameters: 
    locale: ar 

framework: 
    #esi: ~ 
    translator: { fallbacks: ['%locale%'] } 

这是本地机器上的名单:
enter image description here 这是我所得到的远程服务器上:
enter image description here 这是我的FormType:

public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     $builder 
      ->add('fullName', TextType::class, array(
       'required' => true, 
      )) 
      ->add('email', EmailType::class, array(
       'required' => true, 
      )) 
      ->add('country', CountryType::class) 
      ->add($builder->create(
       'birthday', TextType::class, array(
        'required' => false, 
       )) 
       ->addModelTransformer(new DateTransformer('Y-m-d')) 
      ) 
      ->add('username', TextType::class, array(
       'required' => true, 
      )) 
      ->add('password', PasswordType::class, array(
       'required' => true, 
      )) 
     ; 

     if($builder->getData()->getId() != null){ 
      $builder->add('image', AttachmentWithoutDescriptionType::class); 
     } 
    } 

我在这里错过了什么?

回答

0

请检查远程服务器上的php.ini文件中是否有以下参数值:intl.default_locale。 CountryType使用Locale::getDefault()来猜测用户的语言环境。

如果您使用的是Apache Web服务器,您可以在您的.htaccess文件中放置一个参数来覆盖php.ini的值。

php_value intl.default_locale ar_AR 

或者干脆硬编码值到您的前端控制器(app.php,app_dev.php和命令)

\Locale::setDefault('ar_AR'); 

如果您需要的语言环境动态变化,你应该实现一个区域监听器,并设置所需的语言环境使用下面的代码片段。

+0

以及如何更改它而不触及'php.ini'?我无法访问它。我如何强制CountryType始终使用阿拉伯语言? – SlimenTN

+0

更新了我的答案。 –

+0

当我在app_dev.php中对其进行硬编码时,出现此错误:'Symfony \ Component \ Intl \ Locale \ Locale :: setDefault()未实现。请安装“intl”扩展程序以获得完整的本地化功能。# – SlimenTN