Internacjonalizacja w projektach

głosy
44

Jak ty realizowane Internacjonalizacja (i18n) w rzeczywistych projektach pan pracował?

Wziąłem interes w tworzeniu oprogramowania międzykulturowej po przeczytaniu słynny post przez Joela, absolutnego minimum Każdy Programista absolutnie, pozytywnie musi wiedzieć O Unicode i zestawy znaków (bez wymówek!) . Mam jednak jeszcze w stanie wykorzystać to w rzeczywistym projekcie, oprócz upewniając użyłem napisów Unicode, gdzie to możliwe. Ale co wszystkie Unicode oraz zapewnienie Ci zrozumieć, co kodowania wszystko co pracować w to tylko wierzchołek góry lodowej i18n.

Wszystko Ja pracowałem do tej pory było do wykorzystania przez kontrolowanego zbioru US anglojęzycznych ludzi lub i18n po prostu nie było coś mieliśmy czas na pracę nad projektem przed pchania na żywo. Więc szukam porady lub opowieści wojennych ludzie mają na temat tworzenia oprogramowania bardziej zlokalizowaną w rzeczywistych projektach światowych.

Utwórz 04/08/2008 o 01:08
źródło użytkownik
W innych językach...                            


11 odpowiedzi

głosy
8

Pracowałem nad projektem dla mojego poprzedniego pracodawcy, że używany .NET i był zbudowany w formacie .resx używaliśmy. My w zasadzie miał plik, który miał wszystkie tłumaczenia w pliku .resx, a następnie wiele plików z różnych tłumaczeń. Konsekwencją tego jest to, że trzeba być bardzo sumienny o zapewnienie, że wszystkie ciągi znaków widocznych w aplikacji są przechowywane w .resx, a jeden zostanie zmieniony w każdej chwili trzeba zaktualizować wszystkie języki, które obsługuje.

Jeśli masz leniwy i nie powiadomi osoby odpowiedzialne za tłumaczenia, lub osadzić ciągi bez pośrednictwa systemu lokalizacyjnego, to będzie koszmar, aby spróbować go naprawić później. Podobnie, jeśli lokalizacja to musztarda po obiedzie, to będzie bardzo trudne do wprowadzenia. Konkluzja, jeśli nie masz wszystkie widoczne ciągi przechowywane zewnętrznie w standardowym miejscu, to będzie bardzo trudno znaleźć wszystko, co potrzebne, aby być lokalizowane.

Jedna uwaga, bardzo ściśle uniknąć łącząc widoczne ciągi bezpośrednio, takie jak

String message = "The " + item + " is on sale!";

Zamiast tego należy użyć czegoś podobnego

String message = String.Format("The {0} is on sale!", item);

Powodem tego jest to, że różne języki często zamówić słowa inaczej, a złączenie struny bezpośrednio potrzebny jest nowy build naprawić, ale jeśli użyto jakiegoś mechanizmu zastępczego ciąg jak wyżej, można zmodyfikować plik .resx (lub cokolwiek lokalizacja pliki używasz) dla danego języka, który musi zmienić kolejność słów.

Odpowiedział 04/08/2008 o 01:23
źródło użytkownik

głosy
15

