2016-05-18 56 views
0

因此,我爲自己製作了一個內容管理系統,最近,一位朋友也想將它用於他的網站。我在頭腦中進行了適應性修改,但是,我希望通過所有錯誤字符串和消息字符串並將它們聚合到一個文件中。什麼是最好的方法來做到這一點?某種文本類?我只想要一個位置,我可以編輯所有消息。對於一些我正在使用DEFINE的東西,我知道這是不好的做法。在另一方面將文本字符串移動到一個單獨的文件

<?php 

return [ 

/* 
|-------------------------------------------------------------------------- 
| Authentication Language Lines 
|-------------------------------------------------------------------------- 
| 
| The following language lines are used during authentication for various 
| messages that we need to display to the user. You are free to modify 
| these language lines according to your application's requirements. 
| 
*/ 

'failed' => 'These credentials do not match our records.', 
'throttle' => 'Too many login attempts. Please try again in :seconds seconds.', 

]; 

WordPress的沒有做它在所有的原始語言的字符串:

+1

你可以使用get_defined_vars()和get_defined_constants(),但它只是通話的範圍內工程... – Webomatik

回答

1

Laravel創造了一系列像這樣的文件執行此操作。 WP中的翻譯通過gettext進行處理,該工具是爲此目的而製作的。使用gettext,您可以使用工具自動生成.pot文件,該文件包含您通過代碼調用的所有字符串。 WP中的呼叫由_e("String to be translated and echoed")__("String to be translated and returned")組成,因此使用起來非常簡單。它還支持更多高級功能,如正確管理複數形式。

現在它真的取決於你喜歡做什麼。你也可以使用類似於散列的方式使用gettext:__("error_invalid_data")並使用適當的句子填充文件,但我認爲實際上並不存在「正確」的方式。

1

有一些方法,我可以建議:

1-使用數組

你可以在一個文件中定義的數組,其中包含所有的系統在你的消息,其鍵是一個每條消息的簡短描述。因此,您可以將此文件包含在所有頁面中,並在需要的地方回顯消息。

我在許多實際案例中看到了這種方法,所以它似乎對中小量的數據有好處。

2-使用Gettext的

還有就是要做到這一點更標準的方式,它被稱爲Gettext的。這是GNU發佈的圖書館,廣泛用於許多應用程序,用於全球化和定製。它已經在許多大型案例中使用,例如Wordpress。此方法將消息存儲在單獨的文件中,稱爲PO文件。這些文件可以使用內置函數在PHP中輕鬆加載和使用。

實現起來比較困難,但是在海量數據上要好得多。

更多信息請參見:

http://php.net/manual/en/book.gettext.php

http://www.gnu.org/software/gettext/manual/gettext.html

相關問題