Przejdź do głównej treści
Wdrożenia

Lokalizacja szablonów i motywów

Wyciągamy hardcoded teksty z szablonów, przygotowujemy pliki tłumaczeniowe i implementujemy funkcje i18n, żeby Twój motyw działał w każdym języku bez zmian w kodzie.

WordPress PHP, Shopify Liquid, Symfony Twig, Laravel Blade, Handlebars. Każda technologia szablonów wymaga innego podejścia do ekstrakcji i implementacji.

Co lokalizujemy w szablonach:

  • Treści widoczne (nagłówki, przyciski, komunikaty)
  • Atrybuty HTML (placeholder, alt, aria-label)
  • Szablony e-mail i powiadomień
  • Formaty dat, liczb, walut
  • Komunikaty walidacji formularzy

Czym jest lokalizacja szablonów

Lokalizacja szablonów to proces przygotowania plików widoku (template files) do obsługi wielu języków. Obejmuje ekstrakcję tekstów, implementację funkcji tłumaczeniowych i przygotowanie infrastruktury do zarządzania wieloma wersjami językowymi.

Przed lokalizacją

<h1>Witaj na naszej stronie</h1>
<button>Kup teraz</button>
<input placeholder="Szukaj...">

Po lokalizacji

<h1>{{ __('hero.title') }}</h1>
<button>{{ t('cta.buy') }}</button>
<input placeholder="{{ t('search.placeholder') }}">

Proces lokalizacji szablonu

5 kroków od hardcoded szablonu do w pełni wielojęzycznego motywu.

1

Ekstrakcja stringów

Przechodzimy przez wszystkie pliki szablonów i identyfikujemy hardcoded teksty. Wyciągamy je do osobnych plików tłumaczeniowych (.po, .json, .yaml).

2

Przygotowanie plików

Tworzymy strukturę plików tłumaczeniowych: katalogi per język, konwencję nazewnictwa kluczy, plik źródłowy (POT/JSON) z kontekstem dla tłumaczy.

3

Tłumaczenie

Profesjonalna lokalizacja treści przez native speakerów. Uwzględniamy kontekst UI, ograniczenia długości i specyfikę kulturową każdego rynku.

4

Implementacja funkcji i18n

Zastępujemy hardcoded stringi wywołaniami funkcji: __() i _e() w WordPress, t() w React, {{ 'key' | t }} w Liquid, trans w Twig, @lang w Blade.

5

Testowanie i QA

Testujemy wszystkie wersje językowe: overflow tekstu, RTL, formularze, nawigację, responsywność. Sprawdzamy brakujące klucze i fallback na język domyślny.

Obsługiwane typy szablonów

Każda technologia szablonów ma własne konwencje i18n. Znamy je wszystkie.

WordPress (PHP)

__('text', 'domain'), _e(), _n()

Funkcje gettext w motywach i wtyczkach. Ekstrakcja przez WP-CLI i18n make-pot. Kompilacja do .mo do produkcji.

Format: .po / .mo / .pot

Shopify Liquid

{{ 'key' | t }}

Pliki JSON w katalogu locales motywu. Klucze hierarchiczne, wsparcie dla pluralizacji przez Shopify Translations API.

Format: locales/*.json

Twig (Symfony/Craft)

{{ 'key'|trans }}, {% trans %}

Twig korzysta z Symfony Translation component. Obsługuje domeny, parametry i ICU MessageFormat. Pliki w formats/.

Format: .xliff / .yaml / .php

Blade (Laravel)

@lang('key'), __('key')

Laravel obsługuje PHP arrays (per plik per moduł) i JSON (klucz = tekst źródłowy). Wbudowana pluralizacja przez trans_choice().

Format: resources/lang/*.php lub .json

Handlebars/Mustache

{{t 'key'}}, {{i18n 'key'}}

Helpery i18n dodawane jako rozszerzenie. Popularne w Ember.js (ember-intl) i platformach e-mail (Mailchimp, SendGrid).

Format: .json / .yaml

Najczęstsze błędy w lokalizacji szablonów

Widzimy te problemy regularnie. Unikaj ich od początku.

Łączenie fragmentów stringów

Tłumaczenie 'Welcome ' + name + '!' jako trzech osobnych stringów. Każdy język ma inną kolejność słów. Używaj interpolacji: __('Welcome {{name}}!').

Hardcoded tekst w atrybutach HTML

Zapominanie o tłumaczeniu placeholder, title, aria-label, alt. Ekstrakcja musi obejmować też atrybuty, nie tylko treść widoczną.

Formatowanie dat i liczb w szablonach

Hardcoded format '12/31/2025' zamiast użycia Intl.DateTimeFormat lub lokalizowanego formattera. Każdy rynek ma inny format daty.

Brak kontekstu dla tłumaczy

Klucz 'save' bez kontekstu. Czy to przycisk 'Zapisz' (formularz), 'Oszczędź' (promocja) czy 'Ratuj' (ekologia)? Dodawaj komentarze do plików tłumaczeniowych.

Ignorowanie RTL w CSS

Brak logical properties (margin-inline-start zamiast margin-left), hardcoded direction w flexbox, ikony strzałek bez mirroring.

Zbyt długie klucze stringów

Używanie pełnego tekstu jako klucza ('Witaj na naszej stronie internetowej') zamiast semantycznego ID ('homepage.hero.greeting'). Utrudnia zarządzanie i refactoring.

Zlokalizujemy Twoje szablony

Wyślij nam dostęp do repozytorium lub motywu, a przygotujemy wycenę ekstrakcji i lokalizacji. Bezpłatna wstępna analiza.