Ещё один простой блог в интернете, одного из жителей Сызрани, который считает себя дизайнером, WEB-мастером и фотографом-любителем

просто блог

QR CODE для записиQR CODE для записи “Конвертация TSV (CSV) в JSON на PHP”

Конвертация TSV (CSV) в JSON на PHP

Появилась задача сделать веб-проект мультиязычным. Самое простое — это использовать json файлы или один большой json файл.
Чтобы не изобретать велосипед решил поискать готовое решение, что-то типа Crowdin. Почитал обзоры, посмотрел сервисы и везде хотят денежку или имеются другие не очень приятные штуки.

Устав выбирать решил написать сам небольшое решение на коленке и на это решение потратил в несколько раз меньше времени, буквально 15 минут, чем искал сервис и написание данного материала. И так, пример моего скрипта с уровнем вхождения 0:

$csv = trim( file_get_contents('lang.csv') ); // Открываем файл

$array = explode("\n", $csv); // Разбиваем на строки
// Список языков
$ru = [];
$en = [];

foreach ($array as &$value) {
	$item = explode("\t", $value); // Разбиваем строку по табам
	// Добавляем в массивы языков
	$en[$item[0]] = $item[1];
	$ru[$item[0]] = $item[2];
}

// Отладка
// echo '<pre>';
// print_r($ru);
// print_r($en);
// print_r(json_encode($ru));
// print_r(json_encode($en));
// echo '</pre>';

// Пишем в файлы
file_put_contents('en.json', json_encode($en));
file_put_contents('ru.json', json_encode($ru));
// Запись в один файл
file_put_contents('lang.json', json_encode(["en"=>$en,"ru"=>$ru]));

Всё очень просто и удобно. Теперь любой участник проекта может внести изменения в CSV файл удобным для него способом: блокнот, Excel и т.д. В том числе совместное редактирование через Google Sheets никто не отменял. Да, тут нет автоматического деплоя, но зато всё предельно просто, быстро и не зависит от посторонних сервисов.

CSV в JSON

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

Оставить комментарий

В блоге включена ручная модерация комментариев. Нет смысла повторно отправлять комментарий.
Поля отмеченный звездочкой * обязательны к заполнению

Перед отправкой формы: