2013-01-24 13 views
7

Rozwijamy aplikację, która działa na różnych platformach (Windows, Windows RT, MacOSX, iOS, Android).Czy istnieje sposób na zlokalizowanie aplikacji na różnych platformach?

Problem polega na tym, jak zarządzać różnymi lokalizacjami na różnych platformach w prosty sposób. Pliki językowe na różnych platformach mają różne formaty (niektóre są oparte na XML, inne są prostymi parami klucz-wartość i inne są całkowicie zwariowanymi formatami jak na MacOS)

Jestem pewien, że nie jesteśmy pierwszą firmą z ten problem, ale nie byłem w stanie znaleźć łatwego w użyciu rozwiązania umożliwiającego posiadanie jednego "źródła danych", w którym łańcuchy są gromadzone w różnych językach (najlepiej byłoby to interfejs użytkownika dla tłumaczy), a następnie można eksportować do różnych formatów dla różnych platform.

Czy ktoś ma rozwiązanie tego problemu?

Pozdrowienia Alexander

+2

myślę, że można stworzyć swój własny format i swoją lokalizację Mechanizm, że owijanie na wszystkich platformach. Nie jest to łatwe, ale dostępne – gaussblurinc

Odpowiedz

2

Polecam używanie GNU Gettext toolchain za zarządzanie i przy użyciu wykonawczym albo

  • jakiś alternatywny wdrożenie do wykonywania czytania jak Boost.Locale,
  • własna implementacja (format .mo jest dość trywialne) lub
  • wykorzystanie Translate Toolkit, aby przekonwertować katalogi wiadomości na inny format według własnego uznania.

Nie można używać komponent GNU Gettextlibintl, bo to jest na licencji LGPL i zarówno pod względem AppStore firmy Apple Store i Windows Live są niezgodne z tą licencją. Ale naprawdę jest trywialne, aby ponownie wdrożyć bit, którego potrzebujesz w czasie wykonywania.

Translate Toolkit faktycznie reimplements wszystkie lub większość GNU Gettext i obsługuje wiele dodatkowych formatów lokalizacją, ale format, Gettext .po ma większość darmowych narzędzi dla niego (np poedit dla lokalnych edycji i Weblate do edycji online) więc polecam trzyma się go w każdym razie . Przeczytaj też instrukcję obsługi, opisującą zamierzony proces i uzasadnienie.

Mam dość dobre doświadczenia z toolchainem. Łatwe jest pisanie skryptu Translate Toolkit, gdy potrzebujesz specjalnego przetwarzania, takiego jak wyodrębnianie tłumaczonych ciągów z niestandardowych plików zasobów, a numer Weblate jest łatwy w użyciu dla twoich tłumaczy, szczególnie gdy polegasz na partnerach biznesowych i testerach w różnych krajach, w większości takich tłumaczeń jak my.

Translate Toolkit obsługuje również wyodrębnianie z HTML-owych ciągów tłumaczonych, więc ten sam proces może być użyty do tłumaczenia Twojej witryny.

0

Zastrzeżenie: Jestem CTO i współzałożyciel na Tethras, ale postaram się odpowiedzieć na to w sposób, który nie jest po prostu „Skorzystaj z naszej usługi”.

Jak wspomniano powyżej, naprawdę musisz znormalizować zawartość na wszystkich platformach, jeśli chcesz mieć kompleksowe rozwiązanie do zarządzania zlokalizowaną zawartością. Może to wymagać wiele pracy i wymagałoby znacznego kodowania i skryptowania oraz wywoływania różnych narzędzi z różnych zestawów SDK, aby uzyskać wspólny format, który obsługiwałby potrzeby lokalizacyjne wszystkich różnych formatów plików, które trzeba obsługiwać. Długość i złożoność mojego poprzedniego zdania jest odwrotnie proporcjonalna do ilości pracy, którą musiałbyś zrobić, aby znaleźć korzystne rozwiązanie dla tego wszystkiego.

Na platformie Tethras zbudowaliśmy platformę, która eliminuje potrzebę korzystania z wieloplatformowych wydawców oprogramowania. Obsługujemy wszystkie natywne formaty z platform, które wymieniono powyżej, i można wykorzystać tłumaczenia z jednego formatu plików na inny. Na przykład przetłumacz zawartość Localizable.strings z aplikacji na system iOS na wiele języków, a następnie prześlij odpowiedni plik strings.xml z systemu Android lub foo.resx z systemu Windows RT do systemu i automatycznie skorzysta z tłumaczeń. Wszelkie nieprzetłumaczone ciągi będą oznaczane flagą i możesz zamówić aktualizacje tych ciągów.

W efekcie Tethras jest systemem CMS dla zlokalizowanej treści w wielu różnych formatach plików macierzystych.

+0

Tethras wygląda naprawdę fajnie, ale czy istnieje możliwość udostępniania ciągów między projektami? Jeśli nie, to nie rozwiąże naszego problemu ... –

+0

Tak, za wszelką cenę możesz udostępniać tłumaczenia w różnych projektach. Cała możliwa do przetłumaczenia treść zostaje wyodrębniona z natywnych formatów plików przesłanych na konto. System identyfikuje pasujące ciągi w całym projekcie i pomiędzy plikami i automatycznie wykorzystuje istniejące tłumaczenia. Na przykład, jeśli tłumaczymy ciągi znaków X w Localizable.strings na potrzeby aplikacji na iOS, a Ty prześlesz ciągi Y w ciągach znaków .xml dla aplikacji na Androida, system zidentyfikuje wszystkie pasujące ciągi w języku angielskim między dwoma plikami. Tłumaczenia iOS zostaną automatycznie przeniesione do pliku strings.xml. –

1

Zrobiłem projekt na iPhone'a i Androida, który miał wiele tłumaczeń i myślę, że mam dokładnie to, czego szukasz.

Sposób, w jaki to rozwiązałem, to umieszczenie wszystkich tekstów tłumaczenia w arkuszu kalkulacyjnym Excel i użycie makra VBA do wygenerowania stamtąd plików translacyjnych .string i .xml. Można pobrać moim przykładzie arkusza Excel VBA makro plusa tutaj:

http://members.home.nl/bas.de.reuver/files/multilanguage.zip

Niedawno Dodałem także wstępnych Visual Studio .resx wyjście, mimo to przetestowane.

edycja: btw również mój javascript xcode/eclipse converter może być przydatny ..

+0

Grałem trochę z konwerterem, ale całkowicie pomija ważne przypadki narożne, takie jak ciągi zawierające znaki nowej linii, cytaty, znaki cofania i podobne. Tak, widziałem całkiem sporo takich sznurków na wolności. –

+0

Dobra, może mogę zgadnąć, jak powinny wyglądać struny z liniami lub cytatami, ale z tyłu ...? Zajmę się tym, jeśli możesz przesłać mi niektóre z tych narożnych przypadków, więc plik .xml lub .strings z niektórymi z tych ciągów wyjątków, mój adres e-mail można znaleźć tutaj http://members.home.nl/bas .de.reuver / – BdR

Powiązane problemy