【问题标题】:Symfony internationalizationSymfony 国际化
【发布时间】:2016-09-17 04:30:04
【问题描述】:

我在 Symfony 2 中遇到了一个奇怪的翻译问题。

这是我的 config.yml

imports:
    - { resource: parameters.yml }
    - { resource: security.yml }
    - { resource: services.yml }

# Put parameters here that don't need to change on each machine where the app is deployed
# http://symfony.com/doc/current/best_practices/configuration.html#application-related-configuration

framework:
    #esi:             ~
    translator: { fallbacks: ['%locale%'] }
    secret:          "%secret%"
    router:
        resource: "%kernel.root_dir%/config/routing.yml"
        strict_requirements: ~
    form:            ~
    csrf_protection: ~
    validation:      { enable_annotations: true }
    #serializer:      { enable_annotations: true }
    templating:
        engines: ['twig']
        #assets_version: SomeVersionScheme
    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

# Twig Configuration
twig:
    debug:            "%kernel.debug%"
    strict_variables: "%kernel.debug%"

# Assetic Configuration
assetic:
    debug:          "%kernel.debug%"
    use_controller: false
    bundles:        [ ]
    #java: /usr/bin/java
    filters:
        cssrewrite: ~
        #closure:
        #    jar: "%kernel.root_dir%/Resources/java/compiler.jar"
        #yui_css:
        #    jar: "%kernel.root_dir%/Resources/java/yuicompressor-2.4.7.jar"

# Doctrine Configuration
doctrine:
    dbal:
        driver:   pdo_mysql
        host:     "%database_host%"
        port:     "%database_port%"
        dbname:   "%database_name%"
        user:     "%database_user%"
        password: "%database_password%"
        charset:  UTF8
        mapping_types:
          enum: string
        # if using pdo_sqlite as your database driver:
        #   1. add the path in parameters.yml
        #     e.g. database_path: "%kernel.root_dir%/data/data.db3"
        #   2. Uncomment database_path in parameters.yml.dist
        #   3. Uncomment next line:
        #     path:     "%database_path%"

    orm:
        auto_generate_proxy_classes: "%kernel.debug%"
        naming_strategy: doctrine.orm.naming_strategy.underscore
        auto_mapping: true

# Swiftmailer Configuration
swiftmailer:
    transport: "%mailer_transport%"
    host:      "%mailer_host%"
    username:  "%mailer_user%"
    password:  "%mailer_password%"
    spool:     { type: memory }

fos_user:
    db_driver: orm
    firewall_name: main
    user_class: AppBundle\Entity\User
    profile:
        form:
            type: app_user_profile

parameters.yml

...
locale: ru

当然,我有 messages.en.yml 和 messages.ru.yml。

即使 locale 设置为 'ru',它也会显示英文文本,并且 $request->getLocale() 总是返回 'en'。

可能是什么问题,如果不在配置中,“en”在哪里溢出?

【问题讨论】:

标签: php symfony translation


【解决方案1】:

config.yml 文件中的locale 参数只是一个备用,以防所请求语言的翻译不可用。

调用$request->getLocale() 将返回发送HTTP-Request 的浏览器的语言配置。

如果您希望强制翻译成另一种语言,请查看以下答案:https://stackoverflow.com/a/14331838/1173391

【讨论】:

  • 那不是我需要的。我的路线不需要语言环境。我只想通过单击链接“英语”和“俄语”来更改它。它应该如何工作?
  • 从链接看答案
【解决方案2】:

您需要创建一个 twig 扩展程序,允许您将路径中的 ru 替换为 en (反之亦然):

{# yourProject/app_dev.php/ru #}
<a href="{{ localize_route('ru') }}"></a>

看看这个教程

http://blog.viison.com/post/15619033835/symfony2-twig-extension-switch-locale-current-route

【讨论】:

    【解决方案3】:

    在您的 routing.yml 中添加一个带有如下语言环境的前缀:

    routing.yml

    app:    
       resource: "@AppBundle/Controller/"    
       type:     annotation    
       prefix:   /{_locale}    
       requirements:    
           _locale: "%app.locales%"
    

    config.yml

    parameters:
        locale: en
        app.locales: en|ru
    

    【讨论】:

      【解决方案4】:

      你添加了吗:

      {% trans_default_domain "message" %}
      

      在您的 twig 模板文件顶部存在翻译键并且您是否清除了缓存?

      【讨论】:

        猜你喜欢
        • 2013-07-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-15
        • 2015-08-31
        • 2011-12-27
        相关资源
        最近更新 更多