2011-11-18 51 views
2

我必須將我的網站(用PHP編碼)翻譯成另一種語言。我一直在使用Drupal及其函數來處理這個問題,但仍然有一些硬編碼的字符串被展開。在PHP文件中查找所有源代碼硬編碼的字符串 - 翻譯目的

你知道一個腳本或軟件,它可以幫助我在整個源代碼目錄中找到它們嗎?最好的是,它也允許我改變它們。

+0

什麼琴絃的樣子?他們是否通過了一個函數? – F21

+0

像$ var =「一種類型的字符串」;或$ var ='另一種類型的字符串';或者$ var =「another」。 $類型。 「串」;或t(「又一次」); –

+0

你與哪種開發環境合作? – JRSofty

回答

1

請參閱Is there a semi-automated way to perform string extraction for i18n?以自動處理此問題。雖然鏈接到答案是針對Java的,但相同的引擎/方案對於PHP來說工作得很好。

如果這太多了,我們的Source Code Search Engine (SCSE)可以識別這些細節,讓您決定如何處理每個字符串。

SCSE是一種超級grep,它運行的是語言結構而不是原始字符文本。查詢用語言標記而不是字符串表示。 SCSE索引源代碼庫中許多文件的所有標記,然後使用該索引優化搜索。由於它使用了語言精確的詞法分析器,因此它理解字符串,註釋,數字,關鍵字和空白的精確範圍。查詢是(語言)whitesphace不敏感。因此,尋找到一個具有「富」,中間是一個標識符被分配一個恆定的所有地方,一個可以編寫一個查詢:用

I=*foo* '=' N 

在查詢說,「找我(dentifiers) 。通配符約束,接着語言標記=, 後跟任意N(數)

這是所有relvant查找程序中的所有字符串文字與瑣碎查詢:

S 

這意味着裝置那麼,找到沒有任何約束的所有文字S(敲打)不管類型和語法如何(PHP有很多類型的字符串文字)。

由此產生的匹配可以顯示在用戶界面中,但對於OP的目的,可以打開日誌並使工具通過精確的文件和行號提供匹配和他們的位置。

SCSE擁有用於PHP和許多其他語言的掃描器。

+0

謝謝你,但你的工具不是免費的... –

0

幾個選項浮現在腦海中:

如果您使用的是IDE,比如Eclipse,往往會有一個搜索功能,讓你搜索所有的源代碼。在Eclipse中,你可以去'搜索' - >'文件'。

如果您沒有使用具有搜索功能的IDE,但可以訪問基於Unix的服務器上的命令行,則可以使用遞歸grep。例如:

grep -r "sometext" /path/to/code 

如果你想要做一個遞歸查找和替換命令行,你可以使用的組合發現和sed:

find /path/to/code -type f -print0 | xargs -0 sed -i 's/sometext/newtext/g' 
+0

這將幫助我找到一個特定的字符串,但我的目標是檢索每個PHP字符串內容。 –

+0

實際上,如果您使用的是Eclipse,那麼搜索功能可以使用正則表達式。您可以創建一個正則表達式來捕獲單引號和雙引號之間的所有內容。 – JRSofty

+0

您也可以在grep和sed中使用正則表達式。 – jonstjohn

相關問題