sirgrimorum/jslocalization
Composer 安装命令:
composer require sirgrimorum/jslocalization
包简介
Put localization translations in js
README 文档
README
Expose Laravel translation files and Eloquent models to JavaScript with a single line. Bind PHP i18n arrays to window globals so your frontend code shares the same translations and data as your backend — no AJAX calls, no duplication.
Features
- Translation binding — publish any Laravel language file to a JavaScript global variable
- Model/collection binding — serialize any Eloquent model, collection, or array to a JavaScript variable
- Nested JS object creation — nested groups are created safely without clobbering existing keys
- Static method support — call
Auth::user(), method chains, or static properties directly from the Blade directive - Zero configuration required — works out of the box with sensible defaults
Requirements
- PHP >= 8.2
- Laravel >= 9.0
Installation
composer require sirgrimorum/jslocalization
Publish configuration (optional)
php artisan vendor:publish --provider="Sirgrimorum\JSLocalization\JSLocalizationServiceProvider" --tag=config
Publishes config/sirgrimorum/jslocalization.php.
Configuration
config/sirgrimorum/jslocalization.php
return [ // View that receives the injected <script> tags (used for auto-injection) 'bind_trans_vars_to_this_view' => 'layouts.app', // Default lang group to expose (the array key inside the language file) 'trans_group' => 'messages', // Global JS variable name that holds all translations 'default_base_var' => 'translations', // Path to language files 'default_lang_path' => '/resources/lang/', ];
Usage
Bind a translation file to JavaScript
{{-- Exposes resources/lang/{locale}/messages.php as window.translations.messages --}} @jslocalization('messages') {{-- Expose only a specific group within the file --}} @jslocalization('messages', 'errors') {{-- Use a custom JS variable name --}} @jslocalization('messages', 'errors', 'myApp')
The directive outputs a <script> tag:
<script> window.translations = window.translations || {}; translations.messages = { "welcome": "Welcome!", "errors": { ... } }; </script>
Use translations in JavaScript
// After @jslocalization('messages') console.log(translations.messages.welcome); // "Welcome!" alert(translations.messages.errors.not_found); // "Not found"
Bind a model to JavaScript
{{-- Serialize the authenticated user --}} @jsmodel('Auth::user()') {{-- Custom variable name --}} @jsmodel('Auth::user()', 'currentUser') {{-- Method chains --}} @jsmodel('Auth::user()->profile()', 'userProfile') {{-- Static property --}} @jsmodel('App\Models\Setting::$defaults', 'appDefaults')
Output:
<script> currentUser = {"id":1,"name":"Alice","email":"alice@example.com"}; </script>
Bind any variable from PHP
You can also pass variables directly using the facade:
// In a controller or view composer $script = JSLocalization::get('messages', 'errors'); // returns <script>...</script> $script = JSLocalization::put($collection, 'myData'); // serialize a collection echo $script;
API Reference
JSLocalization::get()
JSLocalization::get( string $langfile, // Language file name (without .php extension) string $group = '', // Optional key within the file to expose string $basevar = '' // JS global variable (default: config 'default_base_var') ): string
Returns a <script> tag that assigns the translation array to window.{basevar}.{langfile}.
JSLocalization::put()
JSLocalization::put( mixed $model, // Eloquent model, collection, array, or object string $variable = '' // JS variable name (default: class basename) ): string
Returns a <script> tag that assigns the JSON-encoded value to a global variable.
Blade directive — @jslocalization
@jslocalization(string $langfile, string $group = '', string $basevar = '')
Blade directive — @jsmodel
@jsmodel(string $expression, string $variable = '')
$expression can be:
- A static method call:
'Auth::user()' - A method chain:
'Auth::user()->roles()' - A static property:
'App\Models\Config::$defaults'
License
The MIT License (MIT). See LICENSE.
sirgrimorum/jslocalization 适用场景与选型建议
sirgrimorum/jslocalization 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 265 次下载、GitHub Stars 达 0, 最近一次更新时间为 2018 年 02 月 20 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 sirgrimorum/jslocalization 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 sirgrimorum/jslocalization 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 265
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 0
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2018-02-20