W artykule:
- Zrozumienie i18n i l10n
- Jak zainstalować zlokalizowaną wersję WordPress
- Jak zmienić istniejącą witrynę WordPress w zlokalizowaną wersję
- Jak przyczynić się do lokalizacji WordPress
- Jak przygotować wtyczkę do tłumaczenia
- Jak przygotować motyw do tłumaczenia
- Jak korzystać z przetłumaczonych motywów i wtyczek
- Wtyczki do lokalizacji motywów i wtyczek
- WPML
- POEditor WordPress Tłumaczenie Plugin
- TranslatePress
- Loco Translate
- Kompozytor PO
- Wrapping Up
WordPress zasila ponad 15 milionów stron internetowych w sieci i mam dla Ciebie wiadomość-nie wszystkie są w języku angielskim. W rzeczywistości jednym z powodów, dla których prasa jest tak popularna, jest jej dostępność w wielu językach i łatwość tłumaczenia.
Co jest jeszcze bardziej interesujące, to fakt, że w 2014 roku liczba nie-angielskich plików do pobrania WordPress przekroczyła liczbę angielskich plików do pobrania po raz pierwszy.
Połącz to z ogłoszeniem, że katalogi wtyczek i motywów WordPress będą w pełni zlokalizowane, dzięki czemu będą bardziej dostępne i w pełni tłumaczone dla osób nie mówiących po angielsku, i łatwo zrozumieć, dlaczego ważne jest, aby poważnie traktować lokalizację WordPress.
Jeśli zarabiasz na życie z WordPress, sprzedając motywy lub wtyczki, Twoja praca musi obsługiwać wiele języków. Żadnych „jeśli”, ” i ” lub „ale”.
A jeśli zdarzy ci się być użytkownikiem końcowym motywów i wtyczek WordPress, wiedząc, że obejmują one wsparcie dla Twojego języka ojczystego, jest dodatkowym bonusem.
Dzisiaj zamierzamy zbadać prawie wszystko pod słońcem związane z lokalizacją WordPress, w tym:
- Zrozumienie i18n i l10n
- Jak zainstalować zlokalizowaną wersję WordPress
- Jak przekształcić istniejącą witrynę WordPress w zlokalizowaną wersję
- Jak przyczynić się do lokalizacji WordPress
- Jak przygotować wtyczkę do tłumaczenia
- Jak przygotować motyw do tłumaczenia
- Jak korzystać z przetłumaczonych motywów i wtyczek
- Wtyczki do lokalizacji motywów i wtyczek
Więc zapnij pasy i przygotuj narzędzia do tłumaczenia. Zaraz tu będzie lingwistycznie!
Zrozumienie i18n i l10n
Jeśli chodzi o WordPress i wsparcie dla Twojego języka, istnieją dwa kluczowe terminy, które musisz zrozumieć:
Pierwszym z nich jest Internacjonalizacja. Internacjonalizacja, lub i18n w skrócie (ponieważ istnieją litery 18 między i I n), jest procesem, w którym jako twórca motywu lub wtyczki przygotować swój motyw lub wtyczkę do tłumaczenia.
WordPress korzysta z bibliotek i narzędzi gettext dla i18n.
Oto jak to działa w skrócie:
- Programiści zawijają tłumaczone ciągi w funkcje gettext
- Pliki kodu źródłowego są analizowane, a tłumaczone ciągi są wyodrębniane do pliku POT (Portable Objects Template)
- Pliki POT są następnie przekazywane do GlotPress, narzędzia współpracy dla tłumaczy
- Tłumacze tłumaczą, a rezultatem jest plik PO
- Pliki PO są kompilowane do binarnych plików MO, które dają szybszy dostęp do ciągów w czasie wykonywania
Oznacza to, że bez względu na to, jakiego języka używasz do rozwijania swojej pracy, przyszli użytkownicy (a nawet programiści) mogą łatwo przetłumaczyć ją na dowolny język.
Drugim ważnym terminem jest lokalizacja lub l10n w skrócie (bo między l A n jest 10 liter).
Lokalizacja zwykle dzieje się po internacjonalizacji i jest to proces, w którym motyw lub wtyczka zostanie przetłumaczona i dostosowana do użycia w określonym języku.
Jako programista musisz tylko zająć się internacjonalizacją-przygotowując swój motyw lub wtyczkę do tłumaczenia.
Chociaż nie jest to konieczne, aby zapewnić tłumaczenie, jeśli jesteś wielojęzyczny,to za wszelką cenę spróbować.
Z tymi kluczowymi definicjami na uboczu, możemy przejść do sedna dzisiejszego postu, w tym jak zainstalować zlokalizowaną wersję WordPress lub jak przekonwertować istniejącą instalację na zlokalizowaną; jak przygotować motywy i wtyczki do tłumaczenia; jak przyczynić się do lokalizacji WordPress; i wreszcie, przyjrzymy się niektórym z najlepszych wtyczek, które mogą pomóc w lokalizacji.

