- Status
- Warten auf Autor
- Zugehöriges Plugin/Theme
- Ultimate Membership Pro
- Themen-Tags
- Compatibility
Übersicht über das Problem
Wenn Sie Ultimate Membership Pro mit WPML verwenden, kann ein Problem auftreten, bei dem Checkbox-Werte, die in Mitgliederprofilen und Verzeichnisfiltern verwendet werden, nicht übersetzbar sind. Dies verhindert, dass übersetzte Beschriftungen auf übersetzten Verzeichnisseiten oder in Formularen korrekt angezeigt werden.
Problemumgehung
Bitte stellen Sie sicher, dass Sie ein vollständiges Backup Ihrer Website haben, bevor Sie fortfahren.
1- Falsche Übersetzungen löschen
- Gehen Sie zu WPML > String-Übersetzung
- Filtern Sie nach „Übersetzung ist abgeschlossen“
- Suchen Sie nach Strings unter dem Feldnamen [ihc_user_fields]
- Wählen Sie alle diese Strings aus und löschen Sie sie – es handelt sich um Wert-Strings und sie sollten nicht übersetzt werden.
2- Frontend-Filter-Template ändern
- Öffnen Sie: wp-content/plugins/indeed-membership-pro/public/views/listing_users-filter.php
- Suchen Sie nach: Zeile 167 unter dem Fall ‘checkbox’
Ersetzen Sie:
<?php
foreach ($field['values'] as $v){
if (is_array($get_value)){
$checked = (in_array($v, $get_value)) ? 'checked' : '';
} else {
$checked = ($v==$get_value) ? 'checked' : '';
}
?>
<div class="iump-form-checkbox">
<input type="checkbox" name="<?php echo esc_attr($field['name']);?>[]" value="<?php echo esc_attr(ihc_correct_text($v));?>" <?php echo esc_attr($checked);?> />
<?php echo esc_html(ihc_correct_text($v));?>
</div>
<?php
}
?>
Durch:
<?php
foreach ($field['values'] as $v){
if (is_array($get_value)){
$checked = (in_array($v, $get_value)) ? 'checked' : '';
} else {
$checked = ($v==$get_value) ? 'checked' : '';
}
// WPML: Separate value and label
$wpml_original_value = ihc_correct_text($v);
$wpml_string_name = 'checkbox_option_' . $field['name'];
do_action( 'wpml_register_single_string', 'ihc', $wpml_string_name . '_' . sanitize_title($v), $wpml_original_value );
$wpml_translated_label = apply_filters( 'wpml_translate_single_string', $wpml_original_value, 'ihc', $wpml_string_name . '_' . sanitize_title($v) );
?>
<div class="iump-form-checkbox">
<input type="checkbox" name="<?php echo esc_attr($field['name']);?>[]" value="<?php echo esc_attr(ihc_correct_text($v));?>" <?php echo esc_attr($checked);?> />
<?php echo esc_html($wpml_translated_label); ?>
</div>
<?php
}
?>
3- Checkbox-Labels des Registrierungsformulars korrigieren
- Öffnen Sie: wp-content/plugins/indeed-membership-pro/classes/IndeedForms.php
- Suchen Sie nach: Der Checkbox-Funktion (ungefähr Zeile 129)
Ersetzen Sie:
$output .= ihc_correct_text( $v );Durch:
$output .= __( ihc_correct_text( $v ), 'ihc' );</ul>
4- String-Registrierung auslösen
- Besuchen Sie die Verzeichnisseite im Frontend, um neue Strings zu laden.
- Gehen Sie zu WPML > String-Übersetzung und übersetzen Sie nur die neu registrierten Strings unter der Domain „ihc“ (benannt wie checkbox_option_name).