好吧,你不返回任何东西,你只从内部函数返回东西,但外部函数没有。如果 CSV 是同步的,请执行以下操作:
function translate(lng, str)
{
var translation = '';
csv().from(__dirname + '/../application/_common/lng/' + lng + '.csv', {delimiter: ';'})
.transform( function(row, index) {
if(row[0] == str) {
return row[1];
}
})
.on('data', function(data) {
translation = data;
})
.on('end', function() { return translation; }); // This just returns something from the inner function, which has no effect.
return translation; // actually return the translation
}
如果 CSV 是 _asynchronous,它会变得有点困难。做这个:
function translate(lng, str, callback) // Note the extra parameter
{
var translation = '';
csv().from(__dirname + '/../application/_common/lng/' + lng + '.csv', {delimiter: ';'})
.transform( function(row, index) {
if(row[0] == str) {
return row[1];
}
})
.on('data', function(data) {
translation = data;
})
.on('end', function() { callback(translation); }); // call the callback
}
现在你可以这样称呼它:
var translation;
translate('en', 'translate_me', function(val){ translation = val; });