Где лучше хранить переводы в мультиязычном сайте?

Ссылка скопирована
2 мая 2026 1 ответ

У нас есть мультиязычный сайт, написанный на laravel+reactjs. Сейчас переводы у нас хранятся в json файлах в формате: ключ:значение и подставляются по ключу. Далее данные из этого файла мы будем отображать в админ панель, чтобы копирайтер мог редактировать переводы. Подскажите, правильно ли хранить наши переводы в json файле или может лучше для этого использовать базу данных или какое-то еще решение?

Дополнительно:

А переводы на фронте или на бэке? Если на бэке, проще хранить сразу массивы ключ значение

Ответы:

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

Лучше хранить переводы на различные языки на стороне пользователя(в json-объектах, на js), а вместе с ними функции для определения и смены языка. В то время, как хранение переводов на серверной части, а вместе с этим перевод этих самых страниц на другие языки, и тем более используя базу данных может нести за собой излишнее количество потребляемых системных ресурсов(особенно, если речь идёт о сайтах с миллионами пользователей), которое можно было избежать, перенеся фуекцию перевода на клиентскую часть(и тем самым, кстати, в теории экономить на сервере).

В ларе есть специальный хелпер для локализации __()
https://laravel.com/docs/10.x/localization

Такой-же, кстати, в вордпрессе. Внутрянка немного различается, но применение практически одинаковое.

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

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Сергей Миронов Ответ

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

1. Хранение переводов в базе данных:
Один из распространенных способов хранения переводов - это использование базы данных. Вы можете создать таблицу, в которой каждая строка будет содержать перевод для определенного текстового элемента на определенном языке. Например, таблица `translations` может содержать столбцы `id`, `key`, `lang`, `value`.

```php
CREATE TABLE translations (
id INT PRIMARY KEY,
key VARCHAR(255),
lang VARCHAR(2),
value TEXT
);
```

Для получения перевода на определенном языке вы можете использовать следующий SQL запрос:

```php
SELECT value FROM translations WHERE key = 'welcome_message' AND lang = 'en';
```

Преимущества этого подхода включают в себя удобство управления переводами через административный интерфейс и возможность динамического обновления переводов. Однако использование базы данных может замедлить производительность сайта из-за необходимости выполнения дополнительных запросов.

2. Хранение переводов в файлах:
Другой популярный способ хранения переводов - это использование файлов. Вы можете создать отдельные файлы для каждого языка, в которых будут содержаться переводы в формате ключ-значение. Например, файл `en.php` может содержать следующее:

```php
return [
'welcome_message' => 'Welcome to our website!',
'about_us' => 'About Us',
// другие переводы
];
```

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

```php
$translations = include 'en.php';
echo $translations['welcome_message'];
```

Преимущества этого подхода включают в себя быстродействие и простоту редактирования переводов. Однако управление большим количеством файлов может быть неудобным.

3. Использование сторонних сервисов:
Третий способ - это использование сторонних сервисов для хранения переводов, таких как Google Translate API или Yandex.Translate API. Вы можете отправлять запросы к этим сервисам для получения перевода на определенный язык. Например, с помощью Google Translate API:

```php
$apiKey = 'your_api_key';
$text = 'Hello, world!';
$source = 'en';
$target = 'fr';

$url = 'https://translation.googleapis.com/language/translate/v2?key=' . $apiKey;
$data = [
'q' => $text,
'source' => $source,
'target' => $target,
];

$options = [
'http' => [
'header' => "Content-type: application/x-www-form-urlencoded\r

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно