Localization
uLanding can display its interface and content in many languages, and it supports right‑to‑left (RTL) languages like Arabic. This chapter explains the language system and how to add your own.
Built‑in languages
uLanding ships with translations for 14 languages:
| Code | Language | Code | Language | |
|---|---|---|---|---|
en |
English | ko |
Korean | |
es |
Spanish | pt |
Portuguese | |
fr |
French | ru |
Russian | |
de |
German | sl |
Slovenian | |
it |
Italian | th |
Thai | |
ar |
Arabic (RTL) | zh |
Chinese | |
el |
Greek | ka |
Georgian |
Note The plugin's interface strings (admin labels, builder text) are translated into these languages. Your own content (page text, service descriptions, etc.) is whatever you type — uLanding doesn't auto‑translate your content.
How languages work
uLanding's text comes from translation files. There are two kinds:
messages.php— most admin/UI strings.ulanding.php— page‑builder and widget‑builder labels (currently provided for English and Spanish; other languages can add it).
The active language follows your Ultimate SMS language setting. uLanding registers its translations with the host app automatically.
Right‑to‑left (RTL) support
For RTL languages such as Arabic, uLanding flips the layout direction so text reads right‑to‑left and elements mirror appropriately. The Arabic (ar) language is included.
- The admin and frontend respect the
dir="rtl"direction. - The Text Slider block has its own direction option (left‑to‑right / right‑to‑left).
Tip When building an RTL site, preview your pages in the RTL language to confirm alignment of images, buttons and columns looks correct.
Adding a new language
To add a language not included by default:
- Create the folder & file. Copy
resources/lang/en/messages.phptoresources/lang/<code>/messages.php(where<code>is the new language code, e.g.nlfor Dutch). - Translate the strings. Edit each value in the new file into your language. Keep the keys (left side) unchanged.
- (Optional) Add builder strings. Copy
resources/lang/en/ulanding.phptoresources/lang/<code>/ulanding.phpand translate it for fully localized page‑builder labels. - Register the language in your Ultimate SMS language settings so it becomes selectable.
- Check for missing keys with the audit command:
php artisan ulanding:audit-translations --locale=<code>
This reports any keys you forgot to translate.
Warning Only edit the values, never the keys (the part before
=>). Changing keys breaks the translation lookup.
Translating your content
Your pages, services and posts contain the text you type. To offer your content in multiple languages, you would create separate pages/posts for each language (e.g. an English Home and a Spanish Home) and link them via your menu, following your Ultimate SMS multi‑language workflow.
Best practices
- Keep translations consistent — use the same terms throughout.
- Run the audit command after translating to catch missing keys.
- Test RTL layouts thoroughly if you support Arabic or similar.
- Don't machine‑translate blindly — review for context and tone.
- Mind text length — some languages are longer than English and may wrap differently; check buttons and headings.
Troubleshooting
| Problem | Fix |
|---|---|
| Some labels still in English | Those keys aren't translated yet; add them and run the audit command. |
| New language not selectable | Register it in Ultimate SMS language settings. |
| RTL layout looks broken | Confirm the language is set to RTL and clear caches. |
| Builder labels not translated | Add a ulanding.php file for that language. |
Continue to Troubleshooting.