2014-10-13 2 views
3

Я построю многоязычный сайт. Первоначально я храню содержимое в базе данных, и я предоставляю пользовательский интерфейс в браузере, показывающий, что обычный пользователь admin может редактировать эти данные. Когда-либо админ добавляет какую-либо строку в базу данных, он может генерировать все эти языковые файлы в файле app/lang/under файл с панели администратора, просто нажав одну кнопку.laravel translation custom fallback

Моя структура таблицы

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

и использовать в файл представления как echo trans('global.welcome');

Теперь я хочу, чтобы автоматически собирать данные из просмотра файла. Предположим, я добавлю echo trans('global.hello'); в свой файл просмотра, и его нет в app/lang/en/global.php, так что обратный язык вызовет. Я хочу отслеживать эту ситуацию, чтобы добавить одну строку в таблицу базы данных с приветствием в качестве ключа. Я хочу делать все это во время разработки только не в производстве.

  1. Хорошо ли это делать таким образом или есть какая-либо лучше опция ?
  2. Как уволить мою собственную функцию в резервное время?

ответ

0

Как насчет наличия собственной функции перевода (только для разработки или даже для производства). Там вы можете сначала проверить, существует ли перевод, и после этого вызывать метод трансляции по умолчанию. Теперь подход, если вы хотите использовать его только для развития или же для производства (возможно, было бы полезно для некоторой дополнительной функциональности)

развития только: Редактирование trans функции непосредственно в файле helpers.php или переопределить его
(вы должны будете комментировать функцию helpers.php выхода)

Разработка & Производство: Создайте свою собственную функцию со своим собственным именем

Код, однако, остается неизменным

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); 
}