×

Langue

Fermer
Atelier 801
  • Forums
  • Dev Tracker
  • Connexion
    • English Français
      Português do Brasil Español
      Türkçe Polski
      Magyar Română
      العربية Skandinavisk
      Nederlands Deutsch
      Bahasa Indonesia Русский
      中文 Filipino
      Lietuvių kalba 日本語
      Suomi עברית
      Italiano Česky
      Hrvatski Slovensky
      Български Latviešu
      Estonian
  • Langue
  • Forums
  • /
  • Transformice
  • /
  • Archives
  • /
  • Seção Editor de Mapas e Modules
  • /
  • [Tutorial] Sistema de tradução
[Tutorial] Sistema de tradução
Esh
« Censeur »
1418311980000
    • Esh#0095
    • Profil
    • Derniers messages
    • Tribu
#1
  0
Um sistema de tradução é algo indispensável em minigame, mas, como fazer um? Para criar um sistema de tradução, precisamos descobrir a comunidade que o minigame está rodando, e fazer uma tabela retornar as traduções corretamente.

Primeiramente, vamos criar uma tabela para guardar as traduções;

Script a dit :
traducoes = {}

Agora que temos a tabela, vamos usar o tfm.get.room.community, ele irá retornar a sigla da comunidade em que o minigame está rodando, lembrando que se o minigame estiver no cafofo, a comunidade será 'xx'.

Script a dit :
traducoes = {}
comunity = tfm.get.room.community

Agora que nós temos a tabela de traduções, e a comunidade, iremos criar a função que irá traduzir os textos:

Script a dit :
traducoes = {}
comunidade = tfm.get.room.community

function traduzir(texto)
if traducoes[comunidade].texto then
return traducoes[comunidade].texto
end
end


E se meu minigame estiver rodando num servidor que não tem a tradução? Então iremos usar um else, e mudar a comunidade para en, já que o inglês é uma linguagem universal:

a dit :
traducoes = {}

comunidade = tfm.get.room.community
if not traducoes[comunidade] then
comunidade = 'en'
end

function traduzir(texto)
if traducoes[comunidade][texto] then
return traducoes[comunidade][texto]
end
end


Agora que nós temos tudo funcionando, precisamos criar as traduções! Vamos seguir este esquema:

http://i.imgur.com/GNVq6c7.png

Aqui temos uma tabela de exemplo:

Scripts a dit :
traducoes = {
en = {
entrarSala = 'Welcome !'
};
br = {
entrarSala = 'Bem-vindo !'
};
}

Pronto! Agora o sistema de tradução irá funcionar sem erro algum.

Script a dit :

traducoes = {
en = {
entrarSala = 'Welcome !'
};
br = {
entrarSala = 'Bem-vindo !'
};
}


comunidade = tfm.get.room.community
if not traducoes[comunidade] then
comunidade = 'en'
end


function traduzir(texto)
if traducoes[comunidade][texto] then
return traducoes[comunidade][texto]
end
end

print(traduzir('entrarSala'))
Hydroper
« Citoyen »
1418312400000
    • Hydroper#0000
    • Profil
    • Derniers messages
    • Tribu
#2
  0
Aeoh, vai ajudar mt. -q Bom tutorial, Ashhh.
Operop
« Citoyen »
1418312940000
    • Operop#0000
    • Profil
    • Derniers messages
#3
  0
comunidade=tfm.get.room.community==("xx" or "INT" or traducoes[tfm.get.room.cummunity]==nil) and "EN"


melhor fazer o manual também, vai que o player está em outro server.

Dernière modification le 1418313600000
Bruno
« Censeur »
1418325240000
    • Bruno#3852
    • Profil
    • Derniers messages
    • Tribu
#4
  0
Bem legal, eu fazia de outro jeito. Mas esse jeito é bem mais fácil de traduzir e editar...
Squalleze
« Citoyen »
1418341500000
    • Squalleze#0000
    • Profil
    • Derniers messages
    • Tribu
#5
  0
Achei enorme, eu uso assim:
T = {
 ['EN'] = {...},
 ['BR'] = {...}
}

_Tt = function()
 return T[tfm.get.room.community] or T['EN']
end

print(_Tt()['...'])

é bem mais curto e simples '-'
Operop
« Citoyen »
1418342640000
    • Operop#0000
    • Profil
    • Derniers messages
#6
  0
squalleze a dit :
Achei enorme, eu uso assim:
T = {
 ['EN'] = {...},
 ['BR'] = {...}
}

_Tt = function()
 return T[tfm.get.room.community] or T['EN']
end

print(_Tt()['...'])

é bem mais curto e simples '-'

Não '-'

EN={oi="HI"}
BR={oi="OI"}

function tra()
return _G[tfm.get.room.community] or _G['EN']
end

print(tra()['oi'])
Squalleze
« Citoyen »
1418342760000
    • Squalleze#0000
    • Profil
    • Derniers messages
    • Tribu
#7
  0
operop a dit :
squalleze a dit :
Achei enorme, eu uso assim:
T = {
 ['EN'] = {...},
 ['BR'] = {...}
}

_Tt = function()
 return T[tfm.get.room.community] or T['EN']
end

print(_Tt()['...'])

é bem mais curto e simples '-'

Não '-'

EN={oi="HI"}
BR={oi="OI"}

function tra()
return _G[tfm.get.room.community] or _G['EN']
end

print(tra()['oi'])

prefiro usar o T para ficar mais organizado, e eu n to acostumado a usar variável global, só que ela é boa \o/
Operop
« Citoyen »
1418784060000
    • Operop#0000
    • Profil
    • Derniers messages
#8
  0
squalleze a dit :
operop a dit :
squalleze a dit :
Achei enorme, eu uso assim:
T = {
 ['EN'] = {...},
 ['BR'] = {...}
}

_Tt = function()
 return T[tfm.get.room.community] or T['EN']
end

print(_Tt()['...'])

é bem mais curto e simples '-'

Não '-'

EN={oi="HI"}
BR={oi="OI"}

function tra()
return _G[tfm.get.room.community] or _G['EN']
end

print(tra()['oi'])

prefiro usar o T para ficar mais organizado, e eu n to acostumado a usar variável global, só que ela é boa \o/

o meu tem 16 bytes a menos.
continua organizado se você potar tabela debaixo de tabela...
Tocutoeltuco
« Censeur »
1428854100000
    • Tocutoeltuco#0000
    • Profil
    • Derniers messages
#9
  0
Eu uso...
t = {
BR = {
welcome = "Olá! seja bem-vindo"
},
ES = {
welcome = "Hola! sea bienvenido"
},
EN = {
welcome = "Hello! welcome to you!"
}
}

function traduzir(mes)
if t[tfm.get.room.community] and t[tfm.get.room.community][mes] then
return t[tfm.get.room.community][mes]
else
return t.EN[mes]
end
end

print(traduzir("welcome"))
Indentado
« Citoyen »
1435884960000
    • Indentado#0000
    • Profil
    • Derniers messages
#10
  0
http://i.imgur.com/0qu5shb.png

eu faço assim
  • Forums
  • /
  • Transformice
  • /
  • Archives
  • /
  • Seção Editor de Mapas e Modules
  • /
  • [Tutorial] Sistema de tradução
© Atelier801 2018

Equipe Conditions Générales d'Utilisation Politique de Confidentialité Contact

Version 1.27