Localization — η ουσία, προσαρμογή περιεχομένου σε γλώσσα και περιοχή

Συγγραφέας: IT Sectr Δημοσιεύτηκε: 2026-02-26 Χρόνος ανάγνωσης: 7 λεπ

Localization (εντοπισμός, l10n) — προσαρμογή του περιεχομένου μιας εφαρμογής κινητού στη γλώσσα, την περιοχή και τα πολιτισμικά χαρακτηριστικά του κοινού-στόχου. Σε αντίθεση με τη διεθνοποίηση (i18n), όπου ο κώδικας προετοιμάζεται για μετάφραση, ο εντοπισμός είναι η ίδια η διαδικασία μετάφρασης συμβολοσειρών, μορφοποίησης ημερομηνιών, αριθμών και νομισμάτων, επιλογής εικόνων και συνεκτίμησης τοπικών προτύπων. Στο iOS, οι μεταφράσεις αποθηκεύονται σε Localizable.strings (φακέλους .lproj για κάθε γλώσσα), στο Android — σε values-ru, values-de και άλλους καταλόγους πόρων. Περισσότερα — στον οδηγό Android για εντοπισμό.

Κύρια σημεία

  • Localization (l10n) — μετάφραση και προσαρμογή περιεχομένου εφαρμογής σε συγκεκριμένη γλώσσα και περιοχή
  • Localizable.strings — αρχείο iOS που περιέχει ζεύγη "κλειδί" = "μετάφραση" για κάθε γλώσσα
  • values-ru — κατάλογος Android με πόρους για τη ρωσική γλώσσα (strings.xml)
  • Περιφερειακή προσαρμογή — ημερομηνίες, αριθμοί, εικόνες, χρώματα, νομικές απαιτήσεις διαφέρουν ανά χώρα
  • Πολιτισμικά χαρακτηριστικά — χρώματα, εικονίδια, χειρονομίες και παραδείγματα πρέπει να αντιστοιχούν στα τοπικά πρότυπα

Τι είναι το Localization (l10n) και σε τι διαφέρει από το i18n;

Localization (συντομογραφία l10n — 10 γράμματα μεταξύ "l" και "n") — είναι η διαδικασία προσαρμογής μιας εφαρμογής σε συγκεκριμένη γλώσσα και περιοχή. Αν το i18n είναι η αρχιτεκτονική βάση, τότε το l10n είναι το περιεχόμενο. Το i18n καθιστά δυνατή τη μετάφραση, το l10n την εκτελεί. Ο εντοπισμός περιλαμβάνει: μετάφραση όλων των κειμένων διεπαφής, προσαρμογή μορφών ημερομηνίας και αριθμών, αντικατάσταση εικόνων με πολιτισμικά ευαίσθητο περιεχόμενο, διόρθωση νομικών κειμένων (πολιτική απορρήτου, EULA), διαμόρφωση συστημάτων πληρωμής για την περιοχή και δοκιμή σε συσκευές-στόχους.

Επιχειρηματική απόδοση — ο εντοπισμός επηρεάζει άμεσα τη μετατροπή. Σύμφωνα με την CSA Research (2023), το 76% των χρηστών προτιμά να αγοράζει σε εφαρμογές στη μητρική τους γλώσσα και το 40% δεν αγοράζει ποτέ σε ξένη γλώσσα. Ο εντοπισμός στα ιαπωνικά για μια εφαρμογή λιανικής αυξάνει τη μετατροπή κατά μέσο όρο 150% (Google, 2022). Οι εντοπισμένες εφαρμογές λαμβάνουν 2–3 φορές περισσότερες οργανικές εγκαταστάσεις στο περιφερειακό App Store και Google Play χάρη στο περιφερειακό ASO (λέξεις-κλειδιά στη γλώσσα-στόχο).

i18n vs l10n — δύο πλευρές της ίδιας διαδικασίας. i18n: εξαγωγή συμβολοσειρών σε πόρους, υποστήριξη RTL, μορφοποίηση αριθμών. Γίνεται μία φορά από προγραμματιστές. l10n: μετάφραση συμβολοσειρών, προσαρμογή περιεχομένου, τοπική δοκιμή. Γίνεται πολλές φορές από μεταφραστές και QA για κάθε εντοπισμό. Στην IT Sectr διαθέτουμε 20–30% του χρόνου sprint για τον εντοπισμό κάθε νέας γλώσσας — αυτό περιλαμβάνει μετάφραση, αναθεώρηση, δοκιμή σε συσκευές και διόρθωση σφαλμάτων.

