Cómo estimar el costo de la traducción usando el plugin de traductor

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 :sweat_smile:
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:
image

Creo que sería una cantidad considerable para nuestro Foro si la habilitamos para todas las categorías :sweat_smile:
¿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.

¡Espero que esto ayude!

¡Esta respuesta es increíble! Muy detallada @lee-dohm, así que la saqué del tema de traducción para que no se borre y pueda ser útil para otros.

Gracias por esta guía. Tengo dos preguntas:

  • Basado en esto:

    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?
    image

    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 :+1: