We also share some background info about technology behind Localazy and our views on open-source.
🎓 Some definitions first
What is the difference between internationalization, localization and translation?
Internationalization is a process of making your software localizable. The code structure has to be prepared to allow for localization, and it starts, ideally, in the design phase. For example, you may want to have externalised strings so you can bring your strings to the translation management tool.
Localization takes care of the process – the localized app is aligned with culture – from text orientation, correct fonts, colors, local currencies, pluralisation through time/date formats and finally texts to be translated with the proper context.
Translation is the process of translating texts into more languages. This localization part is often the most tedious one as you can’t just introduce a few locale-based rules in your source code. Translating texts to another language is hard. You need to know context/meaning. You can translate a word quickly, but without context, you can translate it the wrong way. For example, the term “book” can mean “reserve” or “piece of literature” in the Czech language. Both translations are correct, but which one is valid for a button? Context provides the right meaning.
You need the right tool to assist you in getting the best possible translation quality.
🧠 The philosophy behind Localazy
What are the most significant benefits of Localazy compared to your competitors?
Localazy is a dogfooded product. We are developers; we went through the localization pain for our apps before, we know the problem, and we solve it for ourselves and all other developers and companies.
That means Localazy is built with developers in mind from scratch to streamline the software localization process with automation in mind and provide tools aligned with this vision. We don’t want to overflow users with a lot of features in choices. Who cares about them? We all want to get the job done. Also, as developers, we want to spend our time with code and not with the localization tool, so Localazy ensures that even if you are dived deep in your source code for several months, you retain full control over translators and localization quality.
As developers, we also have the sharing deep in our souls, and so we introduced features like our ShareTM from the beginning.
Developers already share their source code on Github, Gitlab and other places. Let’s also share translations to save money and make our apps better for our users. Anyone can tell you that they’re building their product for developers. We are not. We are developers, and we are building it for ourselves, and that makes the difference.
Why spend money again and again on the same texts?
The vital thing is that we also came through many tools, spending considerable amounts for monthly fees for features we don’t want. Nothing like this is in Localazy. You can use it for free, and if you hit limits, you can increase them with a one-time payment. Of course, there are add-ons and extra features like CDN delivery, etc. that are paid at fair prices separately on usage or monthly basis, but you are in control of what you need. We don’t dictate you to get an overpriced package just because you hit limits. At the same time, we never limit tools that can improve translation quality! Your app deserves accurate translation.
Why have you decided to build Localazy and offer it to other developers?
I have localized Floating Apps to 30+ languages, and as a single developer, I have found it extremely demanding activity to correctly manage all the language versions and product flavours. I strived for high-quality translation, so I was very concerned about being able to overview the quality and control all the contributors comfortably. I even wrote a small tool to use other solutions available on the market in a bit more comfortable way not wasting hundreds of hours on every major app release. All those ideas and tools led to Localazy.
Localazy is built to assist Localazy which does most of the work and requires your attention only when needed.
And of course, I feel that the pricing model was worth changing too !(upload://eyTh14P8CclSI2jTAClYPefKzr9.png).
You have a quite specific pricing compared to other localization platforms. Why and how it makes a difference?
We, developers, hate monthly subscriptions when they are not justified because we kind of understand what’s behind it – for example, monthly fee for phrase management. A few texts stored somewhere in a database. It’s not that easy but the perceived value is simply not there.
On the other side, we are happy to pay much more for features which provide clear and tangible value. For that reason, Localazy provides all core localization features for free, so the quality of your app translation is not compromised. We do not ask for a monthly fee for phrase management, which is paid on a lifetime basis. What we want you to pay for is when we make your life easier and your app better.
What industries do you serve and who are your current customers?
Our current customers are single developers and teams – no matter whether single teams or dev teams in large organizations. Especially software houses with own and client projects and companies with their software products love to use Localazy.
If you think of having more than one language available, Localazy is a viable solution to manage software localization with ease. Once you integrate it into your tech stack, you can forget many manual tasks and management overhead. The volume of resources saved – from time to finance is vast even when you are a single developer who wants to focus on development rather than translation management.
🚀 Getting started with Localization
How much effort to implement Localazy one needs to see a new language in their apps?
It takes a few minutes to integrate Localazy if your app is i18n ready. Of course, it depends on the level of sophistication. A simple app can get new languages in minutes with Localazy, while more complex apps or team projects will require slightly more work on their side to complement their workflow fully. Once you integrate Localazy, it reportedly saves thousands just on dev time savings.
Anyway, there is no long-term project needed for integrating Localazy. Just tell the tool where your localizable files are and where to place translated ones, and you are ready to go. All the localization-related tasks are moved from the developers’ shoulders away.
What are some of the most pressing software localization pains? And how is Localazy addressing these?
Handling localization files manually, version management, translators, translation delivery and pricing are definitely few of the pains every developer will face when it comes to app localization in a productive manner.
Just to show you how a tiny change can be a huge pain. Imagine that you already have your app translated and just added one more text because of a new feature. How are you going to contact all the relevant translators? Do you send them the file? Do you save the translated file back and check for its quality? How do you answer their questions about context? What if they are not familiar with XML or JSON or whatever file format you use for storing translated texts? What if someone complains about translation quality? How can they help you with improving the translation?
Wouldn’t it be just better for you to invoke CLI command
localazy upload and let Localazy care about contacting translators automatically, providing them with assistive technologies such as MT engines and shield them from the format specification? Of course, later, you will need to invoke
localazy download to get translated files back to your app. Well, you don’t! Just make both commands part of your CI/CD workflow !(upload://eyTh14P8CclSI2jTAClYPefKzr9.png).
There is a whole plethora of technologies developers use to create software. How do you make sure there is an integration for them? Which integrations do you offer? As described above, we are trying to be flexible enough with our CLI and extensive format support to be a viable solution for projects of any size and any technology. In the end, formats like JSON, YAML, PO, XLIFF, RESX, XML, etc. are typically used for localization needs, so there’s no wild-west !(upload://eyTh14P8CclSI2jTAClYPefKzr9.png). We also invest a lot of effort to support services like Github, Gitlab, Bitrise, JetBrains Space, etc. that are typically used by our users.
Today, the situation is not always that hard with Docker, NPM, Maven, Brew and other standard ways to make our tools and libraries widely available.
Of course, there is a long list of what we want to improve and support. That’s probably a never-ending task, but it’s also a challenging and rewarding one – to get our hands on all these technologies is awesome!
You can see the list of currently supported platforms at localazy.com/integrations.
💖 Why you will love Localazy
What your current users say about Localazy?
The best would be to just visit Localazy testimonials.
What do your users appreciate the most on Localazy?
Our customer support is the most appreciated “feature” of Localazy !(upload://eyTh14P8CclSI2jTAClYPefKzr9.png). We live up to our internal claim “We are here to help” and do whatever we can to help our users. For me, personally, customer support is the best way to understand our users’ needs and to plan how to improve our product.
The key technologies that make us different from other solutions on the market are amongst the loved ones too:
CLI & developer-first approach
At the moment, you won’t even find the classic upload form field on Localazy to get your files to our platform. We have powerful CLI built for Windows, Linux, macOS, JVM and Node that you can configure to work for you the way you need it. It’s straightforward to use it out of the box for small projects, yet it’s flexible enough to be configured for projects of any size. We are working on a lot of features and improvements all the time.
Extensive localizable file format support
Our format parsers are very flexible. The most configurable one, our JSON format parser, can parse almost any kind of JSON files with arrays and plurals and it not even can parse it but it produces back the very same file retaining different structures per plural, etc. Some tools say “we accept this file format”. We rather say “just tell us what features of our parsers do you need”. As said above, we are here to help and not to force developers to change the format and rewrite their code. That’s also the important part of our seamless integration.
How Virtual Translator (VT) can help get more done in less time?
A human-assisted machine translation combines several machine translation engines and our proprietary technologies for sharing translations with a human touch. It’s way better than plain machine translations and cheaper than professional translators at the same time. Enabling Virtual Translator for your apps will regularly scan for new phrases and automatically translate them into selected languages. It’s a cheap and simple way to introduce continuous localization to your apps without any effort. Even if you are going to request professional translations at a later stage of your project, completing it will require much less work.
Shared translations (ShareTM) are a game changer
Upload your localizable files to Localazy and get a huge portion of your texts translated to up to 80 languages for free and in a few minutes. That’s exactly what the ShareTM experience looks like. You still retain control through our proactive review, so don’t worry about quality. ShareTM is based on apps (that enable the feature) we have on Localazy and so the translations are usually extremely accurate. Way better than translations from Google and other MT engines.
Will Connected Apps (InTM) sync simultaneously translations across tech stack?
In the background, Localazy uses its InTM technology, which is a much smarter version of a classic translation memory. InTM distributes existing translations between connected apps and automatically decides, whether the translation can be used right away or needs to go through review first. This can really save you a significant amount of time and money. Connected apps also share all glossary terms by default. When you create a new term, it gets automatically distributed among your connected apps. This way, all your translators can operate within the same context, and you don’t need to redefine the terms for each app separately.
Content Delivery Network (CDN/OTA)
The important part of the configure & forget experience is that we provide global CDN and Over-The-Air updates. Localization of your product/app is no longer waiting for the next release. It’s always up to date and as we also generate metadata (list of supported languages including their English and localized name and plural rules), it’s possible to add new languages dynamically. CDN backed by reliable Amazon CloudFront is a zero configuration option – it’s just available for you.
API-first for high service accessibility
We strive to be as close to our users as possible. For that reason, we have developed not only an Android Studio plugin, but also CLI itself and we are going after API-first approach, which also means that Localazy will be soon available in Slack and other 3rd party integrations to make your localization even easier across the team.
⚙️ The technology behind Localazy
What is your tech stack?
We used Kotlin (JVM) almost exclusively for our backend and TypeScript for the front-end of the service. The back-end is designed as a set of microservices communicating through a message broker which is ActiveMQ with a custom configuration to support delayed delivery and some other features. For data, we use S3, sharded PostgreSQL and Elasticsearch. Memcached is used for database-caching, high-speed operations and request counting.
We also introduced Kotlin Native/MPP for our CLI tool which allows us to quickly build it for all major platforms.
These are the core technologies we work with but there’s plenty of tools we use on a daily basis.
Everything runs on Amazon AWS and we rely on some other services provided by AWS (such as CloudFront for our global localization CDN). We recently also introduced ScaleWay as their bare-servers are a better option for some compute-intensive tasks.
🤓 Closing thoughts
How does your team at Localazy cooperate with the Open Source community?
SourceForge has been known in the OpenSource community since 1999 and we are pleased to be listed on SourceForge nowadays. At Localazy, we do rely on open-source extensively, which has been also an observable trend with much larger companies nowadays. Relying on open-source software enables us to progress and innovate much faster, without a need to reinvent the wheel, which results in much better products in shorter times. In return, we strive to open source as much as we can from our projects and help to improve the existing ones. Our developers are then naturally becoming active members of the community who contribute to open-source software as a part of their day-to-day job. You can check out our GitHub for more insight.
If you have an Open Source project you would like to localize, just let us know and we will make sure you get what you need. The same applies for nonprofit organizations and academic users, of course.
Why have you decided to bring Localazy to SourceForge?
We believe SourceForge is a great resource for all creative people seeking the best solutions, and our mission is to remove the localization hassle out of their shoulders to give them more time for their creative part. SourceForge is a trusted medium to let them know we are here for them. Feel free to check out Localazy reviews at SourceForge.
This article was originally published at SourceForge.net
This is a companion discussion topic for the original entry at https://localazy.com/blog/qanda-sourceforge-make-your-apps-multilingual-continuous-software-localization