Translator Badge


(Marco) #1

Can you add a Translator badge?
I’ve translated more than 2000 strings :slight_smile:


(Sam Saffron) #2

I would love to, but how do I figure this out automatically. Is there a transifex API we can use to get this information?


(Marco) #3

APIs do exist:

But I’ve asked them which one would suite our needs and she answered:

I’m afraid that we don’t have an API call for that. You can only use the requests that return some info of the translations like the translator name and then manually group the desired info on top of the translator.


Badge that grants badge-giving privileges
(Alessio Fattorini) #4

Please can you work on this? We have a lot of translators on our Transifex and I’d like to award them using badges. Any hint?


(Gerhard Schlager) #5

Unfortunately the API doesn’t provide enough data in order to map translators to Discourse users and there’s currently no way to get data about who translated/reviewed what or how much.


(Alessio Fattorini) #6

Bad news I have a lot of amazing translators on Transifex for my product! Is there any chance to do something for them?


(Mittineague) #7

I think you should be able to do it manually per member.

Not ideal, but if there is currently no way to automate it I fear that is your only alternative.


(Alessio Fattorini) #8

Right, but my goal is create badges on translation effort since be a translator isn’t enough


(Mittineague) #9

Sorry, I’m not understanding exactly what you mean by that, but I have been doing some experimenting.

There may be an easier way to do some steps, and the query may need to be improved, but this “works” as best as it does work I guess.

  • I created a Custom Group, I called it Translators
  • I added a member to it and Saved
  • I went to the member’s Profile JSON and got the custom_group id
  • I created a Badge, I called it Translator and gave it a bronze book under other using this query
SELECT u.id user_id, current_timestamp granted_at 
FROM users u 
JOIN group_users gu on u.id = gu.user_id 
WHERE gu.group_id = 42 
AND (:backfill OR u.id IN (:user_ids))

I then added a few more members to the group, then ran sidekiq (on my localhost I need to exec it myself)

The results

.

It can still be granted through the Admin Users pages - but - that is one at a time and could get old fast.
Adding members to Admin Groups can be done “bulk” so is a bit easier.

Who you add to the Group would be up to you


Default Custom Group
(Anton) #10

Don’t forget to take into account those who review the translations as well :wink:


(Alessio Fattorini) #11

Thanks man, I have implemented something like that and it works, but I need to check manually the work on Transifex meanwhile I’d like Discourse can check it itself