Εντοπισμός στο iOS: Localizable.strings και Base Internationalization

Localizable.strings — το κύριο αρχείο αποθήκευσης μεταφράσεων στο iOS. Κάθε εντοπισμός έχει τον δικό του φάκελο .lproj: en.lproj/Localizable.strings, ru.lproj/Localizable.strings, de.lproj/Localizable.strings. Μορφή: "κλειδί" = "τιμή"; (με ελληνικό ερωτηματικό). Η Apple χρησιμοποιεί Base Internationalization: τα Storyboard και XIB δημιουργούνται μία φορά (Base.lproj) και οι συμβολοσειρές διεπαφής εξάγονται σε Localizable.strings για κάθε γλώσσα. Αυτό εξαλείφει την ανάγκη δημιουργίας αντιγράφων XIB για κάθε εντοπισμό.

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

// ru.lproj/Localizable.strings
// "settings.title" = "Ρυθμίσεις";
// "profile.greeting" = "Γεια σας, %@!";
// "items.count" = "%d τεμ.";

// Φόρτωση συμβολοσειράς με κλειδί
navigationItem.title = NSLocalizedString(
    "settings.title",
    comment: "Τίτλος οθόνης ρυθμίσεων"
)

// Συμβολοσειρά με παράμετρο
let name = "Άννα"
greetingLabel.text = String.localizedStringWithFormat(
    NSLocalizedString("profile.greeting", comment: ""), name
)

// Εισαγωγή XLIFF (Xcode → Editor → Import Localizations)
// Ενημερώνει αυτόματα τα αρχεία .lproj μετά την εργασία του μεταφραστή

Base Internationalization — η προσέγγιση της Apple όπου η διεπαφή (Storyboard, XIB) δημιουργείται μία φορά στο Base.lproj. Κατά την προσθήκη γλώσσας, το Xcode εξάγει συμβολοσειρές από το Base σε ένα αρχείο XLIFF. Ο μεταφραστής μεταφράζει το XLIFF. Μετά την εισαγωγή, το Xcode δημιουργεί .lproj με μεταφρασμένες συμβολοσειρές. Πλεονέκτημα: δεν χρειάζεται να αντιγράφετε το XIB για κάθε γλώσσα. Περιορισμός: για γλώσσες RTL (αραβικά, εβραϊκά) μπορεί να χρειαστεί ξεχωριστό XIB με κατοπτρική διάταξη.

InfoPlist.strings και εντοπισμός μεταδεδομένων

InfoPlist.strings — αρχείο για τον εντοπισμό του ονόματος εφαρμογής (CFBundleDisplayName), αδειών κάμερας/μικροφώνου (NSCameraUsageDescription) και άλλων τιμών από το Info.plist. Δημιουργείται στο .lproj: ru.lproj/InfoPlist.strings. Μορφή: CFBundleDisplayName = "Η εφαρμογή μου"; NSCameraUsageDescription = "Η εφαρμογή χρειάζεται πρόσβαση στην κάμερα για λήψη φωτογραφιών";. Χωρίς εντοπισμό του InfoPlist.strings, οι διάλογοι συστήματος θα είναι στα αγγλικά.

Εντοπισμός στο Android: values-ru, εντοπισμένοι πόροι

Πόροι Android για εντοπισμό οργανώνονται μέσω χαρακτηριστικών (qualifiers) στα ονόματα καταλόγων. Για τη ρωσική γλώσσα — res/values-ru/, για τα γερμανικά — res/values-de/, για τα βραζιλιάνικα πορτογαλικά — res/values-pt-rBR/. Το Android υποστηρίζει πάνω από 160 εντοπισμούς. Το σύστημα επιλέγει αυτόματα πόρους βάσει της γλώσσας συσκευής (Locale.getDefault()). Εάν δεν υπάρχει ακριβής εντοπισμός — χρησιμοποιούνται πόροι από values/ (βασικός εντοπισμός, συνήθως en).

kotlin
// res/values/strings.xml (βασικό — αγγλικά)
<string name="settings_title">Settings</string>
<string name="greeting">Hello, %s!</string>

// res/values-ru/strings.xml (ρωσικά)
<string name="settings_title">Ρυθμίσεις</string>
<string name="greeting">Γεια σας, %s!</string>

