2011-06-02 9 views
32

Mam projekt open source (here), którego wersja documentation jest obecnie w języku francuskim. Dokumentacja jest generowana z komentarzy XML w kodzie, używając Sandcastle. Teraz chciałbym przetłumaczyć dokumentację na język angielski i dostarczyć dokumentację w obu językach, ale tak naprawdę nie wiem od czego zacząć ...Jak zlokalizować dokumentację biblioteki .NET

  • Czy muszę wyodrębnić komentarze XML z kodu i umieścić je w osobnym pliku? Jeśli tak, czy są jakieś narzędzia do automatyzacji procesu?
  • Używam Sandcastle Help File Builder do budowania dokumentacji; czy muszę utworzyć oddzielny projekt, aby zbudować dokument w języku angielskim, czy może to zrobić z tego samego projektu?
  • Czy są jakieś narzędzia pomocne w procesie tłumaczenia? na przykład wyświetlić oryginał i przetłumaczony dokument obok siebie?

Jestem również zainteresowany linki dotyczące sposobu sporządzenia dokumentacji wielojęzyczny, bo nie mógł znaleźć coś pożytecznego w Google ...

+0

to jest powód, dlaczego robimy wszystkie komentarze w języku angielskim :) –

+0

@Andreas, to co zwykle zrobić ... ale ten projekt jest szczególnym przypadkiem, jak to było pierwotnie przeznaczone dla członków społeczności francuskojęzycznej (Developpez .com). Teraz chciałbym poszerzyć publiczność tej biblioteki ... –

Odpowiedz

15

Jedną ze strategii, które wymagają pewnej koordynacji z plików Sandcastle XSLT, byłoby użyć atrybutu xml:lang na dokumentacji XML. Visual Studio 2010 pozwala na zachowanie wielu tagów (chociaż możesz otrzymać skargi na duplikaty tagów).

/// <summary> 
/// Gets or sets the fill size of the load operation. 
/// </summary> 
/// <summary xml:lang="fr"> 
/// Obtient ou définit la taille de remplissage de l'opération de chargement. 
/// </summary> 
public int FillSize 
{ 
    get; 
    set; 
} 

wyjście Wynikające:

<member name="P:Namespace.MyAttribute.FillSize"> 
    <summary> 
    Gets or sets the fill size of the load operation. 
    </summary> 
    <summary xml:lang="fr"> 
    Obtient ou définit la taille de remplissage de l'opération de chargement. 
    </summary> 
</member> 
+0

Dzięki, lubię to podejście! Jest podobny do rozwiązania sugerowanego przez Remi Bourgarela, ale czuje się czystszy ... –

+0

Nigdy nie znalazłem czasu, aby go wypróbować, ale jest to odpowiedź, którą najbardziej lubię, więc ją akceptuję;) –

+0

Nie byłem w stanie znaleźć jakąkolwiek dokumentację o tym, jak to zrobić. Kiedy próbowałem, po prostu pojawiały się oba języki w moim pliku chm. Jakieś wskazówki, jak zrobić "koordynację z plikami Sandcastle XSLT"? –

1

Musisz się kłopotliwe. Tak naprawdę nie ma "najlepszej praktyki", ponieważ większość oprogramowania jest opracowywana w języku angielskim.

W związku z tym, jeśli spojrzeć na inne dokumenty wielojęzyczne, w jaki sposób radzą sobie z tym problemem?

Weź międzynarodowe standardy. Coś jak ISO 9001. Masz ten sam dokument (ISO 9001:2008) dostępny w języku angielskim, francuskim, rosyjskim itd.

Lub ISO 5247-2 ma jeden dokument w języku angielskim + francuski + rosyjski.

Jak radzić sobie ze zmianami? Powiedz, że dam ci łatkę, ale moje komentarze są tylko po angielsku, jaki byłby twój proces? Co jeśli masz łatkę A w języku angielskim, poprawkę B w języku hiszpańskim i poprawkę C w języku angielskim + francuskim?

Inną opcją jest rozwidlenie projektu. Czy główna gałąź jest w języku francuskim z najnowszą wersją, a następnie zaktualizować inne języki w swoim czasie?

Oddzielenie komentarzy w kodzie źródłowym byłoby kłopotliwe w utrzymaniu. Zasadniczo używasz pliku zasobów w swoim skrypcie kompilacji.

