¿Reemplazar textos del sitio de manera eficiente?

He leído que la única manera de obtener todos los textos para reemplazar es usando la configuración de textos del sitio y reemplazando cada uno. Estoy intentando cambiar la redacción:

Temas → Hilos
Categorías → Foros
Subcategorías → Subforos

Porque eso tiene mucho más sentido para mí en los foros de mensajes. Pude cambiar muchos de ellos con los textos del sitio, pero es una forma muy ineficiente de hacerlo. ¿Hay alguna otra opción?

(También, debido a que solo devolverá los primeros 50 resultados, no puedo cambiarlos todos con los textos del sitio de todas formas.)

Si esa es la colina en la que quieres morir (y cuando haces preguntas aquí, ¿vas a usar tu idioma o el nuestro?), puedes mirar discourse/config/locales/client.en.yml at main · discourse/discourse · GitHub y verlos todos.

3 Me gusta

Dependiendo de si puedes usar plugins de terceros, ¿esto podría ser de alguna utilidad?

¡Jaja, usaré tu idioma para mantener las cosas sanas! Respecto a este archivo, ¿puedo simplemente cambiar su contenido para mi instalación local y las cosas cambiarán en todo el sitio?

Oh, gracias por compartirlo. Me preocupa la posibilidad de que dañe los elementos de la interfaz de usuario según los comentarios…

1 me gusta

Eso es principalmente para que puedas ver cuáles son todos.

Podrías editar ese archivo y luego inventar la forma de que tu versión se copie sobre la que está en el contenedor.

Otra cosa que podrías hacer sería editarlo y luego inventar la forma de actualizar las cosas en la base de datos mediante la API. O podrías hacerlo en Rails. En realidad, no sería muy difícil conseguir que alguna IA escriba un script para hacer las actualizaciones.

Realmente no lo recomiendo, pero podría ser divertido.

Entonces, quieres decir que este archivo es lo que la aplicación interpreta para poblar la base de datos con los valores reales? Es decir, ¿esto es lo que el sistema lee como “predeterminados”?

No, no lo creo.

Esto no accede a la base de datos (creo que sería demasiado lento).

Creo que la mayor parte del contenido local se procesa en memoria para mayor velocidad, utilizando Redis como caché (estaré encantado de que me corrijan si me equivoco).

Lo único que se almacena en la base de datos son tus modificaciones (en la tabla translation_overrides), que se leerán al inicializar la aplicación o de forma individual cuando realices una única modificación mientras estás en línea.

Solo señalaría un par de cosas:

  • aumentar significativamente el número de modificaciones podría alargar el tiempo de inicialización de tu aplicación (no estoy seguro de que nadie haya medido esto).
  • estas modificaciones pueden convertirse en una molestia administrativa de mantener a medida que Discourse evoluciona pero mantiene su propia nomenclatura. Te estás inventando trabajo aquí.
  • dado que ahora es, sin duda, la plataforma de foros más popular, mucha gente ya utiliza al menos un sitio de Discourse y está muy acostumbrada a la nomenclatura, así que considera no confundir a tus usuarios cambiando lo que ya les resulta familiar por normas anteriores.

Ver también:

Esto implica que cada Categoría tiene sus propios administradores, URL, configuraciones, propósito… por ejemplo, Meta es un foro. No está compuesto por varios foros… Realmente no estoy seguro de cómo argumentarías eso. Pero me desvío del tema.

No.

Sí.

Así que si quieres cambiarlos todos, lo cual es una pésima idea, podrías editar ese archivo, ponerlo en /var/discourse/shared/standalone/whatever

Y luego añadir un exec al app.yml que lo copie de /shared/whatever a /var/www/discourse/config/locales/

Pero también tendrás que vigilar los commits para ver si alguna vez cambia y así poder añadir lo que sea que haya cambiado.

Así que la forma de hacerlo a través de la API o de Rails, que pone los valores en la base de datos, podría ser mejor.

Respetuosamente, ustedes no conocen mi caso de uso. Decir que es una “idea terrible” o que podría estar dañando la experiencia del usuario sin saber por qué hago lo que hago asume que lo hago por ignorancia. No estoy interesado en entrar en un debate sobre taxonomía o experiencia del usuario. Para mi caso de uso y audiencia, la terminología que Discourse usa para describir sus tipos de contenido no tiene sentido.

Así que para recapitular:

  • Discourse lee este archivo para completar sus etiquetas por defecto; cualquier cambio que haga en la traducción sobrescribe esto y termina guardado en la base de datos. Entonces, la forma más eficiente de cambiar estos términos en todo el sitio es simplemente modificar este archivo y moverlo a la carpeta /locales/.
  • Parecería que las únicas preocupaciones aquí son si ese archivo es actualizado por el núcleo. Supongo entonces que los nuevos textos se leerían desde la versión /standalone/ del archivo en lugar del mío, por lo que necesitaría actualizar el mío para acomodar eso. No estoy seguro de cómo el rendimiento es un problema en este caso, ya que la base de datos no está involucrada y solo se lee desde un archivo?

Gracias.

1 me gusta

Esa es una forma de hacerlo. Necesitarías editar tu app.yml para que se haga cada vez que construyas un nuevo contenedor.

Si haces lo que describí anteriormente, tu versión sobrescribirá la versión que se suministra con la versión actual. La versión en el directorio locales es lo que creo que quieres decir con la “versión standalone”. Por lo tanto, si lo haces de esta manera, el archivo eventualmente carecerá de cosas a menos que observes cuándo cambia. En el peor de los casos, solo verás el nombre de la cosa que falta, así que tal vez no te importe. No fallará, solo se verá confuso.

Digo que es una mala idea porque estas son cosas que pueden causar problemas si no las entiendes, así que cuando termine siendo un desastre, quedará constancia de que no recomendé los cambios que te indiqué cómo hacer.

1 me gusta

Podrías emitir un montón de comandos sed en app.yml para automatizar las actualizaciones.

De esa manera, podrías ser un poco más “Tolerante a los cambios”.

Si resulta que solo estás cambiando unas 20 entradas, ¡vale la pena hacerlo en Admin en línea!

¡Un desafío interesante!

1 me gusta

¡Gracias por el consejo!

Parece que obtuve la mayoría (si no todas) las referencias públicas a través de los textos del sitio. Pero lo tendré en cuenta si desarrollo un método más completo.

2 Me gusta

¡Buena idea! Eso es definitivamente mejor que sobrescribir todo como sugerí. . . . siempre y cuando esas operaciones sed no cambien los nombres de los textos.

1 me gusta

Sí, ¡habría que tener cuidado y mirar las diferencias! :sweat_smile:

1 me gusta