mirror of
https://github.com/wekan/wekan.git
synced 2025-09-22 01:50:48 +02:00
58 lines
2 KiB
JavaScript
58 lines
2 KiB
JavaScript
// emailLocalization.js
|
|
// Utility functions to handle email localization in Wekan
|
|
|
|
import { TAPi18n } from '/imports/i18n';
|
|
import { ReactiveCache } from '/imports/reactiveCache';
|
|
|
|
// Main object for email localization utilities
|
|
EmailLocalization = {
|
|
/**
|
|
* Send an email using the recipient's preferred language
|
|
* @param {Object} options - Standard email sending options plus language options
|
|
* @param {String} options.to - Recipient email address
|
|
* @param {String} options.from - Sender email address
|
|
* @param {String} options.subject - Email subject i18n key
|
|
* @param {String} options.text - Email text i18n key
|
|
* @param {Object} options.params - Parameters for i18n translation
|
|
* @param {String} options.language - Language code to use (if not provided, will try to detect)
|
|
* @param {String} options.userId - User ID to determine language (if not provided with language)
|
|
*/
|
|
sendEmail(options) {
|
|
// Determine the language to use
|
|
let lang = options.language;
|
|
|
|
// If no language is specified but we have a userId, try to get the user's language
|
|
if (!lang && options.userId) {
|
|
const user = ReactiveCache.getUser(options.userId);
|
|
if (user) {
|
|
lang = user.getLanguage();
|
|
}
|
|
}
|
|
|
|
// If no language could be determined, use the site default
|
|
if (!lang) {
|
|
lang = TAPi18n.getLanguage() || 'en';
|
|
}
|
|
|
|
// Translate subject and text using the determined language
|
|
const subject = TAPi18n.__(options.subject, options.params || {}, lang);
|
|
let text = options.text;
|
|
|
|
// If text is an i18n key, translate it
|
|
if (typeof text === 'string' && text.startsWith('email-')) {
|
|
text = TAPi18n.__(text, options.params || {}, lang);
|
|
}
|
|
|
|
// Send the email with translated content
|
|
return Email.send({
|
|
to: options.to,
|
|
from: options.from || Accounts.emailTemplates.from,
|
|
subject: subject,
|
|
text: text,
|
|
html: options.html
|
|
});
|
|
}
|
|
};
|
|
|
|
// Add module.exports to make it accessible from other files
|
|
module.exports = EmailLocalization;
|