2016-07-14 23 views
0

我使用Laravel本地化上我的應用程序(https://laravel.com/docs/5.0/localizationLaravel得到本地化的字符串的逆

我有以下字符串:

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

現在,這一切都很好,當我創建訂閱,我可以訪問它:

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

但是..當我想retreieve認購,可能改變用戶的計劃,我需要得到逆,因爲條紋SA在數據庫中的計劃ID,我需要獲得額外的數據。我想問,是否有laravel或PHP中的函數(或最有可能是黑客),我可以提供計劃ID(例如'usd-plan-month'),它會返回索引名'plan_month'?

回答

0

我認爲從lang文件中獲取此信息不是一個好主意,因爲它是訂閱的關鍵數據。它應該保存爲一個常量或其他東西,所以你可以確保它不會改變(並且lang文件很容易改變)。另外,如果有兩個具有相同值但不同關鍵字的lang項目,這將是一個問題。您可能會得到一個錯誤的密鑰,這會導致訂閱過程中出現錯誤。

如果你想堅持這一點,有一個黑客。您可以使用

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

這將是更好,如果你有嵌套在多個陣列翻譯得到郎陣列,所以你並不需要通過整個郎文件迭代(或有一個單獨的文件郎僅訂閱文本)。如果您要訪問的郎文件裏的數組,你就必須

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

其中file_name是文件的名稱和ARR_KEY是您要訪問數組的關鍵。

然後,您可以使用array_flip交換數組鍵與他們的價值觀(這將是更好,如果你需要訪問多個項目),或使用array_search獲取給定值的鍵(如果你只需要尋找一個項目)。

我仍然認爲你應該考慮使用常量來達到這個目的而不是lang文件。語言文件僅用於顯示內容,不應與應用程序邏輯混合使用。