WEBVTT

00:00.000 --> 00:18.200
Hi everyone, almost a full room. Welcome to the Translate of Daffro. There was a dad joke

00:18.200 --> 00:23.920
popping up in my head for all this week. I would like to say welcome to the Translate of

00:23.920 --> 00:29.400
Daffro where we speak your language, but now I can say welcome to the Translate of Daffro.

00:29.400 --> 00:35.400
I'm going to be the hardest room I had to pause them. I'm Tom Nemor. I've been living

00:35.400 --> 00:40.860
and breeding open source since the very beginning of my professional career. I've

00:40.860 --> 00:46.400
recontrobuting to all kinds of open source projects from Asturisk, which is a voice

00:46.400 --> 00:53.600
over IP, a server to Octoblue, an intimate of things platform. But about six years ago I started

00:53.600 --> 01:01.320
contributing to Malermost. I started with translations from there I branched out to write

01:01.320 --> 01:08.080
some documentation that some blog posts, that even some programming for them. Through those

01:08.080 --> 01:15.800
years I became the webplate administrator for Malermost. I'm not the webplate expert. There

01:15.800 --> 01:23.360
are other people here in the room that are definitely more an expert at webplate, of course.

01:23.360 --> 01:31.120
I somehow became the unofficial translation community manager and two years ago I gave

01:31.120 --> 01:39.240
a presentation about how we nurture our translator community here at Fossham, but the community

01:39.240 --> 01:47.800
translator community of Malermost. For those who are not familiar with the Malermost project,

01:47.840 --> 01:54.920
the chat center platform used in high-stake environments. It offers a massive amount of integration

01:54.920 --> 02:01.560
possibilities. It allows teams to orchestrate sophisticated workflows and automate manual

02:01.560 --> 02:10.520
processes. So far the marketing department, let's dive into translations. Since the very

02:10.600 --> 02:19.880
beginning of the most project, translations were a community driven effort. We prioritized

02:19.880 --> 02:28.040
quality before quantity, which we want to feel that the translations feel native, not

02:28.040 --> 02:33.160
like a bad machine translation. That feels weird to say in a presentation about automatic

02:33.240 --> 02:41.160
translations. I know that but I will fix that later. Right now we are shipping

02:41.160 --> 02:47.480
better most in 22 official languages and I think we have another 20 languages that are not

02:47.480 --> 02:55.240
officially supported and behind the feature flag. They are not official because they are lagging

02:55.320 --> 03:05.080
to way too much translations to given good and user experience. But to make the work of the translator

03:05.080 --> 03:11.400
more visible even for the translators than themselves, we make them visible behind the feature flag.

03:14.680 --> 03:23.560
Just for scale, each language is about 1,700 strings, strings with which is roughly 85,000

03:23.880 --> 03:31.960
words. That is about 200 pages for each language. So it is quite a lot of work if you have to

03:31.960 --> 03:41.480
start from zero for a new language. What they talk about, automatic translations, we did the

03:41.480 --> 03:49.880
first experiment and it said boom. Then we did something like, let's do this again and then

03:49.960 --> 04:02.040
we end with some questions. Okay, or first experiment. As you can imagine, like every other IT company

04:02.040 --> 04:09.720
or any company in the world, the last two years, management was very excited about AI. They wanted

04:09.720 --> 04:16.840
to see if we could use large language models or specialized AI to lower the load for the human

04:16.840 --> 04:26.760
translators. My very first test was just uploading a JSON file into the people and that

04:26.760 --> 04:34.040
didn't work at all because all the ITs, the unique identifiers were translated as well so that

04:34.040 --> 04:41.000
didn't work. So I ignored automatic translations for a while. And then I got to wear that

04:41.000 --> 04:48.040
template at an output translation add-on and that triggered me and made me curious. And I decided

04:48.040 --> 04:58.120
to give it a try. We picked our two smallest components in matter most, playbooks and calls

