diff --git a/src/Generators/LangFileGenerator.php b/src/Generators/LangFileGenerator.php index 5518a51..b0aae58 100644 --- a/src/Generators/LangFileGenerator.php +++ b/src/Generators/LangFileGenerator.php @@ -26,7 +26,15 @@ class LangFileGenerator extends BaseGenerator */ protected function getContent() { - $stub = $this->files->get(__DIR__.'/../stubs/lang.stub'); + $locale = config('app.locale'); + + $langStubPath = __DIR__.'/../stubs/lang-'.$locale.'.stub'; + + if ($this->files->exists($langStubPath)) { + $stub = $this->files->get($langStubPath); + } else { + $stub = $this->files->get(__DIR__.'/../stubs/lang.stub'); + } $displayModelName = ucwords(str_replace('_', ' ', snake_case($this->modelNames['model_name']))); @@ -47,7 +55,7 @@ class LangFileGenerator extends BaseGenerator */ private function createAppLangFile($langPath) { - if ( ! $this->files->exists($langPath.'/app.php')) { + if (!$this->files->exists($langPath.'/app.php')) { $this->generateFile($langPath.'/app.php', $this->getAppLangFileContent()); $this->command->info('lang/app.php generated.'); } diff --git a/src/stubs/lang-id.stub b/src/stubs/lang-id.stub new file mode 100644 index 0000000..c92adf0 --- /dev/null +++ b/src/stubs/lang-id.stub @@ -0,0 +1,30 @@ + 'Master', + 'list' => 'Daftar Master', + 'search' => 'Cari Master', + 'detail' => 'Detail Master', + 'not_found' => 'Master tidak ditemukan', + 'empty' => 'Belum ada Master', + 'back_to_show' => 'Kembali ke detail Master', + 'back_to_index' => 'Kembali ke daftar Master', + + // Actions + 'create' => 'Input Master Baru', + 'created' => 'Input Master baru telah berhasil.', + 'show' => 'Lihat Detail Master', + 'edit' => 'Edit Master', + 'update' => 'Update Master', + 'updated' => 'Update data Master telah berhasil.', + 'delete' => 'Hapus Master', + 'delete_confirm' => 'Anda yakin akan menghapus Master ini?', + 'deleted' => 'Hapus data Master telah berhasil.', + 'undeleted' => 'Data Master gagal dihapus.', + 'undeleteable' => 'Data Master tidak dapat dihapus.', + + // Attributes + 'name' => 'Nama Master', + 'description' => 'Deskripsi Master', +]; diff --git a/tests/Generators/LangGeneratorTest.php b/tests/Generators/LangGeneratorTest.php index 5d25919..eba6629 100644 --- a/tests/Generators/LangGeneratorTest.php +++ b/tests/Generators/LangGeneratorTest.php @@ -50,6 +50,50 @@ return [ } /** @test */ + public function it_creates_correct_model_lang_content_based_on_locale_config() + { + config(['app.locale' => 'id']); + $this->artisan('make:crud', ['name' => $this->model_name, '--no-interaction' => true]); + + $locale = config('app.locale'); + $langPath = resource_path('lang/'.$locale.'/'.$this->lang_name.'.php'); + $displayModelName = ucwords(str_replace('_', ' ', snake_case($this->model_name))); + $this->assertFileExists($langPath); + $langFileContent = "lang_name}' => '{$displayModelName}', + 'list' => 'Daftar {$displayModelName}', + 'search' => 'Cari {$displayModelName}', + 'detail' => 'Detail {$displayModelName}', + 'not_found' => '{$displayModelName} tidak ditemukan', + 'empty' => 'Belum ada {$displayModelName}', + 'back_to_show' => 'Kembali ke detail {$displayModelName}', + 'back_to_index' => 'Kembali ke daftar {$displayModelName}', + + // Actions + 'create' => 'Input {$displayModelName} Baru', + 'created' => 'Input {$displayModelName} baru telah berhasil.', + 'show' => 'Lihat Detail {$displayModelName}', + 'edit' => 'Edit {$displayModelName}', + 'update' => 'Update {$displayModelName}', + 'updated' => 'Update data {$displayModelName} telah berhasil.', + 'delete' => 'Hapus {$displayModelName}', + 'delete_confirm' => 'Anda yakin akan menghapus {$displayModelName} ini?', + 'deleted' => 'Hapus data {$displayModelName} telah berhasil.', + 'undeleted' => 'Data {$displayModelName} gagal dihapus.', + 'undeleteable' => 'Data {$displayModelName} tidak dapat dihapus.', + + // Attributes + 'name' => 'Nama {$displayModelName}', + 'description' => 'Deskripsi {$displayModelName}', +]; +"; + $this->assertEquals($langFileContent, file_get_contents($langPath)); + } + + /** @test */ public function it_creates_app_lang_if_it_doesnt_exists() { $this->artisan('make:crud', ['name' => $this->model_name, '--no-interaction' => true]);