askdkc/breezejp
BreezeJP provides Japanese localization for Laravel Breeze, including translated authentication screens, validation messages, and UI text so Laravel apps can offer a natural Japanese experience out of the box. Install via Composer and run the Artisan command to publish the Japanese language files.
BreezeJP (askdkc/breezejp) is a localization package that swaps Laravel Breeze's default English strings for Japanese translations — it ships the ja validation, auth, and password language files plus a ja.json for JSON-based translations. It is not a UI package; it does not change Breeze's Blade/Vue/React components, only the message strings they render.
Minimal install:
composer require askdkc/breezejp --dev
php artisan breezejp
The breezejp artisan command publishes the bundled language files into lang/ja/ (and merges ja.json into lang/ja.json), then sets your app locale. If you already have a lang/ja directory, it prompts before overwriting.
Where to look first:
config/app.php → locale should be ja (the command sets this; verify it did).lang/ja/validation.php, lang/ja/auth.php, lang/ja/passwords.php — the files you'll be editing when you need to customize wording.lang/ja.json — JSON-string translations used by __() calls in Breeze views and your own app.First useful use case: install Breeze with the Blade stack, run php artisan breezejp, then hit /register and /login to confirm validation errors and auth failure messages render in Japanese. That's the entire happy path — most teams never touch the package again after this.
Install once, customize in place. The command is a scaffolding step, not a runtime dependency. After publishing, treat lang/ja/* as your own source files — edit them freely. Re-running php artisan breezejp will overwrite, so don't put it in a deploy script or post-install hook.
Fresh-project vs. existing-project workflows. On a greenfield Breeze install, run the command immediately after php artisan breeze:install so you don't accumulate English strings you'll later need to hunt down. On an existing project, publish first and diff against your current lang/ja before accepting — the package's validation.php is comprehensive, but you may have added custom rules or attributes.
Extending validation messages. The published validation.php includes attributes for common fields. Add your domain-specific field names there rather than passing :attribute overrides at each call site:
// lang/ja/validation.php
'attributes' => [
'email' => 'メールアドレス',
'password' => 'パスワード',
'company_name' => '会社名',
],
Pairing with Breeze's frontend stack. The package is stack-agnostic — the same lang/ja files serve Blade, Vue, and React Breeze. If you're on the React/Inertia stack, remember Breeze's JS-side validation (react-hook-form errors from the backend) still routes through Laravel's validation messages, so this package covers it.
Locale per request. If the app is multi-locale with Japanese as one option, don't rely on config('app.locale') set by the command — set it per request via middleware and let the Japanese files load only when app()->getLocale() === 'ja'. The package's files coexist fine with other locales in lang/.
The command mutates config. breezejp writes to config/app.php to set locale => 'ja'. If you're in a Docker/CI context with a read-only filesystem or a config cached from before, the locale change won't take effect. Run php artisan config:clear afterward, and check the diff on config/app.php if login pages still show English.
Overwrite prompt is your only guard. The command will happily clobber a customized lang/ja/validation.php if you confirm the prompt or run non-interactively. Back up or commit before re-running. There is no --force-less dry-run mode.
New in v2.6.3: array_keys message added. The array_keys validation rule now has a Japanese translation in validation.php (:attribute で指定された値は配列に含まれていません。 or similar). If you were on v2.6.2 or earlier, this rule previously fell back to the raw key or your English validation.php, producing an untranslated error. After upgrading, either republish with php artisan breezejp (overwriting) or manually add the array_keys line to your existing lang/ja/validation.php to keep your customizations:
'array_keys' => ':attribute に含まれていない値が指定されています。',
Not a Breeze replacement. Installing this does not scaffold auth. You still need composer require laravel/breeze --dev and php artisan breeze:install. The package is purely the strings layer — a common confusion when reading the README.
Missing rule coverage is silent. Laravel falls back to the raw translation key (e.g. validation.some_new_rule) when a rule isn't translated. If you upgrade Laravel and see an untranslated validation message, it usually means the package hasn't caught up yet — add the key yourself and consider contributing upstream.
Version pinning. Because the package's value is entirely in published files, pinning ^2.6 in require-dev and republishing on major/minor bumps is a reasonable cadence. Patch releases like v2.6.3 are translation additions, so check the changelog before republishing to avoid losing local edits for a one-line change.
Extension point. There isn't a service provider to hook into for message overrides — the "extension point" is the published files themselves. If you need runtime overrides (e.g. per-tenant wording), use Laravel's Lang::addLines() in a service provider rather than fighting the package.
How can I help you explore Laravel packages today?