2010-06-04 11 views
10

Opracowałem duży portal biznesowy. Właśnie zdałem sobie sprawę, że potrzebuję mojej strony w innym języku. Zbadałem dostępne rozwiązania, takie jak: Jak tłumaczyć witrynę w innym języku? (ASP .NET, C#)

  • Używane kontrolki osób trzecich w mojej witrynie. (Nie pasuje do punktu widzenia SEO, nie chcę pokazywać firmowych nazw marek.)
  • Twórz pliki zasobów dla każdego języka. (Dużo pracy wymaga restrukturyzacji stron w celu użycia tekstu z plików zasobów Co z danymi wprowadzonymi przez użytkownika, takimi jak opis firmy.)
  • Czy są dostępne inne opcje.
    Myślałem o rozwiązaniu takim, jak kiedy strona jest tworzona po stronie serwera, to mógłbym ją przetłumaczyć przed odesłaniem do klienta. Czy jest jakiś sposób, aby to zrobić? (Aby przetłumaczyć wszystko, w tym dane dodane z baz danych lub za pomocą kodu, i bez wpływu na projekt).

    +2

    miarę Wiem, że dla zasobów statycznych ludzie zwykle używają mechanizmu zasobów ASP.NET, a dla treści generowanych przez użytkowników można, na przykład, mieć aplety podobne do CMS, gdzie mają wersje tej samej strony dla każdego języka z suplikacją i d każda wersja jest ręcznie edytowana przez osobę odpowiedzialną. Jeśli chodzi o automatyczne tłumaczenie, możesz spróbować zintegrować go z Google Translate lub czymś w tym rodzaju. – axk

    Odpowiedz

    14

    Jeśli naprawdę potrzebujesz przetłumaczyć swoją aplikację, będzie to wymagało ciężkiej, żmudnej pracy. Nie ma magicznej kuli.

    Pierwszą rzeczą, którą musisz zrobić, to przekształcić zwykły tekst w znacznikach na asp: Zlokalizuj formanty. Korzystając z kontrolki Localize, możesz pozostawić istniejące znaczniki <span> i zastąpić tekst wewnątrz nich. Naprawdę nie da się tego obejść. Wyszukiwanie i zamiana Visual Studio obsługuje dopasowywanie wyrażenia regularnego, które może ci w tym pomóc, lub możesz użyć programu Resharper (patrz poniżej).

    Pierwsze podejście polegałoby na pobraniu aplikacji do zakupów open source o nazwie nopCommerce i sprawdzeniu, jak radzą sobie z lokalizacją. Przechowują swoje ciągi w bazie danych i mają interfejs do edycji języków. Podobne podejście może ci się przydać.

    Alternatywnie, jeśli chcesz używać plików zasobów, są dwa narzędzia, które polecam oprócz Visual Studio: Resharper 5 (Localization Features screencast) i Zeta Resource Editor. Są to kroki wziąłbym ją osiągnąć za pomocą tej metody:

    1. użyć „Generowanie lokalnych zasobów” narzędzie w visual studio dla każdej strony
    2. Korzystanie Resharper w „Przenieś Kopiuj do zasobów” na tekst w znaczników, aby je zlokalizować.
    3. Użyj Resharpera, aby wyszukać wszystkie możliwe do zlokalizowania ciągi w swoim kodzie i przenieść je również do pliku zasobów.
    4. Skorzystaj z Globalizacyjnych reguł analizy kodu/FXCop, aby znaleźć dodatkowe problemy, które możesz napotkać podczas formatowania liczb, dat itp.
    5. Gdy cały tekst znajduje się w plikach Resx, użyj Edytora zasobów Zeta, aby załadować wszystkie swoje pliki resx, dodawanie nowych języków i eksportowanie do tłumaczenia (lub automatyczne tłumaczenie, jeśli jesteś wystarczająco odważny).

    Użyłem tego podejścia na stronie przetłumaczonej na 8 języków (i rosnącej) z dziesiątkami stron (i rosnących). Jednak nie jest to witryna edytowalna przez użytkownika; strony są kontrolowane wyłącznie przez programistów.

    +0

    Dziękuję za szczegółową odpowiedź: –

    +1

    Jest to jeszcze trudniejsze - prawdopodobnie budujesz ciągi za pomocą stałego tekstu i trochę tekstu bazy danych, a ich kolejność będzie różna w tłumaczeniu, wymagając symboli zastępczych w tłumaczeniach Jeśli jest to strona internetowa, prawdopodobnie masz również tekst na niektórych obrazach, które będą musiały zostać zregenerowane –

    0

    Myślę, że powinieneś wypróbować Tłumacz Google.

    http://translate.google.com/translate_tools

    Bardzo proste i bardzo skuteczne.

    HTH

    +1

    Tak. To naprawdę świetne narzędzie. Ale nie chcę używać z powodów wymienionych w pierwszym punkcie. –

    +1

    To proste, ale nieskuteczne, nie jest dokładne i nie jest profesjonalne – lKashef

    0

    pewnością będzie więcej pracy, aby utworzyć pliki zasobów dla każdego języka - ale jest to opcja wybrałbym, gdyż daje możliwość bycia bardziej dokładne ci. Jeśli zrobisz to w ten sposób, możesz ręcznie przetłumaczyć tekst przez kogoś, kto mówi w danym języku (istnieje wiele firm oferujących tego typu usługi).

    Automatyczne systemy tłumaczeniowe często dają dobre wrażenie, co oznacza coś w innym języku, ale nigdy nie użyłbym ich podczas próby przedstawienia profesjonalnego wizerunku, ponieważ często to, co wydaje, nie ma sensu. Nic nie krzyczy "nieprofesjonalnie!" jak tekst, który nie ma sensu, ponieważ został automatycznie przetłumaczony.

    +0

    Tak. Ale nie mamy też plików zasobów dla języka angielskiego. Widziałem opcję Generuj lokalne zasoby, ale nie obejmuje ona zakresów, które pokazują większość etykiet interfejsu użytkownika :( –

    0

    Wybrałabym ścieżkę pliku zasobów nad opcją tłumaczenia, ponieważ znaczenie słów w języku może być bardzo kontekstowe, a nawet jeden błąd może podważyć wiarygodność Twojej witryny.

    Zgodnie z sugestią program Visual Studio może generować klucze plików zasobów meta dla większości elementów sterujących zawierających tekst, ale może pozostawiać ręczne wykonywanie pozostałych zadań, ale nie widzę łatwiejszego i bardziej niezawodnego rozwiązania.

    Nie sądzę, aby lokalizacja była łatwa do zautomatyzowania, ponieważ tekst przechowywany w bazie danych często powoduje zmiany w schemacie w celu umożliwienia obsługi wielu języków, a internetowy HTML często wymaga restrukturyzacji, aby poradzić sobie z obciętą lub zawiniętą etykietą i tekst przycisku, ponieważ na przykład przetłumaczono język niemiecki lub coś podobnego.

    Inne uwarunkowania: Ustawienia kultur - finansowe ograniczniki, formaty daty. Od prawej do lewej - niektóre języki, takie jak arabski, są pisane od prawej do lewej, co oznacza, że ​​strony wymagają ponownego przemyślenia, aby kontrolować pozycjonowanie, takie jak obrazy itp.

    Życzymy powodzenia, niezależnie od tego, co robisz.

    0

    skończyło się robi to w przykry sposób:

    • napisałem metodę rozszerzenia na klasy String o nazwie TranslateInto
    • W metodzie prerender strony za łapię wszystkie kontrolki rekursywnie na podstawie ich typu (typów które miałyby tekst)
    • Foreach przez nich i text.TranslateInto (SupportedLanguages.CurrentLanguage)
    • W mojej metody TranslateInto mam absurdalnie dużą switch z każdym ciągiem wyświetlane użytkownikowi i jego powiązanego tłumaczenia.

    To niezbyt ładne, ale zadziałało.

    +0

    To jeden ze sposobów zrób to. – Greg

    0

    duża obudowa przełącznika? użyj słownika/hashtable (oddzielnej instancji dla każdego języka), jest znacznie, dużo bardziej efektywny i szybki.

    +1

    Postaraj się, aby Twoja odpowiedź była bardziej zrozumiała. – Amar

    0

    Pracujemy z narzędziem CAT tłumaczeń (Computer Assisted Translation) o nazwie MemoQ, które pozwala nam przetłumaczyć tekst pozostawiając wszystkie znaczniki i kodowanie w miejscu. Jest to bardzo pomocne, gdy kolejność słów zmienia się podczas tłumaczenia z jednego języka na inny.

    Jest to również bardzo przydatne, ponieważ pozwala nam pracować z tłumaczami z całego świata, bez konieczności posiadania wiedzy technicznej. Pozwala nam to również na sprawdzenie tekstu tłumaczenia przez drugiego tłumacza.

    Używamy tego środowiska tłumaczenie tłumaczyć HTML, XML, InDesign, Word, itp

    1

    konwertować strony arabskiego języka lub inny język.

    Przejdź do:

    1-page design

    2-Tools

    3-Generowanie lokalnych zasobów

    4-uzyskać "App_LocalResources" obejmują "filename.aspx.resx"

    5-skopiuj plik i zmień nazwę na "filename.aspx.ar.resx", aby przekonwertować stronę na język arabski lub inny.

    nadzieję pomocny :)