2012-07-19 121 views
9

我目前正在研究一個網站的本地化,該網站首次僅用英文。一家第三方公司做了翻譯,併爲我們提供了翻譯的excel文件。我已成功轉換爲可在我的視圖中使用的PHP數組。我使用Eclipse的Windows來編輯我的PHP文件。用Eclipse處理PHP中的阿拉伯文字符串

一切都很好,但我需要在我的字符串添加變量,例如:

'%1 is now following %2' 

在阿拉伯語中我就是這樣一個帶有字符串:

'_______الآن يتتبع _______' 

我發現更換_ _因爲%1和%2是非常困難的,因爲阿拉伯語部分是從右到左的字符串,並且%1,%2將被視爲從左到右或從右到左,而我不是當然。根據我的參數順序,我很難得到結果,因爲%1有時會出現在字符串的左側,有時位於右側,這取決於我開始鍵入的位置。複製粘貼替換字符串也可能會產生相同的奇怪效果。

大多數我結束了這樣一個字符串的時代:

%2الآن يتتبع %1 

%1應該在右手部位,在左手站點%2。顯然,%1被認爲是從右到左的字符串,因爲%顯示在右側。 %2被認爲是從左到右。

我確定有人作爲此問題之前。有沒有什麼辦法可以在Eclipse中輕鬆完成?或者使用智能編輯器處理阿拉伯文問題?或者,也許這是一個Windows問題?有沒有解決方法?

UPDATE

我也試過我的字符串分割成多個字符串,但是這也改變了參數的順序:

'%1' . 'الآن تتبع' . '%2' 

更新2

似乎改變替換字符串使事情變得更好。它可能與如何用阿拉伯字符串處理數字有關。這個字符串在Eclipse中編輯沒有任何問題。參數的順序是正確的,該字符串由PHP正確處理:

'{var2} الآن يتتبع {var1}' 

如果沒有找到其他的解決方案,這可能是一個很好的選擇。

+0

我與編程希伯來文,這也是RTL,在我的經驗處理所有的數據內的數據庫是一個很容易。然而。的確,大多數IDE不具備對這些語言的本地支持。爲什麼不嘗試處理數據庫中的數據? – 2012-07-19 13:54:02

+0

作爲一名阿拉伯語演講者,我獲得了很多本地化任務。儘管我沒有特別遇到這個問題,但編輯時我遇到了很多從左到右/從右到左的問題。我已經成功使用Notepad ++。這個替換是否有任何規則?也許它可以編寫腳本。 – Adi 2012-07-19 13:55:37

+0

@NadavS。我試圖避免數據庫,因爲我想避免這個不必要的步驟。如果我們在實現新功能時需要新的翻譯,我可以將我的excel文件發送給本地化公司。我不必將我的數據庫導出到Excel文件,將它發送給公司,然後再次重新導入文件。其實我只是嘗試在Navicat中編輯相同的字符串,然後我跑了相同的問題。 – Tchoupi 2012-07-19 14:01:08

回答

3

@Adnan幫助我意識到,後來證實,在將拉丁數字與阿拉伯文字混合使用時存在問題。

基於該結論,解決方案是簡單地停止使用%1,%2, %3,...作爲佔位符。我將使用更多描述性關鍵字,例如{USER}{ALBUM},{PHOTO},...

這顯示了PHP文件中預期的結果,這是容易編輯:

'ar' => '{USER} الآن يتابع {ALBUM}' 
5

作爲一名阿拉伯語演講者,我獲得了很多本地化任務。儘管我沒有特別遇到這個問題,但編輯時我遇到了很多從左到右/從右到左的問題。我已成功與Notepad++合作。

所以這裏就是我通常做的時候我想編輯阿拉伯文文本

  1. 打開記事本++ *
  2. 集編碼爲UTF-8(編碼 - >在UTF-8編碼)
  3. 啓用RTL模式(查看 - >文字方向RTL)
  4. 粘貼你的字符串

和H ERE是展示我如何編輯字符串截圖

enter image description here

*:出於某種原因,每當我打開一個已經存在的文件事情香蕉。所以也許我迷信,但這一直對我有效。

更新:我第一次這樣做我是持懷疑態度,因爲串看着錯了,但我這樣做:

print_r(str_split($string)); 

,我看到的是他們確實是在正確的順序。

+0

使用RTL模式肯定會讓事情變得更簡單。但我實際上遇到了一個奇怪的問題。實際上和你的截圖一樣。 '2%'似乎很好,因爲它的RTL,但不應該'%1'也寫'1%'? – Tchoupi 2012-07-19 14:34:09

+0

@MathieuImbert,是啊,同樣的事情發生在我第一次。它看起來不對(等到你把它複製回你的IDE,這將是可怕的),但它確實很好。第一次我做了這個,我不得不用'char'打印我的字符串'char',只是爲了相信它是按照正確的順序。編輯:其實這是一個好主意,我會更新答案。 – Adi 2012-07-19 14:42:53

+0

也許你是對的。 Mathieu現在是否在追隨最好的照片?「Mathieu正在播放最好的照片」?它在我看來,因爲參數是相反的順序。 – Tchoupi 2012-07-19 14:58:49

0

我更喜歡這種任務的原始記事本。

  1. 打開記事本,確保你在LTR模式
  2. 類型%1
  3. 改變模式RTL按CTRL + SHIFT
  4. 阿拉伯串到編輯器中粘貼。
  5. 再次按CTRL + SHIFT恢復到LTR。
  6. 類型%2
  7. CTRL + A選擇所有與CTRL + C
  8. 粘貼複製到IDE中。它應該看起來很奇怪,但按預期執行。

之所以使用記事本:更復雜的編輯器如記事本++,崇高,科達(蘋果機),並且有些IDE - 你的情況的Eclipse 可能沒有使用正確的編碼,以及記事本是簡單很好用多語言任務。

+0

感謝您描述確切的步驟。它給出了與Adnan的解決方案完全相同的結果。參數似乎是相反的順序。 – Tchoupi 2012-07-19 15:55:39