Декабрь 2018
ПнВтСрЧтПтСбВс
     12
3456789
10111213141516
17181920212223
24252627282930
31      

Календарь Календарь

Последние темы
» Создание инвентаря (устаревшее)
Пт Апр 13, 2018 7:43 pm автор Eris

» Программное создание Mesh
Пн Фев 05, 2018 12:05 am автор Eris

» Помогите !!! (вопросы, советы, обсуждения)
Вт Июн 06, 2017 11:39 am автор Zhuravlev Yuri

» Редакторы карт и ресурсов
Ср Май 24, 2017 10:23 pm автор Чумной Доктор

» Создание "Игрового типа" (GameType)
Ср Апр 05, 2017 2:19 am автор Filat

» Экспорт из 3ds Max
Сб Мар 11, 2017 12:22 pm автор Uggo

» Создание "Выбор персонажа"
Сб Фев 25, 2017 11:32 am автор Filat

» Анимирование в 3d max для NeoAxis Engine
Вт Фев 14, 2017 8:54 am автор R.R.K

» Изменение главного меню Game.exe
Сб Янв 21, 2017 1:21 pm автор Eris

Поиск
 
 

Результаты :
 

 


Rechercher Расширенный поиск

Ключевые слова


Как делать мультиязычные переводы для плагинов.

Перейти вниз

Как делать мультиязычные переводы для плагинов.

Сообщение автор Admin в Вс Дек 18, 2016 1:31 pm

КАК СДЕЛАТЬ ПЛАГИН НА 2 И БОЛЬШЕ МОВЫ? (от Den Marko)

И так приступим к изучению.

создаем файл содержавший перевод, назовем например "hello.phrases.txt"
и так формат файла:

"Phrases"
{
"hello"
{
"en" "Hello"
"ru" "Привет"
}
}

использование в плагине:

public OnPluginStart()
{
LoadTranslations("название файла который содержит перевод"); //подзагружаем перевод
}

используем перевод в коде
decl String:buffer[128];
PrintToChat(client, "[SourceMod] %t", "hello");
Format(buffer, sizeof(buffer), "[SourceMod] %T", "hello", LANG_SERVER /*или*/ client/*но я передпочитаю client так как перевод будет точнее*/);
PrintToChat(client, buffer);

Admin
Admin

Сообщения : 24
Рейтинг : 798
Репутация : 0
Дата регистрации : 2016-12-15

Посмотреть профиль http://fasendas.forum2x2.ru

Вернуться к началу Перейти вниз

Re: Как делать мультиязычные переводы для плагинов.

Сообщение автор Admin в Вс Дек 18, 2016 1:31 pm

Даю более точные пояснения.

В папке транслитов "translations", для вашего плагина должен быть файл с переводами с нужным расширением (пример: "(Название вашего файла переводов).phrases.txt" ). У каждого варианта перевода, должен быть предваряющий языковой тег, как в данном примере:

"Phrases" // Необходимое оглавление определения языкового файла

{

"hello" // Это пример оригинального слова / фразы

{

"en" "Hello" // Это на английском (тег "en")

"ru" "Привет" // Это на русском (тег "ru")

}

}

В самом плагине, там где должен выводится текст, в данном случае вариант перевода, стоит спец.символ вывода транслита "%T" или "%t".
Сам спец.символ имеет для такого случая специфическую букву "t", что косвенно указывает на его происхождение от слова "translation" (то бишь, "перевод").

PrintToChat(client, "%t", "hello");




// Здесь клиенту выводиться инфа из файла транслита, по примеру оригинального слова "hello".

Т.е. в файле транслита ищется соответствие с этим словом (см. пример файла транслита выше), и согласно региональной принадлежности клиента выводится перевод на его языке.
Если региональная принадлежность клиента не выявлена, то инфа будет выводится в оригинальном варианте, т.е., в данном случае, по английски.

Этот спец символ так же подразумевает использование текстовой информации, как и спец символ "%s" (от англ. "simbol") но по умолчанию берет данные из файла транслита, который подключается следующим образом (как и указано в примере Den Marko):

public OnPluginStart()

{

LoadTranslations("название файла который содержит перевод"); //подзагружаем перевод

}

Далее идет более сложный вариант представления вывода инфы в переводе:

Format(buffer, sizeof(buffer), "%T", "hello", LANG_SERVER /*или*/ client/*но я передпочитаю client так как перевод будет точнее*/);




// С помощью команды "Format" , мы можем внести строковые данные в переменную "bufer", которая должна быть заранее объявлена методом декларирования:




decl String:buffer[128];

далее идет цепь синтактических вложений:

(buffer, sizeof(buffer), "%T", "hello", LANG_SERVER);




// В переменную "bufer" , с вычислением ее размера "sizeof(buffer)", вносится перевод с помощью спец.символа "%T" , примером перевода служит слово в оригинальном написании "hello". Далее мы даем команду вывода движку "LANG_SERVER", точнее это скорее некая коррекция, своеобразная подсказка, каким образом вывод нужно ориентировать. В данном случае, как можно видеть - LANG, это означает принадлежность к транслиту (от англ. Language), и SERVER - принадлежность к серверной части исполнения.

или

(buffer, sizeof(buffer), "%T", "hello", client);

Что собственно все то же самое, но вместо "LANG_SERVER", используются данные конкретного клиента "client". Как и подсказал Den Marko, в данном случает, перевод находится более точнее, на самом деле используется региональная принадлежность клиента напрямую, и по ней сразу выбирается языковой вариант перевода, в ином случае используется оригинал представления, в данном случае, англоязычный вариант.

Надеюсь я достаточно ясно и подробно описал все особенности использования транслита в работе с плагином на примере приведенном Den Marko

Admin
Admin

Сообщения : 24
Рейтинг : 798
Репутация : 0
Дата регистрации : 2016-12-15

Посмотреть профиль http://fasendas.forum2x2.ru

Вернуться к началу Перейти вниз

Вернуться к началу


 
Права доступа к этому форуму:
Вы не можете отвечать на сообщения