Jak tworzyć strony w wielu językach z przełącznikiem i poprawnymi znacznikami SEO.
Struktura
Każda wersja językowa to osobna strona z własnymi polami:
Site: MojaFirma-marketing
├── Page: main (path: "") → mojafirma.pl/
├── Page: main-en (path: "en") → mojafirma.pl/en
├── Page: Dashboard (path: "Dashboard") → mojafirma.pl/dashboard
└── Page: Dashboard-en (path: "Dashboard-en") → mojafirma.pl/dashboard-en
Pola wymagane dla każdej strony
Strona PL:
{
"lang": "pl",
"current_lang": "pl",
"page_path_pl": "/dashboard",
"page_path_en": "/dashboard-en",
"hreflang_pl": "https://mojafirma.pl/dashboard",
"hreflang_en": "https://mojafirma.pl/dashboard-en",
"canonical_url": "https://mojafirma.pl/dashboard"
}
Strona EN:
{
"lang": "en",
"current_lang": "en",
"page_path_pl": "/dashboard",
"page_path_en": "/dashboard-en",
"hreflang_pl": "https://mojafirma.pl/dashboard",
"hreflang_en": "https://mojafirma.pl/dashboard-en",
"canonical_url": "https://mojafirma.pl/dashboard-en"
}
Przełącznik języka w layoucie
Prosty (linki):
<a href="{{ page_path_pl }}"
class="{% if current_lang == 'pl' %}active{% endif %}">PL</a>
<a href="{{ page_path_en }}"
class="{% if current_lang == 'en' %}active{% endif %}">EN</a>
Dropdown:
<div class="lang-dropdown">
<button>{{ current_lang | upcase }}</button>
<div class="lang-menu">
<a href="{{ page_path_pl }}">PL - Polski</a>
<a href="{{ page_path_en }}">EN - English</a>
</div>
</div>
Menu nawigacyjne z językiem
Linki do innych stron muszą uwzględniać aktualny język:
<a href="https://mojafirma.pl{% if current_lang == 'en' %}/en{% endif %}">
MojaFirma
</a>
<a href="https://mojafirma.pl{% if current_lang == 'en' %}/dashboard-en{% else %}/dashboard{% endif %}">
Dashboard
</a>
Znaczniki hreflang
Informują Google o wersjach językowych:
<link rel="alternate" hreflang="pl" href="{{ hreflang_pl }}">
<link rel="alternate" hreflang="en" href="{{ hreflang_en }}">
<link rel="alternate" hreflang="x-default" href="{{ hreflang_pl }}">
x-default wskazuje domyślną wersję (zazwyczaj główny język).
Treści wielojęzyczne
Dla treści w paragrafach masz dwie opcje:
Opcja 1: Osobne paragrafy
-
Hero PL(priorytet 100) przypisany do strony PL -
Hero EN(priorytet 100) przypisany do strony EN
Opcja 2: Zmienne w jednym paragrafie
{% if lang == 'pl' %}
<h1>Witaj w MojaFirma</h1>
{% else %}
<h1>Welcome to MojaFirma</h1>
{% endif %}
Zalecana: Opcja 1 - łatwiejsza w utrzymaniu.
API - tworzenie stron
# Strona PL
curl -X POST "https://domena.com/cms/pages.json?api_token=TOKEN" \
-H "Content-Type: application/json" \
-d '{
"page": {
"name": "Dashboard PL",
"path": "Dashboard",
"site_id": 1018,
"layout_id": 1018,
"fields": {
"lang": "pl",
"current_lang": "pl",
"page_path_pl": "/dashboard",
"page_path_en": "/dashboard-en"
}
}
}'
Checklist
- Każda wersja językowa ma osobną stronę
-
langicurrent_langustawione -
page_path_plipage_path_enna obu stronach -
hreflangznaczniki w layoucie -
canonical_urlunikalny dla każdej strony - Przełącznik języka działa poprawnie