Web-based translations

jpab
Posts: 77
Joined: Thu Jul 18, 2013 12:30 pm
Location: UK

Re: Web-based translations

Post by jpab »

walterar wrote:I am of the view that what is gained in translation interface was lost in the interface builder - modifier. In the previous system (on file Languages.lua) you could "see" the plot of a mission module. Now that's impossible. I think in the future, we must do a better interface for the texts creative. Meanwhile, it is what it is. :)
Since we started using transifex we've had a lot of contributions of improvements to translations, and work started to add two new languages (Portuguese and Turkish), so I've been very happy with the change. The big problem is the mission "flavour" system, which was more flexible and maybe easier to understand with the previous system. I guess that's what you're referring to by "you could "see" the plot of a mission module"? We're limited by only having key/value translation pairs in transifex, but there are probably things we can do to improve it a bit. If you have suggestions, please tell us.

John B
walterar
Posts: 95
Joined: Sat Sep 14, 2013 4:48 pm

Re: Web-based translations

Post by walterar »

I think we need to develop something to make it more friendly to the module creators. Meanwhile, it would be good that, in the *.Json files, the keywords is alphanumerically sorted. And, seen with Meld or other, the only difference is the translation. If you not understand the idea, I will seek to best explain. :)
jpab
Posts: 77
Joined: Thu Jul 18, 2013 12:30 pm
Location: UK

Re: Web-based translations

Post by jpab »

walterar wrote:I think we need to develop something to make it more friendly to the module creators. Meanwhile, it would be good that, in the *.Json files, the keywords is alphanumerically sorted. And, seen with Meld or other, the only difference is the translation. If you not understand the idea, I will seek to best explain. :)
It's probably easiest to make tools in Python (or Lua). For example, with Python 3, you could write a tool to sort the keys in the .json files like this:

Code: Select all

#!/usr/bin/env python3

import sys
import json

def main():
    # do this for each file path passed as a command line argument
    for path in sys.argv[1:]:
        # read the JSON translation file
        with open(path, 'r', encoding='utf-8') as fl:
            tx = json.load(fl)
        # re-write it, with keys sorted alphanumerically
        with open(path, 'w', encoding='utf-8') as fl:
            json.dump(tx, fl, indent=3, sort_keys=True)

if __name__ == '__main__':
    main()
robn
Posts: 302
Joined: Mon Jul 01, 2013 1:11 am
Location: Melbourne, Australia

Re: Web-based translations

Post by robn »

Or use tools that someone else already wrote:

Code: Select all

$ json_pp -json_opt canonical < en.json | sponge en.json
json_pp installs by default with Perl's JSON package. sponge is from moreutils.

But I maintain that you should not be playing with the translation files that ship with Pioneer. They're managed by Transifex. If you do, expect things to break with future changes to Pioneer.
walterar
Posts: 95
Joined: Sat Sep 14, 2013 4:48 pm

Re: Web-based translations

Post by walterar »

Actually, sort alphanumerically files only improves things a bit.
The real solution is to sort the following manner, for example in the delivery module

Code: Select all

