Przejdź do głównej zawartości

64. Internacjonalizacja (i18n) aplikacji PHP — gettext, intl, locale

Internacjonalizacja aplikacji PHP

i18n (internacjonalizacja) to projektowanie aplikacji do obsługi wielu języków i regionów. l10n (lokalizacja) to dopasowanie do konkretnego locale. PHP oferuje rozszerzenie intl (NumberFormatter, IntlDateFormatter) oraz gettext do zarządzania tłumaczeniami.

  • Każda aplikacja sprzedawana globalnie wymaga i18n
  • Rozszerzenie intl jest wbudowane w PHP (włączone w XAMPP/Laravel)
  • Gettext z plikami .po jest standardem tłumaczeń open source
  1. Wyjaśnić różnicę i18n vs l10n oraz co to jest locale
  2. Opisać formatowanie liczb, dat i walut przez intl
  3. Omówić system tłumaczeń: gettext, pliki .po/.mo
  4. Pokazać pluralizację (1 produkt, 2 produkty, 5 produktów)
  1. i18n vs l10n — różnica i motywacja
  2. Locale — kod (pl_PL, en_US, de_DE) i co zawiera
  3. PHP intl: NumberFormatter, IntlDateFormatter, Collator
  4. Gettext — jak działa (compile .po → .mo)
  5. Pliki .po — format msgid/msgstr
  6. Pluralizacja — polskie zasady (1/2-4/5+ produktów)
  7. Prosty system tłumaczeń bez gettext (tablica PHP)

Przykład 1

NumberFormatter: ta sama liczba w pl_PL i en_US

Przykład 2

Prosty system tłumaczeń z tablicą i funkcją __()

Przykład 3

Pluralizacja: 1 produkt, 2 produkty, 5 produktów
  1. Wstęp — problemy bez i18n
  2. i18n vs l10n, definicja locale
  3. PHP intl — formatowanie
  4. System tłumaczeń (tablica lub gettext)
  5. Pluralizacja
  6. Przełączanie języka w aplikacji
  7. Narzędzia: Poedit, Transifex
  8. Podsumowanie i bibliografia

Przetłumacz swój projekt na dwa języki!

Weź swój projekt miniprojektu i dodaj obsługę polskiego i angielskiego przez tablicę tłumaczeń. Opisz proces w opracowaniu.