Niektóre zabawne rzeczy:

  1. Posiadanie PHP i MySQL aplikacji, która działa dobrze z niemieckim i francuskim, ale teraz musi obsługiwać rosyjski i chiński. Myślę nad tym przejść do .NET, PHP jako wsparcie Unicode jest - moim zdaniem - nie bardzo dobry. Jasne, żonglerka dokoła z mbstring-funkcji utf8_de / koduje lub jest zabawa. Prawie tak zabawne, jak mając Freddy Krueger cię odwiedzić w nocy ...

  2. Zdając sobie sprawę, że niektóre języki są dużo bardziej gadatliwy niż inni. Niemiecki jest dużo bardziej gadatliwy niż zwykle angielskim, a widząc jak niemiecka wersja zniszczy interfejsu użytkownika, ponieważ zbyt mało miejsca przeznaczono nie była zabawa. Niektóre produkty zyskał sławę za ich twórcze sposoby, aby obejść, że z Oblivion „Schw.Tr.d.Le.En.W.” jest niezapomniany :-)

  3. Zabawy z formatów daty, woohoo! Tak, są rzeczywiście ludzie na świecie, którzy używają formatów daty, kiedy dzień przechodzi w środku. Baaardzo dużo zabawy próbuje dowiedzieć się, co 07/02/2008 ma na myśli, tylko dlatego, że niektórzy użytkownicy mogą uwierzyć, może to być 02 lipca ... Ale wtedy znowu, wy nad stawem może uwierzyć to samo o użytkownikach, którzy umieścić miesięcy w środkowej :-P, zwłaszcza dlatego, że w języku angielskim, 2 lipca brzmi dużo lepiej niż 2 lipca, coś, co nie neccessarily zastosowania do innych języków (czyli w języku niemieckim, byś nigdy nie mów Juli 2 ale zawsze Zweiter Juli). Używam 2008-02-07 miarę możliwości. To jasne, że oznacza to, że 07 lutego i sortuje poprawnie, ale dd / mm vs. MM / DD może być naprawdę trudny problem.

  4. Anoter rzeczą zabawa, formaty liczb ! 10.000,50 vs 10,000.50 vs. 10 000,50 vs. 10'000,50 ... To jest mój największy koszmar teraz, mając do wspierania environent multi-kulturowego, ale nie mając żadnych sposób wiarygodny wiem jaki numer formatu użytkownik będzie użyty.

  5. Formalny lub nieformalny. W jakimś języku, istnieją dwa sposoby na adres osoby, sposób formalny i bardziej nieformalny sposób. W języku angielskim, wystarczy powiedzieć „ty”, ale w niemieckim trzeba zdecydować między formalnym „Sie” i nieformalnego „Du”, tym samym dla francuskiego TU / Vous. Jest to zazwyczaj bezpieczny zakład wybrać drogę formalną, ale to jest łatwo przeoczyć.

  6. Kalendarze. W Europie, pierwszy dzień tygodnia jest poniedziałek, podczas gdy w USA jest to niedziela. Kalendarz Widgety są ładne. Pokazuje kalendarz z niedzieli na sobotę po lewej i po prawej stronie do europejskiej użytkownik nie jest tak ładny, to dezorientuje je.

Odpowiedział 04/08/2008 o 01:35
źródło użytkownik

głosy
5

Właśnie słuchania Podcast Scott Hanselman rano, gdzie mówi o internacjonalizacji, zwłaszcza naprawdę trudnych rzeczy, jak turecki (z jego cztery I) I Thai. Również Jeff Atwood miał stanowisko :

Odpowiedział 04/08/2008 o 16:04
źródło użytkownik

głosy
48

Minęło trochę czasu, więc to nie jest wyczerpujące.

Zestawy znaków

Unicode jest super, ale nie można uciec z ignorując inne zestawy znaków. Domyślną zestaw znaków w systemie Windows XP (w języku angielskim) jest CP1252. W internecie, nie wiem co to przeglądarka wyślesz (choć mam nadzieję, że twój zbiornik będzie obsługiwać większość tego). I nie zdziw się, gdy istnieją błędy w cokolwiek realizacja używasz. Zestawy znaków może mieć ciekawe interakcje z nazwami po przeniesieniu się do między maszynami.

tłumaczenia Strings

Tłumacze są, ogólnie rzecz biorąc, nie koderów. Jeśli wysyłasz plik źródłowy do tłumacza, będą go złamać. Napisy powinny być wyodrębnione do zasobów plików (np pliki właściwości w Java lub DLL zasobów w Visual C ++). Tłumacze powinni mieć pliki, które są trudne do złamania i narzędzia, które nie pozwalają im je łamać.

Tłumacze nie wiem, gdzie ciągi pochodzą w produkcie. Jest to trudne do przetłumaczenia ciąg bez kontekstu. Jeśli nie dostarczają wskazówek, jakość tłumaczenia będzie cierpieć.

Choć na temat kontekstu, można zobaczyć ten sam ciąg „foo” pojawiają się w wielu razy i myślę, że byłoby bardziej efektywne, aby wszystkie instancje w punkcie UI do tego samego zasobu. To jest zły pomysł. Słowa mogą być bardzo kontekstowa w niektórych językach.

