Transifex API is broken


(Neil Lalonde) #1

@samuelchan22 Maybe you can help us with an urgent problem. I submitted a support ticket on Friday morning but have not received a reply.

Our process for pulling translations from Transifex is broken. We have always been using this command:

tx pull --mode=developer --language=ar,cs,da,de,... -f

The --mode=developer parameter is now returning the empty strings that should only be returned from --mode=translator . But worse than that, the empty strings create invalid YML like this:

      mailing_list_mode:
        label: ""
        enabled: ""
        instructions: |
        daily: ""
        individual: ""

Notice instructions is not valid YML:

        instructions: |

How can we get --mode-developer results again?


(Samuel Chan) #2

@neil Hi, our support team is looking into this (they’re aware of the issue) and someone should be getting back to you either later today or tomorrow. Sorry for the delay.


(Jeff Atwood) #3

This is somewhat urgent as it is preventing us from doing releases, can you advise?


(Samuel Chan) #4

Hi Jeff, as far as I can tell from looking in GitHub, our engineering team is already working on a fix. It should hopefully be ready/deployed by tomorrow. I’ll share updates here or have someone reply to the open ticket.


(Neil Lalonde) #5

I got a reply to the support request, but it didn’t mention the invalid yml:

Hi Neil,

Thank you for contacting Transifex support and submitting your request.

Regarding your case, I would like to inform you that we have recently changed the way that this mode works since our scope was to keep the downloaded translation file as close to original as possible.

So, since this actually was requested by a lot of users, after further consideration we decided to proceed with the above changes.

Please accept our apologies for breaking your workflow and for any inconvenience that this may have caused you.

We hope for your understanding in this matter.

Regards,
Nina

That’s a big change that I couldn’t find announced or documented anywhere. But it doesn’t help if the yml is invalid.


(Gerhard Schlager) #6

The YML files pulled from Transifex are really messed up. :cry:

