Jak umieścić tłumaczenie w pluginie, jak doprowadzić do tego, by plugin wczytał nam plik z tłumaczeniem, który mu przygotujemy?
Jak zakodować różne komunikaty, z różnymi zmiennymi?
Całość omówimy na przykładzie pluginu, który losuje dwie osoby na mapkę i daje im flagę "a".
No i OK. Zacznijmy od początku.
1. Poinformuj plugin o pliku z tłumaczeniem.
W tym celu w funkcji startupu pluginu (OnPluginStart) należy załadować translacje. Użyjemy do tego funkcji LoadTranslations.
W naszym przypadku będzie to wyglądało w ten sposób :
public void OnPluginStart()
{
LoadTranslations("free-vip.phrases");
}
2. Napisz funkcję wyświetlającą tekst pobierany z pliku *.phrases.txt
Pierwszym i jednocześnie dość istotnym krokiem w tym miejscu będzie zdanie sobie sprawy, że istnieją dwie możliwości zaimplementowania tłumaczenia w kodzie.
%t - użyjemy, gdy wyświetlany tekst będzie bezpośrednio do gracza, przykładowo przez funkcję PrintToChat.
%T - tego dziada użyjemy, gdy funkcja nie będzie bezpośrednio kierowana do gracza, a do serwera, zatem PrintToServer, LogMessage czy Format zawierający tłumaczenie musi być napisany w tej formie. Ważnym jest, żeby zaznaczyć w kodzie, jakiego języka mamy użyć do translacji.
LANG_SERVER - funkcja użyje języka serwera.
client(indeks klienta) - w wypadku, gdybyśmy używali przykładowo funkcji Format w celu podstawienia stringa do nazwy menu, funkcja użyje języka klienta.
W naszym przykładzie skupimy się na funkcji PrintToChatAll, bo występuje ona dwa razy, i jako jedyna wyświetla tekst.
Jak widać, pierwsza funkcja najpierw wyświetli zdefiniowany na początku pluginu prefiks, potem tekst i dwie zmienne. %N odpowiada za nazwę klienta, którego ID podaliśmy w argumentach za prefiksem.
Druga funkcja wyświetli tylko prefiks i tekst.
Jako, że prefiks jest zdefiniowany i jest stały, pominiemy go w tłumaczeniu.
3. Stwórz plik z tłumaczeniem
Na tym etapie zajmiemy się stworzeniem pliku tekstowego, którego nazwa będzie odpowiadała tej, którą zaznaczyliśmy w naszym pluginie na jego początku.
Zatem - tworzymy plik free-vip.phrases.txt, a w nim:
"Phrases" // koniecznie. Zawsze ta linijka musi się tak nazywać :)
{
"Gratulacje" // odniesienie do nazwy tłumaczonego wyrażenia w kodzie
{
"#format" "{1:N},{2:N}" //ustalamy w odpowiedniej kolejności typy zmiennych, które implementujemy w argumentach funkcji wyświetlającej tekst
"en" "Congratz! This map VIP players are: {1} and {2}!" //tłumaczenie dla języka angielskiego
"pl" "Gratulacje! VIP'ami na tej mapie zostali: {1} oraz {2}!" //tłumaczenie dla języka polskiego
}
"Losowanie odroczone"
{
//tutaj nie trzeba nic formatować, bo nie mamy żadnych zmiennych, więc przechodzimy od razu do tłumaczeń
"en" "The draw of 2 free VIPs will be denied. The attempt will be renewed in 20 seconds!" //tłumaczenie dla języka angielskiego
"pl" "Losowanie 2 darmowych VIP'ów nie może się teraz odbyć. Próba zostanie ponowiona za 20 sekund!" //tłumaczenie dla języka polskiego
}
}
Plik należy umieścić w folderze addons/sourcemod/translations/
Inne typy zmiennych w "#format" :
{1:d},{2:x},{3:f},{4:s},{5:c},{6:t}
d lub i : wyświetli liczbę, cyfrę
x : wyświetli zmienną w systemie szesnastkowym
f : wyświetli zmienną typu float
s : wyświetli zmienną typu string
c : wyświetli jeden znak (UTF-8)
t : służy do załączania kolejnej translacji
Zezwalam na kopiowanie tego poradnika w dowolne miejsca internetu, niech niesie pomoc komu tam trzeba ?
Fajnie by było, gdyby tak udostępniony poradnik został odpowiednio opisany kto jest autorem, oraz skąd pochodzi ?