Lingo.dev + .php (Laravel)

Lingo.dev CLI переводит языковые файлы PHP на основе массивов, сохраняя синтаксис, соглашения Laravel и форматирование, специфичное для PHP. CLI точно сохраняет синтаксис и форматирование массивов PHP, работает безупречно с системой локализации Laravel, сохраняет переменные :name и :count, обрабатывает многомерные массивы и совместим с любым PHP-фреймворком, использующим массивы.

Быстрая настройка

Настройка для языковых файлов массивов PHP:

{
  "locale": {
    "source": "en",
    "targets": ["es", "fr", "de"]
  },
  "buckets": {
    "php": {
      "include": ["resources/lang/[locale]/*.php"]
    }
  }
}

Напоминание: [locale] — это заполнитель, который должен оставаться в конфигурации буквально, так как он заменяется на фактический локаль во время выполнения CLI.

Перевод массивов PHP

npx lingo.dev@latest i18n

Сохраняет синтаксис PHP, структуру массивов и специфические для Laravel соглашения при переводе строковых значений.

Структура массивов PHP

Простые языковые массивы

<?php

return [
    'welcome' => 'Добро пожаловать в наше приложение',
    'dashboard' => 'Панель управления',
    'settings' => 'Настройки',
    'logout' => 'Выйти',
];

Поддержка вложенных массивов

<?php

return [
    'auth' => [
        'login' => 'Войти',
        'register' => 'Зарегистрироваться',
        'forgot_password' => 'Забыли пароль?',
        'reset_password' => 'Сбросить пароль',
    ],
    'validation' => [
        'required' => 'Это поле обязательно для заполнения',
        'email' => 'Пожалуйста, введите действительный адрес электронной почты',
    ],
];

Поддержка заполнителей Laravel

<?php

return [
    'welcome_user' => 'С возвращением, :name!',
    'items_count' => 'У вас :count товаров в корзине',
    'validation' => [
        'min' => ':attribute должен содержать не менее :min символов',
    ],
];

Интеграция с фреймворком

Хелперы перевода Laravel

Работает безупречно с функциями перевода Laravel:

  • __('messages.welcome')
  • trans('auth.login')
  • @lang('validation.required')

Поддержка множественного числа

<?php

return [
    'items' => 'item|items',
    'minutes' => '{0} no minutes|{1} one minute|[2,*] :count minutes',
];

Расширенная конфигурация

Несколько директорий для языков

"php": {
  "include": [
    "resources/lang/[locale]/*.php",
    "lang/[locale]/**/*.php"
  ]
}

Блокировка ключей конфигурации

"php": {
  "include": ["resources/lang/[locale]/*.php"],
  "lockedKeys": ["app.timezone", "app.locale", "app.fallback_locale"]
}