[Tutorial] Suporte a vбrios idiomas usando XML
#1

Olб,
Hoje vou estar mostrando a vocкs, a como criar um servidor com mais de uma lнngua utilizando o XML. Nгo vou explicar muito, porque й bem fбcil, й tudo questгo de prestar atenзгo nos cуdigos e seguir igual. Entгo vamos lб:

  1. Copie este cуdigo abaixo, e salve-o em sua scriptfiles com o nome languages.xml:
    PHP Code:
    <?xml version="1.0" encoding="UTF-8"?>
    <language sigla="pt-BR">
        <string id="msg_boasvindas" output="Ola"/>
    </language>
    <language sigla="en">
        <string id="msg_boasvindas" output="Hello"/>
    </language>
    Vamos entender o "cуdigo":
    Quote:

    <language sigla="sigla_do_idioma_aqui">

    A onde estб escrito 'sigla_do_idioma_aqui' vocк irб substituir pela sigla que vocк quer, exemplo: pt-BR, pt-PT.. etc

    Quote:

    <string id="texto_quando_o_player_loga" output="Texto pra quando o player logar no servidor"/>

    Vocк irб substituir 'texto_quando_o_player_loga' para o "id" do texto que vocк quer, esse id deve ser guardado para ser usado depois, entгo escolha um id de preferencia sua.
    E a onde estб escrito 'Texto pra quando o player logar no servidor' й o texto final que vocк quer que seja exibido em sua mensagem.

    Entгo por exemplo:
    PHP Code:
    <string id="forum_samp" output="Olб fуrum sa-mp"/> 
  2. Agora vamos ao cуdigo pawn:
    Primeiro salve a include na pasta de includes do seu gamemode, e depois chame-a no gamemode, exemplo:
    PHP Code:
    #include <xml> 
    Agora, vocк vai ter que abrir o arquivo XML que estб na sua scriptfiles, para isso faзa o seguinte:
    PHP Code:
    new XML:lang// crie uma variavel, na qual vocк utilizarб para dizer qual й o arquivo que vocк estб "usando"
    public OnGameModeInit()
    {
        
    lang xml_open("languages.xml"); // Indique onde estб o arquivo xml.
        
    return 1;

    Vocк simplesmente precisarб fazer isto para referenciar sua mensagem:
    Quote:

    new msg[100];
    xml_get_string(variavel definida acima, "language[@sigla=\"A sigla que vocк definiu lб em cima\"]/string[@id=\"O id que vocк definiu lб em cima\"]/@output", msg);

    Exemplo:
    PHP Code:
    new msg[100]; // variavel que irб retornar a msg 
    xml_get_string(lang"language[@sigla=\"fr\"]/string[@id=\"mensagem_Login\"]/@output"msg); 
    e para exibir para o player com uma mensagem, usariamos o SendClientMessage:
    PHP Code:
    SendClientMessage(playerid, -1msg); 
    Cуdigo final:
    PHP Code:
    new msg[100]; // variavel que irб retornar a msg 
    xml_get_string(lang"language[@sigla=\"fr\"]/string[@id=\"mensagem_Login\"]/@output"msg);
    SendClientMessage(playerid, -1msg); 

Exemplo de cуdigo:
PHP Code:
#include <a_samp>
#include "../include/xml.inc"
main()
{
    print(
"\n----------------------------------");
    print(
" Blank Gamemode by your name here");
    print(
"----------------------------------\n");
}
new 
XML:lang;
public 
OnGameModeInit()
{
    
lang xml_open("languages.xml");
    return 
1;
}
public 
OnGameModeExit()
{
    
xml_close(lang);
    return 
1;
}
public 
OnPlayerConnect(playerid)
{
    
ShowPlayerDialog(playerid1DIALOG_STYLE_LIST"Select your language""Portuguкs\nEnglish""Select""");
    return 
1;
}
public 
OnDialogResponse(playeriddialogidresponselistiteminputtext[])
{
    if(
dialogid == 1){
        new 
msg[20];
        if(
listitem==0){
                
xml_get_string(lang"language[@sigla=\"pt-BR\"]/string[@id=\"msg_boasvindas\"]/@output"msg);
                
SendClientMessage(playerid, -1msg);
                return 
1;
        }
        if(
listitem==1)
        {
            
xml_get_string(lang"language[@sigla=\"en\"]/string[@id=\"msg_boasvindas\"]/@output"msg);
            
SendClientMessage(playerid, -1msg);
            return 
1;
        }
    }
    return 
1;

Espero que tenham entendido, a explicaзгo nгo ficou muito boa, mais й bem simples de se compreender. Vocк pode criar algo mais complexo usando este exemplo eu passei, espero que gostem. Para baixar o plugin e a include clique aqui.



Crйditos do plugin a Zeex
Reply
#2

boa mano, porem listitem comeзa do 0, e vc comeзou por 1, ou seja vai pegar o segundo item da lista
Reply
#3

Quote:
Originally Posted by moura98
View Post
boa mano, porem listitem comeзa do 0, e vc comeзou por 1, ou seja vai pegar o segundo item da lista
Erro bobo meu. Eu parei a um tempo de mexer com Pawn..
Reply
#4

Quote:
Originally Posted by HaRdiiZin
View Post
Erro bobo meu. Eu parei a um tempo de mexer com Pawn..
Acontece mano, as vezes esqueзo de definir Float nas variaveis huehueheu, bom tutorial!
Reply
#5

Bom tutorial, й legal ver o povo saindo da mesmice de sempre, +8 reps
Reply
#6

Bom trabalho! +Rep!
Reply
#7

Muito bom, talvez eu lance uma "versгo" deste tutorial, porйm da forma como eu uso, apenas para comparar e ver como pode ser mais fбcil.(Usa XML tambйm, porйm tem alguns macros bem legais)
Reply
#8

Bem interessante!
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)