我开始使用poedit进行PHP文本翻译。现在我很困惑如何处理长多行文本,例如带有条款和条件的页面。我和同事讨论过这个问题。
我看到两个选项:
每段或第一行poedit字段
这使文本保持在echo _('lorem ipsum');
小。
缺点:如果更改文本并需要添加行,则必须在代码中添加行,这是不可取的。您可能不会这样做,然后使用一个标识符添加两个段落,这违背了这种方法。
一个poedit字段中的所有文字
缺点:这将导致非常长的标识符。我不打算举个例子 - 你知道他们能坚持多久。标识符文本可以跨越多个屏幕。
用于描述应显示内容的标识符
标识符可以用描述其内容的短线代替,如下所示:
<?php _('Terms and conditions: complete text'); ?>
缺点:如果添加了新语言,并且未翻译此文本,则会显示标识符。
优点:如果添加或删除段落,您可以这样做,而无需更改源代码。
优势:有时一个英语单词根据上下文被翻译成不同的含义,例如&#34; bold&#34;:
注意:您应该将其作为表单字段阅读,您可以在其中选择所需的字体权重:(1)正常,(2)粗体,或(3)斜体,而不是一个文本&#34;字体粗细:大胆&#34;。
在这两种情况下,标识符如&#34; bold-font&#34;和&#34;大胆的感觉&#34;会提供背景。
问题
你如何处理poedit中的长篇文章?什么是最佳做法?
答案 0 :(得分:0)
Gettext不适合所有的长篇自由格式文本。正确的答案是你没有提到的第三个答案:只是不。使用例如改为使用本地化的文本文件。
评论您的一些想法:
每段或第一行poedit字段
将文本切成单独的行是一个非常糟糕的主意。这将失去重要的背景。
用于描述应显示内容的标识符 ... 优点:如果添加或删除段落,则无需更改源代码即可执行此操作。
非常糟糕的想法(通常,不仅仅是长文本)。如果源(英文)文本发生更改,则无需提醒您需要更新翻译。不可避免地,翻译 会不可思议地失去同步。这根本不是一个“优势”。
gettext使用源文本作为关键字是有原因的:工作。
优势:有时一个英语单词根据上下文被翻译成不同的含义,例如&#34; bold&#34;:
我看不出同一个词/短文的不同含义与这个问题有什么关系。这由gettext自然处理,消息上下文(msgctxt
)为discussed in the manual。