04:59.160 --> 05:06.120
because we didn't want to break the whole product at once or intentions were good. And we decided

05:06.120 --> 05:14.280
to only target the translated strings. We didn't want to mess around with the stuff that humans

05:14.280 --> 05:22.760
already have translated with so much love and effort. I was still convinced that AI can't do it better.

05:26.600 --> 05:33.160
But under the hood, the attentive listener already noticed that we used the template for translations.

05:36.520 --> 05:43.080
I was at that moment not aware that you can pick a single language for auto translations. I

05:43.080 --> 05:48.520
thought it had to be the full package or nothing but I learned it yesterday at the births of a

05:48.520 --> 05:57.320
feather that you can. We used deple for our translations because we had a brief survey

05:58.040 --> 06:06.440
a few years ago for what we had to do without translators. What are you already using

06:07.080 --> 06:14.680
professional personal for your translations and they deple came out like okay we used that and

06:15.480 --> 06:24.600
we use it now for the automatic suggestions in a web late. But I am just wondering I have questioned

06:24.680 --> 06:34.200
for the room. Do you use deple or do you use other platforms? Or maybe I don't know.

06:34.200 --> 06:41.240
I don't know. Open AI, Amazon translate, Google translate is there. Anyone who wants to shout out

06:41.240 --> 06:47.560
something? Yeah. We often need to translate pretty much in German and for that we are always

06:47.640 --> 06:55.720
fine that deple is the most divine. Yeah just for the recording translating from English to

06:55.720 --> 07:00.920
German and deple is very good at it and they use deple or German translate or has the same

07:01.000 --> 07:13.480
experience. We use translation of deple of these guides. We use my memory service which is a free

07:15.480 --> 07:23.000
translation memory repository and it's very very accurate for Brazil Portuguese.

07:23.080 --> 07:29.800
Okay. You will get a very high heat on the quality of the presentation.

07:29.800 --> 07:38.680
Good. Guides. Yeah and can you and in Libra office yeah okay for Libra office and very good in

07:38.680 --> 07:45.720
Brazilian. Modzilla from right Google's auto and now Google's auto and now yep.

07:53.000 --> 08:01.480
Yeah. Hello through the Python API but translating stream by stream it lacks the context

08:01.480 --> 08:07.080
and I'm dealing with medical software and it doesn't know the context of these streams

08:07.080 --> 08:15.000
and the translation can be a bit. Yeah also deple for in a medical environment

08:15.000 --> 08:21.320
but it's missing context. Yeah that's the same experience I have that context is key for and

08:22.360 --> 08:26.040
I think you. Yeah.

08:34.680 --> 08:37.320
Yeah.

08:37.400 --> 08:43.400
All of them have similar issues in the mainly context and translate it to yourself. Yeah.

08:45.800 --> 08:56.840
Okay. Google translate the young lex and deple. Yeah yeah I have an experience in the past

08:56.840 --> 09:03.880
now it's improving from day to day that's known it was from pledge to from Dutch to pledge

09:03.960 --> 09:15.320
made a lot of process and it was it was exactly but one sentence the context of the sentence in the

09:15.320 --> 09:24.840
egg in the Dutch. Yeah. Okay. Yeah. Yeah. Yeah I have the experience with Libra

09:24.840 --> 09:27.880
Transparency. Yeah Libra Transparency. Yeah.

09:27.960 --> 09:46.840
Yeah. Yeah. Yeah. Yeah. It's the expected quality. Yeah. Okay. Um okay this is Gwynchett

09:46.840 --> 09:53.240
um how easy it was to configure the add-on. Um we marked the strings as needing added

09:53.960 --> 10:01.480
that way they we were sure that they would show up to each translator to be reviewed and then it was

10:01.480 --> 10:07.800
quite sure and we were quite clear that yeah the quality of the string was probably not right

10:07.800 --> 10:14.520
like I already stated we only used the untranslated strings and we used yeah deple and the vaple

