12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- // 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;
|