 Io voglio parlare di internazionalizzazione e localizzazione per i temi e plugin. Ho fatto questo speech a Bellino e mi sono reso conto che c'è interesse e non è così da principiante come mi aspettavo la tematica. Oggi ci sono sempre più clienti che come prima romana vogliamo un sito in più lingue e ti devi rendere conto come poi creare i tuoi plugin e temi per avere un prodotto adeguato. Mi presento un attimo, cioè mio collega Giustino ha detto qualcosa, che sono uno sviluppatore web da quasi vent'anni e a dieci anni sono in Italia. Per questo parlo, credo, ospiro abbastanza bene italiano e mi sono un paio di anni fa enamorato in WordPress e poi mi sono anche specializzato come sviluppatore per WordPress. Sono anche abbastanza attivo nella community di WordPress di Milano per essere co-organizzatore di Meetup di Milano. Ok, cominciamo con questa parte bella. Vediamo sempre di più questi, non ho trovato una traduzione per questa cosa in English, number of names. In pratica si tratta di parole, che sono così lunghe che non sono a voglia di scrivere. Mettono invece della parola intera, mettono il carattere iniziale e quello della fine e tutto quello che manca come numero. Questo è nato nei anni 70, quando c'erano ancora i vex machine, non lo so se qualcuno di voi sa chi cos'è, c'erano dei username dovevano essere al massimo 8 caratteri. Ma c'erano anche tabelle, file e tutto questo, massimo di 8 caratteri. C'erano i six admin che si sono inventati dalle cose, tipo questo. C'è questa storia di un six admin della DC che doveva accorciare il nome Sherpenhausen e ha deciso di fare una S12N che era un po' più conveniente. Questi cinque sono internationalization, localization, globalization che sarebbero tutti e due insieme, i primi. Accessibility e personalization è una new comma e questo I'm Lost è la prima cosa che ti senti così. Tutto questo, magari ti immagini un testo, ho fatto così. Ok, è stato bello. Ok, parliamo di I18N e poi anche di L10N, che cosa è veramente la differenza che viene usata così, anche in WordPress è abbastanza... Non è esatto come viene usato, ma I18N è il processo quando tu prepari un prodotto per la traduzione. Tutte le cose, tu rendi il prodotto traducibile o più facile, la traduzione, o ti accerti che puoi usare anche utili e foto, tutti questi caratteri che servono nella lingua che magari hai già. E poi c'è questo modo di dire ok, dopo it can be done, possiamo cominciare a tradurre. E questo di solito è il campo dei sviluppatori che sono loro che sanno fare questa preparazione. Poi c'è L10N Localization e questo è il processo, dopo il prodotto è traducibile e possiamo preparare il prodotto e questo è il campo dei traduttori normalmente. Loro possono usare le tue che hanno per poi usare la nostra preparazione per creare questa traduzione del prodotto. Ok, cominciamo con la prima zona, la zona dei sviluppatori che pare che o almeno io la sensazione, ci sono tanti sviluppatori che magari non sentono il bisogno di farlo o credono che è molto complicato a fare tutto questo, ma la preparazione è veramente facile, abbiamo tre funzioni che possiamo usare, che Anasco a Anasco ci fa tornare una stringa, mettiamo dentro una stringa in inglese e poi diciamo che con una traduzione è fatta e ci fa tornare una traduzione nostra, possiamo usare poi con le nostre variabili e Anasco e funziona esattamente così solo che stampa subito fuori la stringa, sono tutti due lavorando insieme. Anasco a An sembra una funzione che tanti lo evitano però magari perché non l'hanno capito bene che cosa fa e infatti che questa funzione si aspetta anche un valore che si può passare un numero, in questo caso Stas, Stas e tre decidono di usare il plurale che la seconda stringa, Stas e uno usano la prima, così possiamo tranquillamente evitare avere delle stringe stranti tipo uno versioni di questo tipo, quindi non è veramente difficile usare una funzionata di questo tipo, però come sviluppatore dobbiamo anche preparare il tema o il plugin che deve caricare la traduzione poi fatta e in questo caso abbiamo per tema Load Team Domain e per plugin Load plugin Text Domain e tutti e due hanno il loro momento quando si deve caricare, il hook per tema e after setup team e quello per plugin, plugins loaded e abbastanza importante usare questi in on init perché init è già topo dopo e ci sono stringe che non vengono tradotte e ci sono ogni tanto delle persone che dicono che non funziona ma in realtà è così che init è un hook che l'authenticazione è stata fatta che l'usa è già fatta già login e tutte queste cose e già chiaro chi è dentro in WordPress anche se non abbiamo ancora reso o renderizzato la pagina e sì, andiamo avanti, le prime tre funzionalità che io ho nominato a nsqn hanno anche dei cogini che funzionano abbastanza simile solo che in questo caso può dare un contesto e questo può essere interessante quando avete due template che magari devono essere leggermente o diverso tradotto o quando magari c'è un sostantivo tipo italiano e omonimia, può essere che sono due parole che hanno un senso diverso, tipo ho letto imposta per esempio c'è una tasse ma poi c'è anche un altro oggetto, non mi ricordo più. Però questo può essere interessante e vediamo anche un attimo dopo nella parte dei traduttori poi abbiamo delle funzionalità che sono combinazioni di tutto questo più le funzionalità che rendono abbastanza sicuro il nostro output nell'HTML per attributi o anche per cose che magari stampiamo fuori per user che gli user input direttamente fuori magari meglio far un escape poi abbiamo due funzionalità per dati e numeri che sono abbastanza facili da usare in questo caso date i 18N, si può usare anche la optional date format e stampare fuori la data come si aspetta un madrelingua e anche numeri, la stessa identica cosa che così abbiamo magari anche la formatazione se facciamo una traduzione francese sopra mille e una spazio in cui c'è del punto anche il JavaScript, il JavaScript si può usare la tecnica come si usa underscore templates insieme con backbone views e tutto questo cosa, la si può usare la tecnica di prima ma se restano ancora delle stringe c'è sempre vupilocalized script che si può creare un hash map con la traduzione, questo è già caricato nel momento quando veramente viene insedito anche il file JavaScript nella nostra pagina poi abbiamo anche se guardato un po' proprio nei core file di WordPress ci sono un paio di funzionalità dentro che sono veramente interessanti tipo getlocale che ti fa capire che lingua è caricata in questo momento ma anche getavailable languages che sono delle lingue che abbiamo e underscore N no operation che anche questo è abbastanza interessante però fa già una cosa un po' più scura che magari non serve tutti i giorni ok andiamo un attimo anche nella translator zone che in un mondo ideal la vita del traduttore è abbastanza tranquilo a questo punto il sviluppatore era abbastanza bravo, ha creato i nostri file di traduzione per noi è tutto bello cominciamo a lavorare, in questo caso PoEdit che noi usiamo in azienda che funziona bene su Windows, Linux, Mac etc e così possiamo dare supporto anche a persone che magari non sanno ancora usare il tool però può anche essere che il nostro sviluppatore non ha neanche tanto lavorato magari ha solo copiato il file che si può anche fare quindi in questo caso è abbastanza forbo andare un attimo nel catalogue properties e controllare un po' i valori se vanno bene o no e questo serve quando vogliamo usare anche la funzionalità aggiuna di PoEdit per automaticamente rialdare dentro del nuovo string che magari ci sono durante lo sviluppo sono delle string in few e qui questo è una cosa che spero cantando che i traduttori non devono fare che facciamo noi sviluppatori che facciamo capire il PoEdit come deve sganalizzare tutto questo che si vede dalla funzionalità tipo Anasco N che si deve anche aggiungere i parametri così capisce bene che cosa devo usare di questa impostazione poi così si presenta almeno un PoEdit, la interfaccia questa è una stringa regolata abbastanza normale e questa è già una con il contesto che abbiamo la stessa identica stringa come prima solo che si capisce�도 nella bracket c'è scritto al segnalato PoEdit il nostro contesto che abbiamo insedito prima Questo è l'input per un Anasco N che è leggermente diverso, però si capisce prende anche per un traduttore. Ho fatto vedere una volta questa faccia e capisco benissimo che cosa deve fare. Ah sì, prima non ho fatto notare che in Escape HTML e Escape Attribute c'era anche un commento dentro che comincia con translators e due punti. In questo caso possiamo dare il nostro traduttore anche un messaggio, come qua, here's the message for you. Questo è abbastanza utile quando avete magari una stringa molto lunga come un disclaimer, si potrebbe usare in questo caso non la stringa completa, ma la parola disclaimer e metti una nota dentro, così almeno il traduttore capisce specia che cosa deve inserire in questo caso. Sono alla fine. Non avevo neanche bisogno delle note. Bene, se ci sono domande, abbiamo un po' di tempo. Potreste spiegare la differenza del contesto e le note perché non ho capito bene. Allora, il contesto vedi così, no? Hello dear user e il contesto. In questo caso ho inserito io come stringa. Questo era proprio, qua, with context. Questo può essere la qualsiasi stringa, no? Può essere, non lo so, che lo spieghi un po' sostantivo usato. Invece, qui vedi translators, due punti e c'è un message for you. La differenza è solo questo, che io posso dare il traduttore un messaggio proprio esplicito, no? Posso dire che, ok, questo how I do, lo faccio solo in mattino, una cosa così, non lo so, è un esempio, no? Da può edizi, si, si. Lo vedi, poi, la note per il traduttore a destra. Io usavo il contesto per questo scopo qui, perché non sapevo bene. C'era una vecchia versione di how edit che non faceva a vedere, questo cosa si doveva anche fare una configurazione a parte di tutto questo, però, credo, le nuove versioni sono tutti vanno abbastanza bene per questa cosa. Altri tool, sì, altri tool non conosco tanto bene. Il traduttore, io ho traduttato un corp, per l'italiano. E mi chiedo, c'è... Le note dei traduttori. Insiluto un po' con il traduttore, perché il traduttore sono fondamentale come le volte, per riuscire a capire dove è incosocato una certa situazione. C'è un modo per un migare di sviluppatori a scrivere, vedi? Sì, può dire che non c'è il bonus, metti uno dietro con la frusta e... Allora, noi cerchiamo di farlo. Siamo... Giustino di mio collega che lavoriamo insieme. Cerchiamo di essere molto... Perché ogni tanto dobbiamo anche noi traduttore, io sono l'unico tedesco, un'azienda. Quindi, quando si parla della versione tedesca, non so, tocca a me. Quindi, io so un po' che cosa prova un traduttore. Poi io posso anche, quando hai il codice, lavori con PoEdit in questo modo, poi cliccala sempre con il mouse destro e entrare nella riga del codice. Quindi, capisco il contesto. Però è sovinissimo che è una cosa molto difficile. Soprattutto perché spesso sono delle stringa che, se non sai quando vengono stampate, è impossibile tradurre bene o fai la traduzione e poi fai il secondo lavoro dopo che ti arrivano e dicono, guarda che cosa fa la stringa. Dici, non ha senso, sì, ma non sapevo. Conosco bene questo problema. Però questo è un po'... Sì, magari con le note si potrebbe aiutare un po'. Quindi tutti i traduttori da oggi mettono delle note per il translated task che fa bene. Altra domanda? Nelle impostazioni di PoEdit e nella funzione, diciamo quando le funzioni... Sì. ...anderscore x, anderscore e x. C'erano scopunti e... Sì. ...2c. Sì, sì, sì. Questo è proprio far capire che cosa sono. Sono magari valori che poi le trovano ogni caso. E poi ci sono anche quelli che possono essere, ma magari c'era un valore già impostato, quindi non per forza viene usato questo valore. Così PoEdit sa anche usare bene questo. Però dopo questa slide alla fine, ho messo anche una lista dei link, quindi credo che ho messo anche questa pagina dove si trova un po' la spiegazione di questo. E poi sì. Facciamo anche noi che coppiamo le file, così non dobbiamo tutte le volte. C'è questa cosa. Ok. Grazie, Dennis.