From 18cf8110b506c5f5fb582024b83086c36ee41c49 Mon Sep 17 00:00:00 2001 From: David Bomba Date: Fri, 16 Apr 2021 16:03:09 +1000 Subject: [PATCH 1/2] Change from singleton to binding --- .../NinjaTranslationServiceProvider.php | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/app/Providers/NinjaTranslationServiceProvider.php b/app/Providers/NinjaTranslationServiceProvider.php index 172de1ebb925..d76aaeabb9f1 100644 --- a/app/Providers/NinjaTranslationServiceProvider.php +++ b/app/Providers/NinjaTranslationServiceProvider.php @@ -33,7 +33,8 @@ class NinjaTranslationServiceProvider extends TranslationServiceProvider * */ - $this->app->singleton('translator', function ($app) { + $this->app->bind('translator', function($app) { + $loader = $app['translation.loader']; $locale = $app['config']['app.locale']; @@ -42,6 +43,20 @@ class NinjaTranslationServiceProvider extends TranslationServiceProvider $trans->setFallback($app['config']['app.fallback_locale']); return $trans; + }); + + // $this->app->singleton('translator', function ($app) { + + // $loader = $app['translation.loader']; + // $locale = $app['config']['app.locale']; + + // $trans = new NinjaTranslator($loader, $locale); + + // $trans->setFallback($app['config']['app.fallback_locale']); + + // return $trans; + + // }); } } From 7026dbd8f2ddf6ce8476d105f7792628e94d16c2 Mon Sep 17 00:00:00 2001 From: David Bomba Date: Fri, 16 Apr 2021 16:22:42 +1000 Subject: [PATCH 2/2] Add custom translations to email preview and sent emails --- app/Http/Controllers/TemplateController.php | 5 ++- app/Mail/Engine/CreditEmailEngine.php | 6 ++++ app/Mail/Engine/InvoiceEmailEngine.php | 7 +++++ app/Mail/Engine/QuoteEmailEngine.php | 6 ++++ .../NinjaTranslationServiceProvider.php | 31 ++++++++++--------- app/Utils/TemplateEngine.php | 6 ++++ 6 files changed, 45 insertions(+), 16 deletions(-) diff --git a/app/Http/Controllers/TemplateController.php b/app/Http/Controllers/TemplateController.php index 9c97a96b1927..6fb363f98552 100644 --- a/app/Http/Controllers/TemplateController.php +++ b/app/Http/Controllers/TemplateController.php @@ -11,11 +11,14 @@ namespace App\Http\Controllers; +use App\Utils\Ninja; use App\Utils\TemplateEngine; use App\Utils\Traits\MakesHash; use App\Utils\Traits\MakesInvoiceHtml; use App\Utils\Traits\MakesTemplateData; use Illuminate\Http\Response; +use Illuminate\Support\Facades\App; +use Illuminate\Support\Facades\Lang; class TemplateController extends BaseController { @@ -89,7 +92,7 @@ class TemplateController extends BaseController $subject = request()->has('subject') ? request()->input('subject') : ''; $body = request()->has('body') ? request()->input('body') : ''; $template = request()->has('template') ? request()->input('template') : ''; - + $data = (new TemplateEngine($body, $subject, $entity, $entity_id, $template))->build(); return response()->json($data, 200); diff --git a/app/Mail/Engine/CreditEmailEngine.php b/app/Mail/Engine/CreditEmailEngine.php index d6641ed6a83c..d9915c1c8d3e 100644 --- a/app/Mail/Engine/CreditEmailEngine.php +++ b/app/Mail/Engine/CreditEmailEngine.php @@ -12,7 +12,10 @@ namespace App\Mail\Engine; use App\Utils\HtmlEngine; +use App\Utils\Ninja; use App\Utils\Number; +use Illuminate\Support\Facades\App; +use Illuminate\Support\Facades\Lang; class CreditEmailEngine extends BaseEmailEngine { @@ -40,6 +43,9 @@ class CreditEmailEngine extends BaseEmailEngine public function build() { + App::forgetInstance('translator'); + Lang::replace(Ninja::transformTranslations($this->client->getMergedSettings())); + if (is_array($this->template_data) && array_key_exists('body', $this->template_data) && strlen($this->template_data['body']) > 0) { $body_template = $this->template_data['body']; } else { diff --git a/app/Mail/Engine/InvoiceEmailEngine.php b/app/Mail/Engine/InvoiceEmailEngine.php index e0907d2e7b35..06a4bfb41d4b 100644 --- a/app/Mail/Engine/InvoiceEmailEngine.php +++ b/app/Mail/Engine/InvoiceEmailEngine.php @@ -14,7 +14,10 @@ namespace App\Mail\Engine; use App\DataMapper\EmailTemplateDefaults; use App\Models\Account; use App\Utils\HtmlEngine; +use App\Utils\Ninja; use App\Utils\Number; +use Illuminate\Support\Facades\App; +use Illuminate\Support\Facades\Lang; class InvoiceEmailEngine extends BaseEmailEngine { @@ -42,6 +45,10 @@ class InvoiceEmailEngine extends BaseEmailEngine public function build() { + + App::forgetInstance('translator'); + Lang::replace(Ninja::transformTranslations($this->client->getMergedSettings())); + if (is_array($this->template_data) && array_key_exists('body', $this->template_data) && strlen($this->template_data['body']) > 0) { $body_template = $this->template_data['body']; } elseif (strlen($this->client->getSetting('email_template_'.$this->reminder_template)) > 0) { diff --git a/app/Mail/Engine/QuoteEmailEngine.php b/app/Mail/Engine/QuoteEmailEngine.php index 548728bb124b..a0709f6d775a 100644 --- a/app/Mail/Engine/QuoteEmailEngine.php +++ b/app/Mail/Engine/QuoteEmailEngine.php @@ -13,7 +13,10 @@ namespace App\Mail\Engine; use App\Models\Account; use App\Utils\HtmlEngine; +use App\Utils\Ninja; use App\Utils\Number; +use Illuminate\Support\Facades\App; +use Illuminate\Support\Facades\Lang; class QuoteEmailEngine extends BaseEmailEngine { @@ -41,6 +44,9 @@ class QuoteEmailEngine extends BaseEmailEngine public function build() { + App::forgetInstance('translator'); + Lang::replace(Ninja::transformTranslations($this->client->getMergedSettings())); + if (is_array($this->template_data) && array_key_exists('body', $this->template_data) && strlen($this->template_data['body']) > 0) { $body_template = $this->template_data['body']; } else { diff --git a/app/Providers/NinjaTranslationServiceProvider.php b/app/Providers/NinjaTranslationServiceProvider.php index d76aaeabb9f1..413a8b60fc3f 100644 --- a/app/Providers/NinjaTranslationServiceProvider.php +++ b/app/Providers/NinjaTranslationServiceProvider.php @@ -33,20 +33,7 @@ class NinjaTranslationServiceProvider extends TranslationServiceProvider * */ - $this->app->bind('translator', function($app) { - - $loader = $app['translation.loader']; - $locale = $app['config']['app.locale']; - - $trans = new NinjaTranslator($loader, $locale); - - $trans->setFallback($app['config']['app.fallback_locale']); - - return $trans; - - }); - - // $this->app->singleton('translator', function ($app) { + // $this->app->bind('translator', function($app) { // $loader = $app['translation.loader']; // $locale = $app['config']['app.locale']; @@ -56,7 +43,21 @@ class NinjaTranslationServiceProvider extends TranslationServiceProvider // $trans->setFallback($app['config']['app.fallback_locale']); // return $trans; - + // }); + + $this->app->singleton('translator', function ($app) { + + $loader = $app['translation.loader']; + $locale = $app['config']['app.locale']; + + $trans = new NinjaTranslator($loader, $locale); + + $trans->setFallback($app['config']['app.fallback_locale']); + + return $trans; + + }); } + } diff --git a/app/Utils/TemplateEngine.php b/app/Utils/TemplateEngine.php index f3e7468747bc..61f3601029f5 100644 --- a/app/Utils/TemplateEngine.php +++ b/app/Utils/TemplateEngine.php @@ -16,10 +16,13 @@ use App\Models\Client; use App\Models\ClientContact; use App\Models\Invoice; use App\Models\InvoiceInvitation; +use App\Utils\Ninja; use App\Utils\Traits\MakesHash; use App\Utils\Traits\MakesInvoiceHtml; use App\Utils\Traits\MakesTemplateData; use DB; +use Illuminate\Support\Facades\App; +use Illuminate\Support\Facades\Lang; use League\CommonMark\CommonMarkConverter; class TemplateEngine @@ -96,6 +99,9 @@ class TemplateEngine $this->settings = $this->settings_entity->settings; } + App::forgetInstance('translator'); + Lang::replace(Ninja::transformTranslations($this->settings)); + return $this; }