Tłumacz plik PO lub POT online, z obsługą liczby mnogiej i kontekstu
Prześlij szablon .pot albo częściowo przetłumaczony plik .po i odbierz .po z uzupełnionym każdym pustym msgstr. msgid i msgctxt nigdy się nie zmieniają, komentarze i odwołania zostają, a wpisy w liczbie mnogiej dostają tyle form, ilu potrzebuje język docelowy. Pierwsze stringi są za darmo, bez rejestracji; cały plik, do 5,000 stringów, kosztuje $5, jednorazowa płatność.
- Puste wpisy i wpisy fuzzy są tłumaczone; wpisy, które już przetłumaczyłeś, zostają bez zmian
- Wpisy msgid_plural dostają msgstr[0], msgstr[1] … dla języka docelowego, z Plural-Forms w nagłówku
- msgctxt, komentarze tłumacza (#.) i odwołania (#:) są wysyłane jako kontekst i zachowywane w pliku
- Placeholdery php-format, c-format i python-format są sprawdzane w każdym stringu
- Działa z wtyczkami i motywami WordPressa oraz projektami w Django, Pythonie, PHP i C
{
"home.greeting": "Good morning, {name}Buenos días, {name}",
"home.nearby": "{count, plural, =0 {No trails near you yet} one {# trail near you} other {# trails near you}}{count, plural, =0 {Aún no hay rutas cerca de ti} one {# ruta cerca de ti} other {# rutas cerca de ti}}",
"trail.offline_done": "<b>{name}</b> is saved on this phone. You can use the map without a signal.<b>{name}</b> está guardado en este teléfono. Puedes usar el mapa sin señal.",
"trail.share_text": "I just finished {trail} with Trailbook! {km} km and {meters} m up. 🥾¡Acabo de terminar {trail} con Trailbook! {km} km y {meters} m de subida. 🥾",
"saved.empty": "You have not saved any trails yet.\nTap the heart on a trail to keep it here.Aún no has guardado ninguna ruta.\nToca el corazón en una ruta para guardarla aquí."
}
Żółty: placeholdery i składnia liczby mnogiej ICU, sprawdzane w każdym ciągu. Turkusowy: tagi, znaki ucieczki i emoji, bez zmian.
Te same klucze. Te same placeholdery. Nowy język.
Zmieniają się tylko wartości. Plik wraca z tym samym zagnieżdżeniem i kolejnością, pod nazwą es.json, a każdy ciąg, który zgubi placeholder, jest tłumaczony ponownie, zanim trafi do Twojego builda.
Aplikacja demo wymyślona na potrzeby tej strony; hiszpańskie teksty to prawdziwy wynik działania narzędzia, z pliku z 85 ciągami.
Od szablonu POT do pliku PO
Plik .pot to lista stringów, które projekt wymaga przetłumaczyć, z pustym msgstr w każdym wpisie. Prześlij go, wybierz język, a dostaniesz .po z uzupełnionym nagłówkiem: Language, linią Plural-Forms dla tego języka i kodowaniem UTF-8. Plik dostaje nazwę zgodną z językiem, na przykład myplugin.pot zmienia się w myplugin-de.po; zmień ją na taką, jakiej oczekuje Twój projekt, np. myplugin-de_DE.po dla WordPressa, i skompiluj do .mo swoim zwykłym narzędziem.
Formy liczby mnogiej i wpisy fuzzy
Języki liczą na różne sposoby. Angielski ma dwie formy; polski i rosyjski używają w gettext trzech; arabski sześciu. Dla każdego wpisu w liczbie mnogiej tłumacz dostaje formy języka docelowego wraz z przykładowymi liczbami ("forma 1: 2, 3, 4, 22") i pisze po jednym stringu na każdą formę. Jeśli Twój plik .po ma już nagłówek Plural-Forms dla tego samego języka, używana jest ta reguła.
Wpisy oznaczone jako fuzzy są tłumaczone ponownie; flaga fuzzy i stare linie #| msgid są usuwane, a inne flagi, takie jak php-format, zostają. Przestarzałe wpisy #~ pozostają nietknięte.
Jak działa narzędzie, ile kosztuje i jak traktujemy Twoje pliki, znajdziesz na stronie narzędzia: Tłumacz plików lokalizacyjnych. Ceny wszystkich narzędzi znajdziesz w dziale cennik.
Ostatnia aktualizacja:
Pytania i odpowiedzi
Czy nadpisze moje istniejące tłumaczenia?
Nie. Wpisy, które mają już msgstr i nie są fuzzy, zostają dokładnie takie, jakie są; tłumaczone są tylko wpisy puste i fuzzy.
Czy powstaje plik .mo?
Nie, dostajesz plik .po. Skompiluj go za pomocą msgfmt, Poedit albo polecenia swojego frameworka, na przykład wp i18n make-mo lub compilemessages w Django.
Czy placeholdery printf są bezpieczne?
Każde %s, %d, %1$s i %(name)s z msgid musi znaleźć się w tłumaczeniu. String, który któreś straci, jest tłumaczony ponownie; jeśli nadal się nie uda, jego msgstr zostaje taki, jaki był (pusty lub fuzzy), a string trafia na listę, więc gettext wraca do tekstu źródłowego zamiast pokazywać uszkodzony string.
Ile to kosztuje?
Pierwsze ciągi tekstu są za darmo. Cały plik, do 5,000 ciągów, kosztuje $5 (jednorazowa płatność), bez subskrypcji. Małe zlecenia to wyjątek: zlecenie do 300 ciągów jest za darmo w całości, razem z pobieraniem plików.