10:14.520 --> 10:25.640
translation uh remember we good um we have all green and vapulate fine we have all green and get

10:25.640 --> 10:35.560
up fine let's merge it and ship it the daily build was building fine we are using the daily

10:35.560 --> 10:42.840
build on our community server and after a few hours we got the message that the product was

10:42.840 --> 10:50.200
crushing in some languages and that our translations were the culprit so we had our uh Starship

10:50.200 --> 10:57.000
serial number eight moment successful flight and then you land and then it explodes in your face.

10:58.280 --> 11:06.200
Okay what did we miss? Um people was a little bit too enthusiastic it was also translating

11:06.280 --> 11:14.120
the placeholders you can see an example here uh yeah it's in Dutch my native language and others

11:14.120 --> 11:22.760
has been translated to uh anderen um we had there are tests in vapulate to catch this tip from a

11:22.760 --> 11:29.560
pro make sure that you are enabled in all components and not only in your large component that was

11:29.640 --> 11:36.680
one of our mistakes uh our deaths have C.I. tests very well for a good C.I. test but they

11:37.400 --> 11:43.560
weren't really anticipating this error because they were uh yeah we haven't uh checked in

11:43.560 --> 11:49.400
vapulate for this so we don't have to check that and they're remitted as well and so we had to remove

11:49.400 --> 11:55.080
the voltage translations there were a few hundred ones and then we checked we fixed our vapulate

11:55.240 --> 12:04.120
config or deaths added more robust C.I. tests and the placeholders are now keep our no longer

12:04.120 --> 12:10.920
translated so that's a bit better. Good that was our first test and we are we were happy we could

12:10.920 --> 12:16.120
call it a success and we had something like okay we could use a small break from and now and then

12:16.120 --> 12:23.800
we'll see how we'll proceed but a few weeks after this first experiment I received a message from

12:23.960 --> 12:31.400
Malermost staff that they needed 100% Korean translations for an important customer

12:31.400 --> 12:38.120
unknown to me so don't ask me and so the question was can we out of translate Malermost into Korean

12:39.960 --> 12:49.400
the customer was find it it were automatic translations quality had to be good enough but not perfect

12:50.040 --> 12:59.240
it was challenging because we had 7000 translated strings at that moment we had zero human Korean

12:59.240 --> 13:10.600
translators at that time and we had three months to deliver yeah okay we did it how did we do it

13:11.240 --> 13:18.840
um we created a new project in Ratlate based on the forks of the original repos because you

13:18.840 --> 13:25.400
can't use the same get up repository in a different project in Ratlate if I'm not mistaken

13:25.400 --> 13:33.800
that was never I got I stripped out every language from the repository except Dutch my native

13:33.800 --> 13:41.560
language and Korean I wanted to keep Dutch and there so I could see what it was doing and if it was

13:41.560 --> 13:50.040
working we enabled the auto translation plugin that was the easiest part of course we waited a few hours

13:50.040 --> 13:59.080
and today we had 100% translations and you can be so lucky in life at that moment a new community

13:59.160 --> 14:05.320
translator shows up a Korean community translator and says hey I want to contribute oh I have a nice

14:05.320 --> 14:14.280
very nice job for you I have 340 broken ICU strings with where the placeholders have been translated

14:14.280 --> 14:21.720
can you take a look at them and fix them and he did at that time also a staff member from

14:21.960 --> 14:32.760
most set but I am a native Korean speaker how can I help catch some random strings and okay

14:32.760 --> 14:39.080
they were saying okay this is good it's good enough it's not perfect but it's good enough and I created

14:39.080 --> 14:45.240
five separated PRs for each component one if we had to roll back then it would be easy then

14:46.200 --> 14:52.600
one of the parts is that I made a new project as well we merged our translations every Monday

14:53.800 --> 15:02.040
and reviewing those Korean translations took some time and if I kept them in the official project then

15:02.040 --> 15:09.080
yeah they should be merged so I should have removed them every time from the PR and that was too much

