gpt4 book ai didi

cakephp、i18n .po 文件,如何正确使用它们

转载 作者:行者123 更新时间:2023-12-02 21:04:14 25 4
gpt4 key购买 nike

我终于成功建立了一个多语言 cakephp 网站。虽然尚未完成,但这是我第一次可以在 Bootstrap 中更改 DEFAULT_LANGUAGE,并且可以看到要更改的语言。

我现在的问题是我不太明白如何正确使用 po 文件。根据我使用的教程,我需要创建一个文件夹/app/locale ,并在该文件夹内按以下格式为每种语言创建一个文件夹:/locale/eng/LC_MESSAGES。

我已经做到了,并且我还设法使用 cake i18n extract 提取了 default.pot 文件。看来所有出现的 __() 函数都已成功找到。

在我的应用程序中,我使用两种语言:eng 和 gre。我明白为什么每种语言都需要一个单独的文件夹。然而,就我而言,当我编辑每个文件夹中的 po 文件时,什么也没有发生……好吧,几乎什么也没有发生。如果我编辑/app/locale/gre/LC_MESSAGES/default.po 我没有语言更改。如果我编辑/app/locale/eng /LC_MESSAGES/default.po,则语言会更改为新值(在翻译字段上),并且不会切换到其他语言。

我做错了什么。我希望我尽可能清楚地表达自己的意思。

最佳答案

有不同的方法可以解决这个问题。最简单的方法是使用主要语言对应用程序进行编码,并将所有可翻译字符串包装在 __() 中。稍后您可以为您可能需要的每个翻译添加 .po 文件。

这种方法的问题是,如果您要更改原始语言的文本,您还需要更改每个 中该字符串的 msgid 条目您可能拥有的 .po 文件。如果您必须支持多种不同的语言,这可能会变得相当麻烦。

请忽略上面的旧信息。正确设置的 i18n 工作流程将使用 xgettext 或类似实用程序自动从源代码中提取 __() 包装的字符串,并生成、更新和合并 .po 文件。没什么麻烦的。

<小时/>

另一种方法是在源文件中使用“描述符”文本,并将实际文本放入 .po 文件中,即使对于主要语言也是如此。即:

__('PRODUCT CAPTION');

/eng/.po
msgid "PRODUCT CAPTION"
msgstr "Buy our awesome products!"

/ger/.po
msgid "PRODUCT CAPTION"
msgstr "Kaufen Sie unsere Produkte!"

哪种方法效果更好取决于项目和您,您必须弄清楚......

关于cakephp、i18n .po 文件,如何正确使用它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2507271/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com