2011-07-06 21 views
5

Czy C# oferuje sposób tłumaczenia ciągów w locie lub coś podobnego?C# tłumaczenie ciągów znaków

Ja obecnie pracuje na jakimś starszych kod, który ma kilka części tak:

section.AddParagraph(String.Format("Premise: {0}", currentReport.Tenant.Code)); 
section.AddParagraph(String.Format("Description: {0}", currentReport.Tenant.Name)); 

section.AddParagraph(); 

section.AddParagraph(String.Format("Issued: #{0:D5}", currentReport.Id)); 
section.AddParagraph(String.Format("Date: {0}", currentReport.Timestamp.ToString(
        "dd MMM yyyy", CultureInfo.InvariantCulture))); 
section.AddParagraph(String.Format("Time: {0:HH:mm}", currentReport.Timestamp)); 

Tak, chcę wdrożyć tłumaczenie tych ciągów on-the-fly w oparciu na pewnej tabeli substytucji (na przykład, jako Qt).

  • to możliwe (prawdopodobnie za pomocą czegoś, co już ma C# lub za pomocą jakiegoś post-processing - może być możliwe z PostSharp)?
  • Czy istnieje jakieś ogólne podejście do internalizacji dla aplikacji zbudowanych przy użyciu C#(od zera)?

Odpowiedz

6

Czy niektóre ogólne podejście do internalizacji aplikacji zbudowanych z C# (od podstaw) istnieje?

Tak, używając resource files. I tutaj jest another article na MSDN.

1

W projekcie C# Obecnie pracuję nad pisaliśmy funkcję pomocnika, który działa tak:

section.AddParagraph(I18n.Translate("Premise: {0}", currentReport.Tenant.Code)); 
section.AddParagraph(I18n.Translate("That's all"); 

w czasie kompilacji, skrypt przeszukuje wszystkie I18n.Translate wywołania, a także wszystkie kontrolki interfejsu użytkownika, i zapełnia tabelę wszystkimi angielskimi zwrotami. To zostanie przetłumaczone.

W czasie wykonywania angielski tekst jest wyszukiwany w słowniku i zastępowany przetłumaczonym tekstem. Coś podobnego dzieje się z naszymi zasobami Winogrona Dialog: są one skonstruowane w języku angielskim, a następnie przetłumaczone przy użyciu tego samego słownika.

Największą zaletą tego schematu jest również największa słabość: jeśli użyjesz tego samego ciągu w dwóch miejscach, zostanie on przetłumaczony tak samo. Skraca to plik wysyłany do tłumacza, co pomaga obniżyć koszty. Jeśli kiedykolwiek będziesz musiał wymusić inne tłumaczenie tego samego angielskiego słowa, musisz to obejść. Dopóki mamy ten system (około 4 lat), nigdy nie mieliśmy takiej potrzeby. Są też zalety: czytasz angielski tekst interfejsu użytkownika ze źródła (nie chowasz się za identyfikatorem, którego musisz nadać nazwę), a jeśli usuniesz kod, zostanie on automatycznie usunięty z przetłumaczonych zasobów.

+0

Och, i18n oznacza i-nternationalizatio-n. –

Powiązane problemy