Jak zainstalować zlokalizowaną wersję WordPress
Najprostszym sposobem zainstalowania zlokalizowanej wersji WordPress jest cPanel hosta.
Wiele hostów pozwala wybrać język, w którym zainstalowany jest WordPress. Dla większości użytkowników Ta opcja jest zwykle najłatwiejsza.
Jeśli z jakiegoś powodu twój gospodarz nie pozwala na to, będziesz musiał wykonać pracę samodzielnie.
Aby sprawdzić, czy WordPress jest dostępny w Twoim języku, odwiedź WordPress.org. jeśli jest dostępny w Twoim języku, zobaczysz żółty pasek powiadomień informujący o tym.
Dla celów tego artykułu Załóżmy, że potrzebujesz francuskiej wersji WordPress.
Proces instalacji jest taki sam, jak w przypadku zwykłej wersji WordPress, więc przejdźmy krótko przez kroki:
- Przejdź do fr.wordpress.org i pobierz francuską wersję WordPress.
- Korzystając z Filezilla (lub preferowanego klienta FTP), połącz się z serwerem internetowym i rozpakuj pakiet WordPress do preferowanego katalogu instalacyjnego-Zwykle public_html
- Utwórz bazę danych dla WordPress na swoim serwerze WWW i użytkowniku MySQL ze wszystkimi uprawnieniami.
- Edytuj wp-config.php plik i dodaj informacje o bazie danych.
- Uruchom skrypt instalacyjny WordPress, uzyskując dostęp do adresu URL w przeglądarce internetowej.
WordPress powinien być teraz zainstalowany w języku francuskim. Jeśli potrzebujesz więcej wskazówek, sprawdź nasz bardziej szczegółowy post na ten temat, Przewodnik po najlepszych sposobach instalacji WordPressa.
Jak zmienić istniejącą witrynę WordPress w zlokalizowaną wersję
Jeśli masz już witrynę WordPress, są szanse, że nie chcesz przeszkadzać, instalując WordPress od podstaw.
Dobra wiadomość jest taka, że nie musisz.
Najprostszym sposobem na to jest zalogowanie się do Pulpitu nawigacyjnego, kliknięcie na Ustawienia > Ogólne, a następnie przewiń w dół strony, aby Język Strony i wybierz żądany język z rozwijanego menu.

Pamiętaj, że zmieni to tylko język używany w zapleczu witryny WordPress. Jeśli Twoje posty są w języku angielskim, pozostaną w języku angielskim.
Twój motyw i wszelkie wtyczki, których możesz używać, będą nadal w języku angielskim.
Alternatywnym sposobem lokalizacji istniejącej instalacji WordPress jest pobranie i przesłanie . mo plik językowy do twojego / wp-content / języki/ lub / wp-includes / languages/ folder.
Będziesz musiał utworzyć nowy folder o nazwie języki w wp-content katalog.
Po przesłaniu wszystkich. mo i .pliki po, które pochodzą z twoim językiem, następnym krokiem jest powiedzenie WordPressowi, aby używał tych plików językowych. Aby to zrobić, otwórz swój wp-config.php plik i zmienić następujący wiersz:
Zastąp fr_FR z twoim językiem i kodem kraju. Pierwsze dwie litery oznaczają kod języka, a pozostałe dwie-kod kraju. Sprawdź pełną listę kodów języków i krajów.
Po dodaniu tego tekstu do swojego wp-config.php plik, WordPress wyświetli obszar administracyjny w Twoim języku.
Podobnie jak w przypadku poprzedniej metody zmiany języka w Ustawienia menu, tylko obszary administracyjne WordPress będą w Twoim języku. Być może nadal będziesz musiał przetłumaczyć swój motyw WordPress lub inne wtyczki.

