Tôi muốn sử dụng với JavaScript và Drupal.t()
tương đương format_interval()
.
Với PHP tôi sẽ sử dụng đoạn mã sau.
print t("!date ago", array("!date" => format_interval(time() - $lastActivity, 1)));
Tương đương trong JavaScript là gì?
Tôi muốn sử dụng với JavaScript và Drupal.t()
tương đương format_interval()
.
Với PHP tôi sẽ sử dụng đoạn mã sau.
print t("!date ago", array("!date" => format_interval(time() - $lastActivity, 1)));
Tương đương trong JavaScript là gì?
Câu trả lời:
Drupal không triển khai phiên bản JS của format_interval()
; đây là một cổng thô (được kiểm tra tối thiểu):
Drupal.formatInterval = function(interval, granularity, langcode) {
granularity = typeof granularity !== 'undefined' ? granularity : 2;
langcode = typeof langcode !== 'undefined' ? langcode : null;
var units = {
'1 year|@count years': 31536000,
'1 month|@count months': 2592000,
'1 week|@count weeks': 604800,
'1 day|@count days': 86400,
'1 hour|@count hours': 3600,
'1 min|@count min': 60,
'1 sec|@count sec': 1
},
output = '';
for (var key in units) {
var keys = key.split('|');
var value = units[key];
if (interval >= value) {
output += (output.length ? ' ' : '') + Drupal.formatPlural(Math.floor(interval / value), keys[0], keys[1], {}, { langcode: langcode });
interval %= value;
granularity--;
}
if (granularity == 0) {
break;
}
}
return output.length ? output : Drupal.t('0 sec', {}, { langcode: langcode });
}
Một số kết quả ngẫu nhiên sử dụng ở trên (dường như chúng khớp với chức năng PHP như mong đợi):
Clives thực hiện đang làm tốt. Tuy nhiên, trình tổng hợp javascript của Drupals cần phân tích tất cả các tệp javascript cho các chuỗi có thể dịch. Vì Clive sử dụng các giá trị động cho Drupal.formatPlural, điều này sẽ không hoạt động ở đây.
Vì vậy, đây là một triển khai khác với bản dịch làm việc:
Drupal.formatInterval = function(interval, granularity) {
granularity = typeof granularity !== 'undefined' ? granularity : 2;
output = '';
while (granularity > 0) {
var value = 0;
if (interval >= 31536000) {
value = 31536000;
output += (output.length ? ' ' : '') + Drupal.formatPlural(Math.floor(interval / value), '1 year', '@count years');
}
else if (interval >= 2592000) {
value = 2592000;
output += (output.length ? ' ' : '') + Drupal.formatPlural(Math.floor(interval / value), '1 month', '@count months');
}
else if (interval >= 604800) {
value = 604800;
output += (output.length ? ' ' : '') + Drupal.formatPlural(Math.floor(interval / value), '1 week', '@count weeks');
}
else if (interval >= 86400) {
value = 86400;
output += (output.length ? ' ' : '') + Drupal.formatPlural(Math.floor(interval / value), '1 day', '@count days');
}
else if (interval >= 3600) {
value = 3600;
output += (output.length ? ' ' : '') + Drupal.formatPlural(Math.floor(interval / value), '1 hour', '@count hours');
}
else if (interval >= 60) {
value = 60;
output += (output.length ? ' ' : '') + Drupal.formatPlural(Math.floor(interval / value), '1 min', '@count min');
}
else if (interval >= 1) {
value = 1;
output += (output.length ? ' ' : '') + Drupal.formatPlural(Math.floor(interval / value), '1 sec', '@count sec');
}
interval %= value;
granularity--;
}
return output.length ? output : Drupal.t('0 sec');
}
t
phương pháp là một văn bản Drupal vệ sinh và dịch tương đương vớit()
chức năng PHP từ Drupal core.