Personalizza la lingua
Questa guida ti mostra come personalizzare le lingue e i testi mostrati da Waline.
Personalizza lingua e testi del client
@waline/client fornisce l'opzione locale, tramite la quale puoi personalizzare le lingue e i testi mostrati.
Per impostazione predefinita usa le traduzioni integrate e, se la lingua non è supportata, ricade su en-US (inglese americano).
Puoi passare all'opzione locale una configurazione completa per aggiungere una lingua, oppure impostare solo alcune voci per sovrascrivere i testi esistenti dell'interfaccia.
Opzioni di locale
Relative ai livelli:
level${number}: etichetta del livello numero indicato
Tips
Ad esempio, puoi personalizzare le etichette di 6 livelli così:
Waline.init({ locale: { level0: '炼体', level1: '炼气', level2: '筑基', level3: '金丹', level4: '元婴', level5: '化神', }, });Relative alle reazioni:
reactionTitle: titolo delle reazionireaction0: testo della reazione 1reaction1: testo della reazione 2reaction2: testo della reazione 3reaction3: testo della reazione 4reaction4: testo della reazione 5reaction5: testo della reazione 6reaction6: testo della reazione 7reaction7: testo della reazione 8reaction8: testo della reazione 9
Relative all'interfaccia:
nick: nicknamemail: e-maillink: linkplaceholder: testo predefinito del riquadro dei commentisofa: testo mostrato quando l'area dei commenti è vuotasubmit: testo del pulsante di inviocomment: testo del pulsante dei commentirefresh: testo del pulsante di aggiornamentomore: testo del pulsante per caricare altri commentiuploading: testo mostrato durante il caricamentologin: testo del pulsante di accessoadmin: l'etichetta dell'amministratoresticky: testo dei commenti fissatiword: parolaanonymous: nome predefinito dell'utente anonimooptional: testo che indica i campi facoltativigifSearchPlaceholder: testo segnaposto della ricerca emojioldest: commenti meno recentilatest: commenti più recentihottest: commenti più popolari
Info
I testi qui sopra vengono mostrati nella pagina.
Relative ai messaggi di errore:
nickError: messaggio di errore quando il nickname non rispetta i requisitimailError: messaggio di errore quando l'indirizzo e-mail non rispetta i requisitiwordHint: messaggio di errore per il conteggio delle parole, in cui$0,$1e$2vengono sostituiti automaticamente con il limite minimo di parole consentite, il limite massimo e il numero di parole attuale.
Relativi all'ora dei commenti:
seconds: secondi faminutes: minuti fahours: ore fadays: giorni fanow: adesso
Relative alla moderazione:
approved: pulsante che contrassegna il commento come approvatowaiting: pulsante che contrassegna il commento come in attesa di revisionespam: pulsante che contrassegna i commenti come spamunsticky: pulsante che rimuove il commento da quelli fissati
Relative all'accessibilità:
like: il testo dell'etichetta del pulsante «mi piace»cancelLike: il testo dell'etichetta del pulsante per annullare il «mi piace»reply: il testo dell'etichetta del pulsante di rispostacancelReply: il testo dell'etichetta del pulsante per annullare la rispostapreview: testo dell'etichetta del pulsante di anteprimaemoji: il testo dell'etichetta del pulsante emojigif: il testo dell'etichetta del pulsante GIFuploadImage: il testo dell'etichetta del pulsante per caricare un'immagineprofile: il titolo del link alla pagina del profilologout: il testo dell'etichetta del pulsante di uscita
Info
Questi testi servono solo per l'accessibilità e non vengono mostrati nella pagina.
Esempio
// en default
const locale = {
nick: 'NickName',
nickError: 'NickName cannot be less than 3 bytes.',
mail: 'E-Mail',
mailError: 'Please confirm your email address.',
link: 'Website',
optional: 'Optional',
placeholder: 'Comment here...',
sofa: 'No comment yet.',
submit: 'Submit',
like: 'Like',
cancelLike: 'Cancel like',
reply: 'Reply',
cancelReply: 'Cancel reply',
comment: 'Comments',
refresh: 'Refresh',
more: 'Load More...',
preview: 'Preview',
emoji: 'Emoji',
uploadImage: 'Upload Image',
seconds: 'seconds ago',
minutes: 'minutes ago',
hours: 'hours ago',
days: 'days ago',
now: 'just now',
uploading: 'Uploading',
login: 'Login',
logout: 'logout',
admin: 'Admin',
sticky: 'Sticky',
word: 'Words',
wordHint: 'Please input comments between $0 and $1 words!\n Current word number: $2',
anonymous: 'Anonymous',
level0: 'Dwarves',
level1: 'Hobbits',
level2: 'Ents',
level3: 'Wizards',
level4: 'Elves',
level5: 'Maiar',
gif: 'GIF',
gifSearchPlaceholder: 'Search GIF',
profile: 'Profile',
approved: 'Approved',
waiting: 'Waiting',
spam: 'Spam',
unsticky: 'Unsticky',
oldest: 'Oldest',
latest: 'Latest',
hottest: 'Hottest',
reactionTitle: 'What do you think?',
};
Waline.init({
el: '#waline',
path: location.pathname,
serverURL: 'YOUR_SERVER_URL',
// ...
locale,
});Personalizza i testi di risposta del server
@waline/vercel fornisce l'opzione locales, che permette di personalizzare i testi di risposta.
Per impostazione predefinita usa i testi multilingue integrati e, se la lingua non è supportata, ricade sui testi in en-US.
Puoi passare all'opzione locales una configurazione completa per aggiungere una lingua, oppure impostarne solo alcune voci per sovrascrivere i testi esistenti.
Tips
Tutti i testi personalizzati vengono infine renderizzati con il motore di template nunjucks, che supporta espressioni logiche piuttosto complesse. Ad esempio:
Registration confirm mail send failed, please {%- if isAdmin -%}check your mail configuration{%- else -%}check your email address and contact administrator{%- endif -%}.Opzioni di locales
Relative ai messaggi di errore:
import data format not support!USER_EXISTUSER_NOT_EXISTUSER_REGISTEREDTOKEN_EXPIREDTWO_FACTOR_AUTH_ERROR_DETAILDuplicate ContentComment too fast
Relative alle e-mail di registrazione/accesso:
[{{name | safe}}] Registration Confirm MailPlease click <a href=\"{{url}}\">{{url}}<a/> to confirm registration, the link is valid for 1 hour. If you are not registering, please ignore this email.[{{name | safe}}] Reset PasswordPlease click <a href=\"{{url}}\">{{url}}</a> to login and change your password as soon as possible!Registration confirm mail send failed, please {%- if isAdmin -%}check your mail configuration{%- else -%}check your email address and contact administrator{%- endif -%}.
Relative alle e-mail di notifica dei commenti:
MAIL_SUBJECT:Your comment on {{site.name | safe}} received a replyMAIL_TEMPLATE:<div style='border-top:2px solid #12ADDB;box-shadow:0 1px 3px #AAAAAA;line-height:180%;padding:0 15px 12px;margin:50px auto;font-size:12px;'> <h2 style='border-bottom:1px solid #DDD;font-size:14px;font-weight:normal;padding:13px 0 10px 8px;'> Your comment on <a style='text-decoration:none;color: #12ADDB;' href='{{site.url}}' target='_blank'>{{site.name}}</a> received a reply </h2>{{parent.nick}}, you wrote: <div style='padding:0 12px 0 12px;margin-top:18px'> <div style='background-color: #f5f5f5;padding: 10px 15px;margin:18px 0;word-wrap:break-word;'>{{parent.comment | safe}}</div><p><strong>{{self.nick}}</strong> replied:</p><div style='background-color: #f5f5f5;padding: 10px 15px;margin:18px 0;word-wrap:break-word;'>{{self.comment | safe}}</div><p><a style='text-decoration:none; color:#12addb' href='{{site.postUrl}}' target='_blank'>View full reply</a> or visit <a style='text-decoration:none; color:#12addb' href='{{site.url}}' target='_blank'>{{site.name}}</a>.</p><br/> </div></div>MAIL_SUBJECT_ADMIN:New comment on {{site.name | safe}}MAIL_TEMPLATE_ADMIN:<div style='border-top:2px solid #12ADDB;box-shadow:0 1px 3px #AAAAAA;line-height:180%;padding:0 15px 12px;margin:50px auto;font-size:12px;'> <h2 style='border-bottom:1px solid #DDD;font-size:14px;font-weight:normal;padding:13px 0 10px 8px;'> New comment on <a style='text-decoration:none;color: #12ADDB;' href='{{site.url}}' target='_blank'>{{site.name}}</a> </h2> <p><strong>{{self.nick}}</strong> wrote:</p><div style='background-color: #f5f5f5;padding: 10px 15px;margin:18px 0;word-wrap:break-word;'>{{self.comment | safe}}</div><p><a style='text-decoration:none; color:#12addb' href='{{site.postUrl}}' target='_blank'>View page</a></p><br/></div>
Esempio
// index.js
const Waline = require('@waline/vercel');
module.exports = Waline({
locales: {
'en-US': {
USER_EXIST: 'Warning! User exist!',
},
},
});