{
   "FLAVOUR_ADTEXT_0" : {
      "description" : "",
      "message" : "GOING TO the {system} system? Money paid for delivery of a small package."
   },
   "FLAVOUR_INTROTEXT_0" : {
      "description" : "",
      "message" : "Hi, I'm {name}. I'll pay you {cash} if you will deliver a small package to {starport} in the {system} ({sectorx}, {sectory}, {sectorz}) system, a distance of {dist} ly."
   },
   "FLAVOUR_WHYSOMUCHTEXT_0" : {
      "description" : "",
      "message" : "When a friend visited me she left behind some clothes and antique paper books. I'd like to have them returned to her."
   },
   "FLAVOUR_SUCCESSMSG_0" : {
      "description" : "",
      "message" : "Thank you for the delivery. You have been paid in full."
   },
   "FLAVOUR_FAILUREMSG_0" : {
      "description" : "",
      "message" : "Unacceptable! You took forever over that delivery. I'm not willing to pay you."
   },

   "FLAVOUR_ADTEXT_1" : {
      "description" : "",
      "message" : "WANTED. Delivery of a package to the {system} system."
   },
   "FLAVOUR_INTROTEXT_1" : {
      "description" : "",
      "message" : "Hello. I'm {name}. I'm willing to pay {cash} for a ship to carry a package to {starport} in the {system} ({sectorx}, {sectory}, {sectorz}) system, a distance of {dist} ly."
   },
   "FLAVOUR_WHYSOMUCHTEXT_1" : {
      "description" : "",
      "message" : "It is nothing special."
   },
   "FLAVOUR_SUCCESSMSG_1" : {
      "description" : "",
      "message" : "The package has been received and you have been paid in full."
   },
   "FLAVOUR_FAILUREMSG_1" : {
      "description" : "",
      "message" : "I'm frustrated by the late delivery of my package, and I refuse to pay you."
   },

   "FLAVOUR_ADTEXT_2" : {
      "description" : "",
      "message" : "URGENT. Fast ship needed to deliver a package to the {system} system."
   },
   "FLAVOUR_INTROTEXT_2" : {
      "description" : "",
      "message" : "Hello. I'm {name}. I'm willing to pay {cash} for a ship to carry a package to {starport} in the {system} ({sectorx}, {sectory}, {sectorz}) system, a distance of {dist} ly."
   },
   "FLAVOUR_WHYSOMUCHTEXT_2" : {
      "description" : "",
      "message" : "It is a research proposal and must be delivered by the deadline or we may not get funding."
   },
   "FLAVOUR_SUCCESSMSG_2" : {
      "description" : "",
      "message" : "You have been paid in full for the delivery. Thank you."
   },
   "FLAVOUR_FAILUREMSG_2" : {
      "description" : "",
      "message" : "I was quite clear about the deadline and am very disappointed by the late delivery. You will not be paid."
   },

   "FLAVOUR_ADTEXT_3" : {
      "description" : "",
      "message" : "DELIVERY. Documents to the {system} system. {cash} to an experienced pilot."
   },
   "FLAVOUR_INTROTEXT_3" : {
      "description" : "",
      "message" : "Hello. I'm {name}. I'm willing to pay {cash} for a ship to carry a package to {starport} in the {system} ({sectorx}, {sectory}, {sectorz}) system, a distance of {dist} ly."
   },
   "FLAVOUR_WHYSOMUCHTEXT_3" : {
      "description" : "",
      "message" : "Some extremely sensitive documents have fallen into my hands, and I have reason to believe that the leak has been traced to me."
   },
   "FLAVOUR_SUCCESSMSG_3" : {
      "description" : "",
      "message" : "Your timely and discrete service is much appreciated. You have been paid in full."
   },
   "FLAVOUR_FAILUREMSG_3" : {
      "description" : "",
      "message" : "Useless! I will never depend on you again! Needless to say, you will not be paid for this."
   },

   "FLAVOUR_ADTEXT_4" : {
      "description" : "",
      "message" : "POSTAL SERVICE. We require a ship for the delivery run to {system} system."
   },
   "FLAVOUR_INTROTEXT_4" : {
      "description" : "",
      "message" : "Greetings. This is an automated message from Bedford and {name} Courier Services. We pay {cash} for the run to {starport} in the {system} ({sectorx}, {sectory}, {sectorz}) system, a distance of {dist} ly."
   },
   "FLAVOUR_WHYSOMUCHTEXT_4" : {
      "description" : "",
      "message" : "We would be happy to pay you less money."
   },
   "FLAVOUR_SUCCESSMSG_4" : {
      "description" : "",
      "message" : "Your timely and discrete service is much appreciated. You have been paid in full."
   },
   "FLAVOUR_FAILUREMSG_4" : {
      "description" : "",
      "message" : "Your ship registration has been noted, we will reject all further applications for work from you."
   },

   "FLAVOUR_ADTEXT_5" : {
      "description" : "",
      "message" : "MOVING HOME. Move of hardware to {starport} from storage."
   },
   "FLAVOUR_INTROTEXT_5" : {
      "description" : "",
      "message" : "Nice to meet you. I am {name} and I'm willing to pay {cash} for someone with a ship to help me move my belongings to {starport}. No rush, they are just some leftovers from moving house."
   },
   "FLAVOUR_WHYSOMUCHTEXT_5" : {
      "description" : "",
      "message" : "Is it a lot? I should rethink my offer!"
   },
   "FLAVOUR_SUCCESSMSG_5" : {
      "description" : "",
      "message" : "Oh wonderful. I'll start unloading immediately. Thanks again."
   },
   "FLAVOUR_FAILUREMSG_5" : {
      "description" : "",
      "message" : "What are these? Oh, you took so long that I forgot I'd even sent this!"
   },

   "FLAVOUR_ADTEXT_6" : {
      "description" : "",
      "message" : "SHORT-RANGE COURIER. Delivery of a small package to {starport}."
   },
   "FLAVOUR_INTROTEXT_6" : {
      "description" : "",
      "message" : "Hi. I'm {name} and I will pay {cash} for a ship to deliver this package to {starport}."
   },
   "FLAVOUR_WHYSOMUCHTEXT_6" : {
      "description" : "",
      "message" : "I don't think it's a lot."
   },
   "FLAVOUR_SUCCESSMSG_6" : {
      "description" : "",
      "message" : "Thank you for the package, you have been paid in full."
   },
   "FLAVOUR_FAILUREMSG_6" : {
      "description" : "",
      "message" : "I could have delivered it faster myself. I'm not paying you."
   },

   "FLAVOUR_ADTEXT_7" : {
      "description" : "",
      "message" : "INTER-PLANETARY CARGO. Freight of local cargo to {starport}."
   },
   "FLAVOUR_INTROTEXT_7" : {
      "description" : "",
      "message" : "Hello. We need these crates delivered to {starport} as soon as possible. Standard payment for this shipment is {cash}."
   },
   "FLAVOUR_WHYSOMUCHTEXT_7" : {
      "description" : "",
      "message" : "Standard rates, we work with the market."
   },
   "FLAVOUR_SUCCESSMSG_7" : {
      "description" : "",
      "message" : "Excellent, we've credited the funds into your account."
   },
   "FLAVOUR_FAILUREMSG_7" : {
      "description" : "",
      "message" : "Our customers are not going to be happy with this. Do not expect to be paid."
   },

   "FLAVOUR_ADTEXT_8" : {
      "description" : "",
      "message" : "NEARBY DELIVERY. Require quick delivery of an item to {starport}."
   },
   "FLAVOUR_INTROTEXT_8" : {
      "description" : "",
      "message" : "My name is {name} and I need this item delivered to a friend at {starport} pronto, I'll pay you {cash} credits if you get it there in a reasonable time."
   },
   "FLAVOUR_WHYSOMUCHTEXT_8" : {
      "description" : "",
      "message" : "It's really urgent."
   },
   "FLAVOUR_SUCCESSMSG_8" : {
      "description" : "",
      "message" : "Your prompt delivery is appreciated, I have credited your account accordingly."
   },
   "FLAVOUR_FAILUREMSG_8" : {
      "description" : "",
      "message" : "You were offered a premium for quick delivery! I refuse to pay for this."
   },

   "FLAVOUR_ADTEXT_9" : {
      "description" : "",
      "message" : "PACKAGE DROP. Urgent dispatch of perishables to {starport}."
   },
   "FLAVOUR_INTROTEXT_9" : {
      "description" : "",
      "message" : "Greetings, we're behind with our produce shipment and need it delivered to {starport} urgently. We'll pay you {cash} for your troubles."
   },
   "FLAVOUR_WHYSOMUCHTEXT_9" : {
      "description" : "",
      "message" : "Our livelyhood depends on it."
   },
   "FLAVOUR_SUCCESSMSG_9" : {
      "description" : "",
      "message" : "Grand! We'll start unpacking immediately. I'll have your account updated right away."
   },
   "FLAVOUR_FAILUREMSG_9" : {
      "description" : "",
      "message" : "It's all spoilt, this is of no use to anyone! We cannot and will not pay you."
   },

   "WHY_SO_MUCH_MONEY" : {
      "description" : "",
      "message" : "Why so much money?"
   },
   "HOW_SOON_MUST_IT_BE_DELIVERED" : {
      "description" : "",
      "message" : "How soon must it be delivered?"
   },
   "IT_MUST_BE_DELIVERED_BY" : {
      "description" : "",
      "message" : "It must be delivered by "
   },
   "WILL_I_BE_IN_ANY_DANGER" : {
      "description" : "",
      "message" : "Will I be in any danger?"
   },
   "I_HIGHLY_DOUBT_IT" : {
      "description" : "",
      "message" : "I highly doubt it."
   },
   "NOT_ANY_MORE_THAN_USUAL" : {
      "description" : "",
      "message" : "Not any more than usual."
   },
   "THIS_IS_A_VALUABLE_PACKAGE_YOU_SHOULD_KEEP_YOUR_EYES_OPEN" : {
      "description" : "",
      "message" : "This is a valuable package, you should keep your eyes open."
   },
   "IT_COULD_BE_DANGEROUS_YOU_SHOULD_MAKE_SURE_YOURE_ADEQUATELY_PREPARED" : {
      "description" : "",
      "message" : "It could be dangerous, you should make sure you're adequately prepared."
   },
   "THIS_IS_VERY_RISKY_YOU_WILL_ALMOST_CERTAINLY_RUN_INTO_RESISTANCE" : {
      "description" : "",
      "message" : "This is very risky, you will almost certainly run into resistance."
   },
   "COULD_YOU_REPEAT_THE_ORIGINAL_REQUEST" : {
      "description" : "",
      "message" : "Could you repeat the original request?"
   },
   "OK_AGREED" : {
      "description" : "",
      "message" : "Ok, agreed."
   },
   "EXCELLENT_I_WILL_LET_THE_RECIPIENT_KNOW_YOU_ARE_ON_YOUR_WAY" : {
      "description" : "",
      "message" : "Excellent. I will let the recipient know you are on your way."
   },
   "HANG_UP" : {
      "description" : "",
      "message" : "Hang up."
   },

   "DELIVERY" : {
      "description" : "",
      "message" : "Delivery"
   },
   "SPACEPORT" : {
      "description" : "",
      "message" : "Spaceport:"
   },
   "SYSTEM" : {
      "description" : "",
      "message" : "System:"
   },
   "DEADLINE" : {
      "description" : "",
      "message" : "Deadline:"
   },
   "DANGER" : {
      "description" : "",
      "message" : "Danger:"
   },
   "DISTANCE" : {
      "description" : "",
      "message" : "Distance:"
   },
   "LY" : {
      "description" : "",
      "message" : "ly"
   },

   "PIRATE_TAUNTS_0" : {
      "description" : "",
      "message" : "You're going to regret dealing with {client}"
   },
   "PIRATE_TAUNTS_1" : {
      "description" : "",
      "message" : "Looks like my paycheck has arrived!"
   },
   "PIRATE_TAUNTS_2" : {
      "description" : "",
      "message" : "You're working for {client}? That was a bad idea."
   },
   "PIRATE_TAUNTS_3" : {
      "description" : "",
      "message" : "Your cargo and your life, pilot!"
   },
   "PIRATE_TAUNTS_4" : {
      "description" : "",
      "message" : "I'm sure this will bring a pretty penny on the market"
   },
   "PIRATE_TAUNTS_5" : {
      "description" : "",
      "message" : "Today isn't your lucky day! Prepare to die."
   },
   "PIRATE_TAUNTS_6" : {
      "description" : "",
      "message" : "Tell my old friend {client} that I'll see them in hell!"
   },
   "PIRATE_TAUNTS_7" : {
      "description" : "",
      "message" : "That package isn't going to reach it's destination today."
   },
   "PIRATE_TAUNTS_8" : {
      "description" : "",
      "message" : "You're not getting to {location} today!"
   },
   "PIRATE_TAUNTS_9" : {
      "description" : "",
      "message" : "You'll pay for that cargo, with your life."
   }
}
All language files should be a clone of "en.json", and the only difference should be the translation.
For example "es.json"

