Co to jest format pliku MO?
.mo to plik programistyczny używany do przechowywania skompilowanego binarnego katalogu tłumaczeń. Pliki .mo nie są czytelne dla człowieka - stanowią binarny odpowiednik edytowalnego przez człowieka pliku źródłowego .po. Tłumacze edytują plik .po i kompilują go do formatu .mo za pomocą polecenia msgfmt; aplikacja ładuje następnie plik .mo w czasie wykonywania, aby wyświetlić przetłumaczony tekst. Bezpośrednia modyfikacja pliku .mo sprawi, że stanie się on bezużyteczny.
Dostęp do danych
Pliki .mo nie są szyfrowane ani chronione przed odczytem. Niektóre edytory hex mogą wyświetlać surowe dane binarne, ale właściwym sposobem na odzyskanie czytelnych dla człowieka ciągów znaków jest polecenie msgunfmt, które dekompiluje plik .mo z powrotem do źródła .po. Wewnętrznie plik .mo zaczyna się od cztero-bajtowej sygnatury (magic number 0x950412DE w formacie little-endian), słowa wersji oraz dwóch tablic przesunięć wskazujących na tablice ciągów oryginalnych (msgid) i przetłumaczonych (msgstr). Opcjonalna tablica mieszająca (hash table) umożliwia szybkie wyszukiwanie w czasie rzeczywistym.
Bezpieczeństwo
RYZYKO: LOWPlik .mo zawiera tylko ciągi tłumaczeń i metadane - nie ma w nim kodu wykonywalnego, więc sam plik jest nieszkodliwy. Jedyna praktyczna uwaga: złośliwy plik .mo umieszczony w motywie lub wtyczce mógłby wstrzyknąć wprowadzający w błąd tekst interfejsu (np. zmienione linki lub instrukcje), dlatego należy używać plików językowych tylko z oficjalnych źródeł motywów/wtyczek, a nie z nieznanych stron z „tłumaczeniami”.
Szczegóły formatu
w pigułce- Autodesk Maya ASCII/dane obiektów - Niektóre potoki i eksporterzy Maya używają rozszerzenia .mo dla danych obiektów - niezwiązane z gettext.
- Plik obiektowy Modula-3 - Historyczny skompilowany plik obiektowy dla języka Modula-3; nazwa bazy danych odzwierciedla to rzadkie znaczenie.
- Zrzuty obiektowe Motorola / firmware - Sporadycznie spotykane w przypadku binariów Motorola; niszowe i niezwiązane.
Programy otwierające pliki MO
Szczegóły techniczne
specyfikacja| Typ formatu | Binarny skompilowany katalog tłumaczeń (tablica ciągów indeksowana hashem) |
| Magic number | 0x950412DE (little-endian: DE 12 04 95 na przesunięciu 0; pliki big-endian przechowują 95 04 12 DE) |
| Kolejność bajtów | Little-endian lub big-endian; czytnik wykrywa kolejność bajtów na podstawie sygnatury podczas analizy |
| Typ MIME | application/x-gettext-translation |
| Kodowanie znaków | UTF-8 (najczęstsze); faktyczne kodowanie zadeklarowane w metadanych pustego wpisu msgid |
| Wpis metadanych | Wpis z pustym msgid przechowuje Project-Id-Version, Content-Type, kodowanie i reguły Plural-Forms |
| Wersja formatu | Wersja 0 (zarówno słowa wersji głównej, jak i podrzędnej wynoszą 0); wersja 1 jest zdefiniowana, ale rzadko stosowana |
| Tablica mieszająca | Opcjonalna tablica mieszająca o stałym rozmiarze osadzona w pliku dla wyszukiwania O(1) w czasie rzeczywistym |
| Narzędzie do kompilacji | msgfmt (GNU gettext) kompiluje .po → .mo |
| Narzędzie do dekompilacji | msgunfmt (GNU gettext) odzyskuje plik .po z pliku binarnego .mo |
| Typowy rozmiar pliku | 5 KB - 2 MB w zależności od liczby przetłumaczonych fraz |
| Obsługa platform | Linux, macOS, Windows, BSD - każdy system operacyjny z oprogramowaniem opartym na gettext |
| Typowa ścieżka wdrożenia | Instalowany jako <domena>.mo w katalogu LC_MESSAGES w strukturze lokalizacji (np. locale/pl/LC_MESSAGES/app.mo) |
| Wydano | 1995 (GNU gettext) |
| Najnowsza wersja | MO format revision 0 (still current); revision 1 defined but rarely used |
| Otwarty standard | Tak · bezpłatny (royalty-free) |
| Specyfikacja | www.gnu.org |
Konwersje MO
Pytania i odpowiedzi społeczności
pytania użytkownikówBrak pytań - bądź pierwszą osobą, która zapyta o pliki MO.