What does your general technology stack look like? You’ll need this to know your scope.
- Mobile (Android/iOS)
- Full stack framework (django/rails/laravel)
The difficulty can of course scale with the complexity of your platform - a single fullstack application will be easier than microservices + separate mobile applications.
As a first exercise for yourself before embarking on a POC with the development team, we would have a stakeholder or product manager start cataloging the input labels, buttons and error messages in your applications for the following three user journeys:
- Successful Sign in (would only localize any flash/success messages once the user hits the dashboard/authenticated page)
- Unsuccessful Sign in attempt (note error messages)
- Resetting Password + Validation Messages (Password is not long enough, requires Special Character, etc.)
- Bonus: try your registration.
You will have to do them eventually and it will be a good exercise in understanding some scope. ProTip - do this homework before launching this initiative and you’ll gain some credibility points with your developers. Launch into a planning meeting with none of this done or vaguity and you will get a ton of pushback.
Below is an example of some yaml translation files snippets in for ES - español/spanish & EN - English. Notice how the EN file has more key:value pairs than the ES? Your team will constantly be battling pairity in translations moving forward.
es: hello: "Hola Mundo" actions: cancel: "Cancelar" forgot: "¿Olvidaste tu contraseña?" invite: "Invitalos" login: "Iniciar sesión" new: "Nuevo" purchase: "Suscripción de compra" reset_instructions: "Send me reset password instructions" save: "Enviarme restablecer las instrucciones de contraseña" sign_in_with: "Inicia sesión con" signup: "Regístrate" view_all: "Ver todo"
en: hello: "Hello World" actions: cancel: "Cancel" confirm: "Are you sure?" forgot: "Forgot your password?" invite: "Invite" login: "Log in" new: "New" edit: "Edit" delete: "Delete" archive: "Archive" purchase: "Purchase" reset_instructions: "Send me reset password instructions" save: "Save" back: "Back" test: "Test" favorite: "Favorite" sign_in_with: "Sign in with" signup: "Sign Up" view_all: "View All"
As a second exercise I would start cataloging all the labels, buttons and error messages in your application. This will possibly be daunting, but I would tackle it one piece at a time. When you have your list, I would then localize it in 3 languages that would be of most value to your org. Treat it as real, will you need to hire consultants to translate? Do you have internal bandwidth and experience to translate?
Open Source Tools:
Here are three tools that can help bring together you, your devs, and translators rock and roll with content… (open source)
- https://github.com/mirego/accent (seems to be the new hotness)
- https://github.com/WeblateOrg/weblate (also has a cloud version you can pay for them to host)
- https://github.com/translate/pootle (not updated in a year)
I could write a book on this and don’t consider myself an expert. But I’ve seen a bunch of projects like this fail due to teams giving up under frustration. Take some small steps, test things out - it will take a while, set that expectation internally so that people don’t get burned out.
Third Party & Open Source Libraries
Your team will most likely leverage a large number of open source libraries. There will probably be a number of battle tested pieces of your application that will require replacement if they do not support localization. If you are using something like Vue, React or Angularjs, be prepared for your team to discover that a charting, mapping or visualization library does not support localization.
Also keep in mind that you might integrate with an API that only provides english language content. You may need to find another vendor or see if you can somehow decrease the harshness of the experience for your end users.
User Generated Content
Pretty much no one translates their customers content.
Take a look at Facebook & Twitter - if you click around enough, you’ll see messages in foreign languages. There’s no expectation of this being translated.
However, if you are building an internal tool for your HR team for example, there might be requirements for content to be translated or to be made available in different languages. Think - Human Resources policies and Benefits information. Discuss with your team and stake holders how the orginal creators of content will provide translated documents - you are just the messanger.
Real Life Examples
Here’s some example translations in open source projects:
- Gitlab (each folder is a iso locale) - https://gitlab.com/gitlab-org/gitlab/-/tree/master/locale
- Discourse (notice there is a client & server file for each language) - https://github.com/discourse/discourse/tree/master/config/locales. They also leverage a service to help manage translations. You can check their status here
- Can your translation management tool manage approvals?
- Can your translation management tool create merge requests automatically for your developers?
- Keep Singular/Plural Translations in mind.
- Take a swing at identifying buttons, labels and error messages on your login & registration pages. Translate those findings into 2-3 languages. This will help accelerate the development team and give you a crash course in this process.
- Discuss with organization who will provide budget and resources for translation.
- Evaluate tooling to help you and your team manage translations and gap analysis between languages.
- User generated content is typically out of scope, but keep in mind some users will need to provide down stream translations of certain types of documents. How will you support that?