// res/values-de/strings.xml (γερμανικά)
<string name="settings_title">Einstellungen</string>
<string name="greeting">Hallo, %s!</string>

// Kotlin — ενιαίος κώδικας για όλες τις γλώσσες
textView.text = getString(R.string.settings_title)

// Συμβολοσειρά με παράμετρο
val greeting = getString(R.string.greeting, userName)

// Εντοπισμένες εικόνες
// res/drawable-ru/flag.png — σημαία για ρωσική έκδοση
// res/drawable/flag.png — προεπιλεγμένη σημαία

// Εντοπισμός διατάξεων (για γλώσσες RTL)
// res/layout-ar/activity_main.xml — αραβική έκδοση

Εντοπισμός όχι μόνο συμβολοσειρών — το Android επιτρέπει τον εντοπισμό εικόνων (res/drawable-ru/), χρωμάτων (res/values-ru/colors.xml), μεγεθών (res/values-ru/dimens.xml), κινούμενων σχεδίων, μενού, ακόμα και ολόκληρων διατάξεων. Για γλώσσες με διαφορετικό μήκος λέξης (τα γερμανικά είναι 30–40% μεγαλύτερα από τα αγγλικά) χρησιμοποιήστε εντοπισμένα dimens.xml με αυξημένο πλάτος κουμπιών. Για περιοχές με διαφορετικό συμβολισμό χρωμάτων (λευκό — πένθος στην Κίνα) — εντοπισμένα colors.xml.

Έλεγχος εντοπισμού στη συσκευή

Δοκιμή — αλλάξτε τη γλώσσα συσκευής στην επιθυμητή μέσω Ρυθμίσεις → Σύστημα → Γλώσσα. Ελέγξτε: όλες οι συμβολοσειρές είναι μεταφρασμένες, οι ημερομηνίες μορφοποιούνται σωστά, οι αριθμοί εμφανίζονται με το σωστό διαχωριστικό, οι εικόνες αντιστοιχούν στην περιοχή, η διάταξη δεν "σπάει" με μεγάλες συμβολοσειρές. Για αυτοματοποίηση, χρησιμοποιήστε Espresso με LocaleTestRule (Android Testing Library) — επιτρέπει εκτέλεση δοκιμών με διαφορετικούς εντοπισμούς χωρίς χειροκίνητη αλλαγή γλώσσας.

Πολιτισμική προσαρμογή: τι πρέπει να μεταφραστεί εκτός από κείμενο

Πολιτισμικά χαρακτηριστικά — ο εντοπισμός δεν περιορίζεται στη μετάφραση συμβολοσειρών. Ο συμβολισμός χρωμάτων διαφέρει: κόκκινο — τύχη στην Κίνα, κίνδυνος στις ΗΠΑ, πένθος στη Νότια Αφρική. Λευκό — αγνότητα στην Ευρώπη, πένθος στην Κίνα. Εικονίδια με χειρονομίες: μπράβο — θετικό στις ΗΠΑ, προσβολή στη Μέση Ανατολή. Εικόνες ανθρώπων: σε αραβικές χώρες είναι απαράδεκτες οι εικόνες γυναικών με μαγιό. Θρησκευτικά σύμβολα: σταυρός, ημισέληνος, αστέρι του Δαβίδ πρέπει να χρησιμοποιούνται μόνο στο κατάλληλο πλαίσιο.

Νομικές απαιτήσεις — κάθε χώρα έχει τους δικούς της νόμους για ψηφιακά προϊόντα. GDPR (ΕΕ) — υποχρεωτική συγκατάθεση για cookies και επεξεργασία δεδομένων. CCPA (Καλιφόρνια) — δικαίωμα διαγραφής δεδομένων. Νόμος περί προσωπικών δεδομένων (Ρωσία, 152-FZ) — αποθήκευση δεδομένων σε διακομιστές της Ρωσικής Ομοσπονδίας. LGPD (Βραζιλία) — ανάλογο του GDPR. Πληρωμές: στην Κίνα χρειάζονται Alipay/WeChat Pay, στην Ινδία — UPI, στη Βραζιλία — Boleto και PIX. Διαμορφώστε την πύλη πληρωμής για την περιοχή πριν ξεκινήσετε τον εντοπισμό.

