« first day (42 days earlier)      last day (625 days later) » 

12:01 AM
De nuevo, solamente estoy intentando que se construya un mejor sitio... Podés ver todas mis respuestas sobre temas críticos que involucraban a mods o a vos y revisar mi postura, pero dejame serte honesto: creo que se me fue un poco en los últimos meses... Hasta en algún punto, a veces llego a la conclusión de que se adoptaron algunas posturas que juegan en contra de la evolución de SOes
Tengo varios ejemplos, y si te interesa entrar en más detalles, con todo gusto (incluso puede ser en un chat privado con algunos pocos -fedorqui, lois6b, Pikoh, sstan.. no sé, los que apuntan a mejorar siempre-, cuestión de no generar ruido en el sitio).
@g3rv4 exactamente, estaría bueno hacer lo que me respondió Samo... El tema es ver cuándo Alvaro haya revisado todas (para que no se pierdan las sugerencias)... Y el problema es ese nuevo bug que "desaprueba" las sugerencias en Transifex... Pero cuando Alvaro crea que más o menos ya está, tenemos que hacerlo.
Yo no estoy sugiriendo nada más (aunque quedan varias aún sin revisar)... es el problema de que SO no está tomando bien las traducciones (junto a este nuevo bug), que no podemos saber
 
12:20 AM
@Mariano estoy gestionando la reunión con Samo... voy a poner un par de preguntas en el drive y compartirlo.
para sacarnos las dudas (e intentar generar un poco de independencia... si puedo por lo menos mirar qué es lo que pasa, intentar reproducirlo capaz que puedo ayudar a identificar estas cosas).
 
@g3rv4 excelente!
@g3rv4 ese ejemplo no era parte del bug... Las de "Anónimo hizo x sugerenciás" sí, pero las de $UserName$ no estaban en el listado... Esas en particular ya pasaron por todos los estados: (1) propuse (2) eliminaron (3) vos propusiste y aprobaste (4) eliminaron (5) volví a proponer (6) Álvaro aprobó (7) aparecen en el sitio en inglés -cuando ya estaban en castellano
Entre nos, ponele que Samo le haya pifiado un poco en ese "arreglo del bug" :-/
 
... no entiendo cómo pueden ser eliminadas de la base de datos... entiendo que se pierdan en transifex, pero que desaparezcan de la base no tiene mucho sentido
ya pedí la reunión, claramente es baja prioridad (como el PR que tengo esperando hace 10 días). Mientras, trabajo en el backup... es lo único que nos va a permitir demostrar estas cosas
 
@g3rv4 exactamente lo mismo que pensé mientras escribía... te apuesto lo que quieras a que está relacionado a que está regenerando los IDs, y muy probablemente tenga un quilombo de concepto entre cuándo tiene que buscar por ID y cuándo por Key (pero es pura especulación sin ver el código)
Para empezar, no tiene tampoco ninguna lógica que esté regenerando IDs constantemente
 
si, no tiene... el tema es que intentar adivinar sin ver el código (o incluso viendo el código... posta que está por encima de mi nivel de entendederas) me frustra bastante
además, si no puedo siquiera ver si algo lo arregla o no... me gustaría instalar SOes local (la DB es chica) y poder testear push / pull
como para tener un debugger... en fin, veremos si sale
 
@g3rv4 estamos en la misma, pero yo la veo pasar de afuera.. pero no puedo decir mucho, porque tampoco es que tenga el tiempo para arreglarlo yo... es la decisión de SO al fin y al cabo, y esto no le mueve la aguja de tráfico (sí de calidad en el sitio, pero juega a demasiado largo plazo)
@g3rv4 sabés qué... ¿te acordás cuando te dije que esperes a ver qué pasaba antes de seguir con la aplicación?... Bueno, viendo la evolución, quizás nos conviene hacer un sistema por fuera de Transifex, agarrar todo, traducir, y decirle a SO "tomen, acá está la base de todas las palabras, traducida, referenciada por Key"
 
12:36 AM
@Mariano eeeps, se entiende. Hasta pensé en guardar las traducciones aprobadas en mi servidor (string en ingles => string en español) cosa de que si aparece string en español sn traducir o sin aprobar, lo traduzco y apruebo programáticamente
@Mariano JAJAJAJAJAJAJAJA
estamos diciendo lo mismo!
 
jajaja Sí
 
manejarlo nosotros, y usar transifex como interfaz con SO
 
pensalo de esta forma, ¿cuánto tiempo nos puede llevar un pequeño sistemita de traducciones casero... sin diseño, trucho, sin nada de validación, que sólo unos pocos se metan
hasta podríamos trabajar con una base en crudo, que ninguno de los que ayudan se quejaría
 
no mucho, sin dudas
 
(o, para los menos entendidos, export a Excel, que trabajen por bloques y lo entreguen)
 
12:40 AM
o sea... posta que no mucho
si los que traducen son de confianza
 
Lo digo como forma de pensar que no hace falta mucho para solucionarlo
Mismo para las revisiones... sólo con acceso a ciertas personas, que vayan cambiando a revisado.... Realmente es sólo laburar sobre una base de datos... el resto de lo que se programe por encima de eso, bienvenido, pero no se necesita casi nada para empezar
 
