poedit for long / multiline texts - identifier vs context

时间:2015-04-30 12:40:45

标签: php poedit

我开始使用poedit进行PHP文本翻译。现在我很困惑如何处理长多行文本,例如带有条款和条件的页面。我和同事讨论过这个问题。

我看到两个选项:

每段或第一行poedit字段

这使文本保持在echo _('lorem ipsum');小。

缺点:如果更改文本并需要添加行,则必须在代码中添加行,这是不可取的。您可能不会这样做,然后使用一个标识符添加两个段落,这违背了这种方法。

一个poedit字段中的所有文字

缺点:这将导致非常长的标识符。我不打算举个例子 - 你知道他们能坚持多久。标识符文本可以跨越多个屏幕。

用于描述应显示内容的标识符

标识符可以用描述其内容的短线代替,如下所示:

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

缺点:如果添加了新语言,并且未翻译此文本,则会显示标识符。

优点:如果添加或删除段落,您可以这样做,而无需更改源代码。

优势:有时一个英语单词根据上下文被翻译成不同的含义,例如&#34; bold&#34;:

  • 字体粗细:粗体 - 翻译为&#34; fett&#34;用德语。
  • 你今天感觉如何:大胆 - 翻译为&#34; mutig&#34;用德语。

注意:您应该将其作为表单字段阅读,您可以在其中选择所需的字体权重:(1)正常,(2)粗体,或(3)斜体,而不是一个文本&#34;字体粗细:大胆&#34;。

在这两种情况下,标识符如&#34; bold-font&#34;和&#34;大胆的感觉&#34;会提供背景。

问题

你如何处理poedit中的长篇文章?什么是最佳做法?

1 个答案:

答案 0 :(得分:0)

Gettext不适合所有的长篇自由格式文本。正确的答案是你没有提到的第三个答案:只是不。使用例如改为使用本地化的文本文件。

评论您的一些想法:

  

每段或第一行poedit字段

将文本切成单独的行是一个非常糟糕的主意。这将失去重要的背景。

  

用于描述应显示内容的标识符   ...   优点:如果添加或删除段落,则无需更改源代码即可执行此操作。

非常糟糕的想法(通常,不仅仅是长文本)。如果源(英文)文本发生更改,则无需提醒您需要更新翻译。不可避免地,翻译 会不可思议地失去同步。这根本不是一个“优势”。

gettext使用源文本作为关键字是有原因的:工作

  

优势:有时一个英语单词根据上下文被翻译成不同的含义,例如&#34; bold&#34;:

我看不出同一个词/短文的不同含义与这个问题有什么关系。这由gettext自然处理,消息上下文(msgctxt)为discussed in the manual