2013-06-03 34 views
2

我們正在使用Gettext翻譯我們的網站,但最近我們發現我們的翻譯團隊存在一些問題。如何使用gettext和一些複雜變量進行翻譯

我們有一些字符串如...

鮑勃晚上贏得 * * 紅色 * 氣球 *

和我們得到這樣的東西...

sprintf("Hi %s this %s you %s %s %s %s", $name, $action, $number, $color, $object); 

的問題是,我們的翻譯團隊不知道變量訂購...而且是非常難治爲他們正確翻譯是「編碼」的字符串,他們只在他們看到poEdit的這段文字

Hi %s this %s you %s %s %s %s 

¿我們如何處理這些複雜的琴絃?

回答

1

最後我們找到了最適合我們的方法。

我們有像

sprintf的字符串( 「你好%s此%s的您%s%S%s%S」,$名稱,$行動,$號碼,$顏色,$對象);

然後我們可以改變瓦爾這樣

sprintf的位置(「嗨%1 $ S此%2 $ S您%3 $ S%4 $ S%5 $ S%$ 6 s「,$ name,$ action,$ number,$ color,$ object); 的翻譯團隊可以改變位置只換號

然後......最重要的事情...告訴給翻譯團隊是什麼這些變量...有像gettext的評論......

<!-- //Hi translator... The variables are $name, $action, $number, $color, $object --> 
sprintf(_('Hi %1$s this %2$s you %3$s %4$s %5$s %6$s'), $name, $action, $number, $color, $object); 

添加了xgettext中的行-c選項,你可以把裏面的.po文件這個評論,這是工作:)

的方式,我們的選擇,我希望這是你一個很好的解決方案

2

使用poedit,它給你一個機會給字符串添加註釋。

+0

感謝您的回覆,問題是我們有很多相似的線條,並且很難完成這一切......我們需要其他解決方案。 我們首先嚐試使用像_(「Hi {$ name} {$ number}」這樣的變量)但是我們在poedit中遇到了很多問題,因爲它沒有得到這個變量。 有什麼想法? – aaronroman

+0

不幸的是,這是唯一的方法。這是枯燥乏味的工作,但是'poedit'(和'gettext')只能理解'printf'風格的替代參數。也許編寫一個小應用程序會比較容易,它將「Hi {$ name} {{number}}」轉換爲「Hi%s%d」,並將原始字符串複製到註釋中,從而生成註釋。 po'文件? –