Some general Crowdin questions before starting

Hello Everyone!

I’m a solo indie game dev who is looking to localise (text) in a mobile game (using Crowd Sourced or MT translations)

Localisation was added early in the development cycle and it currently supports English, although a draft version of Spanish is available for UI testing purposes.

I’m looking to add support for other languages over time.

Most of the localisations are related to parts of the game that are quite static, so won’t change much. But downloadable content is a key part of the experience, so localisations for that will need to be generated on a more regular basis.

With that in mind, I wonder if anyone could help answer the following questions please?

  1. Given that some of the localisations will likely require small (but regular) updates (create, update, delete) what would the recommended file format be? The strings are currently in XML (Google) format but going by the Crowdin documentation, it looks like JSON might be more suitable?

  2. My localisation files are currently split into two files per language. One for generic content and the other for specific. Is this scenario supported on the free tier?

  3. Some of my localisation strings cover things such as detailed feature descriptions. This means they’re quite long and broken into paragraphs with escaped CRLF’s. Would that be ok with Crowdin or would one sentence\paragraph per string be best practice? For example, instead of FeatureDescription you would have FeatureDescription1, FeatureDescription2, FeatureDescription3 etc.

  4. I’m assuming (hoping) that integrations (for example, Github\Unity) are optional and not required and that Crowdin’s own dashboard will allow files to be uploaded\downloaded manually?

  5. Are localisation sources (for example, Crowd Sourced or MT) defined at the project\file level? And is it possible to change them once defined?

  6. Whilst I’m currently looking to target the free plan, it’s entirely possible I’ll be upgrading to a paid plan in the future as the number of translations grow. But as a solo indie, the jump from free to paid (€50pm) is a huge step and potentially out of reach. Is Crowdin considering a tier that offers a little more than free but less than Pro, for say €10-15pm?

Any help or advice would be much appreciated.

Kind regards, David

Hi David,

It sounds like an exciting journey, and I am happy to help you get your localization workflow set up smoothly on Crowdin :grinning_face:

Regarding your file format, both Android XML and JSON are fully supported and handle regular updates perfectly. If you are developing natively for Android, XML is great.

However, if you are using an engine like Unity and plan to go cross-platform eventually, JSON is often more lightweight and universally adaptable. Either way, Crowdin will easily manage your regular string updates.

Having your localization split into two files → this scenario is absolutely supported on our Free tier. The Free tier limits are based on the total number of hosted words and the number of projects, not the number of files you use to organize your strings. It’s just a file format, up to 3 (so, simultaneously, for example, .strings, .xml, .json).

Crowdin can technically handle long strings with escaped line breaks without any issues. However, the best practice is to break them down into smaller keys, like one per sentence.

Smaller strings provide much better Translation Memory leverage. This means if a single paragraph changes in the future, your MT or community only needs to re-translate that small part, rather than processing the entire block of text again.

You will be happy to know that integrations with platforms like GitHub or Unity are completely optional. You can manage everything manually by uploading and downloading your files directly through the Crowdin web dashboard. As your project grows, you might find the integrations save you time, but manual management is a perfectly fine way to operate.

Localization sources and methods are highly flexible. You can set up Machine Translation engines and apply them to your project files via pre-translation whenever you like. If you want to use crowdsourcing, you simply invite your community volunteers to the project. You are never locked into one method and can easily start with MT, switch to crowdsourcing, or use a hybrid approach at any point.

Regarding your pricing question, we do not have a tier in that specific price range. However, if your game is open-source, you might qualify for our Open Source license, which offers advanced features for free.

Hope this helps!

Hi Dima,

Thanks so much for the prompt & detailed reply, that was incredibly helpful and answered all my questions. It did raise some further questions though, apologies :slight_smile:

However, if you are using an engine like Unity and plan to go cross-platform eventually, JSON is often more lightweight and universally adaptable.

The game localisation API is an in-house solution, so the file format is more important in terms of the localisation service. The game is currently iOS only, but I’m considering other platforms in the future. So I like the idea of JSON and keeping the file format platform agnostic.

That said… I note that JSON & Android XML are editable, but is it possible to insert new strings at specific points? (rather than at the end)

Rightly or wrongly, my files are ordered in a particular way and I would prefer to keep the ordering if possible.

Localization sources and methods are highly flexible.

Am I right in saying that Crowdin has its own pool of translators that undertake human translations? Using the game community is something I plan to explore, but it’s too early for that at the moment.

And is the Crowdin Translate (MT) purely an MT (non-AI) process?

Regarding your pricing question, we do not have a tier in that specific price range.

Thanks for letting me know. The game is not open source, rather a commercial product. But the Free to Pro tier is quite a jump for a solo\indie. Maybe an in-between tier is something Crowdin could consider for the future?

Kind regards, David

Hello David,

Regarding your first question, Crowdin respects the structure of your source files. When you insert a new string right in the middle of your JSON or XML file on your computer and upload that updated file to Crowdin, the system extracts the new string for translation while keeping all your existing work intact. It’s a key-based files, no issue should be with them.

When you export your localized files, Crowdin generates them in the exact same order and structure as your most recently uploaded source file. So, you can safely insert strings wherever they belong contextually on your end, and Crowdin will maintain that exact ordering on export.

As for human translations, we have a vendor marketplace integrated right into the platform. You can easily order professional human translations. Of course, you are also completely free to invite your own freelance translators or your gaming community whenever you are ready for that step.

You also asked about Crowdin Translate. Crowdin Translate is a traditional Machine Translation engine developed by us, built using machine learning and optimized specifically for UI texts. It operates like standard MT, similar to DeepL or Google Translate, which we also fully support. If you ever want to explore generative AI for translations, we have them separately from MT.

Finally, about the pricing structure. Right now, we don’t have any plans to redesign the pricing model, but we are always looking for ways to improve it. In case one day we add 10-15$ plan, you’ll definitely be notified.

Thanks again Dima.

That’s great news about the file ordering. It sounds like JSON or XML is the way to go.

I’m also just experimenting with the strings editor and seeing if that’s better suited to my needs.

I just received an onboarding mail, so will raise any further questions through that.

Thanks again for the help & advice, it’s very much appreciated.

Kind regards, David

1 Like

If anything else is needed, I’m always here for you :slightly_smiling_face: