Hola,
Gracias por la información y por las capturas.
Hay algo que no cuadra en el comportamiento que describes:
si la página original está en **español**, la editas y escribes el texto del *placeholder* en **inglés**, pero en el front-end **sigue mostrándose en español**; y además, en el Editor de Traducción, WPML vuelve a detectar ese texto como si fuese **español → inglés**, cuando tú ya lo habías puesto en inglés al editar la página.
Eso no es lo esperado. De acuerdo con tus capturas, en español debería mostrarse exactamente **“Search by property, location, price…”** (tal como lo configuraste), y no mantenerse en español si ese campo realmente está tomando el valor guardado.
### Prueba rápida
Por favor, edita el *placeholder* del buscador para que diga: **“Prueba cadena placeholder”**.
¿Ese texto aparece en el front-end?
---
Hice otra prueba, añadí este código a `functions.php`:
```php
/**
* TF Search: Placeholder hardcoded por idioma (sin WPML String Translation).
*/
add_filter( 'tfre_search_placeholder_keyword', function( $placeholder ) {
$lang = function_exists( 'apply_filters' ) && has_filter( 'wpml_current_language' )
? apply_filters( 'wpml_current_language', 'es' )
: substr( get_locale(), 0, 2 );
$translations = [
'es' => 'Buscar por propiedad, ubicación, precio ...',
'de' => 'Nach Immobilie, Lage, Preis suchen ...',
'en' => 'Search by property, location, price ...',
];
return $translations[ $lang ] ?? $translations['es'];
});
```
Este snippet **hardcodea el placeholder por idioma** y **no usa WPML String Translation**. Con esto pude reproducir exactamente lo que comentas:
* El placeholder se muestra **correctamente** según el idioma…
* …pero luego **revierte al idioma por defecto**.
Esto es importante porque el filtro `tfre_search_placeholder_keyword` ya está entregando el valor correcto al plugin en PHP (según el idioma actual). Si aun así se muestra mal, entonces **algo está sobrescribiendo el placeholder después**, en otra parte del flujo.
---
### Conclusión técnica (por qué no apunta a WPML)
Si el texto correcto ya llega desde el filtro, y luego cambia, el origen más probable está en:
* **JavaScript** que modifica el `placeholder` después de cargar la página.
* **Orden de ejecución**: un script del tema/plugin pisa el valor luego de que el filtro ya lo dejó bien.
* **Caché / HTML pregenerado** (por ejemplo, caché de Elementor o caché a nivel servidor) que “sirve” el placeholder en español.
* Algún proceso del **tema Proty** (o un addon) que re-renderiza el formulario y pierde el valor filtrado.
Dos posibilidades muy probables:
1. Algún script del tema **Proty** está sobrescribiendo el atributo `placeholder` de inputs como `.form-control.search-field` después de que TF Real Estate lo estableció correctamente.
2. El plugin **tf-real-estate** aplica el placeholder vía JS (por ejemplo `advanced-search.js`, función tipo `onReplacePlaceHolderKeyword`) usando una variable localizada (p. ej. `advancedSearchVars.placeholderKeyword`), y **luego otro script lo vuelve a pisar y lo deja en español**.
---
Te sugiero **contactar también al soporte del tema Proty** (o del addon que provee el buscador), ya que el comportamiento encaja muy bien con un script del tema que está reescribiendo el placeholder después de renderizar el formulario.
Saludos cordiales,
Otto