вообще то для индивидуального использования 100 баксов за первый год, второй $79. а далее $59. кроме того периодически бывают какие то акции и можно дешевле "урвать". я так и первый раз купил, а крайний раз была акция - сразу на два года продлил. (Ну правда они заняли "активную" позицию в связи с последними событиями, пришлось пока без обновлений - времени нет разобраться как дальше, все "на завтра" откладываю).
Заблуждение :)
Строго говоря до недавнего времени мне было пофиг, ну принято так (в файлах) и принято. А тут проект один стал требовать периодически принимать свыше 150К активных пользователей в день (при чем не размыто на дню, а с пиком ярким) - и к некоторым вопросам (которые казались мелочами) стал несколько по другому смотреть.
Не зарекайтесь ;) Каждый инструмент служит своим задачам. До и пользоваться надо уметь инструментом. У меня тот же Битрикс не тормозит. Выбор надо делать трезво, нафига делать свои велосипеды если есть некий инструмент, который покрывает задачу в очень заметной степени - это позволяте сконцентрироваться на том функционале, который для проект является дейстивтельно уникальным.
Ну у меня свой движок просуществовал 15 лет, потом надоело тратить время на то, что понятно как делать, делать не интересно (Есть более интересные задачи).. Я плюнул на него и совершенно не жалею. Есть у меня, например, мой личный проект, там работы оверхдохрена, нафиг мне отвлекаться на типовой функционал? Или, как пример, как появился закон о кассах, - самому пилить интеграцию... да и те же эквайринговые сервисы интегрировать. я в этом году несколько сервисов перепробовал (в связи с трудностями приема оплаты из за рубежа).. сам бы на это кучу времени потратил....
в общем нет.. пока речь идет о блоге или о чем то простом, в конце концов пока создание этого ядра прокачивает скилы, или является интересной задачей - да хороший проект.... а потом надоедает.
Я конечно не агитирую, просто свое мнение высказал :)
Вы несколько путаете. Меню это скорее не интерфейс, это динамический контент, то чем управляет контент менеджер. А тут речь об интерфейсных фразах
Ларваель , Symfony, Джанго, вордпресс и да, Битрикс не исключение - у него тоже локализация на файлах построена.
Внимание: речь о локализации интерфейса, а не контента сайта. Это рядом, но разное
В принципе крайне редко редактирую что ли бо по ftp (да и вообще на бою). В крайнем случае на серваке vim.
А вообще, когда в редких случаях (т.е. нельзя сказать, что я "собаку съел" в таком кейсе), использую Kate. Конечно пробовал шторм (это основное IDE у меня) - но не пошло. Kate и как системный редактор и, коли уж пошел на ftp из GUI, то просто в менеджере файлов открываю как бы и локально было.
И еще вариант
function day_of_programmer_shortcode(): string{ $data = explode(' ', date('Ymd z', mktime(0, month: 9, day: 12))); [$date, $number] = array_map('intval', $data); if ($number === 255) { ++$date; } if ($date === (int)date('Ymd')) { return '<div class="day-of-programmer-message">Поздравляем с Днем программиста!</div>'; } return '';}
Все, пожалуй пора идти работать, а то завтра в фонтаны нырять....
Как вариант (правда не тестил)
function day_of_programmer_shortcode(): string{ $date = mktime(0, month: 9, day: 12); if (255 === (int)date('z', $date)) { $date += 86400; } $nextDate = $date + 86400; $now = time(); if ($now >= $date && $now < $nextDate) { return '<div class="day-of-programmer-message">Поздравляем с Днем программиста!</div>'; } return '';}
Еще, кстати, аргумент пришел в голову. Как исходные данные: речь о php и используем модульность. В случае массива последовательность следующая. Где то в начале инициализируется массив (возможно пустой) скажем $dict. Далее подключается один или множество языковых файлов. Примерно такого содержания
<?php$dict['key1']='value1';$dict['key2']='value2';
Т.е. идет просто заполнение массива.
Если же будет храниться в json. То для каждого файла придется делать (в грубом варианте):
$json = file_get_contents('module_lang.json'); //считали$moduleTexts = json_decode($json); // преобразовали$dict = array_merge($dict, $moduleTexts); // объединили с ранее набранным массивом
А на противоположной стороне весов
include_once 'module_lang.php';
Обработка ошибок за скобками - т.к. она одинаковая