2016-09-20 125 views
1

我有一個json文件,其中一些的字符串必須翻譯。例如(虛構的語法),我data.jsonJson和翻譯

{ 
    "greeting": "trans:Hello" 
} 

在這種情況下,字符串"Hello"被標記爲可翻譯的前綴trans:(這似乎不是很強勁)。然後我會使用工具來生成目錄:

xgettext data.json 

然後翻譯串到我的目標語言。然後我的應用程序將使用我原來的JSON和翻譯映射:

translations = { 
    "en" : { 
    "Hello": "Hello" 
    }, 
    "es" : { 
    "Hello": "Hola" 
    } 
} 

,並會生成最終的JSON(爲目標語言es):

{ 
    "greeting": "Hola" 
} 

是否有指定的翻譯字串的任何標準方式json,以便可以通過標準工具處理它們以生成消息目錄?

回答

1

可以使用適當的gettext語言預處理器以提取被標記,通常用_(string)gettext(string)的字符串,並創建包含那些串的gettext的目錄(POT文件)。在爲特定語言創建目錄的本地化版本後,可能使用諸如poedit之類的工具,然後將其轉換爲JSON表示形式 - 有關更多信息以及有關處理gettext的標準方法的想法 - 請參閱JED - 然後在運行時將此JSON格式的目錄加載到您的應用程序中,並通過爲此目的定義的實用程序訪問它。

符號_(string)有兩個效果。首先,它標記提取器的字符串。其次,在運行時,它會調用一個名爲_的函數來查找目錄中的字符串並返回本地化的值。

JSON的問題在於,顯然_(string)是無效的JSON語法。如果可能,請考慮將其從JSON文件更改爲包含對象的JS文件。

+0

它需要是有效的json。 gettest處理器是否理解json? – dangonfast

+0

我想你是指'xgettext',字符串提取器。如果您將該語言設爲JavaScript,那將會理解JSON。正如我所解釋的,問題是'_(「string」)'格式在JSON文件中無效。因此,您需要使用包含JavaScript對象的JavaScript文件。 – 2016-09-20 11:54:07