diff --git a/app/Console/Commands/MakeModule.php b/app/Console/Commands/MakeModule.php
index 688c04b53d31..25fca1d74f45 100644
--- a/app/Console/Commands/MakeModule.php
+++ b/app/Console/Commands/MakeModule.php
@@ -67,6 +67,7 @@ class MakeModule extends Command
Artisan::call('ninja:make-class', ['name' => $name, 'module' => $name, 'class' => 'request', 'prefix' => 'update']);
Artisan::call('ninja:make-class', ['name' => $name, 'module' => $name, 'class' => 'api-controller']);
Artisan::call('ninja:make-class', ['name' => $name, 'module' => $name, 'class' => 'transformer', '--fields' => $fields]);
+ Artisan::call('ninja:make-class', ['name' => $name, 'module' => $name, 'class' => 'lang', '--filename' => 'texts']);
if ($migrate) {
Artisan::call('module:migrate', ['module' => $name]);
diff --git a/app/Console/Commands/stubs/lang.stub b/app/Console/Commands/stubs/lang.stub
new file mode 100644
index 000000000000..a31749e36762
--- /dev/null
+++ b/app/Console/Commands/stubs/lang.stub
@@ -0,0 +1,10 @@
+ '$STUDLY_NAME$',
+);
+
+return $LANG;
+
+?>
diff --git a/app/Http/routes.php b/app/Http/routes.php
index 718d09178f45..86c6f54b785e 100644
--- a/app/Http/routes.php
+++ b/app/Http/routes.php
@@ -908,6 +908,16 @@ if (!defined('CONTACT_EMAIL')) {
return $string != $english ? $string : '';
}
}
+
+ // include modules in translations
+ function mtrans($entityType, $text)
+ {
+ if ( ! Utils::isNinjaProd() && $module = Module::find($entityType)) {
+ return trans("{$module->getLowerName()}::texts.{$text}");
+ } else {
+ return trans("texts.{$text}");
+ }
+ }
}
diff --git a/config/modules.php b/config/modules.php
index 0e78fc317eb0..8f26ebb982b3 100644
--- a/config/modules.php
+++ b/config/modules.php
@@ -105,7 +105,7 @@ return [
'filter' => 'Http/Middleware',
'request' => 'Http/Requests',
'provider' => 'Providers',
- 'lang' => 'Resources/lang',
+ 'lang' => 'Resources/lang/en',
'views' => 'Resources/views',
'test' => 'Tests',
'jobs' => 'Jobs',
diff --git a/resources/views/partials/navigation_option.blade.php b/resources/views/partials/navigation_option.blade.php
index 838a1eeb7a7f..8716e342ec35 100644
--- a/resources/views/partials/navigation_option.blade.php
+++ b/resources/views/partials/navigation_option.blade.php
@@ -20,7 +20,7 @@
style="font-size:16px; padding-top:6px; padding-bottom:6px"
class="{{ Request::is("{$option}*") ? 'active' : '' }}">
- {{ ($option == 'recurring_invoices') ? trans('texts.recurring') : trans("texts.{$option}") }}
+ {{ ($option == 'recurring_invoices') ? trans('texts.recurring') : mtrans($option, $option) }}
{!! Utils::isTrial() && in_array($option, ['quotes', 'tasks', 'expenses', 'vendors']) ? ' ' . trans('texts.pro') . '' : '' !!}