2013-10-12 4 views
3

Это должно быть «тривиально», но после некоторых разговоров на канале #laravel irc я обнаружил, что это может быть невозможно. Но я попрошу об этом здесь, прежде чем делать это уродливым способом, только чтобы проект был выполнен. Если это действительно невозможно с помощью текущих средств, я заполню запрос на github (после передачи проекта моему клиенту).Переопределить локализацию пакета в Laravel

Я использую Zizaco\Confide для аутентификации в моей службе. Он использует Laravel Lang всюду, чтобы получить строки в одном из 8 связанных языков пакета. Но мне нужно переопределить некоторые из этих строк, и я не хочу изменять файлы пакетов (что бы повредило всю цель Composer). Как я могу это сделать?

Например, мне необходимо было изменить confide::confide.alerts.wrong_credentials для pt_BR. До сих пор я пытался:

  • /app/lang/pt_BR/confide.php файл, с содержанием return array('alerts' => array('wrong_credentials' => '...')). Она работает для Lang::get('confide.alerts.wrong_credentials'), но не для пространство имен Lang::get('confide::confide.alerts.wrong_credentials')
  • /app/lang/pt_BR/packages/zizaco/confide/confide.php с return array('alerts' => ......)
  • /app/lang/pt_BR/packages/zizaco/confide/confide/alerts.php с return array('wrong_credentials' => ...)
  • /app/lang/packages/zizaco/confide/pt_BR/confide.php с array('alerts' => array('wrong_credentials' => '...')) - /app/lang/packages/zizaco/confide/pt_BR/confide/alerts.php с return array('wrong_credentials' => ...)

Любой ключ на том, что мне не хватает? Или Laravel4 действительно не хватает этой функции?

Заранее благодарен!

ответ

4

Итак, на сегодняшний день у Laravel действительно нет этой функции. Я попросил его создать issue on github.

Между тем, эта функциональность может быть достигнута легко используя crynobone Оркестр Platform 2 Перевод компонент, который можно найти here

Все, что вам нужно сделать, это require его в composer.json

{ 
    "require": { 
     "orchestra/translation": "2.0.*" 
    } 
} 

и заменить оригинальная упаковка для перевода ('Illuminate\Translation\TranslationServiceProvider') в /config/app.php

'providers' => array(
    //'Illuminate\Translation\TranslationServiceProvider', 
    // ... 
    'Orchestra\Translation\TranslationServiceProvider', 
), 

Вот и все! Теперь, имея app/lang/en/packages/confide/confide.php, сделайте это! (обратите внимание, что путь должен быть/пакеты/имя_пакет /, а не/пакетов/продавец/имя_пакета/

Он действительно спас меня от большой головной боли, надеюсь, что другие найти это тоже полезен.

+2

и убедитесь, что вы обновляете композитор, прежде чем редактировать список провайдеров, не после (как я сделал по ошибке) :) – ivanhoe

Смежные вопросы