Jak przyczynić się do lokalizacji WordPress
Chociaż WordPress jest dostępny w wielu językach, niektóre z nich nie zostały jeszcze w pełni przetłumaczone. Jeśli jesteś wielojęzyczny, dlaczego nie wykorzystać swoich umiejętności, aby przyczynić się do lokalizacji WordPress.
Pierwszą rzeczą, którą chcesz zrobić, to udać się do tłumaczenia WordPress. Jeśli posiadasz już WordPress.org konto, wszystko, co musisz zrobić, to zalogować się i zacząć przyczyniać się do swojego języka.
Zanim przejdziesz do tłumaczenia, zapoznaj się z podręcznikiem tłumacza, który nauczy Cię wszystkiego, co musisz wiedzieć o tłumaczeniu WordPressa, od tego, jak zacząć, po najlepsze praktyki i oczekiwania.
Po zapoznaniu się z podręcznikiem możesz wnieść swój wkład na kilka różnych sposobów.
Możesz stać się częścią lokalnego zespołu, jeśli istnieje już dla Twojego języka. Możesz też stworzyć zespół.

Możesz pomóc w tłumaczeniu samego WordPressa, motywów, wtyczek lub aplikacji. Gdy już zdecydujesz się na swój projekt tłumaczeniowy, możesz zacząć przyczyniać się do niego, klikając na Przyczyń się.
Następnie zostaną przedstawione ciągi, które nadal wymagają tłumaczenia. Więc idźcie i tłumaczcie!
Jak przygotować wtyczkę do tłumaczenia
Przygotowanie wtyczki do tłumaczenia daje znacznie szerszą publiczność niż po prostu ograniczenie go do jednego języka lub założenie, że ponieważ jest w języku angielskim, każdy będzie wiedział, jak go używać.
Oto spojrzenie na jak przygotować wtyczkę do tłumaczenia:
1. Ustaw Nagłówki Tłumaczeń
Pierwszym krokiem jest dodanie nagłówków tłumaczenia do nagłówków wtyczki. Nagłówki tłumaczeń są Domena Tekstowa oraz Ścieżka Domeny.
Domena tekstowa oznacza cały tekst należący do wtyczki. Jest to unikalny identyfikator, który zapewnia, że WordPress może odróżnić wszystkie załadowane tłumaczenia.
Domena tekstowa musi pasować do ślimaka wtyczki.
Zasadniczo oznacza to, że jeśli wtyczka jest pojedynczym plikiem o nazwie sample-plugin.php lub jeśli wtyczka znajduje się w folderze o nazwie sample-plugin domena tekstowa powinna być sample-plugin.
Warto wspomnieć, że nazwa domeny tekstowej musi używać myślników, a nie podkreślników.
Ścieżka domeny jest folder WordPress będzie szukać . mo pliki tłumaczeń.
Domyślnie WordPress przeszukuje katalog wtyczek w poszukiwaniu plików do tłumaczenia. Jeśli zostawisz plik tłumaczenia w folderze głównym wtyczki można skończyć z niezorganizowanej struktury wtyczki.
Dlatego zaleca się, aby utworzyć osobny folder dla plików tłumaczeń, takich jak / języki. Aby poinformować o tym WordPressa, musisz użyć nagłówka ścieżki domeny.
Na przykład typowy nagłówek wtyczki WordPress, który został internacjonalizowany, wyglądałby tak:
2. Załaduj Domenę Tekstową
Po dodaniu nagłówków tłumaczenia, musimy załadować domenę tekstową za pomocą load_plugin_textdomain() funkcja. Ta funkcja mówi WordPress załadować plik tłumaczenia, jeśli istnieje dla języka użytkownika. Wygląda to tak:
Pierwszy parametr $domena powinna być domeną tekstową; $abs_rel_path został przestarzały i powinien być ustawiony na false; wreszcie, $plugin_rel_path jest względną ścieżką do plików tłumaczeń.
W przypadku naszej przykładowej wtyczki funkcja wyglądałaby tak:
Funkcja powinna być wywołana w wtyczce już w plugins_loaded akcja jak ta:
Teraz, gdy domena tekstowa i nagłówek ścieżki domeny są ustawione, spójrzmy, jak umiędzynarodowić wtyczkę.
Zajmiemy się tłumaczeniem ciągów, używaniem symboli zastępczych, tłumaczeniem HTML, obsługą liczby mnogiej, radzeniem sobie z disambiguacją i ucieczką od ciągów tłumaczeniowych.
3. Tłumaczenie Strun
Aby tekst był tłumaczony we wtyczce, zawiń oryginalny tekst w __() wywołanie funkcji:
Jeśli chcesz echo ciągu do przeglądarki po prostu użyj _e funkcja zamiast:
Powtórz to dla każdego ciągu, który chcesz przetłumaczyć.
4. Używanie Symboli Zastępczych
Jeśli używasz zmiennych w ciągach znaków, takich jak Poniższy przykład, powinieneś użyć symboli zastępczych:
Właściwym sposobem jest wykorzystanie printf() funkcja:
Jeśli nie używasz elementów zastępczych, pozostawiasz wtyczkę otwartą na różne luki, takie jak Tłumacze błędnie zmieniający zmienne lub, co gorsza, zastępujący je złośliwym kodem, co może ostatecznie prowadzić do awarii wtyczki i ogólnej luki w witrynie.
5. Tłumaczenie HTML
Jednym z największych obszarów zamieszania, jeśli chodzi o tłumaczenia HTML jest tłumaczenie linków.
Sposób obsługi tłumaczenia linków HTML zależy od kontekstu, w którym znajduje się link. Jeśli link jest oddzielony od reszty tekstu, możesz zawinąć go w _e () funkcja:
Jeśli natomiast link jest częścią akapitu (nie jest oddzielony od otaczającego go tekstu), możesz przetłumaczyć go w następujący sposób:
6. Obsługa Liczby Mnogiej
W niektórych językach możesz mieć wiele form liczby mnogiej, w przeciwieństwie do angielskiego, gdzie masz tylko jedną formę liczby mnogiej. To jest, gdzie _n() funkcja jest przydatna.
Ta funkcja przyjmuje cztery argumenty:
- Liczba pojedyncza – forma pojedyncza ciągu
- Liczba mnoga – liczba mnoga ciągu
- Liczyć – liczba obiektów, które określają, czy liczba pojedyncza czy liczba mnoga powinna być zwrócona
- Domena Tekstowa – domena tekstowa wtyczki
Przykład _n() funkcja znajduje się poniżej:
A teraz wyjaśnijmy, co to wszystko znaczy.
Pierwszy argument przekazujemy do _n funkcja jest tekstem, który zostanie wyświetlony, gdy mamy tylko jeden komentarz.
Drugi argument wyświetla tekst, gdy liczba komentarzy jest większa niż jeden. Trzeci argument get_comments_number() jest funkcją, która zwraca liczbę komentarzy.
Wreszcie, czwartym argumentem jest domena tekstu tłumaczenia.
Funkcja number_format_i18n() Konwertuje liczbę komentarzy na format oparty na ustawieniach regionalnych.
Podobnie, date_i18n pobiera datę w formacie zlokalizowanym na podstawie znacznika czasu.
7. Obsługa Disambiguacji
W niektórych przypadkach jeden termin może mieć kilka różnych znaczeń i chociaż może to być jedno i to samo słowo w języku angielskim, nie może być przetłumaczone w ten sam sposób na inny język.
W takich przypadkach _x lub _ex należy użyć funkcji.
Na _x() oraz _ex () funkcje posiadają dodatkowy argument: $ context.
Korzystając z tej metody upewnisz się, że tłumacze widzą dwa ciągi komentarzy w innym kontekście i unikną zamieszania.
8. Escaping Translation Strings
Ciągi tłumaczeń mogą być unikane za pomocą następujących funkcji:
Pełna lista funkcji dezynfekcji i walidacji oraz ich wyjaśnienie jest dostępne w Kodeksie WordPress.
Po przejrzeniu każdego ciągu w wtyczce pozostaje tylko utworzyć .garnek plik, który pozwoli innym użytkownikom przetłumaczyć wtyczkę na ich własny język.
Domyślnie oficjalne repozytorium wtyczek ma narzędzie do generowania pliku POT wtyczki, który znajduje się na stronie Administratora każdej listy wtyczek.
Po przesłaniu wtyczki do repozytorium możesz kliknąć na Admin > Wygeneruj plik POT a potem Pobierz plik POT.
Jeśli nie chcesz używać oficjalnego narzędzia, możesz użyć POEdit. Po zainstalowaniu możesz utworzyć .garnek plik. Aby to zrobić, przejdź do Plik > Nowy Katalog.
Pojawi się okno dialogowe, w którym musisz wprowadzić informacje dotyczące projektu, w szczególności nazwę projektu i swój język/kraj, a także następujące informacje w polu „formy liczby mnogiej” :
Formy liczby mnogiej: nplurals=2; liczba mnoga = n != 1;
Na Ścieżki tab, wprowadź ścieżkę, w której znajdują się pliki. Odkąd użyliśmy / języki folder w naszym przykładzie, musisz wpisać .. (dwa okresy).
Następnie musisz powiedzieć POEdit, których słów kluczowych szukać podczas skanowania plików. Wpisz następujące:
__
_e
_n:1,2
_x: 1,2 c
_ex: 1,2 c
Na :1,2 rozszerzenie mówi POEdit, że te słowa kluczowe składają się z dwóch części: drugi argument jest liczbą mnogą. Po dodaniu „c” mówisz POEdit drugi argument jest komentarzem.
Następnie kliknij ” OK ” i wybierz miejsce do zapisania .garnek plik.
Pamiętaj, że musi odnosić się do ścieżki, którą wcześniej zdefiniowałeś.
POEdit przejrzy teraz Twoje pliki i znajdzie wszystkie wystąpienia Twoich funkcji tłumaczeniowych i zapisze je w Twoim .garnek plik.
Teraz masz absolutne minimum dla internacjonalizacji wtyczki.
Jeśli znasz inny język i chcesz pójść o krok dalej, możesz przetłumaczyć wszystkie znalezione ciągi znaków POEdit i zapisać tłumaczenie jako .po plik.
Bądź ostrożny w nazywaniu swojego .po jednak plik. Ponieważ Gettext używa standardu ISO 639 dla skrótów językowych i ISO 3166 dla lokalizacji, należy pamiętać o kodach języka i krajów, a także o kapitalizacji.
Pełną listę kodów języków i krajów można znaleźć pod poniższymi linkami:
- Kody języka Gettext
- Kody krajów Gettext
Po zapisaniu POEdit automatycznie utworzy . mo plik obok swojego .po plik.
Jak przygotować motyw do tłumaczenia
Proces przygotowania motywu do tłumaczenia przebiega zgodnie z tymi samymi zasadami, co w przypadku wtyczek opisanych powyżej. Różnica polega na tym, że musisz załadować domenę tekstową w swoim funkcje.php plik:
Jak korzystać z przetłumaczonych motywów i wtyczek
Po przygotowaniu motywu lub wtyczki do instalacji i chcesz ich użyć w swojej witrynie, musisz dokonać niewielkiej edycji wp-config plik.
Aby to zrobić, otwórz wp-config.php i znaleźć linię, która mówi:
W pustym miejscu Dodaj kod kraju i Kod lokalny dla przetłumaczonego języka. W przypadku języka francuskiego ten fragment kodu stałby się”
Zapisz plik i gotowe.
Wtyczki do lokalizacji motywów i wtyczek
Już omówiliśmy wtyczki tłumaczeniowe tutaj w WPMU DEV, ale tym razem skupmy się na wtyczkach, które pomagają przygotowanie motywy i wtyczki do tłumaczenia, jak również.
Chociaż POEdit jest świetnym narzędziem, istnieje kilka wtyczek, które pozwalają przetłumaczyć, cóż, wtyczki, w panelu administracyjnym WordPress.
-
WPML