15:09.080 --> 15:19.240
of a hassle so I made a new project and put cool requests in there one of the benefits was as

15:19.240 --> 15:26.760
well that we could use these five cool requests to make a specific build for the customer to test

15:26.760 --> 15:36.440
and he was fine with it so yeah where are we now the demo for the customer went well

15:37.400 --> 15:43.960
we released the version but the auto translations two weeks ago so we called that a success

15:45.160 --> 15:52.040
and speaking about success that's a space shuttle landing at night there was a talk

15:53.240 --> 16:03.480
past year before that as well where have the woman intact gone this is a space shuttle mission

16:04.280 --> 16:12.360
114 for the people who are interested in it was the first mission after the discovery

16:13.640 --> 16:20.600
re-entry that the one that went faulty and disintegrated on re-entry and I'm saying this because

16:20.600 --> 16:26.600
this is a female pilot that is flying this space shuttle by hand landing and she was the first

16:27.240 --> 16:34.360
fighter pilot you you respite pilot first female dust pilot and first female commander

16:34.360 --> 16:41.480
and on a mission with very high stakes sorry space shuttle is our special interest but I want to give

16:42.840 --> 16:49.960
a lean Collins yeah the recognition the recognition for what he has done for all

16:50.920 --> 16:58.600
accomplishments I'm a father of two orders so I am a natural feminist good

17:01.480 --> 17:10.040
back to matter most back to translations our Korean translator is still active and he is now

17:10.040 --> 17:17.560
fixing inconsistent translations like the word choice in sentences is often

17:18.040 --> 17:26.840
translated in a different word you notice that and he is fixing that and he is really happy that

17:27.880 --> 17:35.480
with the auto translations because it reduced his workload and he says okay those strings are marked

17:37.480 --> 17:44.280
translate you know auto translated so we can actually filter on them and go through them and fix

17:44.360 --> 17:54.680
what fixing the one that's are needed so we are almost there for Q&A but I have a question first

17:56.920 --> 18:03.080
two years ago after my previous talk some other translator community managers reached out to me

18:03.080 --> 18:10.520
after my talk and we had an interesting chat and although all over our products differ a lot

18:11.240 --> 18:18.360
we have the most important thing in common and find translator community and we are all struggling

18:18.360 --> 18:25.160
with the same things how to be as open and welcoming as possible but also how to keep our translation safe

18:26.920 --> 18:35.160
how to make the rather invisible work of translator more visible and show them or appreciation

18:36.120 --> 18:43.320
we don't know what AI will bring us so my plan is of I have the ID let me say that

18:43.320 --> 18:50.360
that I would like to build a translator community manager's community I just think

18:50.360 --> 18:57.560
matter most and they said okay you can use your dedicated matter most server that we are already

18:57.560 --> 19:03.720
using for our translations create a channel over there feel free to join it's free you don't have to pay for it

19:04.680 --> 19:10.920
and if you want to have a chat with each other you're more than welcome we can only learn from each

19:10.920 --> 19:22.040
other so that's it time for questions drop your stickers and the things and bands afterwards

19:24.920 --> 19:29.320
how we talk to your community translators about automatic translation and what are their feelings

19:29.960 --> 19:32.760
in different situations where you've just done the whole thing

19:34.360 --> 19:42.600
the question is have you talked with your translators about the auto translations plans

19:43.480 --> 19:51.320
yeah we have a weekly post in our localization channel we announced that we were planning to do that

19:52.600 --> 19:57.240
that we gave also the context that it was very important for us to keep the humans in the loop

19:57.320 --> 20:03.160
that they keep and we're kept in control because yeah we are not going to tell them and it's

20:03.160 --> 20:13.160
definitely not our plan either to say we're going to replace you by AI no AI has to be

20:13.960 --> 20:20.600
helpful has to be a tool that we can use to make the workload a bit less for translators

20:21.160 --> 20:27.480
and if we were not if the test was not going well we should also say okay we're not going

