【问题标题】:laravel translation custom fallbacklaravel 翻译自定义后备
【发布时间】:2014-12-08 05:02:37
【问题描述】:

我建立了一个多语言网站。最初,我将内容存储在数据库中,并在浏览器中提供一个 UI,显示普通管理员用户可以编辑这些数据。每当管理员在数据库中添加任何字符串时,他/她只需按一个按钮即可在管理面板的相应文件下的 app/lang/ 下重新生成所有这些语言文件。

我的表结构是

id | location | key     |hindi   | english |
---------------------------------------
 1 | global   | welcome |namaste | Welcome | 

并在echo trans('global.welcome');等视图文件中使用

现在我想从视图文件中自动收集数据。假设我在我的视图文件中添加了echo trans('global.hello');,并且它在 app/lang/en/global.php 中不存在,所以后备语言会调用。我想跟踪这种情况,以便我可以在数据库表中添加一行,以 hello 作为键。我想在开发时添加到数据库中,而不是在生产中。

  1. 这是好还是更好的选择?
  2. 如何在回退时触发我自己的函数?

【问题讨论】:

    标签: php laravel laravel-4


    【解决方案1】:

    拥有自己的翻译功能怎么样(仅用于开发甚至生产)。在那里,您可以首先检查翻译是否存在,然后调用默认的 trans 方法。现在,如果您只想将它​​用于开发或生产(也许它对一些额外的功能有用)

    仅限开发:直接在helpers.php文件中编辑trans函数或覆盖它
    (你必须在helpers.php out 中评论函数)

    开发和生产:使用自己的名称创建自己的函数

    但是,代码保持不变

    function trans($id, $parameters = array(), $domain = 'messages', $locale = null){
        $translator = app('translator');
        if(!$translator->has($id, Config::get('app.locale')){
            // insert db row
        }
        return $translator->trans($id, $parameters, $domain, $locale);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-17
      • 1970-01-01
      • 2017-12-22
      • 2012-10-10
      • 2023-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多