Lo scenario non è supportato direttamente, ma esistono un paio di soluzioni alternative che è possibile utilizzare. Il manubrio aiutanti sono solo codice javascript, in modo da poterli eseguire all'interno del codice helper:
function translateHelper() {
//...
}
function viewHelper = function(viewName, options) {
var hash = options.hash;
if(hash.placeholder) {
hash.placeholder = translateHelper(hash.placeholder);
}
};
Handlebars.registerHelper('view', viewHelper);
Handlebars.registerHelper('t', translateHelper);
E basta passare la chiave i18n per come l'argomento:
{{view placeholder="search.root"}}
Questo è bello, come a lungo come il tuo helper sa quali argomenti devono essere localizzati e quali no. Se ciò non è possibile, si può provare l'esecuzione di tutti gli argomenti di supporto attraverso il manubrio, se contengono un'espressione manubrio:
function resolveNestedTemplates(hash) {
_.each(hash, function(val, key) {
if(_.isString(val) && val.indexOf('{{' >= 0)) {
hash[key] = Handlebars.compile(val)();
}
});
return hash;
}
function view(viewName, options) {
var hash = resolveNestedTemplates(options.hash, this);
}
e utilizzare la sintassi modello nidificato hai descritto:
{{view placeholder="{{t 'search.root'}}" }}
mi rendo conto né di queste opzioni sono perfette, ma sono le migliori che potessi pensare.
Qual è il tuo cruccio esattamente? La sintassi '{{mustache}}' all'interno dell'helper o il fatto che devi passare un valore localizzato all'helper? – jevakallio
hai capito bene, vorrei usare la sintassi {{mustache}} all'interno dell'helper invece di passare un valore localizzato all'helper. Modificherò la mia domanda, solo un secondo. – mateusmaso
il problema è che il manubrio non ti permette di usare una sintassi {{moustache}} all'interno di un'opzione helper – mateusmaso