11 ms·
Mozilla releases local machine translation tools as part of Project Bergamot
- lovelearning 4y agoStuck at "Loading translation engine..." from a long time. Tried German and Spanish. Can't tell if it's downloading some model data or something's failed. I suggest some kind of progress indicator.
- ainar-g 4y agoWeird. I had a numeric progress indicator, and the model got downloaded in just a couple of seconds.
- Vinnl 4y agoYou might want to report that here, if it's not reported already: https://github.com/mozilla/firefox-translations/issues https://github.com/mozilla/firefox-translations/issues
- Vinnl 4y agoI've been using the extension [1] for a bit and, while it doesn't support too many languages, for the ones it does it's pretty cool to have it all running locally. [1] https://addons.mozilla.org/firefox/addon/firefox-translations/ https://addons.mozilla.org/firefox/addon/firefox-translation...
- clairity 4y agoneat, but it looks like it was just released, so how were you using it before? as an aside, pretty sad to see the project page, https://browser.mt/ https://browser.mt/ , requiring not just javascript but specifically google connections to work. to 5 different google properties, no less.
- 0des 4y ago.mt huh thats a new one for me
- Vinnl 4y agoI work at Mozilla, so got a sneak preview (and also the first bugs) :) (Of course technically the work was out there in the open already, since it's Mozilla.) Agreed about the Bergamot website. I suspect it's not by Mozilla, but I'll see if I can ask someone to take a look, as I don't think all those connections should be necessary.
- clairity 4y agoawesome, thanks! i also suspect it's by the EU coalition behind bergamot, so probably beyond mozilla's jurisdiction, but it doesn't hurt to ask.
- edko 4y agoDo you know if this will be open-sourced, or if the repo is already available?
- space_fountain 4y agoI think this is probably the source https://github.com/mozilla/firefox-translations https://github.com/mozilla/firefox-translations edit: and for the actual translations https://github.com/mozilla/bergamot-translator https://github.com/mozilla/bergamot-translator
- 2Gkashmiri 4y agois there a way to opt websites/URLS/ url roots in to automatic translations? currently the "auto translate this tab" works but you have to select it manually and for me at least on linux it makes the window more than 100% so i cannot use the right side of browser in this tab. you know a simple setting "always translate this website" and an option to hide the bar
- baobob 4y agoDo you know what the pipeline looks like for new language pairs being added? This is really, really, really awesome I'm also immediately curious about using it headless outside the browser
- jelmervdl 4y agoThe training pipeline is also on Github! [1] I was experimenting with running the wasm version of bergamot-translator (the translation engine used by the addon) in node [2]. However, if you want more performance, using the Python library [3] or the native C++ interface [4] gets you further because the wasm build is limited to a single thread and thus a blocking interface, and can't use all the processor specific optimisations that are in the native builds. EDIT: Another option is using translateLocally [5], which is a Qt desktop app based on bergamot-translator. It has a native messaging API that is designed as a much faster alternative to the wasm build for browser extensions, but it can also be used from Python [6]. [1] https://github.com/mozilla/firefox-translations-training https://github.com/mozilla/firefox-translations-training [2] https://gist.github.com/jelmervdl/a4c8b6b92ad88a885e1cbd51c6ad4902 https://gist.github.com/jelmervdl/a4c8b6b92ad88a885e1cbd51c6... [3] https://colab.research.google.com/drive/1AHpgewVJBFaupwAbZq0e6TdX6REx0Ul0?usp=sharing https://colab.research.google.com/drive/1AHpgewVJBFaupwAbZq0... [4] https://github.com/browsermt/bergamot-translator/blob/main/app/bergamot.cpp https://github.com/browsermt/bergamot-translator/blob/main/a... [5] https://github.com/XapaJIaMnu/translateLocally https://github.com/XapaJIaMnu/translateLocally [6] https://github.com/XapaJIaMnu/translateLocally/blob/master/scripts/native_client.py https://github.com/XapaJIaMnu/translateLocally/blob/master/s...
- schroeding 4y agoIt passes the "Turkey" <=> "turkey" test: "In Turkey they sometimes eat turkey." => "In der Türkei essen sie manchmal Truthahn." :D Super cool! Real-time translation, in the browser, running locally! And sure, not state of the art / on the level of deepl, but on the level of Google Translate, 2015ish, maybe? Amazing!
- mahmutc 4y agoYou should find another test case :) https://www.aljazeera.com/news/2022/6/2/un-registers-turkiye-as-new-country-name-for-turkey https://www.aljazeera.com/news/2022/6/2/un-registers-turkiye...
- BiteCode_dev 4y agoJust reformulate: "Türkiye quit being called Turkey cold turkey"
- riedel 4y agoThey actually put an umlaut into the official name to really make sure it won't be used correctly internationally?
- mahmutc 4y agoI was thinking about ISO-3166 part, but it seems standard contains already some names with special character. i.e, Réunion. https://en.m.wikipedia.org/wiki/List_of_ISO_3166_country_codes https://en.m.wikipedia.org/wiki/List_of_ISO_3166_country_cod...
- Erlangen 4y agoHowever, "Turkey is not a common food in Turkey." != "Die Türkei ist kein gemeinsames Essen in der Türkei."
- mathstuf 4y agoWell, that's technically ambiguous in English too. I don't think many people are eating their own country ;) .
- option 4y agoWhat’s wrong with using cloud without sending any user id with the request?
- deleted 4y ago[deleted]
- chungy 4y agoThere's likely far more identifiable information in the actual text than a user ID provides.
- drewzero1 4y agoCloud assumes a constant, reliable internet connection, which is not the reality in most of the world. (Nor is it always desirable.)
- toper-centage 4y agoWhat if what I'm trying to translate is sensitive information in itself?
- kevin_thibedeau 4y ago"The telescreen received and transmitted simultaneously. Any sound that Winston made, above the level of a very low whisper, would be picked up by it; moreover, so long as he remained within the field of vision which the metal plaque commanded, he could be seen as well as heard. There was of course no way of knowing whether you were being watched at any given moment."
- 0des 4y ago"How often, or on what system, the Thought Police plugged in on any individual wire was guesswork. It was even conceivable that they watched everybody all the time."
- no_time 4y agoIn the current status quo you either make use of an api by indentifying yourself with a key or a browser session that is fingerprintable in a gazillion ways. There is no such thing as "not sending user ID" or if there is, it has a totally negligible reach.
- mikevm 4y agoThat's funny. I've just tried to translate "fuck you" to Russian and I got "трахать тебя" while Google Translate gives the more accurate "пошел на хуй".
- spitfire 4y agoTry “Russian warship, go fuck yourself!” instead. It should work better.
- ainar-g 4y agoIn my experience, DeepL is still the undefeated leader when it comes to translating Russian obscenity, heh.
- numpad0 4y agoMachine translations are accurate as a trebuchet past 300 yards, just a better than nothings. But they’re great tool so long user is aware.
- no_time 4y agoThis is incredible and super important. For all the blunders of Mozilla in the last decade, they still have some great projects. I am also grateful of them not scrapping common voice.
- _trampeltier 4y agoAlso important, because now it seems at least in germany, on Google translate, there is the translate website button missing. From Switzerland I saw the button lately when I tryed. I don't know if it is because go to cencored (russian) sites. My company blocks google translate anyway, probably because of the same reason.
- croes 4y agoAre you sure? Under Google Übersetzer I see three button: Text, Dokumente, Websites
- _trampeltier 4y agoYes, at least last week. The Internet from work is routed to Germany (Paderborn). Last week the third button "Websites" was missing. From home in switzerland the button was there. Also if you entered "translate website" Google sugested Yandex on second place ..
- no_time 4y agoTry copying the url into the translator's text field. It's how I've been using it for years.
- deleted 4y ago[deleted]
- Shadonototra 4y agoit's not their project, all they did was to write a form in JS the whole project is a EU funded one, all done in the university of Edinburgh https://cordis.europa.eu/project/id/825303 https://cordis.europa.eu/project/id/825303 you giving full credit to Mozilla is dishonest, to say the least it aligns to their past projects, including using Mullvad and slapping a Mozilla sticker on top of it to claim it as their own also it is super funny to read this: > H2020-EU.2.1.1. - INDUSTRIAL LEADERSHIP - Leadership in enabling and industrial technologies - Information and Communication Technologies (ICT) MAIN PROGRAMME little do they know, EU never learn
- guerrilla 4y agoWhat I need from this is to be able to select text and just have it translated in a tooltip (or whatever.) This is what I'm using the Simple Translate Firefox add-on for but unfortunately it sends data to Google.
- filoleg 4y agoIt would be nice to have something like that for desktop, but on mobile, iOS handles it amazingly. You can select text almost anywhere (from browser to even from a screenshot/image; literally anywhere you are able to select text), and in a tooltip above the word, one of the few options is translate. I love the UX of it, as it is super intuitive and unobtrusive, and works pretty much instantaneously It runs fully locally, no connection required. Slides a native OS pane over the page to show possible translations along with pronunciations and other extra info. Sidenote: other features in that tooltip are pretty nifty too. Aside from the obvious copy/cut/paste/share, i found "look up" to be quite useful when i see a word I've not encountered before. It pulls another native OS pane that shows dictionary definitions and extra info like the wikipedia link. And the actual dictionary definitions are local too afaik.
- guerrilla 4y agoYeah, Android has the same.
- jeroenhd 4y agoAndroid had the same feature, assuming apps don't disable the tooltip. Selecting text on my phone brings a nice context menu for cut/copy/paste/search/translate/encrypt (that last one was added by OpenKeychain, a PGP app). It doesn't come with a dictionary built in, but the search button becomes an online dictionary in a pinch. Any dictionary app could extend the menu to add a local dictionary, of course.
- rahimnathwani 4y agoAndroid has this too. BUT: When my phone is on portrait mode (almost always), I don't see the translate option until I tap on the three dots. The translation isn't instant. It takes a second to show up, and then takes up the top of the screen. I'd much prefer a UI similar to the Zhongwen Chrome extension.
- bogwog 4y agoThis is awesome, but... > This set of requirements posed a number of technological challenges to the team: the translation engine was entirely written in programming languages that compile to native code. We needed a way to streamline the distribution of the project in order to avoid the overhead involved in providing builds compatible with all platforms supported by Firefox — that would be impracticable to scale and maintain. Does Firefox really support so many different platforms and archs that CI builds are unrealistic?
- dblohm7 4y ago(Former Mozilla employee, here) I'm completely speculating, but it's probably a matter of not wanting to complicate iterating on the translation engine by introducing a bunch of cruft from the Firefox build system (which, though it uses GNU make under the hood, is very much bespoke and complicated). Since the translation engine is intended to run on a product that hosts WASM, they might as well just build to that.
- jelmervdl 4y agoThe upside of using WASM is that the extension itself can be easily ported to other browsers and platforms. The UI uses Firefox specific APIs but the parts that take the HTML from a page and push it through the translation engine would also work in any Chrome-based browser. (Edit: also free sandboxing of a blob of C++ code that needs to handle arbitrary input from the web!)
- andrenatal1 4y agoThe point here is that it simpler to have just one NMT engine in WebAssembly shipped bundled in the extension than runs in all platforms for free, instead of having to support and distribute multiple native builds of the engine that would be sideloaded and communicate with the extension via native messaging. When the project started for example, the engine has incompatible with ARM, which we could just get for free with WebAssembly. The performance penalty of doing that was minimal for the user eyes, and so far we received less than a handful of complains about it. Bundling the entire engine on Firefox was never an option for many obvious reasons.
- 4y ago
- simlevesque 4y agoI wonder why French is absent. Meanwhile they have Persian which is not even in the EU.
- cassepipe 4y agoShould the EU languages get preferential treatment ?
- Mizza 4y ago"This project has received funding from the European Union’s Horizon 2020 research and innovation programme under grant agreement No 825303 ."
- geraltofrivia 4y agoI wouldn't comment on the absence of French vis-a-vis other languages. It's just slightly surprising because English <-> French is honestly a very widely studied translation sub-task, with an enormous amount of parallel corpora available for training these models.
- simlevesque 4y agoWell, there's this and the fact that it is the second most popular language in the european union, which sponsor the project.
- andrenatal1 4y agoFrench is being trained by the consortium and is part of the scope of the grant, so we should have it at some point in June and we'll ship and update as soon we have it.
- coffeeblack 4y ago
- tclancy 4y agoHow do you think translations work, exactly?
- coffeeblack 4y agoIt’s what may be done to a text after the translation what makes me distrust it. I speak a couple of languages, just in case you want to come back to your question regarding “how translations work”.
- baobob 4y agoAwesome, tested the German model on dw.com, surprisingly fast and accurate.
- whinvik 4y agoCan we use this on mobile?
- jeroenhd 4y agoThe demo site works on mobile if you let it load the necessary content so if you're speaking from a web dev point of view: definitely. As for the addon, on Android you'll need to install an unstable version of Firefox and configures a custom addon list in an addons.mozilla.org account that includes it so you can download it. On iOS there isn't any option to download addons as far as I'm aware. On mobile Linux environments everything should work like on desktop.
- djvdq 4y agoYou can't download any addon for Firefox on iOS because it's almost Safari, only looking a bit different. All browsers on iOS has to use WebKit so FF is not really FF here on iOS.
- jeroenhd 4y agoI know, but I don't know what iOS webkit does and doesn't allow. Injecting code and responding to events in a way that makes the most important webextension APIs work _sounds_ like it should be possible (though it would take lots of work). Sad to hear there's no such feature on iOS. At least Android gets uBlock Origin in the stable channels. Hopefully this will change when Apple will eventually be forced to permit other browsers into the iOS app store.
- djvdq 4y agoEU is after Apple in terms of Appstore - they want to force Apple to allow different stores. Then FF for iOS (the "real" one) could be distributed this way.
- jelmervdl 4y agoI think the Firefox extension might not work on mobile because it hooks into some undocumented addon apis to draw that translation bar UI. Those might not be available on mobile. The translation code itself should work on mobile. It's just some javascript & wasm (albeit with SIMD instructions not implemented in Safari's WASM vm…)
- jeroenhd 4y agoLooks lovely! Offline translations are very welcome in a world where the most important translation engines are also run by the world's biggest data hoarders. Sadly, the extension either doesn't work on mobile or Mozilla couldn't be bothered to add it to the whitelist.
- andrenatal1 4y agoHi, I am part of the team who developed this and the author of the article. You can ask me anything about it if you have questions.
- dnc 4y agoHi, This is an awesome project, congratulations! Could you share details about the machine translation engine that is used (or where to find out more about it)? Are there any plans to open source the extension code (with the WebAssembly optmizations that are mentioned in the article)? Thanks.
- baobob 4y agoAt least the code parts seem to be on GitHub: https://github.com/browsermt https://github.com/browsermt
- jphilip 4y agoA fork of marian-dev[1] is the underlying machine-translation engine: - https://github.com/browsermt/marian-dev https://github.com/browsermt/marian-dev Development of higher-level code wrapping around marian-dev make suitable for the browser-extension happens at: - https://github.com/browsermt/bergamot-translator https://github.com/browsermt/bergamot-translator Some of the WebAssembly optimizations are available in bergamot-translator/marian-dev. Rest are in Firefox source-code. A start point could be https://bugzilla.mozilla.org/show_bug.cgi?id=1720747 https://bugzilla.mozilla.org/show_bug.cgi?id=1720747. Extension code is open-source, and linked already in other comments: - https://github.com/mozilla/firefox-translations https://github.com/mozilla/firefox-translations [1] https://github.com/marian-nmt/marian-dev https://github.com/marian-nmt/marian-dev
- andrenatal1 4y agoYou can find the engine used here [1], the API built around it here [2] and its WASM port here [3] and the WebAssembly matrix multiplication optimizations are here [4] [1] https://marian-nmt.github.io/ https://marian-nmt.github.io/ [2] https://github.com/browsermt/bergamot-translator https://github.com/browsermt/bergamot-translator [3] https://github.com/browsermt/bergamot-translator/tree/main/wasm https://github.com/browsermt/bergamot-translator/tree/main/w... [4] https://github.com/mozilla/gecko-dev/tree/master/third_party/intgemm https://github.com/mozilla/gecko-dev/tree/master/third_party...
- simonmales 4y agoGreat that you contribute your own language pairs.
- collsni 4y agoWow awesome!
- boberoni 4y agoFor i18n in my own projects, I typically use tools like gettext and involves lots of volunteers to do the translations. I might try out these neural machine translation tools to see how they fare. I also wonder if these machine translation tools are trained on a corpus of gettext datasets.
- jordemort 4y agoI love it. I wish it could translate Chinese to English.
- obert 4y agoThe sooner we move AI to 127.0.0.1 the better, enough with The Cloud powerhouses. Yes there’s work to be done, resilience, power efficiency, responsiveness, but it’s the right direction for everything that involves private computing.
- sumy23 4y ago
- ShamelessC 4y agoAlso the right direction if we intend to put this stuff into actual robots.
- deleted 4y ago[deleted]
- nyanpasu64 4y agoIt's unfortunate that it doesn't translate Japanese, and reading Japanese-only resources is a common hurdle in the retro game modding/development community.
- Mindless2112 4y agoNot to mention the icon for the extension is "あ⇆a".
- pabs3 4y agoWould be nice if desktop environments like GNOME/KDE and email clients like evolution/kmail could integrate this too.
- midislack 4y agoThis is amazing. Hope it can be adapted for Unix command line use.
- unhammer 4y agoTry https://translatelocally.com/ https://translatelocally.com/ – it's the same backend, and should be usable in git HEAD from the cli: https://github.com/XapaJIaMnu/translateLocally/issues/51#issuecomment-970417360 https://github.com/XapaJIaMnu/translateLocally/issues/51#iss...
- midislack 4y agoWow! Thanks!
- unhammer 4y agoThis is awesome. I've been using https://translatelocally.com/ https://translatelocally.com/ a bit, which is the same backend, and been amazed at how they managed to squeeze those neural net models, the Norwegian–English one that's downloaded by translateLocally is just 15M! That's less than Chrome transferred to Google about you while you were reading this comment.[citation needed] Apparantly Kenneth Heafield https://neural.mt/ https://neural.mt/ of kenlm fame has been coordinating the project, also doing good work like organizing shared tasks on Efficient MT https://statmt.org/wmt21/efficiency-task.html https://statmt.org/wmt21/efficiency-task.html
- jeremiahlee 4y agoExcited for this, especially after Mozilla removed my and several other add-ons that simply loaded Google Translate's JavaScript library onto pages in 2019. https://www.jeremiahlee.com/posts/page-translator-is-dead/ https://www.jeremiahlee.com/posts/page-translator-is-dead/ Sadly, no support for Svenska (Swedish) to English yet.