Localization — esența, adaptarea conținutului la limbă și regiune

Autor: IT Sectr Publicat: 2026-02-26 Timp de citire: 7 min

Localization (localizare, l10n) — adaptarea conținutului aplicației mobile la limba, regiunea și particularitățile culturale ale publicului țintă. Spre deosebire de internaționalizare (i18n), unde codul este pregătit pentru traducere, localizarea este procesul propriu-zis de traducere a șirurilor, formatare a datelor, numerelor și valutelor, selectare a imaginilor și luare în considerare a normelor locale. Pe iOS, traducerile sunt stocate în Localizable.strings (foldere .lproj pentru fiecare limbă), pe Android — în values-ru, values-de și alte directoare de resurse. Mai multe — în ghidul Android de localizare.

Principalele

  • Localization (l10n) — traducerea și adaptarea conținutului aplicației la o limbă și regiune specifică
  • Localizable.strings — fișier iOS care conține perechi „cheie" = „traducere" pentru fiecare limbă
  • values-ru — director Android cu resurse pentru limba rusă (strings.xml)
  • Adaptare regională — datele, numerele, imaginile, culorile, cerințele legale diferă între țări
  • Particularități culturale — culorile, pictogramele, gesturile și exemplele trebuie să corespundă normelor locale

Ce este Localization (l10n) și cu ce se deosebește de i18n?

Localization (prescurtat l10n — 10 litere între „l" și „n") — este procesul de adaptare a aplicației la o limbă și o regiune specifică. Dacă i18n este fundația arhitecturală, atunci l10n este conținutul. i18n face posibilă traducerea, l10n o execută. Localizarea include: traducerea tuturor textelor interfeței, adaptarea formatelor de dată și numere, înlocuirea imaginilor cu conținut sensibil cultural, corectarea textelor juridice (politica de confidențialitate, EULA), configurarea sistemelor de plată pentru regiune și testarea pe dispozitivele țintă.

Rentabilitatea afacerii — localizarea influențează direct conversia. Potrivit CSA Research (2023), 76% dintre utilizatori preferă să cumpere în aplicații în limba lor maternă, iar 40% nu cumpără niciodată într-o limbă străină. Localizarea în japoneză pentru o aplicație de retail crește conversia în medie cu 150% (Google, 2022). Aplicațiile localizate primesc de 2–3 ori mai multe instalări organice în App Store și Google Play regionale datorită ASO regional (cuvinte cheie în limba țintă).

i18n vs l10n — două fețe ale aceluiași proces. i18n: extragerea șirurilor în resurse, suport RTL, formatarea numerelor. Se face o dată de către dezvoltatori. l10n: traducerea șirurilor, adaptarea conținutului, testarea locală. Se face de multiple ori de către traducători și QA pentru fiecare localizare. În IT Sectr alocăm 20–30% din timpul sprintului pentru localizarea fiecărei limbi noi — aceasta include traducerea, revizuirea, testarea pe dispozitive și remedierea erorilor.

Localizarea în iOS: Localizable.strings și Base Internationalization

Localizable.strings — fișierul principal pentru stocarea traducerilor în iOS. Fiecare localizare are propriul folder .lproj: en.lproj/Localizable.strings, ru.lproj/Localizable.strings, de.lproj/Localizable.strings. Format: „cheie" = „valoare"; (cu punct și virgulă). Apple utilizează Base Internationalization: Storyboard și XIB sunt create o singură dată (Base.lproj), iar șirurile interfeței sunt exportate în Localizable.strings pentru fiecare limbă. Aceasta elimină necesitatea creării de copii XIB pentru fiecare localizare.

swift
// en.lproj/Localizable.strings
// "settings.title" = "Settings";
// "profile.greeting" = "Hello, %@!";
// "items.count" = "%d item(s)";

// ru.lproj/Localizable.strings
// "settings.title" = "Setări";
// "profile.greeting" = "Bună ziua, %@!";
// "items.count" = "%d buc.";

// Încărcarea șirului după cheie
navigationItem.title = NSLocalizedString(
    "settings.title",
    comment: "Titlul ecranului de setări"
)

// Șir cu parametru
let name = "Ana"
greetingLabel.text = String.localizedStringWithFormat(
    NSLocalizedString("profile.greeting", comment: ""), name
)

// Import XLIFF (Xcode → Editor → Import Localizations)
// Actualizează automat fișierele .lproj după munca traducătorului

Base Internationalization — abordarea Apple în care interfața (Storyboard, XIB) este creată o dată în Base.lproj. La adăugarea unei limbi, Xcode exportă șirurile din Base într-un fișier XLIFF. Traducătorul traduce XLIFF. După import, Xcode creează .lproj cu șirurile traduse. Avantaj: nu este nevoie să duplicați XIB pentru fiecare limbă. Limitare: pentru limbile RTL (arabă, ebraică) poate fi necesar un XIB separat cu aspect oglindit.

InfoPlist.strings și localizarea metadatelor