ΠτυχήΗΠΑΚίναΗΑΕΓερμανία
Σύστημα πληρωμήςApple Pay, κάρτεςAlipay, WeChat PayΚάρτες, Apple PayPayPal, Giropay
Χρώματα μάρκαςΟποιαδήποτεΚόκκινο — τύχηΠράσινο — ΙσλάμΜαύρο/κίτρινο
Κοινωνικά δίκτυαInstagram, XWeChat, DouyinWhatsApp, XWhatsApp, X
ΗμερομηνίαMM/dd/yyyyyyyy/MM/dddd/MM/yyyydd.MM.yyyy
Νόμος δεδομένωνCCPAPIPLPDPLGDPR

Παραδείγματα και περιεχόμενο — προσαρμόστε τα παραδείγματα στην περιοχή. Για γερμανικό εντοπισμό χρησιμοποιήστε το μετρικό σύστημα (kg, km), για αμερικανικό — το αυτοκρατορικό σύστημα (lb, mi). Οι αριθμοί τηλεφώνου, οι ταχυδρομικοί κώδικες, οι διευθύνσεις — μορφοποιούνται διαφορετικά. Παραδείγματα νομισμάτων: ¥1000 στην Ιαπωνία, $9.99 στις ΗΠΑ, 999 ₽ στη Ρωσία. Οι εικόνες φαγητού, ρούχων, εσωτερικών χώρων πρέπει να αντιστοιχούν σε περιφερειακά πρότυπα. Στην IT Sectr συνιστούμε την πρόσληψη τοπικών συμβούλων για τον έλεγχο της πολιτισμικής προσαρμογής.

Διαδικασία εντοπισμού: εργαλεία, μεταφραστές, CI/CD

Εργαλεία εντοπισμού — επαγγελματικές πλατφόρμες αυτοματοποιούν τη διαδικασία: Lokalise, Crowdin, POEditor, Smartling, Phrase. Ενσωματώνονται με το αποθετήριο, εισάγουν αυτόματα νέες συμβολοσειρές, παρακολουθούν αλλαγές (Delta updates — μεταφράζονται μόνο οι τροποποιημένες συμβολοσειρές), παρέχουν Translation Memory (TM — αποθήκευση προηγουμένως μεταφρασμένων φράσεων) και Glossary (γλωσσάρι όρων). Μέσο κόστος επαγγελματικής μετάφρασης: $0.08–0.15 ανά λέξη (ανάλογα με τη γλώσσα).

Διαδικασία — (1) Ο προγραμματιστής προσθέτει κλειδιά i18n στον κώδικα, κάνει push στο αποθετήριο. (2) Το CI/CD (GitHub Actions / GitLab CI) στέλνει αυτόματα νέα κλειδιά στην πλατφόρμα εντοπισμού. (3) Οι μεταφραστές λαμβάνουν ειδοποίηση, μεταφράζουν, αποθηκεύουν. (4) Τα μεταφρασμένα αρχεία δημιουργούν αυτόματα PR στο αποθετήριο. (5) Το QA ελέγχει τον εντοπισμό σε συσκευές. (6) Έκδοση. Κύκλος για έναν εντοπισμό: 2–5 εργάσιμες ημέρες (ανάλογα με τον όγκο). Για 10 εντοπισμούς: 5–15 ημέρες με παράλληλη εργασία μεταφραστών.

Machine Translation + Human Review — το σύγχρονο πρότυπο. Η μετάφραση νευρωνικού δικτύου (DeepL, Google Translate, GPT-4) παρέχει ποιότητα 80–90% για δημοφιλή ζεύγη γλωσσών. Ο ανθρώπινος μεταφραστής ελέγχει: ορολογία, πλαίσιο (οι λέξεις μπορεί να έχουν διαφορετικές σημασίες σε διαφορετικές οθόνες), πολιτισμική προσαρμογή. Στην IT Sectr χρησιμοποιούμε υβριδική προσέγγιση: μετάφραση ML + αναθεώρηση από φυσικό ομιλητή. Για κρίσιμες συμβολοσειρές (νομικές, πληρωμές) — μόνο επαγγελματίας μεταφραστής. Εξοικονόμηση: έως 60% του κόστους με διατήρηση της ποιότητας.

Συχνές Ερωτήσεις

Σε τι διαφέρει ο εντοπισμός από τη διεθνοποίηση;

