Download the PHP package stolkom/translatable without Composer

On this page you can find all versions of the php package stolkom/translatable. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package translatable

Пакет Translatable предназначен для внедрения перевода полей модели. По сути, Translatable не является заменой lang-файлов, а служит для перевода значений, хранящихся в БД.

Установка

Установить пакет можно с помощью composer-а:

Если планируется использовать общую таблицу для хранения переводов, необходимо её создать. Для этого необходимо выполнить следующие команды:

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

Подключить Trait можно, добавив следующую строку в тело модели:

Список переводимых полей указывается в массиве translatableAttributes, который нужно объявить в теле модели:

Для всех моделей, использующих Translatable трейт, по умолчанию включен автоперевод. Таким образом, все поля, указанные в массиве translatableAttributes, переводятся на язык текущей локали пользователя автоматически при обращении к ним. Если перевод для значения поля на выбранный язык отсутствует в таблице переводов, возвращается непереведенное значение.

Получение перевода на конкретный язык

Если необходимо получить перевод значения поля не на текущий язык пользователя, а на какой-то другой, можно воспользоваться функцией:

getTranslation возвращает перевод выбранного поля на выбранный язык. Если перевода нет в таблице БД, возвращает непереведенное значение поля.

Возвращает: string

Отключение автоматического перевода

Если в какой-то момент необходимо отключить автоперевод полей (например на страницах create/edit), нужно вызвать метод модели disableAutoTranslations:

Чтобы включить автоперевод обратно, нужно вызвать метод enableAutoTranslations.

Общая таблица переводов

По умолчанию для хранения переводов полей модели используется общая таблица translations с полиморфными связями.

Отдельная таблица переводов

Если для модели предполагается большое количество записей, то в целях предотвращения чрезмерного разрастания общей таблицы и снижения нагрузки на БД можно использовать отдельную таблицу переводов для этой модели.

Для этого нужно создать миграцию со следующими полями:

Где example_model_translations - имя таблицы переводов.

Чтобы указать, что модель использует отдельную таблицу, в тело модели необходимо добавить переменную translationTable, содержащую название используемой таблицы:

Кроме того, необходимо создать отдельную модель для переводов:

и переопределить метод getTranslationModelName в модели, использующей Translatable трейт, так, чтобы он возвращал имя созданной модели переводов:

После этого Translatable трейт автоматически будет использовать созданную таблицу для хранения переводов этой модели (в нашем случае ExampleModel).

Сохранение переводов

Для сохранения переводов модели можно воспользоваться методом:

Метод saveTranslations принимает в качестве атрибута массив следующего вида:

Пример:

Нетерпеливая загрузка (Eager loading)

Стоит учитывать, что по умолчанию Laravel использует ленивую загрузку (Lazy loading) и вывод списка из 100 записей с переводами создаст 101 запрос. Для решения этой проблемы следует использовать нетерпеливую загрузку.

Кроме того, можно автоматически применять нетерпеливую загрузку для модели. Для этого достаточно добавить в тело модели следующую строку:


All versions of translatable with dependencies

PHP Build Version
Package Version
Requires php Version ^7.2
laravel/framework Version ^5.5
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package stolkom/translatable contains the following files

Loading the files please wait ....