InfoPlist.strings — fișier pentru localizarea numelui aplicației (CFBundleDisplayName), permisiunilor camerei/microfonului (NSCameraUsageDescription) și altor valori din Info.plist. Creat în .lproj: ru.lproj/InfoPlist.strings. Format: CFBundleDisplayName = „Aplicația mea"; NSCameraUsageDescription = „Aplicația are nevoie de acces la cameră pentru a face fotografii";. Fără localizarea InfoPlist.strings, dialogurile de sistem vor fi în engleză.

Localizarea în Android: values-ru, resurse localizate

Resursele Android pentru localizare sunt organizate prin calificatori (qualifiers) în numele directoarelor. Pentru limba rusă — res/values-ru/, pentru germană — res/values-de/, pentru portugheza braziliană — res/values-pt-rBR/. Android suportă peste 160 de localizări. Sistemul selectează automat resursele pe baza limbii dispozitivului (Locale.getDefault()). Dacă localizarea exactă nu există — se utilizează resursele din values/ (localizarea de bază, de obicei en).

kotlin
// res/values/strings.xml (de bază — engleză)
<string name="settings_title">Settings</string>
<string name="greeting">Hello, %s!</string>

// res/values-ru/strings.xml (rusă)
<string name="settings_title">Setări</string>
<string name="greeting">Bună, %s!</string>

// res/values-de/strings.xml (germană)
<string name="settings_title">Einstellungen</string>
<string name="greeting">Hallo, %s!</string>

// Kotlin — cod unic pentru toate limbile
textView.text = getString(R.string.settings_title)

// Șir cu parametru
val greeting = getString(R.string.greeting, userName)

// Imagini localizate
// res/drawable-ru/flag.png — steag pentru versiunea rusă
// res/drawable/flag.png — steag implicit

// Localizarea layout-urilor (pentru limbi RTL)
// res/layout-ar/activity_main.xml — versiunea arabă

Localizarea nu doar a șirurilor — Android permite localizarea imaginilor (res/drawable-ru/), culorilor (res/values-ru/colors.xml), dimensiunilor (res/values-ru/dimens.xml), animațiilor, meniurilor și chiar a layout-urilor întregi. Pentru limbi cu lungimi diferite ale cuvintelor (germana este cu 30–40% mai lungă decât engleza) utilizați dimens.xml localizate cu lățimea butoanelor mărită. Pentru regiuni cu altă simbolistică a culorilor (alb — doliu în China) — colors.xml localizate.

Verificarea localizării pe dispozitiv

Testarea — comutați limba dispozitivului la cea țintă prin Setări → Sistem → Limbă. Verificați: toate șirurile sunt traduse, datele sunt formatate corect, numerele sunt afișate cu separatorul corect, imaginile corespund regiunii, layout-ul nu se „strică" la șiruri lungi. Pentru automatizare, utilizați Espresso cu LocaleTestRule (Android Testing Library) — permite rularea testelor cu diferite localizări fără comutarea manuală a limbii.

Adaptare culturală: ce trebuie tradus pe lângă text

Particularități culturale — localizarea nu se limitează la traducerea șirurilor. Simbolistica culorilor diferă: roșu — noroc în China, pericol în SUA, doliu în Africa de Sud. Alb — puritate în Europa, doliu în China. Pictograme cu gesturi: degetul mare în sus — pozitiv în SUA, insultă în Orientul Mijlociu. Imagini cu oameni: în țările arabe sunt inacceptabile imaginile femeilor în costume de baie. Simboluri religioase: crucea, semiluna, steaua lui David trebuie utilizate doar în contextul corespunzător.

Cerințe legale — fiecare țară are propriile legi privind produsele digitale. GDPR (UE) — consimțământ obligatoriu pentru cookies și prelucrarea datelor. CCPA (California) — dreptul de a șterge datele. Legea privind datele personale (Rusia, 152-FZ) — stocarea datelor pe serverele Federației Ruse. LGPD (Brazilia) — analog GDPR. Plăți: în China sunt necesare Alipay/WeChat Pay, în India — UPI, în Brazilia — Boleto și PIX. Configurați gateway-ul de plată pentru regiune înainte de lansarea localizării.

AspectSUAChinaEAUGermania
Sistem de platăApple Pay, carduriAlipay, WeChat PayCarduri, Apple PayPayPal, Giropay
Culori de brandOricareRoșu — norocVerde — islamNegru/galben
Rețele socialeInstagram, XWeChat, DouyinWhatsApp, XWhatsApp, X
DataMM/dd/yyyyyyyy/MM/dddd/MM/yyyydd.MM.yyyy
Legea datelorCCPAPIPLPDPLGDPR

Exemple și conținut — adaptați exemplele la regiune. Pentru localizarea germană utilizați sistemul metric (kg, km), pentru cea americană — sistemul imperial (lb, mi). Numerele de telefon, codurile poștale, adresele — se formatează diferit. Exemple monetare: ¥1000 în Japonia, $9.99 în SUA, 999 ₽ în Rusia. Imaginile cu mâncare, îmbrăcăminte, interioare trebuie să corespundă standardelor regionale. În IT Sectr recomandăm angajarea de consultanți locali pentru verificarea adaptării culturale.