Tłumaczenia ciągi kosztuje. Jeśli wydać nową wersję produktu, ma sens, aby odzyskać stare wersje. Mieć narzędzia do odzyskania sznurki od starych plików zasobów.

konkatenacji ciąg i ręczne manipulowanie ciągi powinny być zminimalizowane. w stosownych przypadkach korzystać z funkcji formatowania.

Tłumacze muszą być w stanie zmodyfikować skróty klawiszowe. Ctrl+ PJest druk w języku angielskim; Niemcy użyć Ctrl+ D.

Jeśli masz proces tłumaczenia, że ​​ktoś wymaga ręcznego wycinania i wklejania ciągi w dowolnym momencie, prosisz się o kłopoty.

Daty, godziny, Kalendarze, waluty, ilość formatów, Strefy czasowe

Mogą wszystkim różnią się od kraju do kraju. Przecinek może być wykorzystywany w celu określenia miejsc po przecinku. Czasy mogą być w notacji 24hour. Nie każdy używa kalendarza gregoriańskiego. Musisz być jednoznaczna, zbyt. Jeśli dbasz wyświetlanie daty jako DD / MM / YYYY dla USA i DD / MM / YYYY dla Wielkiej Brytanii na swojej stronie, terminy są niejednoznaczne, chyba że użytkownik wie, że zrobiłeś to.

szczególnie waluty

Funkcje Locale przewidziane w bibliotekach klasy daje lokalny symbol waluty, ale nie można po prostu trzymać funta (sterling) lub symbol euro przed wartością, która daje cenę w dolarach.

Interfejsy użytkownika

Układ powinien być dynamiczny. Nie tylko są ciągi, które mogą podwoić długość na tłumaczeniu, cały interfejs użytkownika może być konieczne odwrócony (hebrajski, arabski) tak, że kontrole biegnie od prawej do lewej. I to zanim dotrzemy do Azji.

Testowanie przed Translation

  • Użyj statycznej analizy kodu, aby zlokalizować problemy. Na minimum, wykorzystanie narzędzi wbudowanych w IDE. (Użytkownicy Eclipse można przejść do okna> Preferencje> Jawa> Compiler> Błędy / ostrzeżenia i sprawdzić, czy nie Zlecanie strun).
  • Smoke test, symulując tłumaczenie. To nie jest trudne do analizowania pliku zasobów i zastąpić ciągi z pseudo-przetłumaczony wersji, która podwaja długość i wstawia znaki odjazdowe. Nie trzeba mówić językiem do korzystania z systemu operacyjnego obcego. Nowoczesne systemy powinny pozwolić zalogować się jako użytkownik z przetłumaczonych ciągów zagranicznej i zagranicznych lokalizacji. Jeśli jesteś zaznajomiony z systemu operacyjnego, można dowiedzieć się, co robi, co nie znając ani jednego słowa z tego języka.
  • Mapy klawiatury i ustawić znak odniesienia są bardzo przydatne.
  • Wirtualizacja byłoby tutaj bardzo przydatna.

Problemy nietechniczne

Czasem trzeba być wrażliwe na różnice kulturowe (przestępstwo lub niezrozumienie może spowodować). Błędem często można zobaczyć jest użycie flagi jako wizualnego wskaźnika Wybór języka strony lub geografii. Chyba że chcesz, aby oprogramowanie uznaniu stron w globalnej polityce, jest to zły pomysł. Jeśli były francuski i zaproponował opcję dla języka angielskiego z flagą św (fladze Anglii jest czerwony krzyż na białym polu), może to spowodować zamieszanie dla wielu Anglików - Zakładamy podobne problemy powstaną z języków obcych i krajach , Ikony muszą być weryfikowane na znaczenie kulturowe. Co robi kciuk w górę lub zielonym kleszcza na myśli? Język powinien być względnie neutralny - adresowanie użytkowników w określony sposób może być akceptowalne w jednym regionie, ale za niegrzeczne w innym.

Zasoby

C ++ i Java programiści mogą znaleźć na stronie internetowej ICU przydatne: http://www.icu-project.org/