WPML umożliwia tłumaczenie tekstów pochodzących z motywów i wtyczek używanych w witrynach.
Domyślnie WPML nie skanuje ani nie ładuje tych plików tłumaczeń do bazy danych. W związku z tym, jeśli chcesz przetłumaczyć lub edytować te ciągi, najpierw trzeba zeskanować pliki tłumaczeń związanych z tematem lub wtyczki.
Po zeskanowaniu motywu lub ciągów wtyczek możesz je przetłumaczyć na WPML – > tłumaczenie ciągów strona.
WPML nie musi również uzyskiwać dostępu do bazy danych, aby wyświetlić tłumaczenia tekstów motywów i wtyczek. Z tego powodu tłumaczenie tekstów motywów i wtyczek nie będzie miało wpływu na wydajność witryny.
Kolejną wspaniałą rzeczą w WPML jest to, że jest w pełni kompatybilny z wieloma wtyczkami — w tym naszym własnym Koliberem.
Co więcej, od wersji 4.3 WPML zmienił sposób działania translacji łańcuchów. W rezultacie, w przypadku korzystania z Koliber ten plugin tłumaczenie nie spowolni witryny jeden bit.
WPML ma trzy plany cenowe-wielojęzyczny Blog, wielojęzyczny CMS i wielojęzyczna Agencja. Ceny wahają się od $29 – $159.
-
POEditor WordPress Tłumaczenie Plugin

