- 状态
- 已解决
- 解决于
- 0.3.0
- 相关插件/主题
- Ninja Forms
- 主题标签
- Compatibility
问题概述
Ninja Forms 有一个名为可重复字段的新功能。此功能目前尚无法在我们的高级翻译编辑器中进行翻译。不过,我们计划很快实现兼容。
临时解决方法
- 在继续操作之前,请对您的站点进行完整备份。
- 准备好备份后,我们需要修改 2 个文件:
- 打开 /wp-content/plugins/wpml-ninja-forms/classes/Hooks/NinjaForms/Strings.php。
- 找到第 76 行:
$package->registerField( $field->get_id(), $field->get_settings() );
- 并在其后添加:
// Register repeater fields strings if ( 'repeater' === $field->get_settings( 'type' ) && $field->get_settings()['fields'] ) { foreach ( $field->get_settings()['fields'] as $subfield) { $package->registerField( $subfield['id'], $subfield ); } } - 然后打开 /wp-content/plugins/wpml-ninja-forms/vendor/wpml/forms/classes/Translation/Package.php。
- 找到第 314 行:
return $data;
- 并在其前添加:
// Translate repeater fields strings if ( $data['fields'] ) { foreach ( $data['fields'] as $key => $field ) { $forTranslation = $this->fieldProperties->forTranslation( $field ); foreach ( $forTranslation as $propertyName => $translationSettings ) { $stringValue = $this->fieldProperties->getValue( $field, $propertyName ); if ( $stringValue ) { if ( $this->isArray( $stringValue, $translationSettings ) ) { $field[ $propertyName ] = $this->translateOptions( $stringValue, $field['id'], $translationSettings ); } else { $data['fields'][$key][$propertyName] = $this->translateString( $stringValue, $field['id'], $propertyName ); } } } } }
后续步骤
我们将会在 Ninja Forms Multilingual 的下一个版本中解决此问题。