Czy to już rozwiązany problem? Jeśli myślisz o jakimkolwiek dużym, wielojęzycznym projekcie o otwartym kodzie źródłowym, jak sobie z nim radzą?

6

Zrobiliśmy to tak:

  • Włożyliśmy "< PL>" tag Wszakże nasza dokumentacja tagu jak poniżej:

    /// <summary> 
    /// Description du produit 
    /// <EN>Product's description</EN> 
    /// </summary> 
    
  • następnie w sandcastle pliku XSLT (rozwój /presentaton/vs2005/transforms/main_sandcastle.xsl) przeszliśmy do szablonu pasującego do "param" (linia 95 dla nas) i dodaliśmy

    <span class="trad"> 
        <xsl:value-of select="msxsl:node-set(.)/EN"/> 
    </span> 
    
  • A następnie można zmienić css, aby wyświetlić tłumaczenie w ulubionym kolorze.

+0

To wygląda obiecująco, dzięki! Ale wyświetla oba języki na tej samej stronie, prawda? Chciałbym wygenerować 2 osobne dokumentacje ... –

+0

Rzeczywiście wyświetla obie dokumentacje, ale można zbudować dwa szablony dla zamków z piasku, jeden wyświetlający treść znacznika EN, a drugi nie. Lub możesz obsłużyć to poprzez css, ale jest to trochę brudne. –

+0

BTW, czy umieścisz ten znacznik EN tylko w podsumowaniu lub we wszystkich polach dokumentacji (parametry, wartości zwracane, itp.)? –

2

Jedną z możliwych strategii będzie o domyślny język w kodzie, a tłumaczenia zasilające osobno.

Bez względu na to, które języki są zlokalizowane, wolałbym wybrać język angielski jako domyślny/zastępczy język dokumentacji.

struktura Kodeks przewiduje indeksowanie dla bazy tłumaczeń, na przykład:

Type, NameWithNamespace, OptionalParameterName 

"member", "MyProject.Core.Loader.FillSize", ... 

Można mieć narzędzie, które pozwoli na tłumaczenia w interfejsie dla każdego obszaru nazw/członka.

Możesz mieć oddzielny zespół tłumaczy przeglądających pozycje, które nie mają jeszcze tłumaczenia, i dostarczają tłumaczenia.

Możesz rozpocząć wysyłkę przetłumaczonej dokumentacji jako swojego statku, gdy tylko uzyskasz ilość przetłumaczonych pozycji powyżej progu.

Zmienione tłumaczenie domyślne oznacza, że ​​potrzebne jest nowe tłumaczenie dla wszystkich innych języków.

Oczywiście, jeśli zmieniasz tylko główne obszary nazw, możesz zmienić obszar nazw jako operację ponownego mapowania ad-hoc w bazie danych.

Jeśli uruchomisz projekt opensource, używa on narzędzia do tłumaczenia online.

Jednym z przykładów takiej współpracy realizowanej strategii tłumaczeniowej w produkcji jest https://translations.atlassian.com/

Zasadniczo można po prostu krok i rozpocząć wysyłanie tłumaczeń on-line.

Jest skonfigurowany do tłumaczenia samych produktów, a nie dokumentacji, ale obowiązuje ta sama praktyka.

+0

Tak, myślę, że tłumaczenie przetłumaczonych dokumentów od kodu jest jedynym sensownym sposobem na zrobienie tego w ogólnym przypadku. Mój przypadek użycia był nieco inny, ponieważ nigdy nie zamierzałem dostarczać więcej niż 2 języków; więc nadal rozsądnym było mieć oba języki w kodzie, dzięki czemu łatwiej jest być na bieżąco. –

1

Na wypadek, gdyby ktoś potrzebował rozwiązania, istnieje pakiet nuget o nazwie Surviveplus.XmlCommentLocalization. Oszałamiający!

+0

OK, ale co dokładnie robi? Nie ma dokumentacji, strony projektu, a strona internetowa surviveplus.net jest w języku japońskim ... –

+0

Po prostu generuje samodzielny xml w innym języku. Otrzymujesz kilka plików xml. I każdy z nich może być przetwarzany oddzielnie za pomocą ulubionego narzędzia. na przykład sandcastle –

+0

Tak, ale w jaki sposób generuje te pliki? Czy określasz język w komentarzach do dokumentu? –