2015-04-30 62 views
1

我開始使用poedit進行PHP文本翻譯。現在我很困惑如何處理多行文本,例如帶有條款和條件的頁面。我正在和一位同事討論這個問題。poedit長/多行文本 - 標識符與上下文

我看到兩個選項:

每段落或行一個poEdit的場

這使一個echo _('lorem ipsum');小內的文本。缺點:如果你改變文本並且需要添加行,你將不得不在代碼中添加行,這是不可取的。您可能不會這樣做,然後使用一個標識符來添加兩個段落,這違背了這種方法。

在一個poEdit的領域

缺點所有文字:這會導致很長的標識符。我不會舉一個例子 - 你知道他們可以有多久。標識符文本可以跨越多個屏幕。

標識符來形容應顯示

的標識符可以通過描述它是什麼,這樣的短線被替換:

<?php _('Terms and conditions: complete text'); ?> 

缺點:如果一個新的語言添加,並且此文本未翻譯,標識符將顯示。

優點:如果添加或刪除段落,則無需更改源代碼即可完成。

優勢:有時一個英文單詞翻譯成不同的含義根據上下文,像「大膽」:

  • 字體重量:大膽 - 翻譯成德語「費特」。
  • 你今天感覺如何:大膽 - 用德語翻譯成「mutig」。

注意:您應該閱讀此表單字段,您可以選擇所需的字體重量:(1)正常,(2)粗體或(3)斜體,而不是一個文本「字體重量: 膽大」。

在這兩種情況下,像「bold-font」和「bold-feeling」這樣的標識符將提供上下文。

問題

你是如何處理長文在poEdit的?什麼是最佳做法?

回答

0

Gettext不適用於長篇自由文本根本不適用。正確的答案是你沒有提到的第三個:只是不要。使用例如本地化的文本文件。

要在你的一些想法評論:

每段落或行一個poEdit的場

搓背文成各行是一種非常糟糕的想法。它會失去重要的上下文。

標識符來形容應顯示 ... 優勢:如果段落添加或刪除,你可以這樣做,而無需更改源代碼。

非常不好的主意,以及(通常,不只是長文本)。如果源文件(英文)發生更改,則沒有任何提醒您需要更新翻譯。不可避免的是,翻譯不同步,無法檢測。這根本不是「優勢」。

gettext使用源文本作爲關鍵是有原因的:它工程

優勢:有時一個英文單詞翻譯成根據上下文,像「大膽」的含義不同:

我不知道如何與同一字/短文本的不同含義問題。這通過帶有消息上下文的gettext(msgctxt)自然處理爲discussed in the manual