Format plików lang
Dokumentacja programistyczna OpenTTD
Linki zewnętrzne

OpenTTD GitHub
Wkład w OpenTTD - wytyczne
OpenTTD Doxygen

Informacje Ogólne

Styl kodowania
Kompilowanie OpenTTD
Debugowanie
Dodanie ustawienia
Dodanie funkcji squirrel
Zrozumienie obsługi SaveGame
Wyznaczenie wersji gry zapisanej
Wykonanie wydania OpenTTD

Języki i Ciągi znaków

Podręcznik stylu
Format plików lang
Użycie ciągów OpenTTD
Lista ciągów specjalnych

System Okna

Użycie systemu okna
Kody kolorów istniejących w OpenTTD
Dodawanie pola tekstowego
Zrozumienie widget focus system
Przewodnik stylu GUI

Tryb wieloosobowy

OpenTTD TCP protokół
OpenTTD UDP protokół
Debugowanie desynchronizacji
Rozwój Portu Administratora Serwera

Konsola (w grze)

Okno konsoli
Komendy konsoli
Zmienne konsoli
Używanie skryptu konsoli
Dodanie funkcji/komend do konsoli
Dodanie zmiennych do konsoli
Historia rozwoju Konsoli

Interfejsy API (ramy modowania)

Grafika i podobne (NewGRFy)
Środowisko AI (NoAI)
Framework GS (NoGO)

Inne odniesienia

Tablica map (siatka pozioma)
Pojazdy
Wyszukiwanie trasy
Przyspieszenie pociągu

Contents

Przegląd

Pamiętaj, że jest to przewodnik dla programistów. Do prostego tłumaczenia OpenTTD na języki alternatywne, jest używany web translator .

Kompilowanie plików językowych

/File/en/Outdated content.png
Nieaktualne
Ten artykuł (lub sekcja) dawno nie był aktualizowany. Niektóre z jego treści mogą nie być już dokładne, z powodu zmian w najnowszej wersji. Artykuł do zaktualizowania.
Przewodnik zawiera nieaktulane lniki

Dokumenty OpenTTD GitHub zawierają przewodnik po kompilowaniu plików lang.

Ogólny układ

Każdy wpis w pliku językowym składa się dokładnie z jednej linii.

Wpis jest albo comment, za pragma lub translation.

Jeśli korzystasz z narzędzia do tłumaczenia internetowego, zobaczysz tylko tłumaczenia.

Kodowanie to UTF-8.

Komentarze

