Конвертация 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 никто не отменял. Да, тут нет автоматического деплоя, но зато всё предельно просто, быстро и не зависит от посторонних сервисов.
Единственное условие: сохранять файл с разделителями табами и не использовать их в самих строках. Конечно можно выбрать и другие разделители и изменить в скрипте.
Хотел бы порекомендовать бесплатные онлайн инструменты для конвертирования TSV в JSON и CSV в JSON
https://wtools.io/ru/convert-tsv-to-json
и
https://wtools.io/ru/convert-csv-to-json