Procesul de localizare: instrumente, traducători, CI/CD

Instrumente de localizare — platformele profesionale automatizează procesul: Lokalise, Crowdin, POEditor, Smartling, Phrase. Acestea se integrează cu depozitul, importă automat șiruri noi, urmăresc modificările (Delta updates — se traduc doar șirurile modificate), oferă Translation Memory (TM — păstrarea frazelor traduse anterior) și Glossary (glosar de termeni). Costul mediu al traducerii profesionale: $0.08–0.15 per cuvânt (în funcție de limbă).

Procesul — (1) Dezvoltatorul adaugă chei i18n în cod, trimite în depozit. (2) CI/CD (GitHub Actions / GitLab CI) trimite automat cheile noi către platforma de localizare. (3) Traducătorii primesc notificare, traduc, salvează. (4) Fișierele traduse creează automat PR în depozit. (5) QA verifică localizarea pe dispozitive. (6) Lansare. Ciclul pentru o localizare: 2–5 zile lucrătoare (în funcție de volum). Pentru 10 localizări: 5–15 zile cu munca paralelă a traducătorilor.

Machine Translation + Human Review — standardul modern. Traducerea prin rețele neuronale (DeepL, Google Translate, GPT-4) oferă o calitate de 80–90% pentru perechile de limbi populare. Traducătorul uman verifică: terminologia, contextul (cuvintele pot avea semnificații diferite pe ecrane diferite), adaptarea culturală. În IT Sectr utilizăm o abordare hibridă: traducere ML + revizuire de către un vorbitor nativ. Pentru șirurile critice (juridice, plăți) — doar traducător profesionist. Economie: până la 60% din costuri cu păstrarea calității.

Întrebări frecvente

Cu ce se deosebește localizarea de internaționalizare?

Internaționalizarea — pregătirea codului pentru traducere (extragerea șirurilor, RTL, formatare). Localizarea — traducerea propriu-zisă și adaptarea culturală. i18n este făcută de dezvoltator o dată, l10n — de traducător pentru fiecare limbă. i18n fără l10n — aplicația este gata de tradus, dar nu este tradusă. l10n fără i18n — trebuie rescris codul pentru fiecare limbă.

Unde sunt stocate traducerile în iOS?

În fișierele Localizable.strings din interiorul folderelor .lproj. Pentru fiecare limbă: en.lproj (engleză), ru.lproj (rusă), de.lproj (germană). Format: „cheie" = „valoare";. Pentru plural — Localizable.stringsdict. Setările aplicației (CFBundleDisplayName) — în InfoPlist.strings. Xcode gestionează .lproj prin Base Internationalization.

Ce este values-ru în Android?

values-ru — directorul de resurse Android pentru limba rusă. Conține strings.xml cu traduceri. La fel pentru alte limbi: values-de (germană), values-fr (franceză). Android selectează resursele pe baza limbii sistemului. Dacă values-ru nu este găsit — utilizează values/ (limba de bază, de obicei engleza).

Cum se formatează datele pentru diferite regiuni?

Utilizați întotdeauna Locale API. iOS: DateFormatter.locale = Locale(identifier: locale). Android: DateFormat.getDateInstance(DateFormat.SHORT, locale). Rusia: 31.12.2024. SUA: 12/31/2024. Japonia: 2024/12/31. Nu setați niciodată un format fix — fiecare țară are propriile standarde. Pentru introducerea datelor, utilizați UIDatePicker / DatePicker.

Câte localizări sunt necesare pentru o aplicație globală?

Pentru acoperire globală sunt suficiente 10–15 limbi: engleză, spaniolă, franceză, germană, japoneză, chineză, coreeană, portugheză, rusă, italiană, arabă. Pentru regională — 1–2 limbi. Fiecare localizare suplimentară crește instalările organice cu 5–15% în regiunea respectivă. App Store necesită cel puțin localizarea în engleză.

Rezumat

  • Localization (l10n) — traducerea și adaptarea culturală a conținutului la o limbă și regiune specifică
  • iOS — Localizable.strings în foldere .lproj, Base Internationalization, InfoPlist.strings
  • Android — values-ru/strings.xml, drawable și layout localizate prin qualifiers
  • Adaptare culturală — culori, pictograme, gesturi, sisteme de plată, cerințe legale
  • Proces — CI/CD → platformă de localizare → traducător → QA → lansare (2–5 zile pe limbă)
  • Abordare hibridă — traducere ML (DeepL, GPT) + revizuire de vorbitor nativ pentru economie de 60%
  • Rentabilitate — 76% dintre utilizatori cumpără doar în limba maternă (CSA Research, 2023)

Vom dezvolta o aplicație mobilă la cheie

IT Sectr creează aplicații iOS și Android pentru startup-uri și afaceri din 2017. Vă vom consilia și vă vom propune cea mai bună soluție.

Discutați proiectul

Citiți și