nano ships with complete UI translations for 17 languages. Every user-facing string — search placeholders, greetings, buttons, error messages, auth labels, admin panel copy, and video player controls — is served in the user’s selected language. The active locale also controls the language in which TMDB returns movie and TV show metadata (titles, overviews, and cast information).Documentation Index
Fetch the complete documentation index at: https://mintlify.com/mohameodo/nano/llms.txt
Use this file to discover all available pages before exploring further.
Supported languages
TheTRANSLATIONS object in src/components/shiopa/locales/translations.ts defines every supported locale. The following 17 language codes are available out of the box:
| Code | Language |
|---|---|
en | English |
es | Spanish |
ko | Korean |
ar | Arabic (RTL) |
ja | Japanese |
zh | Chinese (Simplified) |
de | German |
ru | Russian |
hi | Hindi |
th | Thai |
pl | Polish |
tl | Filipino (Tagalog) |
vi | Vietnamese |
nl | Dutch |
tr | Turkish |
no | Norwegian |
genz | Gen Z (English variant) |
ar) is the only right-to-left locale. nano detects this and sets dir="rtl" on the <html> element, mirroring the speech bubble, navigation layout, and text alignment automatically.
Setting the default language
DEFAULT_LOCALE sets the locale used for server-side rendering and for users who have not yet made a language selection. Any of the 17 locale codes listed above is a valid value.
The resolved locale is determined in this order:
- The
shiopa-localecookie (set when the user picks a language in the browser) - The
DEFAULT_LOCALEenvironment variable - Falls back to
enif neither is set
Runtime language switching
Users can switch languages live via the language selector dropdown in the header. The selector is visible by default and can be hidden with:shiopa-locale cookie and re-renders the page in the new locale without requiring a server restart or deployment change.
What is translated
All UI strings are covered by the translation system, including:- Navigation & search — search placeholder, filter tabs (All, Movies, TV Shows), results count
- Home greeting — time-of-day greetings (
greetMorning,greetAfternoon,greetEvening) and rotating slogans - Authentication — login/sign-up form labels, error messages, button text
- Video player — server selector labels, episode panel title
- Admin / local library — all labels in the
/adminpanel for managing local media items - Error states —
noResults,connectionError,somethingWentWrong - nano-pet speech bubbles — idle sayings, reaction text when clicked, and horror-mode reactions
Content fetched from TMDB — movie titles, overviews, taglines, and cast biographies — is served in the language passed as the
lang query parameter in /api/search and /api/details requests. The UI sets this parameter automatically to match the currently selected locale, so search results and detail pages are localised alongside the interface.Translation keys
The following is a representative selection of translation keys from theTRANSLATIONS object. These cover the major areas of the UI and give a sense of the full translation coverage:
TRANSLATIONS record with a new language code key and providing values for every key in the en entry.