Aby uzyskać bardziej usprawnioną lokalizację motywów i wtyczek WordPress, możesz użyć wtyczki do tłumaczenia WordPress POEditor. Dzięki tej wtyczce możesz zarządzać importem i eksportem w projektach tłumaczeń POEditor bezpośrednio z pulpitu WordPress.
Aby korzystać z wtyczki, potrzebujesz POEditor.com konto, które musisz połączyć z wtyczką po zainstalowaniu jej na swojej stronie. Następnie wprowadź klucz API i możesz rozpocząć tłumaczenie, tworząc nowy projekt, dodając język i przypisując plik językowy.
Wtyczka jest darmowa i istnieje opcja bezpłatnego konta na POEditor, jednak jesteś ograniczony do 1000 ciągów. Płatne plany kont zaczynają się od $14.99 / miesiąc.
-
TranslatePress

TranslatePress jest intuicyjne tłumaczenie plugin ze względu na wizualny interfejs tłumaczenia.
Możesz przetłumaczyć wszystko, co widzisz (tekst, obrazy, formularze itp.) bezpośrednio z przodu witryny.
TranslatePress automatycznie wykrywa ciągi gettext pochodzące z motywów lub wtyczek. Fajną rzeczą jest to, że po przetłumaczeniu ciągów gettext, te tłumaczenia będą automatycznie stosowane do wszystkich wystąpień, w których pojawia się ten ciąg.
Ponadto, jeśli pewna wtyczka ma dostępny pakiet językowy, TranslatePress automatycznie wstępnie wypełni tłumaczenia tych ciągów i wyświetli je w interfejsie. Możesz także je przeglądać i ręcznie edytować.
TranslatePress jest bezpłatny i dostępny na wp.org. pakiety premium obejmują dodatki, takie jak SEO Pack, Automatyczne wykrywanie języka użytkownika, konta tłumaczy i inne, i zaczyna się od 79 euro.
-
Loco Translate