Code: Select all

{
   "FLAVOUR_ADTEXT_0" : {
      "description" : "",
      "message" : "DELIVERY a {starport}, {system}\n Se paga buen dinero por la entrega de un pequeño paquete."
   },
   "FLAVOUR_INTROTEXT_0" : {
      "description" : "",
      "message" : "Hola, soy {name}. Le pagaré {cash} si entrega un pequeño paquete a {starport}, {system} ({sectorx}, {sectory}, {sectorz}) distante {dist} ly."
   },
   "FLAVOUR_WHYSOMUCHTEXT_0" : {
      "description" : "",
      "message" : "Cuando una amiga me visitó se dejó algunas prendas y unos libros antiguos en papel. Me gustaría devolverselos."
   },
   "FLAVOUR_SUCCESSMSG_0" : {
      "description" : "",
      "message" : "Gracias por la entrega. Se le ha pagado al contado."
   },
   "FLAVOUR_FAILUREMSG_0" : {
      "description" : "",
      "message" : "Inaceptable! La entrega ha tardado una eternidad. No tengo intención de pagarle."
   },

   "FLAVOUR_ADTEXT_1" : {
      "description" : "",
      "message" : "DELIVERY a {starport}, {system}\n SE BUSCA. Entrega de un paquete."
   },
   "FLAVOUR_INTROTEXT_1" : {
      "description" : "",
      "message" : "Hola. Soy {name}. Tengo intención de pagar {cash} por el transporte de un paquete a {starport}, {system} ({sectorx}, {sectory}, {sectorz}) distante {dist} ly"
   },
   "FLAVOUR_WHYSOMUCHTEXT_1" : {
      "description" : "",
      "message" : "No es nada especial."
   },
   "FLAVOUR_SUCCESSMSG_1" : {
      "description" : "",
      "message" : "El paquete se ha recibido y se le ha pagado lo acordado."
   },
   "FLAVOUR_FAILUREMSG_1" : {
      "description" : "",
      "message" : "Estoy frustrado por la tardanza de mi paquete, me niego a pagarle."
   },

   "FLAVOUR_ADTEXT_2" : {
      "description" : "",
      "message" : "DELIVERY a {starport}, {system}\n URGENTE. Se necesita nave rápida para una entrega."
   },
   "FLAVOUR_INTROTEXT_2" : {
      "description" : "",
      "message" : "Hola. Soy {name}. Y mi intención es pagar {cash} por el transporte de un paquete a {starport}, {system} ({sectorx}, {sectory}, {sectorz}) distante {dist} ly."
   },
   "FLAVOUR_WHYSOMUCHTEXT_2" : {
      "description" : "",
      "message" : "Es una propuesta de investigación y debe ser entregada en el plazo o no tendremos financiación."
   },
   "FLAVOUR_SUCCESSMSG_2" : {
      "description" : "",
      "message" : "Se le ha efectuado el pago completo por la entrega. Gracias."
   },
   "FLAVOUR_FAILUREMSG_2" : {
      "description" : "",
      "message" : "Creo que fui bastante claro con la fecha tope y estoy muy defraudado por la tardanza. No se le pagará."
   },

   "FLAVOUR_ADTEXT_3" : {
      "description" : "",
      "message" : "CORREO SEGURO a {starport}, {system}\n Documentos muy importantes. {cash} para piloto experimentado."
   },
   "FLAVOUR_INTROTEXT_3" : {
      "description" : "",
      "message" : "Hola. Soy {name}. Tengo la intención de pagar {cash} por un envío a {starport}, {system} ({sectorx}, {sectory}, {sectorz}) distante {dist} ly."
   },
   "FLAVOUR_WHYSOMUCHTEXT_3" : {
      "description" : "",
      "message" : "Ciertos documentos extremadamente sensibles han caido en mis manos, y tengo razones para creer que estoy bajo vigilancia."
   },
   "FLAVOUR_SUCCESSMSG_3" : {
      "description" : "",
      "message" : "Se aprecia su servicio discreto y a tiempo. Se le pagará en el acto."
   },
   "FLAVOUR_FAILUREMSG_3" : {
      "description" : "",
      "message" : "Inutil! No volveré a depender de usted en el futuro! Es innecesario decir que no se le pagará ni un crédito."
   },

   "FLAVOUR_ADTEXT_4" : {
      "description" : "",
      "message" : "MENSAJERÍA a {starport}, {system}\n Se requiere nave para una entrega."
   },
   "FLAVOUR_INTROTEXT_4" : {
      "description" : "",
      "message" : "Saludos. Este es un mensaje automatizado de los Servicios de Mensajería Bedford y {name}. Pagamos {cash} por la carrera a {starport} en el sistema {system} ({sectorx}, {sectory}, {sectorz})) ({dist} ly)."
   },
   "FLAVOUR_WHYSOMUCHTEXT_4" : {
      "description" : "",
      "message" : "Estaríamos encantados de pagarle menos dinero."
   },
   "FLAVOUR_SUCCESSMSG_4" : {
      "description" : "",
      "message" : "Se aprecia su entrega discreta y a tiempo. Se le ha pagado el monto completo."
   },
   "FLAVOUR_FAILUREMSG_4" : {
      "description" : "",
      "message" : "Se ha anotado el registro de su nave, vamos a rechazar cualquier solicitud de trabajo suya en el futuro."
   },

   "FLAVOUR_ADTEXT_5" : {
      "description" : "",
      "message" : "MUDANZA local.\n Traslado de soportes físicos a {starport}."
   },
   "FLAVOUR_INTROTEXT_5" : {
      "description" : "",
      "message" : "Encantado de conocerle. Soy {name} y estoy dispuesto a pagar {cash} a alguien con una nave que me ayude a trasladar mis pertenencias a {starport}. No hay prisa, no son más que algunos restos de la mudanza."
   },
   "FLAVOUR_WHYSOMUCHTEXT_5" : {
      "description" : "",
      "message" : "¿Es mucho? ¡Debería replantearme la oferta!"
   },
   "FLAVOUR_SUCCESSMSG_5" : {
      "description" : "",
      "message" : "Oh maravilloso. Empezaré a desembalar inmediatamente. Gracias de nuevo."
   },
   "FLAVOUR_FAILUREMSG_5" : {
      "description" : "",
      "message" : "Qué es esto? Oh, ha tardado tanto que me había olvidado de que lo había enviado!"
   },

   "FLAVOUR_ADTEXT_6" : {
      "description" : "",
      "message" : "DELIVERY local.\n Entrega de un paquete pequeño en {starport}."
   },
   "FLAVOUR_INTROTEXT_6" : {
      "description" : "",
      "message" : "Hola. Soy {name} y pagaré {cash} por entregar este paquete en {starport}."
   },
   "FLAVOUR_WHYSOMUCHTEXT_6" : {
      "description" : "",
      "message" : "No creo que sea mucho."
   },
   "FLAVOUR_SUCCESSMSG_6" : {
      "description" : "",
      "message" : "Gracias por el paquete, se le ha transferido el importe convenido."
   },
   "FLAVOUR_FAILUREMSG_6" : {
      "description" : "",
      "message" : "Yo lo habría entregado mas rápido. No le voy a pagar."
   },

   "FLAVOUR_ADTEXT_7" : {
      "description" : "",
      "message" : "DELIVERY local rápido.\n Envío a {starport}."
   },
   "FLAVOUR_INTROTEXT_7" : {
      "description" : "",
      "message" : "Hola. Necesitamos estas cajas entregadas en {starport} tan pronto como sea posible. El pago estandar para este envío es de {cash}."
   },
   "FLAVOUR_WHYSOMUCHTEXT_7" : {
      "description" : "",
      "message" : "Las tarifas estandar, trabajamos con el mercado."
   },
   "FLAVOUR_SUCCESSMSG_7" : {
      "description" : "",
      "message" : "Excelente, hemos añadido los fondos en su cuenta."
   },
   "FLAVOUR_FAILUREMSG_7" : {
      "description" : "",
      "message" : "Nuestros clientes no se van a alegrar de esto. No espere pago alguno."
   },

   "FLAVOUR_ADTEXT_8" : {
      "description" : "",
      "message" : "DELIVERY local. URGENTE.\n Se requiere la entrega de un objeto a {starport}."
   },
   "FLAVOUR_INTROTEXT_8" : {
      "description" : "",
      "message" : "Mi nombre es {name} y necesito la entrega de este objeto a un amigo en {starport} pronto, Le pagaré {cash} créditos si lo tiene allí en un tiempo razonable."
   },
   "FLAVOUR_WHYSOMUCHTEXT_8" : {
      "description" : "",
      "message" : "Es muy urgente."
   },
   "FLAVOUR_SUCCESSMSG_8" : {
      "description" : "",
      "message" : "La entrega a tiempo es muy apreciada, he transferido a su cuenta lo pactado."
   },
   "FLAVOUR_FAILUREMSG_8" : {
      "description" : "",
      "message" : "¡Las condiciones eran una rápida entrega! Me niego a pagarle por esto."
   },

   "FLAVOUR_ADTEXT_9" : {
      "description" : "",
      "message" : "DELIVERY local. MUY URGENTE.\n Alimentos perecederos a {starport}."
   },
   "FLAVOUR_INTROTEXT_9" : {
      "description" : "",
      "message" : "Saludos, vamos retrasados con nuestro envio de productos y necesitamos entregarlos a {starport} urgentemente. Le pagaremos {cash} por las molestias."
   },
   "FLAVOUR_WHYSOMUCHTEXT_9" : {
      "description" : "",
      "message" : "Nuestro sustento depende de esto."
   },
   "FLAVOUR_SUCCESSMSG_9" : {
      "description" : "",
      "message" : "Magnífico! Empezaremos a desembalar urgentemente. Le actualizaré la cuenta inmediatamente."
   },
   "FLAVOUR_FAILUREMSG_9" : {
      "description" : "",
      "message" : "Está todo estropeado, no sirve para nada! No podemos pagarle."
   },

   "WHY_SO_MUCH_MONEY" : {
      "description" : "",
      "message" : "¿Por qué tanto dinero?"
   },
   "HOW_SOON_MUST_IT_BE_DELIVERED" : {
      "description" : "",
      "message" : "¿Cual es la fecha de entrega?"
   },
   "IT_MUST_BE_DELIVERED_BY" : {
      "description" : "",
      "message" : "La fecha de entrega es "
   },
   "WILL_I_BE_IN_ANY_DANGER" : {
      "description" : "",
      "message" : "¿Correré peligro?"
   },
   "I_HIGHLY_DOUBT_IT" : {
      "description" : "",
      "message" : "Lo dudo mucho."
   },
   "NOT_ANY_MORE_THAN_USUAL" : {
      "description" : "",
      "message" : "No mas de lo habitual."
   },
   "THIS_IS_A_VALUABLE_PACKAGE_YOU_SHOULD_KEEP_YOUR_EYES_OPEN" : {
      "description" : "",
      "message" : "Es un paquete valioso, debería mantener los ojos abiertos."
   },
   "IT_COULD_BE_DANGEROUS_YOU_SHOULD_MAKE_SURE_YOURE_ADEQUATELY_PREPARED" : {
      "description" : "",
      "message" : "Podría ser peligroso, debería prepararse adecuadamente."
   },
   "THIS_IS_VERY_RISKY_YOU_WILL_ALMOST_CERTAINLY_RUN_INTO_RESISTANCE" : {
      "description" : "",
      "message" : "Es muy arriesgado, Encontrará resistencia."
   },
   "COULD_YOU_REPEAT_THE_ORIGINAL_REQUEST" : {
      "description" : "",
      "message" : "Podría repetir la petición original?"
   },
   "OK_AGREED" : {
      "description" : "",
      "message" : "Aceptar y establecer el sistema destino\nen la carta de navegación."
   },
   "EXCELLENT_I_WILL_LET_THE_RECIPIENT_KNOW_YOU_ARE_ON_YOUR_WAY" : {
      "description" : "",
      "message" : "Excelente. Confío en que el receptor recibirá lo que espera."
   },
   "HANG_UP" : {
      "description" : "",
      "message" : "Colgar"
   },

   "DELIVERY" : {
      "description" : "",
      "message" : "Entrega"
   },
   "SPACEPORT" : {
      "description" : "",
      "message" : "Puerto Espacial:"
   },
   "SYSTEM" : {
      "description" : "",
      "message" : "Sistema:"
   },
   "DEADLINE" : {
      "description" : "",
      "message" : "Fecha límite:"
   },
   "DANGER" : {
      "description" : "",
      "message" : "Riesgo:"
   },
   "DISTANCE" : {
      "description" : "",
      "message" : "Distancia:"
   },
   "LY" : {
      "description" : "",
      "message" : "ly"
   },

   "PIRATE_TAUNTS_0" : {
      "description" : "",
      "message" : "Vas a lamentar el hacer negocios con {client}"
   },
   "PIRATE_TAUNTS_1" : {
      "description" : "",
      "message" : "Pagarás por ese cargamento, pero con tu vida."
   },
   "PIRATE_TAUNTS_2" : {
      "description" : "",
      "message" : "Hoy no vas a llegar a {location}!"
   },
   "PIRATE_TAUNTS_3" : {
      "description" : "",
      "message" : "Ese paquete hoy no va a llegar a destino."
   },
   "PIRATE_TAUNTS_4" : {
      "description" : "",
      "message" : "Dile a {client} que le veré en el infierno!"
   },
   "PIRATE_TAUNTS_5" : {
      "description" : "",
      "message" : "Hoy no es tu día de suerte! Prepárate para morir."
   },
   "PIRATE_TAUNTS_6" : {
      "description" : "",
      "message" : "La carga y la vida, piloto!"
   },
   "PIRATE_TAUNTS_7" : {
      "description" : "",
      "message" : "Trabajas para {client}? Eso ha sido una mala idea."
   },
   "PIRATE_TAUNTS_8" : {
      "description" : "",
      "message" : "Al parecer mi cheque ha llegado!"
   },
   "PIRATE_TAUNTS_9" : {
      "description" : "",
      "message" : "Creo que tu muerte puede ser buen negocio, piloto."
   }
}
So it will look like, watching them with MELD.

