LinkoraLocalizationServer
powers Linkora's remote strings, which can be updated without requiring an app update.
All translations are now handled directly in this repo as JSON files. Crowdin is no longer used.
If you previously contributed via Crowdin (thank you!), your translations were saved before I deleted the account. I'll add them here soon.
- A GitHub account.
Click the Fork button at the top-right of the repo page. That's your own copy to work on.
You'll need the 3-letter ISO 639-2 code for your language.
- Go to this page: Wikipedia – ISO 639 Codes
- Use the code from the
Set 3
column (e.g.,eng
,fra
,spa
) - We'll call this
YOUR_LANGUAGE_CODE
from now on.
Try this URL (replace with your language code):
https://linkoralocalizationserver.onrender.com/contribute?lang=YOUR_LANGUAGE_CODE
- If you see a 404 or similar error, the file doesn't exist yet.
- If the editor loads, the file already exists.
- If the file exists:
Use ->https://linkoralocalizationserver.onrender.com/contribute?lang=YOUR_LANGUAGE_CODE
- If the file does not exist:
Use ->https://linkoralocalizationserver.onrender.com/contribute?newLang=true
Using ?lang=...
for a non-existent file won't load the editor.
In the editor you'll see:
key
: the internal IDvalue
: the English source string- a text box: where you enter your translation
If you're editing an existing language, the box will be pre-filled. If it's a new one, it'll be empty.
Keep placeholders like {#LINKORA_PLACE_HOLDER_1#}
, {#LINKORA_PLACE_HOLDER_2#}
, and similar numbered variants exactly as they are.
Don't translate, rename, or modify them in any way. These represent dynamic values that the app needs at runtime.
Once done, click the Copy JSON
button to copy your work to clipboard.
In your fork, go to:
src/main/resources/raw/
All JSON files need to start with the localizedName
field. This represents the actual name of the language in the app.
The structure should be:
localizedName : [Native language name]
---
[Your copied JSON from the translation editor]
The localizedName
value should be in the native script of your language (like हिन्दी
for Hindi, Français
for French). There are no double quotes around this value.
This isn't a typical JSON file, but the server handles this format just fine.
- Create a new file named
YOUR_LANGUAGE_CODE.json
- Add the
localizedName
field with your language name in its native script - Add the
---
line - Paste the JSON you copied
- Open
YOUR_LANGUAGE_CODE.json
- Make sure it starts with
localizedName : [Native Language Name]
- Make sure there's a
---
separator line - Replace the JSON content below the separator with your updated JSON
localizedName : Italiano
---
{
"Settings": "Impostazioni",
"Theme": "Tema",
"General": "Generale",
"Advanced": "Avanzato",
"Layout": "Impaginazione",
"Language": "Lingua",
// ... rest of your translations from the editor
}
- Commit your changes with a clear message, like
feat: add French (fra) translation
or
fix: update Spanish (spa) translations
- Push to your fork
- On GitHub, you'll see a prompt to open a Pull Request
- Click Compare & pull request, fill in the title/description
- Submit the PR
Thank you to all the translators for taking the time to add valuable translations (yk I really appreciate it 😺🤝).