定制 sirgrimorum/jslocalization 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

sirgrimorum/jslocalization

Composer 安装命令:

composer require sirgrimorum/jslocalization

包简介

Put localization translations in js

README 文档

README

Latest Version on Packagist PHP Version Total Downloads License

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 我们能提供哪些服务?
定制开发 / 二次开发

基于 sirgrimorum/jslocalization 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 265
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 2
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2018-02-20