diff --git a/_it/basics/lua.md b/_it/basics/lua.md index 762ca75..475fd78 100644 --- a/_it/basics/lua.md +++ b/_it/basics/lua.md @@ -12,14 +12,10 @@ redirect_from: /it/chapters/lua.html In questo capitolo parleremo della programmazione in Lua, degli strumenti necessari, e tratteremo alcune tecniche che troverai probabilmente utili. - [Programmare](#programmare) + - [Programmare in Lua](#programmare-in-lua) - [Editor di codice](#editor-di-codice) -- [Programmare in Lua](#programmare-in-lua) - - [Flusso del programma](#flusso-del-programma) - - [Tipi di variabili](#tipi-di-variabili) - - [Operatori matematici](#operatori-matematici) - - [Selezione](#selezione) - - [Operatori logici](#operatori-logici) - [Portata locale e globale](#portata-locale-e-globale) + - [Precedenza alla portata locale](#precedenza-alla-portata-locale) - [Inclusione di altri script Lua](#inclusione-di-altri-script-lua) @@ -35,6 +31,11 @@ Insegnarti i processi logici della programmazione non rientra nell'ambito di que * [Programming with Mosh](https://www.youtube.com/user/programmingwithmosh) is a good YouTube series to learn programming. +### Programmare in Lua + +Neanche insegnarti come programmare in lua rientra nell'ambito di questo libro. +Tuttavia, se mastichi l'inglese puoi rifarti a quest'altro libro, ["Programming in Lua"](https://www.lua.org/pil/contents.html), per un'eccellente infarinatura sull'argomento. Se invece l'inglese non è il tuo forte, troverai comunque svariate guide in italiano in giro per la rete. + ## Editor di codice @@ -70,117 +71,6 @@ Tra gli editor più famosi che ben si prestano a lavorare in Lua, troviamo: (ne esistono ovviamente anche altri) -## Programmare in Lua - -### Flusso del programma - -I programmi sono una serie di comandi che vengono eseguiti uno dopo l'altro. -Chiamiamo questi comandi "istruzioni". -Il flusso del programma è il come queste istruzioni vengono eseguite, e a differenti tipi di flusso corrispondono comportamenti diversi. -Essi possono essere: - -* Sequenziali: eseguono un'istruzione dopo l'altra, senza salti. -* Selettivi: saltano alcune sequenze a seconda delle condizioni. -* Iteranti: continuano a eseguire le stesse istruzioni finché una condizione non è soddisfatta. - -Quindi, come vengono rappresentate le istruzioni in Lua? - -```lua -local a = 2 -- Imposta 'a' a 2 -local b = 2 -- Imposta 'b' a 2 -local risultato = a + b -- Imposta 'risultato' ad a + b, cioè 4 -a = a + 10 -print("La somma è ".. risultato) -``` - -In quest'esempio, `a`, `b`, e `risultato` sono *variabili*. Le variabili locali si dichiarano tramite l'uso della parola chiave `local` (che vedremo tra poco), e assegnando eventualmente loro un valore iniziale. - -Il simbolo `=` significa *assegnazione*, quindi `risultato = a + b` significa impostare "risultato" ad a + b. -Per quanto riguarda i nomi delle variabili, essi possono essere più lunghi di un carattere - al contrario che in matematica - come visto in `risultato`, e vale anche la pena notare che Lua è *case-sensitive* (differenzia maiuscole da minuscole); `A` è una variabile diversa da `a`. - -### Tipi di variabili - -Una variabile può equivalere solo a uno dei seguenti tipi e può cambiare tipo dopo l'assegnazione. -È buona pratica assicurarsi che sia sempre solo o nil o diversa da nil. - -| Tipo | Descrizione | Esempio | -|----------|---------------------------------|----------------| -| Nil | Non inizializzata. La variabile è vuota, non ha valore | `local A`, `D = nil` | -| Numero | Un numero intero o decimale | `local A = 4` | -| Stringa | Una porzione di testo | `local D = "one two three"` | -| Booleano | Vero o falso (true, false) | `local is_true = false`, `local E = (1 == 1)` | -| Tabella | Liste | Spiegate sotto | -| Funzione | Può essere eseguita. Può richiedere input e ritornare un valore | `local result = func(1, 2, 3)` | - -### Operatori matematici - -Tra gli operatori di Lua ci sono: - -| Simbolo | Scopo | Esempio | -|---------|--------------------|---------------------------| -| A + B | Addizione | 2 + 2 = 4 | -| A - B | Sottrazione | 2 - 10 = -8 | -| A * B | Moltiplicazione | 2 * 2 = 4 | -| A / B | Divisione | 100 / 50 = 2 | -| A ^ B | Potenze | 2 ^ 2 = 22 = 4 | -| A .. B | Concatena stringhe | "foo" .. "bar" = "foobar" | - -Si tenga presente che questa non è comunque una lista esaustiva. - -### Selezione - -Il metodo di selezione più basico è il costrutto if. -Si presenta così: - -```lua -local random_number = math.random(1, 100) -- Tra 1 e 100. -if random_number > 50 then - print("Woohoo!") -else - print("No!") -end -``` - -Questo esempio genera un numero casuale tra 1 e 100. -Stampa poi "Woohoo!" se il numero è superiore a 50, altrimenti stampa "No!". - -### Operatori logici - -Tra gli operatori logici di Lua ci sono: - -| Simbolo | Scopo | Esempio | -|---------|--------------------------------------|-------------------------------------------------------------| -| A == B | Uguale a | 1 == 1 (true), 1 == 2 (false) | -| A ~= B | Non uguale a (diverso da) | 1 ~= 1 (false), 1 ~= 2 (true) | -| A > B | Maggiore di | 5 > 2 (true), 1 > 2 (false), 1 > 1 (false) | -| A < B | Minore di | 1 < 3 (true), 3 < 1 (false), 1 < 1 (false) | -| A >= B | Maggiore o uguale a | 5 >= 5 (true), 5 >= 3 (true), 5 >= 6 (false) | -| A <= B | Minore o uguale a | 3 <= 6 (true), 3 <= 3 (true) | -| A and B | E (entrambi devono essere veri) | (2 > 1) and (1 == 1) (true), (2 > 3) and (1 == 1) (false) | -| A or B | O (almeno uno dei due vero) | (2 > 1) or (1 == 2) (true), (2 > 4) or (1 == 3) (false) | -| not A | non vero | not (1 == 2) (true), not (1 == 1) (false) | - -La lista non è esaustiva, e gli operatori possono essere combinati, come da esempio: - -```lua -if not A and B then - print("Yay!") -end -``` - -Che stampa "Yay!" se `A` è falso e `B` vero. - -Gli operatori logici e matematici funzionano esattamente allo stesso modo; entrambi accettano input e ritornano un valore che può essere immagazzinato. Per esempio: - -```lua -local A = 5 -local is_equal = (A == 5) -if is_equal then - print("È equivalente!") -end -``` - - ## Portata locale e globale L'essere locale o globale di una variabile determina da dove è possibile accederci. @@ -216,6 +106,9 @@ one() two() ``` + +### Precedenza alla portata locale + Le variabili locali dovrebbero venire usate il più possibile, con le mod che creano al massimo una globale corrispondente al nome della mod. Crearne di ulteriori è considerato cattiva programmazione, e Minetest ci avviserà di ciò: diff --git a/_it/players/chat.md b/_it/players/chat.md index bba9167..f099932 100755 --- a/_it/players/chat.md +++ b/_it/players/chat.md @@ -8,17 +8,19 @@ redirect_from: /it/chapters/chat.html cmd_online: level: warning title: I giocatori offline possono eseguire comandi - message:

Viene passato il nome del giocatore al posto del giocatore in sé perché le mod possono eseguire comandi in vece di un giocatore offline. - Per esempio, il bridge IRC permette ai giocatori di eseguire comandi senza dover entrare in gioco.

+ message: | + Viene passato il nome del giocatore al posto del giocatore in sé perché le mod possono eseguire comandi in vece di un giocatore offline. + Per esempio, il ponte IRC permette ai giocatori di eseguire comandi senza dover entrare in gioco. -

Assicurati quindi di non dar per scontato che un giocatore sia connesso. - Puoi controllare ciò tramite

minetest.get_player_by_name
, per vedere se ritorna qualcosa o meno.

+ Assicurati quindi di non dar per scontato che un giocatore sia connesso. + Puoi controllare ciò tramite `minetest.get_player_by_name`, per vedere se ritorna qualcosa o meno. cb_cmdsprivs: level: warning title: Privilegi e comandi - message: Il privilegio shout non è necessario per far sì che un giocatore attivi questo callback. - Questo perché i comandi sono implementati in Lua, e sono semplicemente dei messaggi in chat che iniziano con /. + message: | + Il privilegio shout non è necessario per far sì che un giocatore attivi questo richiamo. + Questo perché i comandi sono implementati in Lua, e sono semplicemente dei messaggi in chat che iniziano con /. --- @@ -26,15 +28,18 @@ cb_cmdsprivs: Le mod possono interagire con la chat del giocatore, tra l'inviare messaggi, intercettarli e registrare dei comandi. -- [Inviare messaggi a tutti i giocatori](#inviare-messaggi-a-tutti-i-giocatori) -- [Inviare messaggi a giocatori specifici](#inviare-messaggi-a-giocatori-specifici) +- [Inviare messaggi](#inviare-messaggi) + - [A tutti i giocatori](#a-tutti-i-giocatori) + - [A giocatori specifici](#a-giocatori-specifici) - [Comandi](#comandi) -- [Complex Subcommands](#complex-subcommands) - - [Using string.split](#using-stringsplit) - - [Using Lua patterns](#using-lua-patterns) + - [Accettare più argomenti](#accettare-più-argomenti) + - [Usare string.split](#usare-stringsplit) + - [Usare i pattern Lua](#usare-i-pattern-lua) - [Intercettare i messaggi](#intercettare-i-messaggi) -## Inviare messaggi a tutti i giocatori +## Inviare messaggi + +### A tutti i giocatori Per inviare un messaggio a tutti i giocatori connessi in gioco, si usa la funzione `chat_send_all`: @@ -50,7 +55,7 @@ Segue un esempio di come apparirerebbe in gioco: Il messaggio appare su una nuova riga, per distinguerlo dai messaggi dei giocatori. -## Inviare messaggi a giocatori specifici +### A giocatori specifici Per inviare un messaggio a un giocatore in particolare, si usa invece la funzione `chat_send_player`: @@ -77,50 +82,50 @@ minetest.register_chatcommand("foo", { Nel codice qui in alto, `interact` è elencato come [privilegio](privileges.html) necessario; in altre parole, solo i giocatori che hanno quel privilegio possono usare il comando. +`param` è una stringa contenente tutto ciò che un giocatore scrive dopo il nome del comando. +Per esempio, in `/grantme uno,due,tre`, `param` equivarrà a `uno,due,tre`. + I comandi ritornano un massimo di due valori, dove il primo è un booleano che indica l'eventuale successo, mentre il secondo è un messaggio da inviare all'utente. {% include notice.html notice=page.cmd_online %} -## Complex Subcommands +### Accettare più argomenti -It's common for chat commands to require multiple arguments, for example, -`/team join `. There are two ways -of doing this, either using Minetest's string split or Lua patterns. +Non è raro che i comandi richiedano più argomenti, come per esempio `/squadra entra `. +Ci sono due modi per implementare ciò: usare `string.split` o i pattern Lua. -### Using string.split +#### Usare string.split -A string can be split up into words using `string.split(" ")`: +Una stringa può essere spezzettata in più parti tramite `string.split(" ")`: ```lua -local parts = param:split(" ") -local cmd = parts[1] +local parti = param:split(" ") +local cmd = parti[1] -if cmd == "join" then - local team_name = parts[2] - team.join(name, team_name) - return true, "Joined team!" -elseif cmd == "max_users" then - local team_name = parts[2] - local max_users = tonumber(parts[3]) - if team_name and max_users then - return true, "Set max users of team " .. team_name .. " to " .. max_users +if cmd == "entra" then + local nome_squadra = parti[2] + squadra.entra(name, nome_squadra) + return true, "Sei dentro la squadra!" +elseif cmd == "gioc_max" then + local nome_squadra = parti[2] + local gioc_max = tonumber(parti[3]) + if nome_squadra and gioc_max then + return true, "Giocatori massimi della squadra " .. nome_squadra .. " impostati a " .. gioc_max else - return false, "Usage: /team max_users " + return false, "Uso: /squadra gioc_max " end else - return false, "Command needed" + return false, "È necessario un comando" end ``` -### Using Lua patterns - -[Lua patterns](https://www.lua.org/pil/20.2.html) are a way of extracting stuff -from text using rules. They're best suited for when there are arguments that can -contain spaces or more control is needed on how parameters are captured. +#### Usare i pattern Lua +[I pattern Lua](https://www.lua.org/pil/20.2.html) sono un modo per estrapolare pezzi di testo seguendo delle regole. +Sono perfetti in caso di argomenti che contengono spazi, o comunque quando è richiesto un controllo più meticoloso dei parametri catturati. ```lua local a, msg = string.match(param, "^([%a%d_-]+) (*+)$") @@ -161,7 +166,7 @@ minetest.register_on_chat_message(function(name, message) end) ``` -Ritornando false, si permette al messaggio di essere inviato. +Ritornando `false`, si permette al messaggio di essere inviato. In verità `return false` può anche essere omesso in quanto `nil` verrebbe ritornato implicitamente, e nil è trattato come false. {% include notice.html notice=page.cb_cmdsprivs %} diff --git a/_it/quality/translations.md b/_it/quality/translations.md index 37e63ad..7bdf825 100644 --- a/_it/quality/translations.md +++ b/_it/quality/translations.md @@ -1,5 +1,5 @@ --- -title: Translation (i18n / l10n) +title: Traduzione layout: default root: ../.. idx: 8.05 @@ -7,117 +7,92 @@ marked_text_encoding: level: info title: Marked Text Encoding message: | - You don't need to know the exact format of marked text, but it might help - you understand. + Non hai davvero bisogno di capire come funziona il testo formattato, ma potrebbe aiutarti a capire meglio. ``` - "\27(T@mymod)Hello everyone!\27E" + "\27(T@miamod)Hello everyone!\27E" ``` - * `\27` is the escape character - it's used to tell Minetest to pay attention as - something special is coming up. This is used for both translations and text - colorisation. - * `(T@mymod)` says that the following text is translatable using the `mymod` - textdomain. - * `Hello everyone!` is the translatable text in English, as passed to the - translator function. - * `\27E` is the escape character again and `E`, used to signal that the end has - been reached. + * `\27` è il carattere di escape - è usato per dire a Minetest di far attenzione, in quanto sta per seguire qualcosa di speciale. È usato sia per le traduzioni che per la colorazione del testo. + * `(T@miamod)` dice che il testo a seguire è traducibile usando il dominio testuale di `miamod`. + * `Hello everyone!` è il testo in inglese da tradurre, passato alla funzione di traduzione. + * `\27E` è di nuovo il carattere di escape, dove `E` è usato per segnalare che si è arrivati alla fine. --- -## Introduction +## Introduzione -Adding support for translation to your mods and games allows more people to -enjoy them. According to Google Play, 64% of Minetest Android users don't have -English as their primary language. Minetest doesn't track stats for user -languages across all platforms, but there's likely to be a high proportion of -non-English speaking users. +Aggiungere il supporto per le traduzioni nelle tue mod e giochi dà la possibilità a più persone di gustarsele. +Stando a Google Play, il 64% dei giocatori di Minetest Android non usano l'inglese come prima lingua. +Per quanto Minetest non tenga traccia di questo parametro nelle altre piattaforme, vien comunque da sé pensare che una buona parte di giocatrici e giocatori non siano madrelingua inglesi. -Minetest allows you to translate your mods and games into different languages by -writing your text in English, and using translation files to map into other -languages. Translation is done on each player's client, allowing each player to -see a different language. +Minetest ti permette di localizzare i tuoi contenuti in tante lingue diverse, chiedendoti il testo base in inglese, seguito da dei file di traduzione che mappano le parole/frasi equivalenti nelle altre lingue. Questo processo di traduzione è fatto a lato client, cosicché ogni giocatore possa vedere il contenuto nella propria lingua (se disponibile). -- [How does client-side translation work?](#how-does-client-side-translation-work) - - [Marked text](#marked-text) - - [Translation files](#translation-files) -- [Format strings](#format-strings) -- [Best practices and Common Falsehoods about Translation](#best-practices-and-common-falsehoods-about-translation) -- [Server-side translations](#server-side-translations) -- [Conclusion](#conclusion) +- [Come funziona la traduzione lato client?](#come-funziona-la-traduzione-lato-client) + - [Testo formattato](#testo-formattato) + - [File di traduzione](#file-di-traduzione) +- [Formattare una stringa](#formattare-una-stringa) +- [Buona prassi per una buona traduzione](#buona-prassi-per-una-buona--traduzione) +- [Traduzioni lato server](#traduzioni-lato-server) +- [Per concludere](#per-concludere) -## How does client-side translation work? +## Come funziona la traduzione lato client? -### Marked text +### Testo formattato -The server needs to tell clients how to translate text. This is done by marking -text as translatable using a translator function (`S()`), returned by -`minetest.get_translator(textdomain)`: +Il server ha bisogno di dire ai client come tradurre il testo. +Questo accade grazie alla funzione `minetest.get_translator(dominiotestuale)`, che abbrevieremo con `S()`: ```lua -local S = minetest.get_translator("mymod") +local S = minetest.get_translator("miamod") -minetest.register_craftitem("mymod:item", { +minetest.register_craftitem("miamod:oggetto", { description = S("My Item"), }) ``` -The first argument of `get_translator` is the `textdomain`, which acts as a -namespace. Rather than having all translations for a language stored in the same -file, translations are separated into textdomains, with a file per textdomain -per language. The textdomain should be the same as the mod name, as it helps -avoid mod conflicts. +Il primo parametro di `get_translator` è il dominio testuale, che funge da [spazio dei nomi](https://it.wikipedia.org/wiki/Namespace). +Piuttosto che avere tutte le traduzioni di una lingua salvate nello stesso file, queste possono essere suddivise in domini testuali (un file per dominio per lingua). +È buona norma assegnare al dominio testuale lo stesso nome della mod, onde evitare conflitti tra mod diverse. -Marked text can be used in most places where human-readable text is accepted, -including formspecs, item def fields, infotext, and more. When including marked -text in formspecs, you need to escape the text using -`minetest.formspec_escape`. +Il testo formattato può essere usato nella maggior parte dei casi dove è richiesto un testo fatto per gli esseri umani - come i formspec, i campi di definizioni di un oggetto, `infotext` ecc. +Nel caso dei formspec, tieni presente che dovrai usare la funzione di escape `minetest.formspec_escape` per una corretta visualizzazione. -When the client encounters marked text, such as that passed to `description`, it -looks it up in the player's language's translation file. If a translation cannot -be found, it falls back to the English translation. +Quando il client incontra del testo formattato, come quello passato in `description`, ne andrà a cercare il corrispettivo nel file di traduzione della lingua del giocatore. Se la ricerca non avrà avuto esito positivo, ritornerà quello in inglese. -Marked text contains the English source text, the textdomain, and any additional -arguments passed to `S()`. It's essentially a text encoding of the `S` call, -containing all the required information. +Nel testo formattato sono presenti il testo sorgente in inglese, il dominio testuale, e qualsivoglia altro parametro passato a `S()`. +Essenzialmente, è una codifica testuale della chiamata a `S` che contiene tutte le informazioni necessarie. {% include notice.html notice=page.marked_text_encoding %} -### Translation files +### File di traduzione -Translation files are media files that can be found in the `locale` folder for -each mod. Currently, the only supported format is `.tr`, but support for more -common formats is likely in the future. Translation files must be named -in the following way: `[textdomain].[lang].tr`. +I file di traduzione sono file che possono essere trovati nella cartella `locale` di ogni mod. +Al momento, l'unico formato supportato è `.tr`, ma è probabile che altri formati più tipici saranno aggiunti in futuro. +I file di traduzione devono essere nominati nel seguente modo: `[dominiotestuale].[codicelingua].tr`. -Files in the `.tr` start with a comment specifying the textdomain, and then -further lines mapping from the English source text to the translation. +I file `.tr` iniziano con un commento che ne specifica il dominio, seguito poi da righe che mappano il testo originale in inglese nella lingua del file. -For example, `mymod.fr.tr`: +Per esempio, `miamod.it.tr`: ``` -# textdomain: mymod -Hello everyone!=Bonjour à tous ! -I like grapefruit=J'aime le pamplemousse +# textdomain: miamod +Hello everyone!=Ciao a tutti! +I like grapefruit=Mi piace il pompelmo ``` -You should create translation files based on your mod/game's source code, -using a tool like -[update_translations](https://github.com/minetest-tools/update_translations). -This tool will look for `S(` in your Lua code, and automatically create a -template that translators can use to translate into their language. -It also handles updating the translation files when your source changes. +Dovresti creare dei file di traduzione basati sul codice sorgente delle tue mod/giochi, usando uno strumento come [update_translations](https://github.com/minetest-tools/update_translations). +Questo cercherà tutte le occorrenze di `S(` nel tuo codice Lua, creando in automatico un modello che traduttrici e traduttori potranno usare per tradurre nella loro lingua. +Inoltre, si prenderà cura di aggiornare i file di traduzione ogniqualvolta verranno effettuate modifiche al codice. -## Format strings +## Formattare una stringa -It's common to need to include variable information within a translation -string. It's important that text isn't just concatenated, as that prevents -translators from changing the order of variables within a sentence. Instead, -you should use the translation system's format/arguments system: +Non è raro dover inserire una variabile dentro una stringa da tradurre. +È importante che il testo non sia semplicemente concatenato, in quanto impedirebbe a chi traduce di cambiare l'ordine delle variabili all'interno della frase. +Al contrario, dovresti usare il seguente sistema di formattazione: ```lua minetest.register_on_joinplayer(function(player) @@ -125,39 +100,29 @@ minetest.register_on_joinplayer(function(player) end) ``` -If you want to include a literal `@` in your translation, you'll need to escape -by writing `@@`. +Se vuoi scrivere letteralmente `@` nella tua frase, dovrai usare una sequenza di escape scrivendo `@@`. -You should avoid concatenation *within* a sentence, but it's recommended that -you join multiple sentences using concatenation. This helps translators by -keeping strings smaller. +Dovresti evitare di concatenare stringhe *all'interno* di una frase; piuttosto, sarebbe meglio concatenare più frasi come da esempio, in quanto permette a chi traduce di lavorare su stringhe più piccole: ```lua S("Hello @1!", player_name) .. " " .. S("You have @1 new messages.", #msgs) ``` -## Best practices and Common Falsehoods about Translation +## Buona prassi per una buona traduzione -* Avoid concatenating text and use format arguments instead. This gives - translators full control over changing the order of things. -* Create translation files automatically, using - [update_translations](https://github.com/minetest-tools/update_translations). -* It's common for variables to change the surrounding text, for example, with - gender and pluralisation. This is often hard to deal with, so is - frequently glossed over or worked around with gender neutral phrasings. -* Translations may be much longer or much smaller than the English text. Make - sure to leave plenty of space. -* Other languages may write numbers in a different way, for example, with commas - as decimal points. `1.000,23`, `1'000'000,32` -* Don't assume that other languages use capitalisation in the same way. +* Evita di concatenare il testo, optando invece per formattare le stringhe. Questo permette a chi traduce di avere pieno controllo sull'ordine degli elementi; +* Crea i file di traduzione in automatico usando [update_translations](https://github.com/minetest-tools/update_translations); +* È cosa comune che le variabili cambino il testo circostante, per esempio tramite genere e numero. Risulta spesso difficile trovare qualcosa che si sposi bene in tutti i casi, perciò si tende a cambiare la struttura della frase in modo che risulti sempre corretta ("Hai ottenuto 3 mele" -> "Hai ottenuto mela (x3)"); +* Le traduzioni potrebbero essere molto più lunghe o molto più corte rispetto all'originale. Assicurati di lasciare sempre un po' di respiro; +* Non tutte le lingue scrivono i numeri nella stessa maniera, come per esempio `1.000` e `1'000`; +* Non dar per scontato che le altre lingue usino le maiscuole nella stessa maniera della tua. -## Server-side translations +## Traduzioni lato server -Sometimes you need to know the translation of text on the server, for example, -to sort or search text. You can use `get_player_information` to get a player's -lang,uage and `get_translated_string` to translate marked text. +Certe volte ti capiterà di voler sapere quale traduzione di una tal stringa stia venendo visualizzata dal giocatore. +Puoi usare `get_player_information` per ottenere la lingua utilizzata e `get_translated_string` per tradurne il testo formattato. ```lua local list = { @@ -168,24 +133,21 @@ local list = { minetest.register_chatcommand("find", { func = function(name, param) local info = minetest.get_player_information(name) - local language = info and info.language or "en" + local lingua = info and info.language or "en" - for _, line in ipairs(list) do - local trans = minetest.get_translated_string(language, line) - if trans:contains(query) then - return line + for _, riga in ipairs(lista) do + local trad = minetest.get_translated_string(language, riga) + if trad:contains(query) then + return riga end end end, }) ``` -## Conclusion +## Per concludere -The translation API allows making mods and games more accessible, but care is -needed in order to use it correctly. +Se ben gestita, l'API per le traduzioni permette di rendere mod e giochi più accessibili. -Minetest is continuously improving, and the translation API is likey to be -extended in the future. For example, support for gettext translation files will -allow common translator tools and platforms (like weblate) to be used, and -there's likely to be support for pluralisation and gender added. +Si tenga comunque conto che Minetest è in continua evoluzione e che l'API verrà probabilmente ampliata in futuro. +Per esempio, il supporto per i file di traduzione *gettext* permetterà l'utilizzo di piattaforme e strumenti consolidati come Weblate, mentre nel frattempo si sta lavorando al supporto per il genere e il numero.