Odpowiedział 04/08/2008 o 18:58
źródło użytkownik

głosy
0

Jedna strona używam ma metody przeliczeniowej właściciel nazywa „wiki + maszyna tłumaczenie”. Jest to strona oparta społeczność więc jest oczywiście różny do potrzeb firm.

http://blog.bookmooch.com/2007/09/23/how-bookmooch-does-its-translations/

Odpowiedział 10/09/2008 o 16:12
źródło użytkownik

głosy
1

Myślę, że wszyscy pracujący w internacjonalizacji powinni być zaznajomieni ze wspólnym Dane lokalne repozytorium, które jest obecnie podprojekcie Unicode:

Common Locale danych repozytorium

Te ludzie pracują ciężko, aby ustanowić standardowe źródło informacji dla wszystkich rodzajów spraw i18n: Waluta, nazw geograficznych, mnóstwo rzeczy. Każdy projekt, który jest utrzymanie własnej podstawowych danych lokalnych zważywszy, że ten projekt istnieje, jest dość zwariowany, IMHO.

Odpowiedział 18/09/2008 o 20:25
źródło użytkownik

głosy
3

Oprócz wszystkich wcześniejszych wskazówek, należy pamiętać, że i18n nie chodzi tylko o zmianę słowa do ich odpowiedników w innych językach, zwłaszcza dla niełacińskie języków alfabetów (koreański, arabski), które pisanych od prawej do lewej, więc całe UI będzie musiał odpowiadać, jak

  • przedmiot 1
  • pozycja 2
  • pozycja 3

musiałby być

tekst arabski 1 -

tekst arabski 2 -

tekst arabski 3 -

(Odwrócone lista pocisk nie wydają się działać: P)

które mogą być koszmarem UI jeśli system ma zastosowanie zmian dinamically gdy użytkownik zmienia język używany.

Innym bardzo ciężko jest to, aby przetestować różne języki, a nie tylko za poprawność słowa, ale ponieważ języki, takie jak koreański mają zwykle większą czcionkę dla swoich bohaterów może to prowadzić do konkretnych błędów językowych (jak „SAVE” tekst na przycisku jest większy niż sam przycisk jakiegoś języka).

Odpowiedział 22/09/2008 o 00:44
źródło użytkownik

głosy
0

Jedną rzeczą, nikt jeszcze nie wspomniał to struny z jakiejś części warying jak w „Urządzenie arive w 5 dni” lub „W poniedziałek coś się dzieje.” gdzie 5 i poniedziałek będzie się zmieniać w zależności od stanu. To nie jest dobry pomysł, aby podzielić te w dwóch i złączyć je. Z jednym tylko różnej części i dobrej dokumentacji można uciec z nim, z dwoma różnymi częściami nie będzie jakiś język, który preferes aby zmienić ich kolejność.

Odpowiedział 07/10/2008 o 11:56
źródło użytkownik

głosy
2

Jednym z śmieszniejsze rzeczy do odkrycia: kursywa i pogrubienie makrup tekst nie działa z CJK (chiński / japoński / koreański) znaków. Oni po prostu stają się nieczytelne. (OK, nie mogłem naprawdę przeczytać je przed albo, ale przede wszystkim pogrubienie tylko tworzy plamy atramentu)

Odpowiedział 14/10/2008 o 13:39
źródło użytkownik

głosy
1

Proponuję użyć czegoś podobnego 99translations.com aby utrzymać swoje tłumaczenia. W przeciwnym razie nie będzie w stanie powiedzieć, co z tłumaczeń są aktualne w każdym języku.

Odpowiedział 27/12/2008 o 05:05
źródło użytkownik

głosy
1

Kolejnym wyzwaniem będzie przyjmowanie wejściowych od użytkowników. W wielu przypadkach jest to ułatwione przez przetwarzanie wejściowej dostarczonej przez system operacyjny, takich jak IME w systemie Windows, który działa w sposób przejrzysty wspólnych widgetów tekstowych, ale usługa ta nie będzie dostępna dla każdej możliwej potrzebie.

Odpowiedział 27/12/2008 o 07:48
źródło użytkownik

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more