Here’s another error I noticed:
The tos_topic: in server.fa_IR.yml is on the wrong line (scroll a little bit to the right to see it).

  guidelines_topic:
    title: "پرسش و پاسخ / دستورالعمل"
    body: "اینجا مکانی متمدن برای بحث جمعی است.\nلطفا برای این فروم بحث همان احترامی را قائل باشید که برای یک پارک عمومی هستید. ما، هم، یک منبع جمعی مشترک هستیم – جایی که مهارت ها، دانش و علایق در اثر بحث های در جریان به اشتراک گذاشته می شود.\nاز راهنمای زیر برای تمیز نگه داشتن این مکان به صورت یک مجلس متمدن بحث بهره ببرید. این راهنما قوانین سفت و سختی ندارد، بلکه صرفا به قضاوت افراد از جامعه ی ما کمک میکند.\nبحث را بهبود ببخشید\nبا بهبود بحث ها، حتی اگر بهبود کوچکی باشد، به ما کمک کنید تا اینجا را همیشه یک مکان مناسب برای بحث نگه داریم. اگر مطمئن نیستید که پست های شما به بحث چیزی اضافه میکند، به چیزی که میخواهید فکر کنید و بعدتر دوباره تلاش کنید.\nموضوعات بحث شده در اینجا برای ما مهم است، و میخواهیم شما هم طوری رفتار کنید که گویی آن ها برای شما هم مهم هستند. نسبت به موضوعات مطرح شده و مردمی\
      \ که راجع به آن بحث میکنند احترام قائل باشید، حتی اگر با بعضی چیزهایی که گفته می شود موافق نیستید.\nیک راه بهبود بحث ها، با کشف بحث هایی است که پیش تر اتفاق افتاده. لطفا پیش از اینکه پاسخ خودتان را بیان کنید، زمانی برای مرور عناوینی که اینجاست سپری کنید؛ در این صورت احتمال اینکه افراد دیگری با علایق مشترک با شما بیابید بیشتر میشود.\nحتی وقتی موافق نیستید، نیز دلپذیر باشید\nممکن است بخواهید با بعضی بحث های مطرح شده مخالفت کنید. این خوب است. فقط حواستان باشد که ایده ها را نقد کنید و نه افراد را. لطفا از موارد زیر دوری کنید:\n-\tنام بردن\n-\tحمله به شخصیت و یا انگیزه ی افراد\n-\tواکنش به نحوه ی بیان پست به جای محتوای آن\n-\tواکنش های سریع و متناقض\nبه جای این ها، استدلال های مخالفی که بحث را بهبود می بخشند فراهم کنید.\nمشارکت شما به حساب می آید\nبحث هایی که ما اینجا داریم برای همه خواهد ماند.\
      \ با تعامل در بحث هایی که این فروم را به مکان جالب تری برای حضور میکند و دوری از بحث هایی که این چنین نمی کند، به ما کمک کنید در آینده ی این جمع تاثیرگذار باشیم.\nدیسکورس ابزاری در دسترس می گذارد که به جمع این امکان را میدهد که بهترین (و بدترین) مشارکتها را تشخیص دهند: علاقه مندی ها، نشانک ها، لایک ها، پرچم ها، پاسخ ها، ویرایش ها، و ... . از این ابزارها برای بهبود تجربه ی خودتان و همین طور دیگران بهره ببرید.\nبیاید تلاش کنیم پارک را نسبت به آن چه از ابتدا یافته ایم، بهبود ببخشیم.\nاگر مشکلی دیدید، آن را پرچم گذاری کنید.\nتعدیل کننده ها امتیازهای مشخصی دارند؛ آن ها مسئول این فروم هستند. و البته شما هم هستید. با کمک شما، تعدیل کننده ها میتوانند تسهیل گر باشند و نه فقط فراش یا پلیس.\nوقتی رفتار نامناسبی میبینید، پاسخ ندهید. این کار رفتار بد را تشویق میکند، انرژی شما را مصرف میکند، و زمان دیگران\
      \ را خرج میکند. تنها کافی است آن را پرچم گذاری کنید. با تعلق گرفتن پرچم های کافی، اقدام مناسب انجام می شود، یا خود به خود و یا با دخالت تعدیل کننده ها.\nبرای حفظ جامعه یمان، تعدیل کننده ها این حق را دارند که محتوای هر کاربری و یا هر کاربری را به هر دلیلی در هر زمانی حذف کنند. تعدیل کننده ها، پست های جدید را پیش نمایش نمیکنند؛ و تعدیل کننده ها و مجریان سایت مسئول هیچ کدام از پست های جمع نیستند.\nهمیشه متمدن باشید\nهیچ چیزی یک بحث سالم را مانند بی ادبی خراب نمیکند:\n-\tمتمدن باشید. مطالبی که یک فرد معقول توهین آمیز، سواستفاده، و یا بیان نفرت در نظر میگیرد پست نکنید.\n-\tاینجا را تمیز نگه دارید. مطالب مستهجن و یا مطالب جنسی صریح پست نکنید.\n-\tبه همدیگر احترام بگذارید. باعث آزار یا اندوه دیگران نشوید، خود را به جای دیگران جا نزنید، و یا اطلاعات خصوصی دیگران را در معرض قرار ندهید.\n-\tبه فروم\
      \ ما احترام بگذارید. اسپم پست نکنید و یا فروم را به تباهی نکشید.\nاین شرایط تعریف دقیق ندارند – از چیزهایی که حتی نمود این موارد هست نیز دوری کنید. اگر مطمئن نیستید، از خودتان بپرسید چه حسی به شما دست میداد اگر پستتان در صفحه ی اول نشریه نیویورک تایمز چاپ شود.\nاینجا یک فروم عمومی است، و موتورهای جستجو بحث های موجود را نشان میدهند. زبان، لینک ها، و تصاویر را برای دوستان و خانواده امن نگه دارید.\nاینجا را تمیز نگه دارید\nتلاش کنید تا چیزها را در جای مناسب خود قرار دهید، تا ما بتوانیم زمان بیشتری را به بحث و زمان کمتری را به تمیزکاری بپردازیم:\n-\tیک موضوع را در دسته بندی نادرست مطرح نکنید.\n-\tیک موضوع را در عناوین مختلف پست نکنید.\n-\tپاسخ های بدون محتوا پست نکنید.\n-\tیک موضوع را با ویرایش آن در حین بحث منحرف نکنید.\n-\tپست های خودتون رو امضا نکنید – هر پستی اطلاعات شما را با خود به همراه\
      \ دارد.\nبه جای پست کردن «+1» یا «موافقم»، از دکمه ی لایک استفاده کنید. به جای اینکه یک موضوع موجود را به عنوان موضوع جدید مطرح کنید، از گزینه ی «پاسخ به صورت موضوع لینک شده» استفاده کنید.\nتنها مطالب خودتان را پست کنید\nمطالب دیگران را بدون اجازه مطرح نکنید. توصیف، لینک، و یا ابزاری برای دزدی دارایی های معنوی دیگران (نرم افزارها، ویدیوها، فایل صوتی، تصویر) و یا شکستن قوانین دیگر؛ را مطرح نکنید.\nقدرت گرفته از شما\nاین سایت توسط مدیران ما و شما، جمع حرکت میکند. اگر هر سوال دیگری درباره ی نحوه ی عملکرد چیزهای اینجا دارید، یک بحث جدید در دسته بندی فیدبک های سایت شروع کنید و بگذارید تا بحث صورت بگیرد. اگر یک موضوع بحرانی و یا مسئله ی فوری هست که نمیتواند در یک موضوع فیدبک و یا با پرچم مطرح شود، از طریق صفحه ی اعضا با ما تماس بگیرید.\nشرایط سرویس\nبله، قوانین خسته کننده هستند، ولی ما باید از\
      \ خودمان در برابر گروه های غیردوستانه محافظت کنیم – و همین طور از شما و اطلاعات شما. در شرایط استفاده از سرویسمان که رفتار شما ( و ما) را توصیف میکند و حقوق مربوط به محتوا، حریم خصوصی، و قوانین را توضیح داده ایم. برای استفاده از این سرویس، لازم است شما با رعایت شرایط استفاده از سرویس ما موافقت کرده باشید.\n"  tos_topic:
    title: "شرایط استفاده از خدمات"

