带 ACF 的双语自定义字段标签(免费版)

bilingual custom field labels with ACF (free version)

我正在使用自定义字段(带有 free version of ACF)向相应的自定义 post 类型条目添加额外的、有时需要的格式化内容。我整理了一个特定于站点的小插件,其中包括用于将自定义字段添加到摘录和内容中的过滤器,并通过循环将它们作为以下列表输出:

{CUSTOM FIELD LABEL}: {CUSTOM FIELD VALUE}

该网站应提供英语和德语版本。使用 Sublanguage plugin,我可以翻译网站的大部分内容,但不能翻译自定义字段标签。

根据我在 i18n/l10n 和 Wordpress 上阅读的内容,我了解到在创建自定义字段时我应该最好使用 __() 作为标签。由于自定义字段的创建是通过 ACF 插件代码实现的,我假设我必须创建字段 "myself" 以便我可以使用 __() 来创建多语言标签。我想,我会用 Loco Translate.

实现字段的实际翻译

ACF 提供 a neat way to export my already existing ACF-created field groups, which provides me with the PHP code to create the fields "on my own". I put the ACF code inside a new function in my site-specific plugin and hooked it to the acf/init action. I did pretty much the same as described in this question,但没有任何反应:当我之后在 ACF 界面中删除自定义字段组时,"new post" 屏幕中没有出现自定义字段。

所以基本上,我有一个问题,根据答案,会产生后续问题:

PS:我不确定这是属于这里还是属于 WP StackExchange,因为它一部分与编码相关,一部分与翻译逻辑相关。请告诉我是否应该将其移至其他平台。

好的,

在此期间我自己解决了大部分问题:

  • 我没有钩入正确的动作。事实证明,acf/init只在ACFv5(pro)中可用,而免费版仍然是4.x版本。我加入了 init - 瞧瞧:有我的现场小组。
  • 使用 __() 函数来声明我的自定义字段的标签,Loco Translate 让我自己翻译字符串变得非常容易。

结论

显然,我的假设是正确的 - 这就是创建国际化自定义字段标签的方法 :) 尽管如此,我无法有效地翻译我正在使用的复选框字段的选项,尽管 Loco 识别了字符串并且我提供翻译。

然而……

解决方案远非完美:

  • 我现在是用两个插件在网站上尽量翻译。
  • 在我的站点特定插件中通过 PHP 代码创建 ACF 字段组 "myself",我需要将它们从管理员 UI 中删除。这意味着,任何标准用户将来都很难更改他们的任何内容(这当然也可能是一个功能:))