Image
walterar
Posts: 95
Joined: Sat Sep 14, 2013 4:48 pm

Re: Web-based translations

Post by walterar »

Please note that each translator has his own translation, at your computer, in the directory /data

Is very need to "play" with the original files.

Transifex only provides a convenient way to publish.
jpab
Posts: 77
Joined: Thu Jul 18, 2013 12:30 pm
Location: UK

Re: Web-based translations

Post by jpab »

walterar wrote:Actually, sort alphanumerically files only improves things a bit.
The real solution is to sort the following manner, for example in the delivery module
The easiest way for us to do this is to change the translation keys for flavour text so that they are of the form 'FLAVOUR_n_xxx' (e.g., 'FLAVOUR_0_ADTEXT') instead of the current 'FLAVOUR_xxx_n'. Then an alphanumeric sort will group translations for a each mission flavour.
jpab
Posts: 77
Joined: Thu Jul 18, 2013 12:30 pm
Location: UK

Re: Web-based translations

Post by jpab »

jpab wrote:
walterar wrote:Actually, sort alphanumerically files only improves things a bit.
The real solution is to sort the following manner, for example in the delivery module
The easiest way for us to do this is to change the translation keys for flavour text so that they are of the form 'FLAVOUR_n_xxx' (e.g., 'FLAVOUR_0_ADTEXT') instead of the current 'FLAVOUR_xxx_n'. Then an alphanumeric sort will group translations for a each mission flavour.
This is now done, and when translations are automatically copied from transifex into the git repository, they are sorted alphanumerically.
walterar
Posts: 95
Joined: Sat Sep 14, 2013 4:48 pm

Re: Web-based translations

Post by walterar »

Last night I started working in this branch, and today I see it merged. But if this is all they can do about it, thank you. I think it's a very small step to reach the level of the previous translation system. Now I must find out why Scout+ has stopped working with this change. :)
walterar
Posts: 95
Joined: Sat Sep 14, 2013 4:48 pm

Re: Web-based translations

Post by walterar »

Nothing serious. The only drawback I see is that should have been FLAVOUR_nn_ADTEXT instead of FLAVOUR_n_ADTEXT
Post Reply