Localization (lokalizáció, l10n) — a mobilalkalmazás tartalmának a célközönség nyelvéhez, régiójához és kulturális jellemzőihez igazítása. Ellentétben a nemzetköziesítéssel (i18n), ahol a kódot a fordításra készítik elő, a lokalizáció maga a szövegek fordításának, a dátumok, számok és pénznemek formázásának, a képek kiválasztásának és a helyi normák figyelembevételének folyamata. iOS-en a fordítások a Localizable.strings fájlokban (minden nyelvhez .lproj mappák), Androidon a values-ru, values-de és más erőforráskönyvtárakban tárolódnak. Bővebben — az Android lokalizációs útmutatójában.
Főbb pontok
Localization (rövidítve l10n — 10 betű az „l" és „n" között) — az alkalmazás egy adott nyelvhez és régióhoz igazításának folyamata. Ha az i18n az építészeti alap, akkor az l10n a kitöltés. Az i18n lehetővé teszi a fordítást, az l10n végrehajtja. A lokalizáció magában foglalja: az összes interfész szöveg fordítását, a dátum- és számformátumok igazítását, a kulturálisan érzékeny tartalmú képek cseréjét, a jogi szövegek (adatvédelmi irányelvek, EULA) korrigálását, a fizetési rendszerek régióhoz igazítását és a cél-eszközökön történő tesztelést.
Üzleti megtérülés — a lokalizáció közvetlenül befolyásolja a konverziót. A CSA Research (2023) adatai szerint a felhasználók 76%-a szívesebben vásárol az anyanyelvén futó alkalmazásokban, 40% pedig soha nem vásárol idegen nyelven. A japán nyelvű lokalizáció egy kiskereskedelmi alkalmazás esetében átlagosan 150%-kal növeli a konverziót (Google, 2022). A lokalizált alkalmazások 2–3-szor több organikus telepítést kapnak a regionális App Store-ban és Google Play-ben a regionális ASO-nak (kulcsszavak a célnyelven) köszönhetően.
i18n vs l10n — ugyanazon folyamat két oldala. i18n: szövegek kiszervezése erőforrásokba, RTL támogatás, számformázás. Egyszer végzik el a fejlesztők. l10n: szövegek fordítása, tartalom igazítása, helyi tesztelés. Többször végzik el a fordítók és a QA minden lokalizációhoz. Az IT Sectr-nél a sprintidő 20–30%-át fordítjuk minden új nyelv lokalizációjára — ez magában foglalja a fordítást, a felülvizsgálatot, az eszközökön történő tesztelést és a hibajavítást.
Localizable.strings — a fordítások tárolásának fő fájlja iOS-en. Minden lokalizációnak saját .lproj mappája van: en.lproj/Localizable.strings, ru.lproj/Localizable.strings, de.lproj/Localizable.strings. Formátum: „kulcs" = „érték"; (pontosvesszővel). Az Apple a Base Internationalization-t használja: a Storyboard és XIB egyszer jön létre (Base.lproj), az interfész szövegei pedig minden nyelvhez exportálásra kerülnek a Localizable.strings fájlba. Ez kiküszöböli az XIB másolatok létrehozásának szükségességét minden lokalizációhoz.
// en.lproj/Localizable.strings
// "settings.title" = "Settings";
// "profile.greeting" = "Hello, %@!";
// "items.count" = "%d item(s)";
// ru.lproj/Localizable.strings
// "settings.title" = "Beállítások";
// "profile.greeting" = "Üdvözöljük, %@!";
// "items.count" = "%d db.";
// Szöveg betöltése kulcs alapján
navigationItem.title = NSLocalizedString(
"settings.title",
comment: "Beállítások képernyő címe"
)
// Szöveg paraméterrel
let name = "Anna"
greetingLabel.text = String.localizedStringWithFormat(
NSLocalizedString("profile.greeting", comment: ""), name
)
// XLIFF import (Xcode → Editor → Import Localizations)
// Automatikusan frissíti a .lproj fájlokat a fordító munkája után
Base Internationalization — az Apple megközelítése, amelyben a felület (Storyboard, XIB) egyszer jön létre a Base.lproj-ban. Nyelv hozzáadásakor az Xcode exportálja a szövegeket a Base-ből egy XLIFF fájlba. A fordító lefordítja az XLIFF-et. Az importálás után az Xcode létrehozza a .lproj-t a lefordított szövegekkel. Előny: nem kell minden nyelvhez külön XIB-et létrehozni. Korlátozás: RTL nyelvekhez (arab, héber) külön XIB-re lehet szükség tükrözött elrendezéssel.
InfoPlist.strings — fájl az alkalmazás nevének (CFBundleDisplayName), a kamera/mikrofon engedélyeknek (NSCameraUsageDescription) és az Info.plist egyéb értékeinek lokalizálásához. A .lproj mappában jön létre: ru.lproj/InfoPlist.strings. Formátum: CFBundleDisplayName = „Az én alkalmazásom"; NSCameraUsageDescription = „Az alkalmazásnak kamerahozzáférésre van szüksége a fényképek készítéséhez";. Az InfoPlist.strings lokalizációja nélkül a rendszer párbeszédablakai angol nyelven jelennek meg.
Android erőforrások a lokalizációhoz minősítők (qualifiers) segítségével vannak szervezve a könyvtárnevekben. Orosz nyelvhez — res/values-ru/, némethez — res/values-de/, brazil portugálhoz — res/values-pt-rBR/. Az Android több mint 160 lokalizációt támogat. A rendszer automatikusan kiválasztja az erőforrásokat az eszköz nyelve alapján (Locale.getDefault()). Ha a pontos lokalizáció nem létezik — a values/ (alap lokalizáció, általában en) erőforrásai kerülnek felhasználásra.
// res/values/strings.xml (alap — angol)
<string name="settings_title">Settings</string>
<string name="greeting">Hello, %s!</string>
// res/values-ru/strings.xml (orosz)
<string name="settings_title">Beállítások</string>
<string name="greeting">Szia, %s!</string>
// res/values-de/strings.xml (német)
<string name="settings_title">Einstellungen</string>
<string name="greeting">Hallo, %s!</string>
// Kotlin — egységes kód minden nyelvhez
textView.text = getString(R.string.settings_title)
// Szöveg paraméterrel
val greeting = getString(R.string.greeting, userName)
// Lokalizált képek
// res/drawable-ru/flag.png — zászló az orosz verzióhoz
// res/drawable/flag.png — alapértelmezett zászló
// Elrendezések lokalizációja (RTL nyelvekhez)
// res/layout-ar/activity_main.xml — arab verzió
Nem csak szövegek lokalizációja — az Android lehetővé teszi képek (res/drawable-ru/), színek (res/values-ru/colors.xml), méretek (res/values-ru/dimens.xml), animációk, menük és akár teljes elrendezések lokalizálását. Különböző szóhosszúságú nyelvek esetén (a német 30–40%-kal hosszabb, mint az angol) használjon lokalizált dimens.xml-t megnövelt gombszélességgel. Eltérő színjelképes régiókhoz (fehér — gyász Kínában) — lokalizált colors.xml.
Tesztelés — kapcsolja át az eszköz nyelvét a célnyelvre a Beállítások → Rendszer → Nyelv menüpontban. Ellenőrizze: minden szöveg le van fordítva, a dátumok helyesen formázottak, a számok a megfelelő elválasztóval jelennek meg, a képek megfelelnek a régiónak, az elrendezés nem „törik meg" hosszú szövegeknél. Az automatizáláshoz használja az Espresso-t a LocaleTestRule-lal (Android Testing Library) — ez lehetővé teszi a tesztek futtatását különböző lokalizációkkal a nyelv kézi váltása nélkül.
Kulturális jellemzők — a lokalizáció nem korlátozódik a szövegek fordítására. A színek szimbolikája eltér: piros — szerencse Kínában, veszély az USA-ban, gyász Dél-Afrikában. Fehér — tisztaság Európában, gyász Kínában. Gesztusokat ábrázoló ikonok: felhüvelykujj — pozitív az USA-ban, sértés a Közel-Keleten. Embereket ábrázoló képek: arab országokban elfogadhatatlanok a fürdőruhás nőket ábrázoló képek. Vallási szimbólumok: kereszt, félhold, Dávid-csillag csak megfelelő kontextusban használható.
Jogi követelmények — minden országnak megvannak a saját törvényei a digitális termékekről. GDPR (EU) — kötelező hozzájárulás a cookie-khoz és az adatfeldolgozáshoz. CCPA (Kalifornia) — az adatok törlésének joga. Személyes adatokról szóló törvény (Oroszország, 152-FZ) — adatok tárolása az Orosz Föderáció szerverein. LGPD (Brazília) — a GDPR analógja. Fizetések: Kínában Alipay/WeChat Pay, Indiában — UPI, Brazíliában — Boleto és PIX szükséges. A lokalizáció megkezdése előtt állítsa be a fizetési átjárót a régióhoz.
| Szempont | USA | Kína | EAE | Németország |
|---|---|---|---|---|
| Fizetési rendszer | Apple Pay, kártyák | Alipay, WeChat Pay | Kártyák, Apple Pay | PayPal, Giropay |
| Márka színei | Bármilyen | Piros — szerencse | Zöld — iszlám | Fekete/sárga |
| Közösségi média | Instagram, X | WeChat, Douyin | WhatsApp, X | WhatsApp, X |
| Dátum | MM/dd/yyyy | yyyy/MM/dd | dd/MM/yyyy | dd.MM.yyyy |
| Adatvédelmi törvény | CCPA | PIPL | PDPL | GDPR |
Példák és tartalom — igazítsa a példákat a régióhoz. Német lokalizációhoz használja a metrikus rendszert (kg, km), amerikaihoz — a birodalmi rendszert (lb, mi). A telefonszámok, irányítószámok, címek — eltérően formázódnak. Pénznem példák: ¥1000 Japánban, $9.99 az USA-ban, 999 ₽ Oroszországban. Az ételeket, ruházatot, belső tereket ábrázoló képeknek meg kell felelniük a regionális szabványoknak. Az IT Sectr-nél azt javasoljuk, hogy a kulturális igazítás ellenőrzéséhez vegyen fel helyi tanácsadókat.
Lokalizációs eszközök — a professzionális platformok automatizálják a folyamatot: Lokalise, Crowdin, POEditor, Smartling, Phrase. Integrálódnak a tárhellyel, automatikusan importálnak új szövegeket, nyomon követik a változásokat (Delta updates — csak a megváltozott szövegek kerülnek fordításra), Translation Memory-t (TM — korábban lefordított kifejezések tárolása) és Glossary-t (szószedet) biztosítanak. A professzionális fordítás átlagos költsége: szavanként $0.08–0.15 (nyelvtől függően).
Folyamat — (1) A fejlesztő i18n kulcsokat ad a kódhoz, push-ol a tárhelyre. (2) A CI/CD (GitHub Actions / GitLab CI) automatikusan elküldi az új kulcsokat a lokalizációs platformra. (3) A fordítók értesítést kapnak, fordítanak, mentenek. (4) A lefordított fájlok automatikusan PR-t hoznak létre a tárhelyen. (5) A QA ellenőrzi a lokalizációt az eszközökön. (6) Kiadás. Egy lokalizáció ciklusa: 2–5 munkanap (a mennyiségtől függően). 10 lokalizáció esetén: 5–15 nap a fordítók párhuzamos munkájával.
Machine Translation + Human Review — a modern szabvány. A neurális hálózati fordítás (DeepL, Google Translate, GPT-4) 80–90%-os minőséget biztosít a népszerű nyelvpárokhoz. Az emberi fordító ellenőrzi: a terminológiát, a kontextust (a szavaknak különböző jelentése lehet a különböző képernyőkön), a kulturális igazítást. Az IT Sectr-nél hibrid megközelítést alkalmazunk: ML fordítás + anyanyelvi felülvizsgálat. Kritikus szövegekhez (jogi, fizetési) — csak professzionális fordító. Megtakarítás: a költségek akár 60%-a a minőség megőrzése mellett.
Gyakran Ismételt Kérdések
Nemzetköziesítés — a kód előkészítése a fordításra (szövegek kiszervezése, RTL, formázás). Lokalizáció — maga a fordítás és a kulturális igazítás. Az i18n-t a fejlesztő egyszer végzi el, az l10n-t — a fordító minden nyelvhez. i18n l10n nélkül — az alkalmazás készen áll a fordításra, de nincs lefordítva. l10n i18n nélkül — minden nyelvhez át kell írni a kódot.
A Localizable.strings fájlokban a .lproj mappákon belül. Minden nyelvhez: en.lproj (angol), ru.lproj (orosz), de.lproj (német). Formátum: „kulcs" = „érték";. Többes számhoz — Localizable.stringsdict. Az alkalmazás beállításai (CFBundleDisplayName) — az InfoPlist.strings-ben. Az Xcode a .lproj-t a Base Internationalization segítségével kezeli.
values-ru — az Android erőforráskönyvtára az orosz nyelv számára. Tartalmazza a strings.xml-t a fordításokkal. Hasonlóan más nyelvekhez: values-de (német), values-fr (francia). Az Android a rendszer nyelve alapján választja ki az erőforrásokat. Ha a values-ru nem található — a values/ (alap nyelv, általában angol) kerül használatra.
Mindig használja a Locale API-t. iOS: DateFormatter.locale = Locale(identifier: locale). Android: DateFormat.getDateInstance(DateFormat.SHORT, locale). Oroszország: 2024.12.31. USA: 2024.12.31. Japán: 2024/12/31. Soha ne állítson be rögzített formátumot — minden országnak megvannak a saját szabványai. Dátumok beviteléhez használja a UIDatePicker / DatePicker-t.
Globális lefedettséghez 10–15 nyelv elegendő: angol, spanyol, francia, német, japán, kínai, koreai, portugál, orosz, olasz, arab. Regionálishoz — 1–2 nyelv. Minden további lokalizáció 5–15%-kal növeli az organikus telepítéseket az adott régióban. Az App Store legalább angol lokalizációt követel meg.
Összefoglalás
Kulcsrakész mobilalkalmazást fejlesztünk
Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.
Olvassa el is