Skip to content
Определяем язык посетителя сайта
PHP JavaScript
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.infra.json
Lang.js
Lang.php
README.md
composer.json
infra.js
infra.php

README.md

Поддержка на сайте несколько языков

Поддержка 2х-буквыенного стандарта ISO 639

Добавляется параметр lang в окружение infrajs/env.

Реализована интеграция с шаблонами infrajs/template

Установка через composer

{
	"require":{
		"infrajs/lang":"~1"
	}
}

Использование

Lang.lang() вернёт язык, который выбран пользователем на сайте Lang.lang('user') Может так сложиться, что у расширения user нет нужной локализации и по этому язык отдельного расширения может отличаться от выбранного языка для всего сайта.

Список поддерживаемых языков указывается в конфиге расширения. Язык по умолчанию указывается на случай если язык по умолчанию для сайта также не поддерживается.

{
	"lang":{
		"list":["ru","en"],
		"def":"ru"
	}
}

Ни есть в массиве extlang.list или язык выбранный по умолчанию для сайта или язык указанный в extlang.def. extlang - это объект описывающий настройки отдельного расширения сайта, содержащий два свойства list и def, которые зачастую выносятся в конфиг расширения.

Для удобного использовать требуется интеграция в конкретное расширение. Расширение перевода не содержит в себе перевода, нужен контекст.

Интеграция с расширением infrajs/user

	public static function lang($str = null)
	{
		if (is_null($str)) return Lang::name('user');
		return Lang::str('user',$str);
	}

Для дальнейшего использования в шаблонах {User.lang(title)} верёнт title на нужном языке при наличии перевода в папке расширения i18n

Если перевод делается на сервере в php скриптах, то выбранных язык нужно явно передавать в GET параметрах. Определять язык пользователяна сервере нельзя, так как это приведёт к проблема с кэшем.

You can’t perform that action at this time.