2016-07-14 8 views
0

I Laravel Lokalisierung auf meine Anwendung (https://laravel.com/docs/5.0/localization)Laravel erhalten inversen Lokalisierungs Zeichenfolge

Ich habe in den folgenden Strings bin mit:

'plan_month' => 'usd-plan-month', 
'plan_yeary' => 'usd-plan-year', 

Nun, es ist alles gut, wenn ich ein Abonnement bin die Schaffung , kann ich es mit Zugang:

{{ trans('subscription.plan_month') }} 

Aber .. wenn ich das Abonnement retreieve will, vielleicht den Benutzer Plan zu ändern, müsste ich die inversen bekommen, da Streifen sa Ves die Plan-ID auf der Datenbank, und ich brauche zusätzliche Daten darüber.

Meine Frage ist, gibt es eine Funktion in Laravel oder PHP (oder höchstwahrscheinlich ein Hack), dass ich die Plan-ID ('usd-plan-month' zum Beispiel) und es würde den Indexnamen 'plan_month' zurückgeben?

Antwort

0

Ich glaube nicht, dass es eine gute Idee ist, dies aus der lang-Datei zu bekommen, da es sich um Daten handelt, die für das Abonnement kritisch sind. Es sollte als Konstante oder etwas gespeichert werden, so dass Sie sicherstellen können, dass es sich nicht ändert (und die lang-Datei anfällig für Änderungen ist). Außerdem wäre es ein Problem, wenn es zwei lang-Elemente gibt, die denselben Wert haben, aber einen anderen Schlüssel. Sie könnten einen falschen Schlüssel erhalten, was zu einem Fehler im Abonnementsprozess führen würde.

Falls Sie dabei bleiben wollen, gibt es einen Hack. Sie können die lang Array erhalten

$lang = Lang::get('FILE_NAME'); 

mit wäre es besser, wenn Sie die Übersetzungen haben in mehreren Arrays verschachtelt, so dass Sie brauchen keine separate lang nur durch die ganze lang Datei (oder müssen iterieren Datei für die Abonnementtexte). Wenn Sie ein Array in der lang-Datei zugreifen möchten, müssen Sie

$lang = Lang::get('FILE_NAME.ARR_KEY'); 

, wo FILE_NAME der Name der Datei ist und ARR_KEY ist der Schlüssel des Arrays möchten Sie zugreifen.

Dann können Sie entweder die Array-Schlüssel mit ihren Werten austauschen (dies wäre besser, wenn Sie auf mehrere Elemente zugreifen müssen) oder verwenden Sie array_search, um den Schlüssel für einen bestimmten Wert zu erhalten (wenn Sie nur müssen suche nach einem Gegenstand).

Ich denke immer noch, dass Sie anstelle einer lang-Datei Konstanten für diesen Zweck verwenden sollten. Sprachdateien werden nur zum Anzeigen von Inhalten verwendet und sollten nicht mit der Anwendungslogik gemischt werden.