es algo que podemos hacer... y sin mucho laburo. Lo que complica la historia es que haya gente traduciendo en Transifex
tendría que ser sólo ahí
 
¿Hay gente traduciendo en Transifex? No sé cuanto es lo que se está haciendo, pero me da la impresión que es poco o nada
(no puedo guiarme por las fechas porque SO las cambia cuando sobreescribe)
 
... de todas formas, si fuéramos por algo así, sería cuestión de sacar a todo el mundo del grupo y listo
un problema de esto es que no tenemos una API posta... entonces, tenemos que simular ser un browser. Esto funciona ok para lo que tengo ahora (sólo saca info), pero cambios en la UI lo van a romper
tendríamos que ser más de 1 para mantenerlo, si no se va a complicar rápido... pero me parece que es mucho más factible (en el sentido de que depende de nosotros)
 
Yo lo veo de esta forma: lo que veo que se está traduciendo, ya se tradujo al menos 3 veces antes... no hay visibilidad sobre aprobaciones.... se pierden las traducciones, y no hay trazabilidad... No creo que Transifex sea una solución viable
En serio, por o menos hasta que lo arreglen, no se puede con Transifex, es imposible. Seguir usándolo es para que más y más personas que hoy le dedican tiempo se terminen aburriendo y larguen todo
 
12:58 AM
qué tendríamos que tener para que funcione? para mi:

1) Un pull de transifex para agarrar cadenas nuevas y borrar viejas. Identificar a las cadenas por key + variant (que es como las identifica SO). Hacer que en la variant no importe el orden de las variables
2) Alguna forma de traducirlas
3) Un push por key y variant a transifex
login usando oauth de SE... y medio que estamos
si tenemos concurrencia puede explotar... pero gana uno de los que está editando y listo
 
¿Cómo que no importe el orden de las variables? El orden va junto con el key (todo fijo)
 
a lo que voy es que si tenemos aCount=one;bCount=other el sistema lo trate igual que si fuera bCount=other;aCount=one
 
ahhh... para tomar las cadenas viejas.... pero realmente no importa eso... eran 20 nomás, y ya tenés a todas sugeridas con el orden correcto
 
algo así sería un buen MVP, no?
 
Lo que digo es tomar directamente a 0e868a8fa494c895de3090e7c8ac428d|ApprovalCount=one,RejectionCount=one,Improveme‌​ntCount=other como identificador (y que vaya de la misma forma que lo usa SO)
no hace falta la lógica para tomar las variables en un orden diferente... que se mantengan fijas no nos perjudica en nada
 
1:07 AM
lo único que no me gusta de eso es que mañana cambia y fuimos... si definimos un orden nosotros (que puede ser alfabético) tendríamos una forma canónica independiente... y cuando vamos a hacer el push, miramos cuáles son equivalentes
pero en definitiva, es sólo un detalle de implementación
 
Pero por lo que definieron al arreglar el bug, si cambia el orden, significa que cambió el string
 
claro, lo que decís es que nunca va a ser 0e868a8fa494c895de3090e7c8ac428d|ApprovalCount=one,Improveme‌​ntCount=other,Rej‌​ectionCount=one
yo lo que digo es que no depender de lo que haga SO con las variants es una feature
 
ahhh--- sí.... no sé, no hace falta para arrancar... igual me puse a discutir un detalle que tardamos menos en programarlo que en discutirlo jajaja
 
totalmente. Lo bueno es que en esta onda el pull es gratis (un solo request) contra los 10.000 que estamos haciendo ahora
y el push... ya estoy mirando
puede ser mucho más fácil de lo que parece... necesitaríamos el push de SO a Transifex para saber bien qué es lo que está traducido
en fin... a programar
 
@g3rv4 y no sé la API, pero creo que había una forma de enviar a Tx un archivo de traducciones en bloque
(si es que la API no te deja)
 
1:13 AM
SI! no sé si mis privilegios de reviewer me lo permiten... pero si no, sí que tiene sentido pedir más privilegios
es en el interés de SOes y no cuesta naranja
> When updating translations, either via the API or other ways, translators are only allowed to modify unreviewed strings and reviewers are allowed to modify both unreviewed and reviewed strings. If a translator tries to modify reviewed strings, the API call just skips those modifications and only updates the unreviewed phrases.
ugh :facepalm: tengo que aprender a leer
 
jaja... incluso es mejor: sólo con reviewer podés
 
ya lo estoy probando
 
y no me preocupa la concurrencia... es el menor de nuestros problemas hoy... para comparar, hoy estamos teniendo problemas de concurrencia con el usuario SO, que no traduce, sino que borra todo
 
sip sip... el GET de /api/2/project/stack-overflow-es/resource/english/translation/es/?file=resjson&‌​mode=translator trae las cosas traducidas, el de /api/2/project/stack-overflow-es/resource/english/translation/en/?file=resjson&‌​mode=translator trae las cosas en inglés... probando un PUT
 