Loco Translate zapewnia wbudowany edytor tłumaczeń w pulpicie nawigacyjnym WordPress.
Po instalacji zobaczysz listę wszystkich motywów i wtyczek, które zainstalowałeś, a także wszelkie istniejące tłumaczenia. Po znalezieniu motywu lub wtyczki, którą chcesz przetłumaczyć, po prostu kliknij na Nowy Język, a potem Zacznij Tłumaczyć.Loco Translate jest darmowy dla maksymalnie 2000 tłumaczeń. Płatne plany zaczynają się od $5.95 / miesiąc
-
Kompozytor PO

PO Composer jest płatną wtyczką dostępną w Code Canyon. Nie jest to plugin lokalizacyjny per se, raczej pozwala łatwo znaleźć nowe i nie zmienione ciągi do tłumaczenia po Temat został zaktualizowany. Zasadniczo, ta wtyczka przygotuje zaktualizowany plik tłumaczenia dla Ciebie, gdzie wszystkie ciągi zostały przetłumaczone przed zostaną dodane, a następnie można dodać w ciągi, które muszą być zmienione lub przetłumaczone bez konieczności rozpoczynania od zera.
PO Composer kosztuje 19 dolarów.
Wrapping Up
Liczba użytkowników WordPressa rośnie z każdym dniem. I chociaż spora liczba użytkowników WordPressa rozumie angielski, ignorowanie innych języków jest wręcz głupie.
Przygotowanie motywów i wtyczek do lokalizacji zapewnia dotarcie do szerszej publiczności i zarabia punkty bonusowe z użytkownikami końcowymi. I to jest wygrana netto.
Tagi: