]> git.mxchange.org Git - friendica.git/commitdiff
Make L10n immutable
authornupplaPhil <admin@philipp.info>
Sat, 28 Dec 2019 22:12:01 +0000 (23:12 +0100)
committernupplaPhil <admin@philipp.info>
Sat, 28 Dec 2019 22:12:01 +0000 (23:12 +0100)
- Remove Push/Pop
- Add "withLang($lang)" method

include/enotify.php
mod/regmod.php
src/Core/L10n.php
src/Core/L10n/L10n.php
src/Core/Update.php
src/Model/User.php
src/Module/Register.php

index da469b99b35075e6611eae144513cf51c4908230..c0f23b0848a6ea4bed64fe2fd395109feb82cdae 100644 (file)
@@ -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, '<a href="'.$siteurl.'/message/'.$params['item']['id'].'">'.$sitename.'</a>');
        }
@@ -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, '<a href="' . $siteurl . '">' . $sitename . '</a>');
                $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, '<a href="'.$siteurl.'">'.$sitename.'</a>');
                $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, '<a href="'.$siteurl.'">'.$sitename.'</a>');
                $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, '<a href="'.$siteurl.'">'.$sitename.'</a>');
                $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, '<a href="'.$siteurl.'">'.$sitename.'</a>');
        }
 
        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, '<a href="'.$siteurl.'">'.$sitename.'</a>');
 
                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, '<a href="'.$siteurl.'">'.$sitename.'</a>');
        }
@@ -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, '<a href="'.$siteurl.'">'.$sitename.'</a>');
                } 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, '<a href="'.$siteurl.'">'.$sitename.'</a>');
                }
@@ -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, '<a href="'.$params['link'].'">'.$sitename.'</a><br><br>');
                                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;
 }
 
index 295d8df25f5a02066c41d74376f8bdd0941f7bb4..c37467e48480a4e84095c18946beab03f106facc 100644 (file)
@@ -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;
index 0b76fc639e18db605ad3e9e27d285ac05ea1bd06..b27228cf809f66f0a39aa8bd664b35a85d8f719f 100644 (file)
@@ -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.
-        */
-       public static function pushLang($lang)
-       {
-               self::getClass(L10nClass::class)->pushLang($lang);
-       }
-
-       /**
-        * Restores the original user/system language after having used pushLang()
+        * @throws \Friendica\Network\HTTPException\InternalServerErrorException
         */
-       public static function popLang()
+       public static function withLang(string $lang)
        {
-               self::getClass(L10nClass::class)->popLang();
+               return self::getClass(L10nClass::class)->withLang($lang);
        }
 
        /**
index 28b788e26bc4a057b2ad99efe5334ee215d27959..be9e1419f39ab60cf2dbac73a41ef186ab2926f9 100644 (file)
@@ -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;
+       }
 }
index a52ef903b2da8867854fc1660317d57817e51cec..0ead704c101671faa77b9c17fd95122e0df88d2e 100644 (file)
@@ -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();
                        }
                }
 
index 7ecf4a576c5405fdd16ce22f8a657e82e3400fe4..4f270d2d120b76fad66fdc4fe93b1c71b7972381 100644 (file)
@@ -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:
 
index ad49555e699d77bd4aa06b24b085c977756e9a9a..3b4397019735f2b34b321deab9ac4ee0a8adf91b 100644 (file)
@@ -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,