Y en 2) Alguna forma de traducirlas sí mantendría algún sistema de revisión (es importante para que no se nos desmadre)... todos le erramos en alguna traducción cada tanto, y no me animaría a poner en producción sin revisión
(por más que quede el historial, tiene que haber un 2do ojo)
 
1:27 AM
revisión e historial
una revisión es suficiente, no? yo diría de dejar el acceso a unos pocos y si alguien quiere contribuir... en principio que sea en otro lado (en este chat puede ser)
 
posta que se hace fácil
 
sisi, yo estoy en eso
si querés contribuir, nos repartimos :)
 
Sí, 1 solo revisor sobra... si después queremos llevarlo a algo mejor, será para la versión 2.0 con puntajes y votos... pero keep it simple
Me encantaría dar una mano, pero me quedé pensando: dudo nomás si tengo cómo generar un ambiente dev al que pueda entrar normalmente.
 
yo estoy usando Visual Studio Code
y las dbs en un docker
para esto me gusta más que sea una base de datos relacional
 
sí, no es problema el ambiente, sino la máquina :-) quizás algún finde en casa, pero estoy poco tiempo en una compu
veo este finde qué invento
 
1:42 AM
:) igual, no te estreses. Tus aportes en ideas son extremadamente valiosos
 
no es ningún estress... dan ganas de meterme cada vez que te leo hablando de la app
soy rehacio nomás a comprometerme con algo que no estoy seguro de poder encarar bien
(bien == tiempo sentado en PC)
En fin.. primer punto sería coordinar con Álvaro cuándo pedir el push, no?
 
sip sip, mientras yo estoy intentando con hacer un PUT con una traducción... porque claramente, no iban a incluir un ejemplo
 
jajaja... qué raro que esté mal documentado
A esto me refería si te falla la API
 
1:58 AM
bien... igual, primero quiero rendirme con la API... la verdad que hacer un post de un json suena mucho más divertido que simular ser un browser abriendo el modal
encontré un un ejemplo así que... tengo esperanza!
 
más bien! sólo tiré el salvavidas antes de subirme al barco :-)
 
success! lo divertido es que transifex no las identifica por key... sino por string hash
 
md5(key)?? o es otro dato?
 
y si actualizás la variant one, se usa para todas las variant
 
lo mismo que nos pasaba al sugerir
 
2:07 AM
pero le puedo pasar "reviewed": true y eso sólo se aplica a la variant correcta
tenemos un endpoint que las devuelve, así que sigue siendo hacer sólo un GET
me imagino que el string hash cambia con los ids saltarines... pero mientras lo identifiquemos por key, estamos del otro lado
 
ahí vi cómo genera el hash, no depende del ID
 
cómo lo genera?
 
from hashlib import md5

if isinstance(context, list):
    if context:
        keys = [string_key] + context
    else:
        keys = [string_key, '']
else:
    if context == 'None':
        keys = [string_key, '']
    else:
        keys = [string_key, context]
return md5(':'.join(keys).encode('utf-8')).hexdigest()
Si no tiene Context, es md5(key + ':')
 
genial... en nuestro caso, nunca tiene context
entonces... claramente no varía con los ids saltarines
 
nope, sólo lo debe hacer por codificación + un toque de seguridad
lo probé en una, coincide perfecto
 
2:16 AM
sisi, fectivamente
tiene pinta de ser para que varíe en función del contexto nomás
 
claro, también
 
tenemos que tener un para cosas como [$company$]($url)
 
jajaj... sí, un estado más en la base de datos: ignore
aunque esa es fácil saber que no va... para el resto, mejor que se traduzcan y ya
 
// GET
curl "https://www.transifex.com/api/2/project/stack-overflow-es/resource/english/translation/es/strings/" \
     -u 'api:<tuApiKeyAca>'
// PUT
curl -X "PUT" "https://www.transifex.com/api/2/project/stack-overflow-es/resource/english/translation/es/strings/" \
     -H 'Content-Type: application/json' \
     -u 'api:<tuApiKeyAca>' \
     -d $'[
  {
    "reviewed": true,
    "source_entity_hash": "a21cb390d2a0cf3a6b836552dba791ce",
    "translation": "[$company$]($url)"
  }
]'
así podemos hacer un GET y traer todos los strings o traducir muchas cosas a la vez
en vez de 9000 requests cada 30 minutos, podemos hacer 2 requests por minuto
eeen fin, me voy a dormir... convencido de que la solución viene por acá
 
Economy 101
Suena muy bien!
Dale, yo veo qué me invento este finde... Abrazo
 
 
5 hours later…
7:03 AM
@Mariano me sumo a la petición, @JuanM
2
 
7:25 AM
en el caso de poner el la lista negra, hay dos peticiones que llevan pendientes casi un año (es.meta.stackoverflow.com/questions/tagged/…)
 
7:48 AM
@fedorqui incluyendo quizás a script y es.meta.stackoverflow.com/q/2854/127, que es de las que no están bien etiquetadas pero creo que merece lista negra
 
 
2 hours later…
9:43 AM
@Mariano sí, coincido en que sería bueno añadirlas a la lista negra
 

« first day (42 days earlier)      last day (625 days later) »