20:27.480 --> 20:32.360
to go further with this we are not pushing this to work you this was a test we want to try it

20:33.560 --> 20:41.000
my plan is now on to we have three lagging ship languages where there is no human translator

20:41.560 --> 20:49.880
anymore the plan is to translate these as well with AI because we got a feedback that it's

20:51.240 --> 20:56.120
helps people to start translating now you see people come in the translate four five

20:56.760 --> 21:02.520
fifty hundred strings and they leave and we hope that we're going to try if we didn't use AI

21:02.520 --> 21:09.400
and have some translations that they are more encouraged to fix translations fixing is easier

21:09.400 --> 21:12.760
than starting from scratch in my experience

21:12.840 --> 21:20.920
you can also use the AI to provide more context for the strings because the AI can

21:20.920 --> 21:28.600
understand and the light or the dress even like you can even write scripts you can

21:28.600 --> 21:33.640
attend us the language scripts but instead of you know testing to just take a screenshot

21:33.640 --> 21:39.880
in the context we just think of yes so you can also kind of using your you know test you

21:40.840 --> 21:48.280
some information yeah question it's not really question is more remark that you can use AI

21:48.280 --> 21:55.160
also for giving more context you can script make a script that takes screenshots and at

21:55.160 --> 22:02.760
these screenshots together when you're uploading them to an LNM for providing more context

22:03.160 --> 22:04.760
is that correct but I'm

22:14.280 --> 22:20.280
yeah also saying you can upload your source code as well and it can reach your source code as well

22:20.280 --> 22:24.040
and go get more context in that way thank you

22:24.840 --> 22:32.840
what I'm wondering when you were doing the automatic translations at first how useful

22:32.840 --> 22:39.240
were public memories for the translation of MetaVos or did you not rely on the public

22:39.240 --> 22:44.840
memories at all we did not rely on public memory oh yeah the question is the true rely on

22:44.840 --> 22:50.920
public memories before you started out with translating and the true rely on them we did not

22:55.000 --> 23:01.800
and why not there is no specific reason why we didn't probably because we didn't think about it

23:02.360 --> 23:04.360
to be honest

23:24.040 --> 23:30.600
it's artificial intelligence the translation in French artificial sciences is not right

23:30.600 --> 23:37.000
because the translation is coming from the intelligence service at an end in French

23:37.000 --> 23:42.440
so the inductive is a very traditional super super system you could eat that stuff that

23:42.440 --> 23:49.080
the name something like that so in Chinese it's more broader the solidification of our sentence

23:49.960 --> 24:00.600
how do you manage this problem the question is French and Chinese have quite different

24:00.600 --> 24:09.640
words for technology that we are using like the word AI and if we have encountered any issues

24:09.720 --> 24:19.640
with that and I can yeah for as far as we know we didn't have any issues with that but

24:19.640 --> 24:26.040
French is officially supported language so yeah there were not that many French

24:30.440 --> 24:37.160
but we for those two languages we have active community translators so we didn't have any

24:37.240 --> 24:43.080
output translations for them because they were already 100% translated so I can't help you

24:45.480 --> 24:47.480
any more questions

25:07.480 --> 25:28.200
it was a pull request from the question is we are using web late for translations I was mentioning

25:28.280 --> 25:36.680
pull requests and normally yeah translators don't take pull requests that is true we don't

25:36.680 --> 25:43.000
make pull requests there is also a CI check on that in matter of most that translations can

25:43.000 --> 25:52.280
only come from web late but we can override that but actually I did use web late

25:52.600 --> 26:01.320
for making pull requests on Monday when we merged all the regular translations then I uploaded

26:01.320 --> 26:09.080
the Korean translate and it was locked we merged pull back in into web late I rebased and then

26:09.080 --> 26:16.680
I uploaded the Korean translations make you pull requests merged and rebased again

26:16.680 --> 26:26.600
okay that was it thank you and now you're part of Stephen Goodman

