string w dwóch jezykach

0

Cześć. Mam taką zagwozdkę bo moje API zwraca tekst i ten tekst ma być do wyboru w języku polskim lub angielskim. I mam pytanie jak można ten tekst fajnie fajnie tłumaczyczyć w zależności od bool tutaj mam taki przykład

        static void Main(string[] args)
        {
            Console.WriteLine(Test(true));
        }


        static string Test(bool isEnglish)
        {
            string fullName = isEnglish  ? "First and Last Name" : "Imie i nazwisko";

            return string.Format("{0}: Jan Nowak", fullName);
            
        }

Zastanawiałem się czy można to napisać lepiej ? :)

6

https://docs.microsoft.com/en-us/dotnet/standard/globalization-localization/best-practices-for-developing-world-ready-apps

  • Move all localizable resources to separate resource-only DLLs. Localizable resources include user interface elements, such as strings, error messages, dialog boxes, menus, and embedded object resources.
  • Do not hardcode strings or user interface resources.
  • Do not put nonlocalizable resources into the resource-only DLLs. This causes confusion for translators.
  • Do not use composite strings that are built at run time from concatenated phrases. Composite strings are difficult to localize because they often assume an English grammatical order that does not apply to all languages.
  • Avoid ambiguous constructs such as "Empty Folder" where the strings can be translated differently depending on the grammatical roles of the string components. For example, "empty" can be either a verb or an adjective, which can lead to different translations in languages such as Italian or French.
  • Avoid using images and icons that contain text in your application. They are expensive to localize.
  • Allow plenty of room for the length of strings to expand in the user interface. In some languages, phrases can require 50-75 percent more space than they need in other languages.
  • Use the System.Resources.ResourceManager class to retrieve resources based on culture.
  • Use Visual Studio to create Windows Forms dialog boxes so they can be localized using the Windows Forms Resource Editor (Winres.exe). Do not code Windows Forms dialog boxes by hand.
3

Wielojęzyczności to grubszy temat. Inaczej podchodzi się do tłumaczeni różnych grup tekstów występujących w aplikacji. Np.:

  1. tekstów z interfejsów ;
  2. tekstów słowikowych ;
  3. danych / treści użytkownika ;

W przypadku 1. warto skorzystać z mechanizmów, które wspiera dane środowisko programistyczne. W przypadku 2 i 3 trzeba mieć logikę aplikacji zaprojektowaną pod "wielojęzyczność".

Tu podałeś prosty przykład dla jakiegoś labela przy polu. Wyobraź sobie jak sytuacja się komplikuje gdybyś miał pole "Kolor oczu" i do wyboru : zielone | niebieskie | piwne ... Tu jeśli w bazie trzymałeś "polskie nazwy kolorów" zaczną pojawiać się problemy z wybraniem wszystkich zielonookich jeśli kolorów nie poindeksowałeś.
Jeszcze gorzej będzie jak lista pól do wyboru wynika z danych, które wynikają z dynamicznie dodawanych rekordów w bazie ... Np. Wybór nazwy miejscowości zamieszkania użytkownika ( jeden wpisze cyrlicą drugi to Grek a trzeci Koreańczyk ). W tym ostatnim przykładzie bez dobrze zaprojektowanej wielojęzycznej bazy miejscowości możesz uzyskać spory śmietnik zamiast sensownej bazy.

3

warto poszukać hasło i18n

1 użytkowników online, w tym zalogowanych: 0, gości: 1