当前位置: 首页 > 知识库问答 >
问题:

CakePHPi18n没有多个po文件

蓟清野
2023-03-14

对于我的cakephp2.3应用程序,我创建了pot文件,并使用Poedit创建了po文件。但我有将近100个字符串和12种语言。因此,在每次更改/添加中,我不想重新创建pot文件,也不想使用Poedit添加po文件。

所以我需要另一个适合CakePHP的解决方案
-是否可以不使用po文件而仅使用csv文件来使用i18n?(Zend Translate似乎也有类似的解决方案)
-是否可以对所有翻译使用一个po文件,或者对于这么多的字符串来说,这会使性能太差
-我不喜欢将翻译写入数据库。对于小型项目,什么是gettext的更好替代方案?

相关:一个或多个po文件中的CakePHP翻译和性能

共有1个答案

栾鸣
2023-03-14

默认情况下,CakePHP只支持. po或. mo文件进行本地化,所以如果您想使用CSV,您必须实现自己的机制。

将每个区域设置放在单独的文件中是(IMO)最佳实践;您将能够为每种语言设立单独的翻译/翻译局。我不认为将所有语言放在一个文件中有任何好处。将所有语言放在一个文件中可能只会使事情变得更加困难,因为每种语言都需要为每个字符串拥有自己唯一的“标识符”。此外,每种语言都有单独的文件,这使得比较不同语言更容易,例如检查是否缺少“msgid”

但是,您不必重新生成。每次更改都会写入文件。如果跟踪所做的更改,则始终可以将新的“msgid”添加到现有的。po文件。

正如@Admad所建议的,您不应该同时拥有这两种功能。阿宝和。项目中的mo(二进制)文件。如果两者都存在,CakePHP会更喜欢。mo文件。

就个人而言,我更喜欢使用。po文件的创建只需少一步(将.po转换为二进制格式),而且由于它们是二进制的,所以(可能)用CakePHP解析它们的速度更快,但这是我的偏好,可能会因您的情况而有所不同。

 类似资料:
  • 问题内容: 有谁知道一个允许我解析.PO文件的Java库?我只想创建ID和值的映射,以便将它们加载到数据库中。 问题答案: 根据Java gettext实用程序手册, 您可以使用程序将PO文件转换为ResourceBundle类,并使用java.util.ResourceBundle或gnu.gettext.GettextResource读取它- 我认为这是最有效的方法。Gettext-commo

  • Biblioteca de componentes de UI para Angular. Pré-requisitos Para começar a utilizar o PO UI é pré-requisito ter o Node.js instalado (versão 12.x ou acima) e o seu gerenciador de pacote favorito na ve

  • 问题内容: 我正在尝试使用Swift(不是Xcode项目)编写脚本。需要明确的是,我文件的第一行是 我只是从命令行调用它。 但是,我无法弄清楚该脚本如何使用另一个.swift文件中的代码。它不会从同一目录中拾取它,而且我看不到任何方法。 支持吗? 问题答案: 有更好的方法! 如果您要从中导入文件,将像:

  • 有没有办法拆分一个swaggerfile / OpenAPI规范文件,JSON或YAML,将每个$ref编码为一个单独的文件?因为我找到了很多解决方案来实现相反的目标(多个文件 - 我想要实现的是:我有一个巨大的JSON swaggerfile,其中包含内部$refs。我希望每个对象或路径定义都有一个单独的文件,并且在根文件中,引用(本地或绝对)这些文件。这样,我就可以编辑根文件,轻松获得我需要的

  • 如果您下载了目录,Google 云端硬盘网络界面允许您下载单个.zip文件。但是,我发现没有办法使用API做到这一点。是否可以使用 API 在驱动器上创建多文件 zip? 更新:田木的代码有效!这太棒了!但是,我只能在我的个人帐户中使用它。我有两个 G Suite 管理员帐号,但出现以下错误消息: “抱歉,此时无法打开文件。 请检查地址,然后重试。” 我已经确认这可以在多个免费的个人google帐

  • 问题内容: 我喜欢新的Java8 StreamAPI,并希望不仅将其用于一个文件。通常,我使用以下代码: 但是,如果可能的话,如何在一个流中读取两个文件呢? 问题答案: 没有任何额外的帮助程序功能或外部库,最简单的方法是: 如果尚未声明抛出受检查的异常,则可以 但是,a,我们不能这样做。有几种解决方法。一种是制作自己的版本,将其称为标准版本,然后将其作为捕获并重新抛出。另一种方法是使用抛出检查异常