webkid / js-translator
Laravel JS 翻译器
1.4
2017-06-10 12:38 UTC
Requires
- php: ~5.5|~7.0
- illuminate/support: ~5.1
Requires (Dev)
- phpunit/phpunit: 4.*
- scrutinizer/ocular: ~1.1
- squizlabs/php_codesniffer: ~2.3
README
安装
通过 Composer
$ composer require webkid/js-translator
添加服务提供者: Webkid\JsTranslator\JsTranslatorServiceProvider::class,
用法。Angular JS 示例
发布 lang.js 库文件到 your-public-folder/jstranslator/lang.js
$ php artisan vendor:publish
添加延迟引导库以在所有内容加载之前加载翻译。
bower install angular-deferred-bootstrap --save
将资源添加到您的 html 或 blade 页面
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.5/angular.js"></script> <script src="/vendor/angular-deferred-bootstrap/angular-deferred-bootstrap.min.js"></script> <script src="/jstranslator/lang.js"></script>
运行延迟引导
deferredBootstrapper.bootstrap({ element: document.documentElement, module: 'app', resolve: { TRANS: ['$http', function ($http) { return $http.get('/trans'); }] } });
为 /trans URL 设置路由
Route::get('/trans', function () { $a = app()->make('jstranslator'); return response()->json($a->get()); });
最后添加您的 angular 脚本文件。示例
(function() { 'use strict'; angular .module('app', []) .controller('langController', langController) .filter('trans', trans) .filter('trans_plural', trans_plural) .filter('trans_as_array', trans_as_array) .run(runBlock) ; runBlock.$inject = ['TRANS']; function runBlock(TRANS) { Lang.setMessages(TRANS); //set messages object } function langController() { console.log(Lang.get('pagination.next')); } /** * Get translation from resources, empty. * Example: * 'pagination.next' | trans => 'Next' */ function trans() { return function (input, replaces) { // Set symbol return Lang.get(input, replaces); }; } /** * Get translation from resources. * Example: * 'subscription.month' | trans_plural:1 => 'month' * 'subscription.month' | trans_plural:2 => 'months' */ function trans_plural() { return function (input, number) { return Lang.choice(input, number); }; } /** * Convert translation object to array from resources. * Example: * 'property.property_types' | trans_as_array */ function trans_as_array() { return function (input) { if(typeof Lang.get(input) !== 'object') { console.error('Error, ' + input + 'not a object.'); return []; } var newOptions = []; angular.forEach(Lang.get(input), function(val, key){ newOptions.push({key: key, value: val}); }); return newOptions; }; } })();
html 中使用示例
<div class="title" ng-controller="langController">Laravel 5 @{{ 'pagination.next' | trans }}</div>
变更日志
请参阅 CHANGELOG 了解最近更改的详细信息。
贡献
请参阅 CONTRIBUTING 和 CONDUCT 了解详细信息。
安全
如果您发现任何安全相关的问题,请通过电子邮件 kolodiy@ukietech.com 而不是使用问题跟踪器。
致谢
许可证
MIT 许可证 (MIT)。请参阅 许可证文件 了解更多信息。