Διεθνοποίηση — προετοιμασία κώδικα για μετάφραση (εξαγωγή συμβολοσειρών, RTL, μορφοποίηση). Εντοπισμός — η ίδια η μετάφραση και πολιτισμική προσαρμογή. Το i18n γίνεται από προγραμματιστή μία φορά, το l10n — από μεταφραστή για κάθε γλώσσα. i18n χωρίς l10n — η εφαρμογή είναι έτοιμη για μετάφραση αλλά δεν έχει μεταφραστεί. l10n χωρίς i18n — πρέπει να ξαναγραφτεί ο κώδικας για κάθε γλώσσα.

Πού αποθηκεύονται οι μεταφράσεις στο iOS;

Σε αρχεία Localizable.strings μέσα σε φακέλους .lproj. Για κάθε γλώσσα: en.lproj (αγγλικά), ru.lproj (ρωσικά), de.lproj (γερμανικά). Μορφή: "κλειδί" = "τιμή";. Για πληθυντικό — Localizable.stringsdict. Ρυθμίσεις εφαρμογής (CFBundleDisplayName) — στο InfoPlist.strings. Το Xcode διαχειρίζεται το .lproj μέσω Base Internationalization.

Τι είναι το values-ru στο Android;

values-ru — κατάλογος πόρων Android για τη ρωσική γλώσσα. Περιέχει strings.xml με μεταφράσεις. Παρόμοια για άλλες γλώσσες: values-de (γερμανικά), values-fr (γαλλικά). Το Android επιλέγει πόρους βάσει γλώσσας συστήματος. Εάν το values-ru δεν βρεθεί — χρησιμοποιεί values/ (βασική γλώσσα, συνήθως αγγλικά).

Πώς να μορφοποιήσετε ημερομηνίες για διαφορετικές περιοχές;

Να χρησιμοποιείτε πάντα Locale API. iOS: DateFormatter.locale = Locale(identifier: locale). Android: DateFormat.getDateInstance(DateFormat.SHORT, locale). Ρωσία: 31.12.2024. ΗΠΑ: 12/31/2024. Ιαπωνία: 2024/12/31. Ποτέ μην ορίζετε σταθερή μορφή — κάθε χώρα έχει τα δικά της πρότυπα. Για εισαγωγή ημερομηνιών χρησιμοποιήστε UIDatePicker / DatePicker.

Πόσοι εντοπισμοί χρειάζονται για μια παγκόσμια εφαρμογή;

Για παγκόσμια κάλυψη αρκούν 10–15 γλώσσες: αγγλικά, ισπανικά, γαλλικά, γερμανικά, ιαπωνικά, κινέζικα, κορεατικά, πορτογαλικά, ρωσικά, ιταλικά, αραβικά. Για περιφερειακή — 1–2 γλώσσες. Κάθε επιπλέον εντοπισμός αυξάνει τις οργανικές εγκαταστάσεις κατά 5–15% στην αντίστοιχη περιοχή. Το App Store απαιτεί τουλάχιστον αγγλικό εντοπισμό.

Σύνοψη

  • Localization (l10n) — μετάφραση και πολιτισμική προσαρμογή περιεχομένου σε συγκεκριμένη γλώσσα και περιοχή
  • iOS — Localizable.strings σε φακέλους .lproj, Base Internationalization, InfoPlist.strings
  • Android — values-ru/strings.xml, εντοπισμένα drawable και layout μέσω qualifiers
  • Πολιτισμική προσαρμογή — χρώματα, εικονίδια, χειρονομίες, συστήματα πληρωμής, νομικές απαιτήσεις
  • Διαδικασία — CI/CD → πλατφόρμα εντοπισμού → μεταφραστής → QA → έκδοση (2–5 ημέρες ανά γλώσσα)
  • Υβριδική προσέγγιση — μετάφραση ML (DeepL, GPT) + αναθεώρηση φυσικού ομιλητή για εξοικονόμηση 60%
  • Απόδοση — 76% των χρηστών αγοράζει μόνο στη μητρική τους γλώσσα (CSA Research, 2023)

Θα αναπτύξουμε μια εφαρμογή για κινητά έτοιμη για χρήση

Η IT Sectr δημιουργεί εφαρμογές iOS και Android για νεοφυείς επιχειρήσεις και επιχειρήσεις από το 2017. Θα σας συμβουλεύσουμε και θα προτείνουμε την καλύτερη λύση.

Συζήτηση έργου

Διαβάστε επίσης