I experimented a little bit with the pull_translations script and added a few workarounds which should fix the issues. Should I send a PR or do you want to wait for Transifex to provide a proper fix?


(Neil Lalonde) #7

I’ll post a screenshot for visibility.

The most recent response from Transifex support claimed that the current behaviour is what people were asking for.

So please submit a PR with your workarounds. We don’t want to have code to repair broken YML files, but I don’t know when this will be resolved.


(Gerhard Schlager) #8

Here we go. It’s a quick & dirty fix but it looks like it’s working.


(Neil Lalonde) #9

Transifex has reverted the change to the API, and pulling translations is almost back to the way it was. I had to clean up some extra characters.


(Neil Lalonde) #10

3 posts were split to a new topic: Missing blanks in server.en.yml


(Gerhard Schlager) #11

Looks like Transifex is doing the right thing by using |2 and |+ for some multiline strings.

  • |2 is used when the string starts with a blank line.
  • |+ is used when there are multiple blank lines at the end of the string (usually an error in the translation which should be fixed on Transifex if it was not intended)

I’d say there’s nothing to do here. |2 does no harm and |+ should be fixed by translators.


(Neil Lalonde) #12

Ok, sounds like they improved YML support then! YML is weird.


(Gerhard Schlager) #13

Yeah, I know. :wink: I just tried to read the specification. :scream:
Thank God for Stack Overflow… this answer about multiline strings is a lot easier to read.


(Kane York) #14

Yeah. Read this instead:

http://camel.readthedocs.io/en/latest/yamlref.html

There is no official YAML reference guide. The YAML website only offers the YAML specification, which is a dense and thorny tome clearly aimed at implementers. I suspect this has greatly hampered YAML’s popularity.

In the hopes of improving this situation, here is a very quick YAML overview that should describe the language almost entirely. Hopefully it’s useful whether or not you use Camel.


(Safa Alfulaij) #15

wonders why RoR didn’t use gettext :thinking:
Does anyone know why the choose of the i18n gem of RoR is done in Discourse? Just wondering…


(Neil Lalonde) #17