Fasendas
Вы хотите отреагировать на этот пост ? Создайте аккаунт всего в несколько кликов или войдите на форум.
Май 2024
ПнВтСрЧтПтСбВс
  12345
6789101112
13141516171819
20212223242526
2728293031  

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

Последние темы
» Код вертолета
Как делать мультиязычные переводы для плагинов. EmptyПт Май 08, 2020 6:18 pm автор Gedifilyte

» Создание точки появления противников (Устаревшее)
Как делать мультиязычные переводы для плагинов. EmptyСб Дек 14, 2019 2:34 am автор Gedifilyte

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

» Программное создание Mesh
Как делать мультиязычные переводы для плагинов. EmptyПн Фев 05, 2018 12:05 am автор Eris

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

» Редакторы карт и ресурсов
Как делать мультиязычные переводы для плагинов. EmptyСр Май 24, 2017 10:23 pm автор Чумной Доктор

» Создание "Игрового типа" (GameType)
Как делать мультиязычные переводы для плагинов. EmptyСр Апр 05, 2017 2:19 am автор Filat

» Экспорт из 3ds Max
Как делать мультиязычные переводы для плагинов. EmptyСб Мар 11, 2017 12:22 pm автор Uggo

» Создание "Выбор персонажа"
Как делать мультиязычные переводы для плагинов. EmptyСб Фев 25, 2017 11:32 am автор Filat

Поиск
 
 

Результаты :
 

 


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

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


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

Перейти вниз

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

Сообщение автор 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
Рейтинг : 2771
Репутация : 0
Дата регистрации : 2016-12-15

https://fasendas.forum2x2.ru

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

Как делать мультиязычные переводы для плагинов. Empty 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 Как делать мультиязычные переводы для плагинов. Icon_smile

Admin
Admin

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

https://fasendas.forum2x2.ru

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

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


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