2012-06-08 17 views
11

Próbuję wyświetlić wiadomość do użytkownika wzdłuż linii:Jak uwzględnić zmienne w łańcuchach zlokalizowanych?

„User 5 Nie udało się dodać”

Ale jak mogę dodać zmienne do łańcucha, który jest umieszczony w. plik Resx? Próbowałem szukać takich rzeczy jak "Zmienne w lokalizacji" "Globalizacja z zmiennymi" itp., Ale wyszły na sucho.

Gdybym nie lokalizowaniu chciałbym napisać:

Console.Write("User " + userNum + " could not be added"); 

Jak można to osiągnąć z zasobów?

+0

Nie powinieneś budować/drukować ciągu znaków z + tak. String.Format jest o wiele łatwiejszy w pracy z ... –

Odpowiedz

8

W zespołach, w których przeprowadziłem internacjonalizację, zwykle utworzyliśmy także zasób dla ciągu formatów, np. USER_COULD_NOT_BE_ADDED_FORMAT i nazwaliśmy String.Format (lub odpowiednik twojego środowiska), przekazując wartość tego zasobu jako wzorzec formatu.

Potem zrobisz Console.Write(String.Format(resourceManager.GetString("USER_COULD_NOT_BE_ADDED_FORMAT"), userNum));

Większość Lokalizatorzy albo mają szkolenia w struny format używany przez system są lokalizowaniu lub są one wyposażone w zestaw wskazówek lokalizacyjne, które je oferują. Nie jest to na przykład tak wysoka jak bariera, która powoduje, że bezpośrednio modyfikują kod.

Zazwyczaj należy dodać komentarz do identyfikatora zasobu, aby wyjaśnić parametry pozycyjne.

+1

Czy mógłbyś pójść nieco dalej, aby dodać taki "komentarz do identyfikatora zasobu"? Lub podaj mi link, aby przeczytać więcej? Dzięki! :) –

+0

Również, skoro mam ciebie tutaj, ponieważ wydajesz się mieć doświadczenie z tymi rzeczami, czy najlepiej jest mieć pojedynczy plik resx dla wszystkich ciągów w danym projekcie, czy lepiej byłoby je rozdzielić na wiele plików resx powiedzmy po jednym dla każdej formy? (Moje pliki resx są przechowywane w osobnym projekcie Globalization). –

+1

Zakładając, że korzystasz z formatu .resx, komentarz lokalizacyjny jest po prostu "Komentarz" w interfejsie edytora resx, lub "" w xml zaraz po " 'element. – JasonTrue

11

Nie możesz tego zrobić bezpośrednio.

Co może zrobić, to umieścić żeton - specyficzny ciąg znaków, który może być zastąpionyz string.Replace z wartością zmiennej.

dobrym kandydatem na to będzie wbudowany w formatowaniu strun:

Console.Write(string.Format("User {0} could not be added", userNum)); 

Zakładając userNum ma wartość 5, wynik będzie:

User 5 could not be added 

można zlokalizować ten ciąg z specyfikatory formatu kompozytowego.

5

Zastosowanie Composite Formatting tak:

Console.Write("User {0} could not be added", userNum); 

ten sposób byłoby lokalizowanie "User {0} could not be added".

0

można zrobić, że jego prosta enter image description here

nowy pozwala zobaczyć, jak

String.Format(Resource_en.PhoneNumberForEmployeeAlreadyExist,letterForm.EmployeeName[i]) 

wola ta dała mi dynamiczną wiadomość za każdym razem

przez sposób jestem usein g ResXManager

Powiązane problemy