No hay razón para intentar limitar la función a una categoría…
A menos que tengas muchos temas y consideres el costo de traducir todo
Por eso estábamos pensando en mantenernos en una sola categoría.
Esto en sí mismo me recordó un poco a este fragmento del primer mensaje:
Creo que sería una cantidad considerable para nuestro Foro si la habilitamos para todas las categorías
¿Podrías darnos algún consejo sobre cómo estimar ese costo? Creo que se basa en el número de caracteres, pero no sé cómo funciona el plugin en el backend. ¿Quizás solo toma los primeros X caracteres de cada publicación para reducir el costo de la detección del idioma?
Por lo tanto, estábamos pensando en nuestro caso de uso y sería permitir que los hablantes de inglés traduzcan publicaciones en otros idiomas en una categoría específica para poder responder en inglés y luego que los autores de los temas puedan traducir estas respuestas a su idioma (= el idioma del primer mensaje).
El coste es un buen punto que no había considerado. Utilizamos el servicio de traducción de Microsoft y nunca hemos tenido que pagar por él, pero el sitio para el que configuré esto es bastante pequeño. Quizás limitar las traducciones por categoría sea de hecho una solicitud de función válida.
Personalmente, tampoco he entendido nunca del todo cuánto se envía al traductor ni cómo funciona en la práctica. Simplemente “funciona”.
Así es como hice el cálculo de costos para mi foro. Todas las consultas son para el Explorador de Datos.
Estimar el número promedio de caracteres por publicación
La última vez que verifiqué, el plugin enviaba el texto cocinado al servicio de traducción.
SELECT AVG(LENGTH(p.cooked))
FROM posts AS p
JOIN topics AS t ON p.topic_id = t.id
WHERE t.archetype != 'private_message'
Estimar el número de publicaciones leídas por visita de usuario
Tomé los últimos 30 días para obtener una estimación relativamente reciente.
-- [params]
-- int :from_days_ago = 0
-- int :duration_days = 30
WITH t AS (
SELECT CURRENT_TIMESTAMP - ((:from_days_ago + :duration_days) * (INTERVAL '1 days')) AS START,
CURRENT_TIMESTAMP - (:from_days_ago * (INTERVAL '1 days')) AS END
)
SELECT AVG(posts_read)
FROM user_visits
JOIN t ON visited_at > t.START AND visited_at < t.END
Número de visitas de usuario en los últimos 30 días
-- [params]
-- int :from_days_ago = 0
-- int :duration_days = 30
WITH t AS (
SELECT CURRENT_TIMESTAMP - ((:from_days_ago + :duration_days) * (INTERVAL '1 days')) AS START,
CURRENT_TIMESTAMP - (:from_days_ago * (INTERVAL '1 days')) AS END
)
SELECT COUNT(1)
FROM user_visits
JOIN t ON visited_at > t.START AND visited_at < t.END
Estimación del número de caracteres leídos en los últimos 30 días
Multiplicar las tres cifras anteriores me dio una estimación del número de caracteres cocinados de las publicaciones que se leyeron en los últimos 30 días.
Estimación del número de usuarios con idioma distinto al principal
Dado que el inglés es el idioma principal de nuestro foro, utilicé Google Analytics para determinar el porcentaje de usuarios que tenían sus navegadores configurados en un idioma distinto al inglés.
Estimación final
Luego, hice una estimación baja/media/alta asumiendo que la tasa actual de visitantes no anglófonos sería el “caso común”, la reduje a la mitad para la estimación baja y la duplicé para la alta. Eso me dio un número bajo/medio/alto de caracteres en 30 días, que multiplicé por la tarifa por X caracteres del servicio de traducción.
Sería bueno correlacionar aún los datos del campo users.locale y obtener un % de usuarios que lo tengan configurado con un valor distinto al inglés (si tu sitio no se adapta automáticamente según el entorno del usuario, lo cual creo que es una opción en la configuración de administración).
¿Notaste un pico significativo cuando lanzaste el plugin por primera vez, basado en esto?
Creo que algo así todavía podría agregarse para completar la estimación:
SELECT LENGTH(COALESCE(string_agg(posts.cooked, ''),''))
FROM posts
JOIN topics on posts.topic_id = topics.id
WHERE topics.archetype <> 'private_message'
No hice ningún seguimiento después de que decidimos lanzar, así que no estoy seguro de si eso afectó algo, no. Pero sí, incluir tu consulta en la estimación de costos sería bueno