diff --git a/include/enotify.php b/include/enotify.php
index da469b99b3..c0f23b0848 100644
--- a/include/enotify.php
+++ b/include/enotify.php
@@ -54,17 +54,17 @@ function notification($params)
$params['to_email'] = ($params['to_email'] ?? '') ?: $user['email'];
// from here on everything is in the recipients language
- L10n::pushLang($params['language']);
+ $l10n = L10n::withLang($params['language']);
- $banner = L10n::t('Friendica Notification');
+ $banner = $l10n->t('Friendica Notification');
$product = FRIENDICA_PLATFORM;
$siteurl = System::baseUrl(true);
- $thanks = L10n::t('Thank You,');
+ $thanks = $l10n->t('Thank You,');
$sitename = Config::get('config', 'sitename');
if (Config::get('config', 'admin_name')) {
- $site_admin = L10n::t('%1$s, %2$s Administrator', Config::get('config', 'admin_name'), $sitename);
+ $site_admin = $l10n->t('%1$s, %2$s Administrator', Config::get('config', 'admin_name'), $sitename);
} else {
- $site_admin = L10n::t('%s Administrator', $sitename);
+ $site_admin = $l10n->t('%s Administrator', $sitename);
}
$sender_name = $sitename;
@@ -133,12 +133,12 @@ function notification($params)
$itemlink = $siteurl.'/message/'.$params['item']['id'];
$params["link"] = $itemlink;
- $subject = L10n::t('[Friendica:Notify] New mail received at %s', $sitename);
+ $subject = $l10n->t('[Friendica:Notify] New mail received at %s', $sitename);
- $preamble = L10n::t('%1$s sent you a new private message at %2$s.', $params['source_name'], $sitename);
- $epreamble = L10n::t('%1$s sent you %2$s.', '[url='.$params['source_link'].']'.$params['source_name'].'[/url]', '[url=' . $itemlink . ']'.L10n::t('a private message').'[/url]');
+ $preamble = $l10n->t('%1$s sent you a new private message at %2$s.', $params['source_name'], $sitename);
+ $epreamble = $l10n->t('%1$s sent you %2$s.', '[url='.$params['source_link'].']'.$params['source_name'].'[/url]', '[url=' . $itemlink . ']' . $l10n->t('a private message').'[/url]');
- $sitelink = L10n::t('Please visit %s to view and/or reply to your private messages.');
+ $sitelink = $l10n->t('Please visit %s to view and/or reply to your private messages.');
$tsitelink = sprintf($sitelink, $siteurl.'/message/'.$params['item']['id']);
$hsitelink = sprintf($sitelink, ''.$sitename.'');
}
@@ -147,7 +147,6 @@ function notification($params)
$thread = Item::selectFirstThreadForUser($params['uid'], ['ignored'], ['iid' => $parent_id, 'deleted' => false]);
if (DBA::isResult($thread) && $thread['ignored']) {
Logger::log('Thread ' . $parent_id . ' will be ignored', Logger::DEBUG);
- L10n::popLang();
return false;
}
@@ -156,7 +155,6 @@ function notification($params)
$condition = ['type' => [NOTIFY_TAGSELF, NOTIFY_COMMENT, NOTIFY_SHARE],
'link' => $params['link'], 'uid' => $params['uid']];
if (DBA::exists('notify', $condition)) {
- L10n::popLang();
return false;
}
@@ -171,13 +169,13 @@ function notification($params)
// "a post"
if ($params['type'] == NOTIFY_TAGSELF) {
- $dest_str = L10n::t('%1$s tagged you on [url=%2$s]a %3$s[/url]',
+ $dest_str = $l10n->t('%1$s tagged you on [url=%2$s]a %3$s[/url]',
'[url=' . $params['source_link'] . ']' . $params['source_name'] . '[/url]',
$itemlink,
$item_post_type
);
} else {
- $dest_str = L10n::t('%1$s commented on [url=%2$s]a %3$s[/url]',
+ $dest_str = $l10n->t('%1$s commented on [url=%2$s]a %3$s[/url]',
'[url=' . $params['source_link'] . ']' . $params['source_name'] . '[/url]',
$itemlink,
$item_post_type
@@ -187,14 +185,14 @@ function notification($params)
// "George Bull's post"
if (DBA::isResult($item)) {
if ($params['type'] == NOTIFY_TAGSELF) {
- $dest_str = L10n::t('%1$s tagged you on [url=%2$s]%3$s\'s %4$s[/url]',
+ $dest_str = $l10n->t('%1$s tagged you on [url=%2$s]%3$s\'s %4$s[/url]',
'[url=' . $params['source_link'] . ']' . $params['source_name'] . '[/url]',
$itemlink,
$item['author-name'],
$item_post_type
);
} else {
- $dest_str = L10n::t('%1$s commented on [url=%2$s]%3$s\'s %4$s[/url]',
+ $dest_str = $l10n->t('%1$s commented on [url=%2$s]%3$s\'s %4$s[/url]',
'[url=' . $params['source_link'] . ']' . $params['source_name'] . '[/url]',
$itemlink,
$item['author-name'],
@@ -206,13 +204,13 @@ function notification($params)
// "your post"
if (DBA::isResult($item) && $item['owner-id'] == $item['author-id'] && $item['wall']) {
if ($params['type'] == NOTIFY_TAGSELF) {
- $dest_str = L10n::t('%1$s tagged you on [url=%2$s]your %3$s[/url]',
+ $dest_str = $l10n->t('%1$s tagged you on [url=%2$s]your %3$s[/url]',
'[url=' . $params['source_link'] . ']' . $params['source_name'] . '[/url]',
$itemlink,
$item_post_type
);
} else {
- $dest_str = L10n::t('%1$s commented on [url=%2$s]your %3$s[/url]',
+ $dest_str = $l10n->t('%1$s commented on [url=%2$s]your %3$s[/url]',
'[url=' . $params['source_link'] . ']' . $params['source_name'] . '[/url]',
$itemlink,
$item_post_type
@@ -223,13 +221,13 @@ function notification($params)
// "their post"
if (DBA::isResult($item) && $item['author-link'] == $params['source_link']) {
if ($params['type'] == NOTIFY_TAGSELF) {
- $dest_str = L10n::t('%1$s tagged you on [url=%2$s]their %3$s[/url]',
+ $dest_str = $l10n->t('%1$s tagged you on [url=%2$s]their %3$s[/url]',
'[url=' . $params['source_link'] . ']' . $params['source_name'] . '[/url]',
$itemlink,
$item_post_type
);
} else {
- $dest_str = L10n::t('%1$s commented on [url=%2$s]their %3$s[/url]',
+ $dest_str = $l10n->t('%1$s commented on [url=%2$s]their %3$s[/url]',
'[url=' . $params['source_link'] . ']' . $params['source_name'] . '[/url]',
$itemlink,
$item_post_type
@@ -242,67 +240,67 @@ function notification($params)
// Before this we have the name of the replier on the subject rendering
// different subjects for messages on the same thread.
if ($params['type'] == NOTIFY_TAGSELF) {
- $subject = L10n::t('[Friendica:Notify] %s tagged you', $params['source_name']);
+ $subject = $l10n->t('[Friendica:Notify] %s tagged you', $params['source_name']);
- $preamble = L10n::t('%1$s tagged you at %2$s', $params['source_name'], $sitename);
+ $preamble = $l10n->t('%1$s tagged you at %2$s', $params['source_name'], $sitename);
} else {
- $subject = L10n::t('[Friendica:Notify] Comment to conversation #%1$d by %2$s', $parent_id, $params['source_name']);
+ $subject = $l10n->t('[Friendica:Notify] Comment to conversation #%1$d by %2$s', $parent_id, $params['source_name']);
- $preamble = L10n::t('%s commented on an item/conversation you have been following.', $params['source_name']);
+ $preamble = $l10n->t('%s commented on an item/conversation you have been following.', $params['source_name']);
}
$epreamble = $dest_str;
- $sitelink = L10n::t('Please visit %s to view and/or reply to the conversation.');
+ $sitelink = $l10n->t('Please visit %s to view and/or reply to the conversation.');
$tsitelink = sprintf($sitelink, $siteurl);
$hsitelink = sprintf($sitelink, '' . $sitename . '');
$itemlink = $params['link'];
}
if ($params['type'] == NOTIFY_WALL) {
- $subject = L10n::t('[Friendica:Notify] %s posted to your profile wall', $params['source_name']);
+ $subject = $l10n->t('[Friendica:Notify] %s posted to your profile wall', $params['source_name']);
- $preamble = L10n::t('%1$s posted to your profile wall at %2$s', $params['source_name'], $sitename);
- $epreamble = L10n::t('%1$s posted to [url=%2$s]your wall[/url]',
+ $preamble = $l10n->t('%1$s posted to your profile wall at %2$s', $params['source_name'], $sitename);
+ $epreamble = $l10n->t('%1$s posted to [url=%2$s]your wall[/url]',
'[url='.$params['source_link'].']'.$params['source_name'].'[/url]',
$params['link']
);
- $sitelink = L10n::t('Please visit %s to view and/or reply to the conversation.');
+ $sitelink = $l10n->t('Please visit %s to view and/or reply to the conversation.');
$tsitelink = sprintf($sitelink, $siteurl);
$hsitelink = sprintf($sitelink, ''.$sitename.'');
$itemlink = $params['link'];
}
if ($params['type'] == NOTIFY_SHARE) {
- $subject = L10n::t('[Friendica:Notify] %s shared a new post', $params['source_name']);
+ $subject = $l10n->t('[Friendica:Notify] %s shared a new post', $params['source_name']);
- $preamble = L10n::t('%1$s shared a new post at %2$s', $params['source_name'], $sitename);
- $epreamble = L10n::t('%1$s [url=%2$s]shared a post[/url].',
+ $preamble = $l10n->t('%1$s shared a new post at %2$s', $params['source_name'], $sitename);
+ $epreamble = $l10n->t('%1$s [url=%2$s]shared a post[/url].',
'[url='.$params['source_link'].']'.$params['source_name'].'[/url]',
$params['link']
);
- $sitelink = L10n::t('Please visit %s to view and/or reply to the conversation.');
+ $sitelink = $l10n->t('Please visit %s to view and/or reply to the conversation.');
$tsitelink = sprintf($sitelink, $siteurl);
$hsitelink = sprintf($sitelink, ''.$sitename.'');
$itemlink = $params['link'];
}
if ($params['type'] == NOTIFY_POKE) {
- $subject = L10n::t('[Friendica:Notify] %1$s poked you', $params['source_name']);
+ $subject = $l10n->t('[Friendica:Notify] %1$s poked you', $params['source_name']);
- $preamble = L10n::t('%1$s poked you at %2$s', $params['source_name'], $sitename);
- $epreamble = L10n::t('%1$s [url=%2$s]poked you[/url].',
+ $preamble = $l10n->t('%1$s poked you at %2$s', $params['source_name'], $sitename);
+ $epreamble = $l10n->t('%1$s [url=%2$s]poked you[/url].',
'[url='.$params['source_link'].']'.$params['source_name'].'[/url]',
$params['link']
);
- $subject = str_replace('poked', L10n::t($params['activity']), $subject);
- $preamble = str_replace('poked', L10n::t($params['activity']), $preamble);
- $epreamble = str_replace('poked', L10n::t($params['activity']), $epreamble);
+ $subject = str_replace('poked', $l10n->t($params['activity']), $subject);
+ $preamble = str_replace('poked', $l10n->t($params['activity']), $preamble);
+ $epreamble = str_replace('poked', $l10n->t($params['activity']), $epreamble);
- $sitelink = L10n::t('Please visit %s to view and/or reply to the conversation.');
+ $sitelink = $l10n->t('Please visit %s to view and/or reply to the conversation.');
$tsitelink = sprintf($sitelink, $siteurl);
$hsitelink = sprintf($sitelink, ''.$sitename.'');
$itemlink = $params['link'];
@@ -310,52 +308,52 @@ function notification($params)
if ($params['type'] == NOTIFY_TAGSHARE) {
$itemlink = $params['link'];
- $subject = L10n::t('[Friendica:Notify] %s tagged your post', $params['source_name']);
+ $subject = $l10n->t('[Friendica:Notify] %s tagged your post', $params['source_name']);
- $preamble = L10n::t('%1$s tagged your post at %2$s', $params['source_name'], $sitename);
- $epreamble = L10n::t('%1$s tagged [url=%2$s]your post[/url]',
+ $preamble = $l10n->t('%1$s tagged your post at %2$s', $params['source_name'], $sitename);
+ $epreamble = $l10n->t('%1$s tagged [url=%2$s]your post[/url]',
'[url='.$params['source_link'].']'.$params['source_name'].'[/url]',
$itemlink
);
- $sitelink = L10n::t('Please visit %s to view and/or reply to the conversation.');
+ $sitelink = $l10n->t('Please visit %s to view and/or reply to the conversation.');
$tsitelink = sprintf($sitelink, $siteurl);
$hsitelink = sprintf($sitelink, ''.$sitename.'');
}
if ($params['type'] == NOTIFY_INTRO) {
$itemlink = $params['link'];
- $subject = L10n::t('[Friendica:Notify] Introduction received');
+ $subject = $l10n->t('[Friendica:Notify] Introduction received');
- $preamble = L10n::t('You\'ve received an introduction from \'%1$s\' at %2$s', $params['source_name'], $sitename);
- $epreamble = L10n::t('You\'ve received [url=%1$s]an introduction[/url] from %2$s.',
+ $preamble = $l10n->t('You\'ve received an introduction from \'%1$s\' at %2$s', $params['source_name'], $sitename);
+ $epreamble = $l10n->t('You\'ve received [url=%1$s]an introduction[/url] from %2$s.',
$itemlink,
'[url='.$params['source_link'].']'.$params['source_name'].'[/url]'
);
- $body = L10n::t('You may visit their profile at %s', $params['source_link']);
+ $body = $l10n->t('You may visit their profile at %s', $params['source_link']);
- $sitelink = L10n::t('Please visit %s to approve or reject the introduction.');
+ $sitelink = $l10n->t('Please visit %s to approve or reject the introduction.');
$tsitelink = sprintf($sitelink, $siteurl);
$hsitelink = sprintf($sitelink, ''.$sitename.'');
switch ($params['verb']) {
case Activity::FRIEND:
// someone started to share with user (mostly OStatus)
- $subject = L10n::t('[Friendica:Notify] A new person is sharing with you');
+ $subject = $l10n->t('[Friendica:Notify] A new person is sharing with you');
- $preamble = L10n::t('%1$s is sharing with you at %2$s', $params['source_name'], $sitename);
- $epreamble = L10n::t('%1$s is sharing with you at %2$s',
+ $preamble = $l10n->t('%1$s is sharing with you at %2$s', $params['source_name'], $sitename);
+ $epreamble = $l10n->t('%1$s is sharing with you at %2$s',
'[url='.$params['source_link'].']'.$params['source_name'].'[/url]',
$sitename
);
break;
case Activity::FOLLOW:
// someone started to follow the user (mostly OStatus)
- $subject = L10n::t('[Friendica:Notify] You have a new follower');
+ $subject = $l10n->t('[Friendica:Notify] You have a new follower');
- $preamble = L10n::t('You have a new follower at %2$s : %1$s', $params['source_name'], $sitename);
- $epreamble = L10n::t('You have a new follower at %2$s : %1$s',
+ $preamble = $l10n->t('You have a new follower at %2$s : %1$s', $params['source_name'], $sitename);
+ $epreamble = $l10n->t('You have a new follower at %2$s : %1$s',
'[url='.$params['source_link'].']'.$params['source_name'].'[/url]',
$sitename
);
@@ -368,20 +366,20 @@ function notification($params)
if ($params['type'] == NOTIFY_SUGGEST) {
$itemlink = $params['link'];
- $subject = L10n::t('[Friendica:Notify] Friend suggestion received');
+ $subject = $l10n->t('[Friendica:Notify] Friend suggestion received');
- $preamble = L10n::t('You\'ve received a friend suggestion from \'%1$s\' at %2$s', $params['source_name'], $sitename);
- $epreamble = L10n::t('You\'ve received [url=%1$s]a friend suggestion[/url] for %2$s from %3$s.',
+ $preamble = $l10n->t('You\'ve received a friend suggestion from \'%1$s\' at %2$s', $params['source_name'], $sitename);
+ $epreamble = $l10n->t('You\'ve received [url=%1$s]a friend suggestion[/url] for %2$s from %3$s.',
$itemlink,
'[url='.$params['item']['url'].']'.$params['item']['name'].'[/url]',
'[url='.$params['source_link'].']'.$params['source_name'].'[/url]'
);
- $body = L10n::t('Name:').' '.$params['item']['name']."\n";
- $body .= L10n::t('Photo:').' '.$params['item']['photo']."\n";
- $body .= L10n::t('You may visit their profile at %s', $params['item']['url']);
+ $body = $l10n->t('Name:').' '.$params['item']['name']."\n";
+ $body .= $l10n->t('Photo:').' '.$params['item']['photo']."\n";
+ $body .= $l10n->t('You may visit their profile at %s', $params['item']['url']);
- $sitelink = L10n::t('Please visit %s to approve or reject the suggestion.');
+ $sitelink = $l10n->t('Please visit %s to approve or reject the suggestion.');
$tsitelink = sprintf($sitelink, $siteurl);
$hsitelink = sprintf($sitelink, ''.$sitename.'');
}
@@ -389,34 +387,34 @@ function notification($params)
if ($params['type'] == NOTIFY_CONFIRM) {
if ($params['verb'] == Activity::FRIEND) { // mutual connection
$itemlink = $params['link'];
- $subject = L10n::t('[Friendica:Notify] Connection accepted');
+ $subject = $l10n->t('[Friendica:Notify] Connection accepted');
- $preamble = L10n::t('\'%1$s\' has accepted your connection request at %2$s', $params['source_name'], $sitename);
- $epreamble = L10n::t('%2$s has accepted your [url=%1$s]connection request[/url].',
+ $preamble = $l10n->t('\'%1$s\' has accepted your connection request at %2$s', $params['source_name'], $sitename);
+ $epreamble = $l10n->t('%2$s has accepted your [url=%1$s]connection request[/url].',
$itemlink,
'[url='.$params['source_link'].']'.$params['source_name'].'[/url]'
);
- $body = L10n::t('You are now mutual friends and may exchange status updates, photos, and email without restriction.');
+ $body = $l10n->t('You are now mutual friends and may exchange status updates, photos, and email without restriction.');
- $sitelink = L10n::t('Please visit %s if you wish to make any changes to this relationship.');
+ $sitelink = $l10n->t('Please visit %s if you wish to make any changes to this relationship.');
$tsitelink = sprintf($sitelink, $siteurl);
$hsitelink = sprintf($sitelink, ''.$sitename.'');
} else { // ACTIVITY_FOLLOW
$itemlink = $params['link'];
- $subject = L10n::t('[Friendica:Notify] Connection accepted');
+ $subject = $l10n->t('[Friendica:Notify] Connection accepted');
- $preamble = L10n::t('\'%1$s\' has accepted your connection request at %2$s', $params['source_name'], $sitename);
- $epreamble = L10n::t('%2$s has accepted your [url=%1$s]connection request[/url].',
+ $preamble = $l10n->t('\'%1$s\' has accepted your connection request at %2$s', $params['source_name'], $sitename);
+ $epreamble = $l10n->t('%2$s has accepted your [url=%1$s]connection request[/url].',
$itemlink,
'[url='.$params['source_link'].']'.$params['source_name'].'[/url]'
);
- $body = L10n::t('\'%1$s\' has chosen to accept you a fan, which restricts some forms of communication - such as private messaging and some profile interactions. If this is a celebrity or community page, these settings were applied automatically.', $params['source_name']);
+ $body = $l10n->t('\'%1$s\' has chosen to accept you a fan, which restricts some forms of communication - such as private messaging and some profile interactions. If this is a celebrity or community page, these settings were applied automatically.', $params['source_name']);
$body .= "\n\n";
- $body .= L10n::t('\'%1$s\' may choose to extend this into a two-way or more permissive relationship in the future.', $params['source_name']);
+ $body .= $l10n->t('\'%1$s\' may choose to extend this into a two-way or more permissive relationship in the future.', $params['source_name']);
- $sitelink = L10n::t('Please visit %s if you wish to make any changes to this relationship.');
+ $sitelink = $l10n->t('Please visit %s if you wish to make any changes to this relationship.');
$tsitelink = sprintf($sitelink, $siteurl);
$hsitelink = sprintf($sitelink, ''.$sitename.'');
}
@@ -426,21 +424,21 @@ function notification($params)
switch($params['event']) {
case "SYSTEM_REGISTER_REQUEST":
$itemlink = $params['link'];
- $subject = L10n::t('[Friendica System Notify]') . ' ' . L10n::t('registration request');
+ $subject = $l10n->t('[Friendica System Notify]') . ' ' . $l10n->t('registration request');
- $preamble = L10n::t('You\'ve received a registration request from \'%1$s\' at %2$s', $params['source_name'], $sitename);
- $epreamble = L10n::t('You\'ve received a [url=%1$s]registration request[/url] from %2$s.',
+ $preamble = $l10n->t('You\'ve received a registration request from \'%1$s\' at %2$s', $params['source_name'], $sitename);
+ $epreamble = $l10n->t('You\'ve received a [url=%1$s]registration request[/url] from %2$s.',
$itemlink,
'[url='.$params['source_link'].']'.$params['source_name'].'[/url]'
);
- $body = L10n::t("Full Name: %s\nSite Location: %s\nLogin Name: %s (%s)",
+ $body = $l10n->t("Full Name: %s\nSite Location: %s\nLogin Name: %s (%s)",
$params['source_name'],
$siteurl, $params['source_mail'],
$params['source_nick']
);
- $sitelink = L10n::t('Please visit %s to approve or reject the request.');
+ $sitelink = $l10n->t('Please visit %s to approve or reject the request.');
$tsitelink = sprintf($sitelink, $params['link']);
$hsitelink = sprintf($sitelink, ''.$sitename.'
');
break;
@@ -524,7 +522,6 @@ function notification($params)
Hook::callAll('enotify_store', $datarray);
if ($datarray['abort']) {
- L10n::popLang();
return false;
}
@@ -652,7 +649,6 @@ function notification($params)
'$content_allowed' => $content_allowed,
]);
- L10n::popLang();
// use the Emailer class to send the message
return Emailer::send([
'uid' => $params['uid'],
@@ -667,7 +663,6 @@ function notification($params)
]);
}
- L10n::popLang();
return false;
}
diff --git a/mod/regmod.php b/mod/regmod.php
index 295d8df25f..c37467e484 100644
--- a/mod/regmod.php
+++ b/mod/regmod.php
@@ -38,17 +38,16 @@ function user_allow($hash)
Worker::add(PRIORITY_LOW, "Directory", $url);
}
- L10n::pushLang($register['language']);
+ $l10n = L10n::withLang($register['language']);
$res = User::sendRegisterOpenEmail(
+ $l10n,
$user,
Config::get('config', 'sitename'),
$a->getBaseUrl(),
($register['password'] ?? '') ?: 'Sent in a previous email'
);
- L10n::popLang();
-
if ($res) {
info(L10n::t('Account approved.') . EOL);
return true;
diff --git a/src/Core/L10n.php b/src/Core/L10n.php
index 0b76fc639e..b27228cf80 100644
--- a/src/Core/L10n.php
+++ b/src/Core/L10n.php
@@ -24,30 +24,15 @@ class L10n extends BaseObject
}
/**
- * This function should be called before formatting messages in a specific target language
- * different from the current user/system language.
+ * @param string $lang
*
- * It saves the current translation strings in a separate variable and loads new translations strings.
+ * @return L10nClass The new L10n class with the new language
*
- * If called repeatedly, it won't save the translation strings again, just load the new ones.
- *
- * @param string $lang Language code
- *
- * @throws \Exception
- * @see popLang()
- * @brief Stores the current language strings and load a different language.
+ * @throws \Friendica\Network\HTTPException\InternalServerErrorException
*/
- public static function pushLang($lang)
+ public static function withLang(string $lang)
{
- self::getClass(L10nClass::class)->pushLang($lang);
- }
-
- /**
- * Restores the original user/system language after having used pushLang()
- */
- public static function popLang()
- {
- self::getClass(L10nClass::class)->popLang();
+ return self::getClass(L10nClass::class)->withLang($lang);
}
/**
diff --git a/src/Core/L10n/L10n.php b/src/Core/L10n/L10n.php
index 28b788e26b..be9e1419f3 100644
--- a/src/Core/L10n/L10n.php
+++ b/src/Core/L10n/L10n.php
@@ -23,12 +23,6 @@ class L10n
* @var string
*/
private $lang = '';
- /**
- * A language code saved for later after pushLang() has been called.
- *
- * @var string
- */
- private $langSave = '';
/**
* An array of translation strings whose key is the neutral english message.
@@ -36,12 +30,6 @@ class L10n
* @var array
*/
private $strings = [];
- /**
- * An array of translation strings saved for later after pushLang() has been called.
- *
- * @var array
- */
- private $stringsSave = [];
/**
* @var Database
@@ -53,7 +41,7 @@ class L10n
*/
private $logger;
- public function __construct(Configuration $config, Database $dba, LoggerInterface $logger, ISession $session, array $server, array $get)
+ public function __construct(Configuration $config, Database $dba, LoggerInterface $logger, ISession $session, array $server, array $get)
{
$this->dba = $dba;
$this->logger = $logger;
@@ -101,50 +89,6 @@ class L10n
}
}
- /**
- * This function should be called before formatting messages in a specific target language
- * different from the current user/system language.
- *
- * It saves the current translation strings in a separate variable and loads new translations strings.
- *
- * If called repeatedly, it won't save the translation strings again, just load the new ones.
- *
- * @param string $lang Language code
- *
- * @throws \Exception
- * @see popLang()
- * @brief Stores the current language strings and load a different language.
- */
- public function pushLang($lang)
- {
- if ($lang === $this->lang) {
- return;
- }
-
- if (empty($this->langSave)) {
- $this->langSave = $this->lang;
- $this->stringsSave = $this->strings;
- }
-
- $this->loadTranslationTable($lang);
- }
-
- /**
- * Restores the original user/system language after having used pushLang()
- */
- public function popLang()
- {
- if (!isset($this->langSave)) {
- return;
- }
-
- $this->strings = $this->stringsSave;
- $this->lang = $this->langSave;
-
- $this->stringsSave = null;
- $this->langSave = null;
- }
-
/**
* Loads string translation table
*
@@ -458,4 +402,19 @@ class L10n
return $arr;
}
+
+ /**
+ * Creates a new L10n instance based on the given langauge
+ *
+ * @param string $lang The new language
+ *
+ * @return static A new L10n instance
+ * @throws \Exception
+ */
+ public function withLang(string $lang)
+ {
+ $newL10n = clone $this;
+ $newL10n->loadTranslationTable($lang);
+ return $newL10n;
+ }
}
diff --git a/src/Core/Update.php b/src/Core/Update.php
index a52ef903b2..0ead704c10 100644
--- a/src/Core/Update.php
+++ b/src/Core/Update.php
@@ -252,26 +252,25 @@ class Update
$sent[] = $admin['email'];
$lang = (($admin['language'])?$admin['language']:'en');
- L10n::pushLang($lang);
+ $l10n = L10n::withLang($lang);
- $preamble = Strings::deindent(L10n::t("
+ $preamble = Strings::deindent($l10n->t("
The friendica developers released update %s recently,
but when I tried to install it, something went terribly wrong.
This needs to be fixed soon and I can't do it alone. Please contact a
friendica developer if you can not help me on your own. My database might be invalid.",
$update_id));
- $body = L10n::t("The error message is\n[pre]%s[/pre]", $error_message);
+ $body = $l10n->t("The error message is\n[pre]%s[/pre]", $error_message);
notification([
'uid' => $admin['uid'],
'type' => SYSTEM_EMAIL,
'to_email' => $admin['email'],
- 'subject' => l10n::t('[Friendica Notify] Database update'),
+ 'subject' => $l10n->t('[Friendica Notify] Database update'),
'preamble' => $preamble,
'body' => $body,
'language' => $lang]
);
- L10n::popLang();
}
//try the logger
@@ -295,9 +294,9 @@ class Update
$sent[] = $admin['email'];
$lang = (($admin['language']) ? $admin['language'] : 'en');
- L10n::pushLang($lang);
+ $l10n = L10n::withLang($lang);
- $preamble = Strings::deindent(L10n::t("
+ $preamble = Strings::deindent($l10n->t("
The friendica database was successfully updated from %s to %s.",
$from_build, $to_build));
@@ -310,7 +309,6 @@ class Update
'body' => $preamble,
'language' => $lang]
);
- L10n::popLang();
}
}
diff --git a/src/Model/User.php b/src/Model/User.php
index 7ecf4a576c..4f270d2d12 100644
--- a/src/Model/User.php
+++ b/src/Model/User.php
@@ -916,6 +916,7 @@ class User
*
* It's here as a function because the mail is sent from different parts
*
+ * @param L10n\L10n $l10n The used language
* @param array $user User record array
* @param string $sitename
* @param string $siteurl
@@ -923,9 +924,9 @@ class User
* @return NULL|boolean from notification() and email() inherited
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
*/
- public static function sendRegisterOpenEmail($user, $sitename, $siteurl, $password)
+ public static function sendRegisterOpenEmail(L10n\L10n $l10n, $user, $sitename, $siteurl, $password)
{
- $preamble = Strings::deindent(L10n::t(
+ $preamble = Strings::deindent($l10n->t(
'
Dear %1$s,
Thank you for registering at %2$s. Your account has been created.
@@ -933,7 +934,7 @@ class User
$user['username'],
$sitename
));
- $body = Strings::deindent(L10n::t(
+ $body = Strings::deindent($l10n->t(
'
The login details are as follows:
diff --git a/src/Module/Register.php b/src/Module/Register.php
index ad49555e69..3b43970197 100644
--- a/src/Module/Register.php
+++ b/src/Module/Register.php
@@ -228,6 +228,7 @@ class Register extends BaseModule
// Only send a password mail when the password wasn't manually provided
if (empty($_POST['password1']) || empty($_POST['confirm'])) {
$res = Model\User::sendRegisterOpenEmail(
+ L10n::withLang($arr['language']),
$user,
Config::get('config', 'sitename'),
$base_url,