Dlaczego SSG to właściwy wybór dla globalnego sklepu
Krajobraz 2026 roku sprzyja stronom statycznym w SSG (Static Site Generation) to generowanie kompletnego HTML podczas budowania strony. Gotowe pliki serwujesz z CDN bez renderowania na żądanie — najszybszy i najtańszy model dla treści, która nie zmienia się przy każdej wizycie. w internacjonalizacji z bardzo konkretnych powodów:
- Każdy język dostaje własny, z góry wygenerowany HTML — optymalny dla SEO i indeksacji, bez tłumaczenia po stronie klienta, które wyszukiwarki widzą gorzej.
- Łatwość buforowania na CDN — statyczne pliki rozkładają się globalnie, więc użytkownik w Tokio i w Berlinie dostaje stronę z bliskiego węzła.
- Zero JavaScriptu domyślnie — szybkie ładowanie na całym świecie, co dla sklepu internetowego przekłada się wprost na konwersję.
- Kolekcje treści Astro (
Content Collections) — typowane, walidowane zarządzanie treścią w wielu językach.
Podejście statyczne jest łatwiejsze do buforowania, szybsze w globalnym serwowaniu i bardziej niezawodne niż tłumaczenie po stronie klienta.
Konfiguracja i18n: trasy i języki
Astro ma wbudowaną obsługę tras i18n. Przykładowa konfiguracja deklaruje obsługiwane języki i język domyślny:
Decyzja prefixDefaultLocale jest istotna o tyle, że false daje czystsze adresy dla języka domyślnego (/produkt zamiast /pl/produkt), co w większości przypadków wystarcza. true wybieraj wtedy, jeśli szczególnie zależy Ci na spójności struktury (każdy język z prefiksem).
Trasy oparte na prefiksie (/en/, /de/) są prostsze i działają ze statycznym hostingiem. Subdomeny (en.sklep.com) bywają lepsze pod SEO (ale nie zawsze i nie należy ich robić na siłę), ale wymagają konfiguracji DNS i serwera — dla SSG prefiks jest pragmatycznym standardem.
Astro pozwala też zdefiniować języki zapasowe dla poszczególnych języków, by użytkownik zawsze trafił na istniejącą treść, nawet jeśli dana podstrona nie ma jeszcze tłumaczenia.
Organizacja treści wielojęzycznej
Dla sklepu internetowego sprawdza się trzymanie treści w folderach dla każdego języka wewnątrz Kolekcji treści Astro (Content Collections):
Słowniki interfejsu (etykiety przycisków, komunikaty) trzymaj osobno, np. w src/i18n/*.json, i sięgaj po nie funkcją pomocniczą t('button.dodaj_do_koszyka') w oparciu o Astro.currentLocale.
Hreflang — najważniejszy sygnał SEO międzynarodowego
To jest serce całej operacji. Hreflang to atrybut wskazujący wyszukiwarce językowe i regionalne warianty tej samej strony, np. polski i angielski. Poprawnie ustawiony zapobiega duplikacji i kieruje użytkownika do właściwej wersji językowej. mówi Google, które URL-e są swoimi tłumaczeniami i w jakim są języku. Bez niego wysyłasz do indeksu prawie duplikaty i następnie prosisz Google, by zgadywało relacje. I to robi, ale z marnym skutkiem.
Tagi hreflang generujesz w <head> szablonu, przechodząc po wszystkich językach. Astro daje do tego funkcję pomocniczą getAbsoluteLocaleUrl. W przykładzie poniżej zakładamy, że końcówka adresu jest taka sama w każdym języku, a zmienia się tylko prefiks języka:
Jeśli tłumaczysz końcówki adresów (/produkt/, /en/product/, /de/produkt-de/), nie podmieniaj prefiksu mechanicznie. Wtedy potrzebujesz mapy odpowiedników dla każdego języka i generujesz hreflang z tej mapy, tylko dla realnie istniejących wersji.
Trzy reguły, których pilnuj rygorystycznie:
Kody lokalizacji poprawne. Używaj
en,de,zh-cn— a nie wymyślonych wariantów. Niespójne kody psują cały mechanizm.x-defaultjako świadoma wersja zapasowa. Wskazuje stronę dla użytkowników, których języka nie obsługujesz; zwykle będzie to język domyślny albo selektor języka.Canonical dla każdej wersji językowej. Każda wersja wskazuje na siebie jako kanoniczną, nie na język domyślny.
Pułapka, o której mało kto mówi: częściowe tłumaczenia
Teraz uwaga na haczyk, który wywraca standardowe konfiguracje. Dopóki każda strona istnieje w każdym języku i struktura adresów jest jednolita, standardowe integracje (@astrojs/sitemap, @astrojs/rss plus szablon emitujący hreflang) wystarczą.
Problem pojawia się, gdy masz częściowe tłumaczenia, wyświetlasz treść zapasową (interfejs po hiszpańsku, ale konkretny produkt tylko po angielsku) albo masz rozdzielone języki interfejsu i treści. Wtedy standardowe integracje zaczynają produkować błędny wynik, czyli emitują alternatywne adresy dla nieistniejących tłumaczeń i wpisują do sitemapy strony, które tak naprawdę są treścią zapasową.
Standardowy hreflang wystarczy, dopóki każda strona istnieje w każdym języku. W realnym sklepie internetowym, gdzie 30% katalogu czeka na tłumacza, ten warunek nie jest spełniony niemal nigdy.
Rozwiązanie dla dojrzałego, wielojęzycznego sklepu: własne pliki generujące sitemapę i hreflang, które przechodzą po faktycznych Kolekcjach treści Astro, sprawdzają, czy dane tłumaczenie naprawdę istnieje, i emitują wpis tylko dla realnie przetłumaczonych stron. To więcej pracy, ale to różnica między poprawnym a wprowadzającym w błąd sygnałem dla Google.
Tłumaczyć końcówki adresów czy nie?
Teraz wchodzimy w decyzję architektoniczną, która ma konsekwencje zarówno operacyjne, jak i SEO. Jeśli prefiks języka się zmienia, a końcówka adresu nie (/en/produkt, /de/produkt), generowanie hreflang sprowadza się do podmiany fragmentu adresu, przełącznik języka nie potrzebuje mapy odpowiedników, a adresy URL pozostają „kopiowalne”. Dla anglojęzycznego sklepu z tłumaczonym pokryciem to zwykle właściwy wybór.
Warto zaznaczyć natomiast, że dla treści mocno osadzonej w danym języku (np. blog kulinarny celujący w lokalną publiczność) tłumaczone końcówki adresów są warte kosztu operacyjnego, ponieważ same w sobie niosą wartość SEO. To decyzja dla konkretnego projektu i musisz wyważyć koszt utrzymania wobec zysku z lokalnych fraz w adresie.
Sitemap i dane strukturalne
Domknij obraz za pomocą dwóch elementów. Pierwszym jest sitemapa, którą konfigurujesz przez @astrojs/sitemap z opcją i18n, by automatycznie generowała wpisy dla każdego języka. Drugim są dane strukturalne (schema.org), w których wstaw inLanguage zgodne z Astro.currentLocale (to dodatkowy, jednoznaczny sygnał języka dla wyszukiwarki):
Audyt techniczny i optymalizacja pod kątem SEO i GEO.
SEO & Performance