Komentarze zaczynają się od jednego lub więcej niż dwóch znaków skrótu (#) lub średnikiem (;). Puste linie są również ignorowane.

# Ignore
#### Ignore this
;and this too

Pragmas

Pragmy zaczynają się od dwóch znaków skrótu (#). Poniższa tabela zawiera listę wszystkich dostępnych pragm:

Nazwa Funkcja
name name Nazwa języka w English
ownname name Nazwa języka w samym (tym) języku
isocode code ISO kod dla language (np. de)
plural number Rodzaj liczby mnogiej (lista kodów znajduje się poniżej)
gender up to 8 gender names określa listę dozwolonych płci
case up to 50 case names określa listę dostępnych przypadków
textdir ltr or rtl określa kierunek tekstu (ltr stands for "left-to-right" whilst rtl stands for "right-to-left", i.e. Hebrew or Arabic)
digitsep symbol separator cyfr dla wartości innych niż waluta, znany również jako "thousand separator"
digitsepcur symbol separator cyfr dla wartości walutowych
decimalsep symbol separator dziesiętnych
winlangid hexnumber identyfikator języka zdefiniowany przez Microsoft Windows®
grflangid hexnumber identyfikator języka zastosowanego dla GRF
id hexnumber Następny ciąg znaków zaczyna się od hexnumber

Lista rodzajów liczby mnogiej

Poniższa tabela zawiera dozwolone wartości kodu dotyczące tworzenia liczby mnogiej:

Code Value Opis

Używany do
0 Two forms, singular używany do one tylko
Danish, Dutch, English, German, Norwegian, Swedish, Estonian, Finnish, Greek, Hebrew, Italian, Portuguese, Spanish, Esperanto
1 Tylko one forma
Hungarian, Japanese, Korean, Turkish
2 Two formy, singular używany do zero i one
French, Brazilian Portuguese
3 Three formy, special case dla zero
Latvian
4 Three formy, special case dlar one and two
Gaelige (Irish)
5 Three formy, special case dla numerów ending w 1[2-9]
Lithuanian
6 Three formy, special cases dla numerów ending w 1 i 2, 3, 4, z wyjątkiem tych kończących się na 1[1-4]
Croatian, Czech, Russian, Slovak, Ukrainian
7 Trzy formy, specjalny przypadek dla jednej i liczby kończące się na 2, 3, lub 4, z wyjątkiem tych kończących się na 1[2-4]
Polish
8 Four formy, special case dla one i wszystkie liczby ending in 02, 03, or 04
Slovanian

Przykład

Standardowy plik językowy english.txt zaczyna się od następujących pragm:

##name English (UK)
##ownname English (UK)
##isocode en_GB
##plural 0
##textdir ltr
;...
##id 0x0000

Tłumaczenia

Tłumaczenia składają się z klucza i tłumaczenia. Dzieli je dwukropek (:).

Klucze

Klucz może zawierać tylko wielkie litery, cyfry i znak podkreślenia (_). Każdy klawisz zaczyna się od "STR_" , po którym następuje co najmniej jedno dobrze opisujące słowo.

STR_MAPSIZE
STR_000F_PASSENGERS
STR_SORT_BY_DATE
STR_0196_SHOW_LAND_OWNERS_ON_MAP

Tłumaczenia

Za pomocą nawiasów klamrowych {} do tłumaczeń można wstawiać specjalne polecenia, które są zastępowane albo przez strgen, albo gdy ciąg jest narysowany na ekranie. Pełna lista poleceń jest dostępna w Specjalne ciągi znakowe . Oprócz

{STRINGx}

i

{RAW_STRING}

zaleca się pozostawienie tych specjalnych ciągów domyślnie nienaruszonych. Polecenia specjalne mogą zastępować wartości lub inne ciągi, w których umieszczane są ciągi specjalne. Tłumacze mogą mieć wpływ na kolejność tych zamian, aby umożliwić płynny język.

Zmiana kolejności słów

Zamiana parametrów może być również wymienna. Umożliwi to użycie jednego parametru, który zwykle znajduje się w pozycji 0 (jak w: pierwszym) w przetłumaczonym ciągu znaków, w rzeczywistości na pozycji 1, zamieniając w ten sposób miejsce bez 1.

Jako przykład : STR_INDUSTRY_PROD_GOUP.

W języku angielskim ciąg brzmi jak "{BLACK}{BIGFONT}{STRING} production at {INDUSTRY} increases {COMMA}%!"

W języku fińskim ten sam ciąg znaków jest teraz "{BLACK}{BIGFONT}{1:INDUSTRY} tuottaa {0:STRING} {2:COMMA}{NBSP}% entistä enemmän!"

/File/en/Klipper.png
Do poprawki
Zakończenie i skorygowanie tego

Cases

Po każdym kluczu może istnieć niestandardowa wielkość liter oddzielona kropką (.) . Sprawa musi zostać zdefiniowana na początku pliku przez ##case pragma.

W poniższym przykładzie z pliku w języku czeskim możesz zobaczyć, jak zdefiniować przypadki. W języku czeskim jest 7 przypadków, a w oknie dialogowym Subsydia występuje dodatkowy "case" (przypadek) do wpisywania dużej nazwy ładunku.

##case nom gen dat acc voc loc ins big
STR_0011_MAIL                      :pošta
STR_0011_MAIL.big                  :Pošta
STR_0011_MAIL.gen                  :pošty

Ogólnym zastosowaniem przypadków jest dodanie kropki i nazwy sprawy do polecenia STRING. W akapicie "Dotace dopravy {STRING.gen} z {NBSP} {STRING} do {STRING} nebude dále nabízena." niezbędna jest sprawa dopełniacza.

STR_202E_OFFER_OF_SUBSIDY_EXPIRED  :{BLACK}{BIGFONT}Nabídka dotace přepravy vypršela:{}{}Dotace dopravy {STRING.gen} z{NBSP}{STRING} do {STRING} nebude dále nabízena.
STR_2027_FROM_TO                   :{ORANGE}{STRING.big} z {STRING} do {STRING}

Liczba mnoga

Wprowadzenie

W większości języków formy liczby pojedynczej i mnogiej są nieco inne. Każde słowo można podzielić na dwie części - jedna część nie zmienia się zarówno w liczbie pojedynczej, jak i mnogiej, ale druga część różni się liczbą pojedynczą i mnogą. Nazwijmy je core (rdzeniem) i suffix.

Weźmy podstawowy przykład w języku angielskim, który jest podstawowy, ponieważ ma dwie formy: pojedynczą i mnogą.

Jest "1 train", ale tutaj są "2 trains".

Podzielmy teraz to słowo na część, która się nie zmienia, i część, która się zmienia:

Pisanie ciągu

Jak powiedziałem wcześniej, istnieją dwie formy w języku angielskim.

Podstawową strukturą liczby mnogiej w języku angielskim jest

core{P suffix1 suffix2}

, gdzie sufiks1 jest sufiksem dla znaku, a sufiks2 jest przyrostkiem liczby mnogiej.

Należy pamiętać, że formy liczby mnogiej działają tylko wtedy, gdy w ciągu znajduje się odpowiedni parametr.

{COMMA} i {NUM}, wraz z innymi parametrami liczbowymi, dobrze sprawdzają się w określaniu liczby mnogiej.

Zróbmy ciąg, który wyświetla liczbę lamp w pokoju. Forma "lampy" zależałaby od ilości dostarczonej za pomocą parametru {NUM}.

Przykład

STR_SENTENCE : I have {NUM} lamp{P "" s}

Czy widzisz rdzeń? Tak, to jest słowo lamp.

Później widzisz {P. Jest to wskaźnik, że sufiksy nadejdą w następnej kolejności.

"" oznacza, że ​​nie ma przyrostka. OpenTTD musi o tym wiedzieć - jeśli nie ma przyrostka, po prostu wpisz dwa znaki cudzysłowu. To jest pierwszy przyrostek, który zostanie użyty, gdy {NUM} będzie równe 1

s jest drugim przyrostkiem. Ten zostanie wyświetlony, gdy {NUM} jest większe niż 1.

Przejdźmy do bardziej zaawansowanych form liczby mnogiej. Weźmy mouse. Jego liczba mnoga to mice.

Przede wszystkim wyobraź sobie zdanie o różnych parametrach.

Kiedy będziesz gotowy, możesz napisać ciąg.

STR_SENTENCE : Mum, there {P 0 is are} {NUM} m{P ouse ice} in the room!

Jak zapewne zauważyłeś, pierwsza {P zawiera dodatkową liczbę przed przyrostkami. Służy do określania, który parametr należy zastosować do określenia liczby mnogiej. Jeśli nie podano żadnej liczby, używany jest poprzedni parametr, ale w tym przypadku nie ma poprzedniego parametru, dlatego musimy go określić.

/File/en/Klipper.png
Do poprawki
sprawdzenie, czy nie jest źle

Pamiętaj, że singluar (1) jest wyjątkowy w tej definicji liczby mnogiej. Liczba mnoga jest używana dla wszystkich liczb> 1, ale także dla 0. (Mamo, w pokoju jest 0 mysz).

Ciąg jako liczba

Jeśli argument dotyczący liczby mnogiej jest podany jako {STRING}, musisz użyć specjalnego parametru dla {P:

Płaski obszar wokół branż: {ORANGE}{STRING} tile{P 0:1 "" s}

OpenTTD używanie

Teraz rozumiesz podstawy liczby mnogiej. Weźmy przykład z tłumaczenia na angielski.

STR_QUANTITY_LIVESTOCK : {COMMA} item{P "" s} of livestock

Ten tekst jest wyświetlany na stacjach, gdy oczekuje na ładunek żywego inwentarza.

Jak widać, podano parametr {COMMA}. Dzięki temu parametrowi możemy zmienić formę item. Zobaczmy, jak zmieni się ciąg, gdy zmienimy podany parametr.

Spójrzmy teraz na ciąg bez podanego parametru.

STR_WAGONS : Wagons

Nie można tutaj zastosować liczby mnogiej. Wagon {P "" s} nie będzie tu działał.

Dlaczego? Ponieważ nie podano żadnego parametru.

Możesz po prostu zostawić ten ciąg bez zmian.

Inne typy liczby mnogiej

Znajdź swój język w poniższej tabeli Lista typów mnogich . Języki są grupowane w zależności od zachowania słów w różnych ilościach.

Przyrostki są uporządkowane rosnąco, z dowolnym innym numerem na końcu:

Weźmy język polski i wymyślmy jakiś ciąg

STR_CARS : {NUM} aut{P o a ""}

Teraz spójrz na opis powyżej i zgadnij, jak wyglądałby łańcuch znaków {NUM} równy 1, 2, 5, 13, 23, 38?

Płcie

Wprowadzenie

Niektóre języki zawierają płeć. Każdy rzeczownik (jak fabryka, kalkulator, smok) ma swoją płeć. Przymiotniki (zielone, nowe, piękne), a czasem czasowniki (spadać, jeść) mają wpływ na płeć.

Przede wszystkim pomyśl o płci swojego języka. Następnie otwórz Web Translator 2, przejdź do strony "Zarządzaj" swoim językiem i sprawdź listę rozwijaną płci. Jeśli nie ma jeszcze płci, naciśnij przycisk "+" i podaj krótkie postacie swoich płci ( m f n dla male female neutral jest dobre).

Kiedy to zrobisz, pomyśl o ciągach w OpenTTD, które mogą wymagać płci. Wiadomości informują, że powstaje nowy przemysł, jest dobry, ponieważ przemysł jest rzeczownikiem, a niektóre słowa w ciągu powinny się zmieniać w zależności od płci.

Zapisywanie ciągu

Aby ustawić płeć łańcucha, wstaw znacznik {G=*} przed pierwszym słowem łańcucha, gdzie * to nazwa płci, którą wcześniej wysłałeś.

W ciągu, który może się zmieniać w zależności od płci, użyj struktury {G suffix1 suffix2 suffix3} , w którym każdy sufiks odpowiada właściwej płci (kolejność według płci znajduje się w sekcji "Zarządzanie" Twojego języka na liście rozwijanej)

Przykład

Użyję języka łacińskiego w przykładach, ponieważ jest on dobrze znany i oczywiście używa płci.

Język łaciński ma trzy rodzaje, nazwiemy je m, f i n.

Zgadnijmy rzeczowniki, których użyjemy w przykładach.

Weźmy przymiotnik i znajdźmy jego rdzeń i przyrostki:

magnus, magna, magnum - large (male, female, neutral)

Jak widzisz, magn jest rdzeniem, a przyrostki są us, a and um odpowiednio dla mężczyzn, kobiet i płci neutralnej.

I tak działałby przykładowy ciąg:

STR_WELL : {G=m}Puteus
STR_FACTORY : {G=f}Officina
STR_SQUARE : {G=n}Forum
STR_IS_BIG : {STRING} magn{G us a um} est

Czy wyobrażasz sobie, jak będzie wyglądał wynik? Oto odpowiedź:

Ponownie, jak w przypadku liczby mnogiej, jeśli nie ma przyrostka, napisz "" . Zawsze używaj tyle sufiksów, ile jest rodzajów.

/File/en/Klipper.png
Do poprawki
Co powiesz na kolejność przyrostków? Czy koniecznie używać tej samej kolejności, jak zdefiniowano w pragmie?

Zaawansowane użycie

{G...} tag bazuje na płci gender{STRING} po tag'u. Jeśli jednak chcesz zmienić sufiks słowa po {STRING} (przed tagiem), musisz wpisać identyfikator ciągu, z którego chcesz pobrać płeć. Może to zabrzmieć niezręcznie, więc spójrzmy na przykład:

{BLACK}{BIGFONT}Now{G y a e} {STRING} został{G "" a o} posadzon{G y a e} blisko {TOWN}!

Drugi i trzeci {G...} nie będą działać, ponieważ nie ma po nich {STRING}, od którego można uzyskać płeć.

Chcemy pobrać płeć z pierwszego (i jedynego) tagu {STRING}. Pierwszy tag ma ID=0, drugi tag ma ID=1 i tak dalej. Oto jak to zrobić:

{BLACK}{BIGFONT}Now{G y a e} {STRING} został{G 0 "" a o} posadzon{G 0 y a e} blisko {TOWN}!

Dodanie ID rozwiązało problem. Ciąg działa zgodnie z oczekiwaniami.

Co jeśli jest ich więcej {STRING} s? (

/File/en/Klipper.png
Do poprawki
Nie jestem pewien, prośba zweryfikowamia tego

) W poniższym przykładzie używamy dwóch płci: męskiej i żeńskiej

Mis{G ter s} {STRING} is shocked by h{G 0 is er} grand{G 2 son daughter} who flamed mis{G ter s} {STRING} yesterday. The bad {G boy girl}'s name is {STRING}

Teraz wyjaśnię, dlaczego niektóre {G...} mają numery, a inne nie:

/File/en/Klipper.png
Do poprawki
ta sekcja może być niezdarna, można ją ulepszyć