Internacionalização Lib para Minetest Por Diego Martínez (a.k.a. "Kaeza"). Lançado como WTFPL. Este mod é uma tentativa de fornecer suporte de internacionalização para mods (algo que Minetest atualmente carece). Como posso usá-lo? A fim de habilitá-lo para o seu mod, copie o seguinte trecho de código e cole no início de seu(s) arquivo(s) fonte: -- Padronizado para suportar cadeias (strings) locais se o mod intllib estiver instalado local S if minetest.get_modpath("intllib") then S = intllib.Getter() else -- Se você não usar inserções (@1, @2, etc) você pode usar este: S = function(s) return s end -- Se você usar inserções, mas não usar escapes de inserção (\=, \n, etc) isso vai funcionar: S = function(s,a,...)a={a,...}return s:gsub("@(%d+)",function(n)return a[tonumber(n)]end)end -- Use isso se você precisar de funcionalidade total: S = function(s,a,...)if a==nil then return s end a={a,...}return s:gsub("(@?)@(%(?)(%d+)(%)?)",function(e,o,n,c)if e==""then return a[tonumber(n)]..(o==""and c or"")else return"@"..o..n..c end end) end end Você também vai precisar depender opcionalmente do mod intllib, adicionando "intllib?" em uma linha vazia de seu depends.txt. Observe também que se intllib não estiver instalado, a função S() é definido para retornar a string inalterada. Isto é feito para que você não tenha que regar toneladas de 'if's (ou de estruturas semelhantes) para verificar se a lib está realmente instalada. Em seguida, para cada string "traduzível" em suas fontes, use a função S() (definida no trecho anterior) para retornar uma string traduzida. Por exemplo: minetest.register_node("meu_mod:meu_node", { description = S("Meu Fabuloso Node"), <...> }) Em seguida, dentro do diretório do seu mod, crie um diretório chamado 'locale' no qual você deve colocar os arquivos nomeados com duas letras ( de acordo com a ISO para códigos de idiomas) para os idiomas que seu mod vai suportar. Aqui vai um exemplo de arquivo para idioma espanhol ('es.txt'): # As linhas que começam com um sinal de libra '#' são comentários e # efetivamente ignorados pelo carregamento. # Note-se que comentários duram apenas até o fim da linha; # Não há nenhum suporte para comentários de várias linhas. Ola, Mundo! = Hola, Mundo! String com\npulo de linha = Cadena con\nsaltos de linea String com um sinal de \= igualdade = Cadena con un signo de \= igualdad Como atualmente não existe nenhuma maneira portátil para detectar o idioma, esta biblioteca tenta várias alternativas, e usa o primeiro encontrado: - Valor de 'language' definido em 'minetest.conf' - Variavel de ambiente 'LANG' (normalmente definida em Unix-like SO's). - Padrão "en". Note que, em qualquer caso, apenas até os dois primeiros caracteres são usados para cada idioma, por exemplo, as definições de "pt_BR.UTF-8", "pt_BR", e "pt" são todos iguais. Os usuários do Windows não têm a variavel de ambiente 'LANG' por padrão. Para adicioná-lo, faça o seguinte: - Clique em Iniciar > Configurações > Painel de Controle. - Iniciar o aplicativo "System". - Clique na aba "Avançado". - Clique no botão "Variáveis ​​de Ambiente" - Clique em "Novo". - Tipo "LANG" (sem aspas) com o nome e o código de linguagem como valor. - Clique em OK até que todas as caixas de diálogo estão fechadas. Como alternativa para todas as plataformas, se você não quiser modificar as configurações do sistema, você pode adicionar a seguinte linha ao seu arquivo 'minetest.conf': language = Note também que existem alguns problemas com o uso acentos gráficos e, em geral caracteres não-latinos em strings. Até que uma correção seja encontrada, por favor, limite-se a usar apenas caracteres da US-ASCII. Obrigado por ler até este ponto. Se você tiver quaisquer comentários/sugestões, por favor poste no tópico do fórum. Haja textos traduzidos! :P -- Tutorial criado por Kaeza Traduzido para Português do Brasil por BrunoMine