webkid/js-translator

Laravel JS 翻译器

安装数: 2,362

依赖项: 0

建议者: 0

安全: 0

星标: 0

关注者: 2

分支: 1

开放问题: 0

语言:JavaScript

1.4 2017-06-10 12:38 UTC

This package is auto-updated.

Last update: 2024-09-15 05:28:42 UTC


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 了解最近更改的详细信息。

贡献

请参阅 CONTRIBUTINGCONDUCT 了解详细信息。

安全

如果您发现任何安全相关的问题,请通过电子邮件 kolodiy@ukietech.com 而不是使用问题跟踪器。

致谢

许可证

MIT 许可证 (MIT)。请参阅 许可证文件 了解更多信息。