Прежде всего, я знаю, что есть много ответов о многоязычной функциональности, я не нашел ответа на то, что я хочу.
Я думал о трех способах, с которыми могу работать. Мне нужно создавать файлы языков с помощью PHP каждый раз, когда я добавляю новое значение в интерфейс веб-формы.
Первые два типа аналогичны - используют массивы или определяют в конкретном языковом файле и включают его в начало выполнения. Но в этом случае я могу загрузить тысячи определений или массивов, чтобы использовать несколько на каждой странице.
Третий способ - создать функцию, которая вызывается каждый раз с ключевым словом или полной фразой и с помощью IF
-s или switch
выбрать правильный термин (или вернуть вызываемый ключ, если он не совпадает).
Как лучше всего это сделать? Я решил сделать несколько тестов. Я попробовал три разных способа и измерил время и память, затраченные на это:
Я определил массив (22 значения) с и запустить его от 1 до 1 000 000 - проверено на вызывающее значение - 1 из трех с помощью оператора %
, чтобы выбрать, что использовать и просто установить его для переменной
Я использовал тот же массив (22 значения) и вызвал его с помощью функции - return $ arr [$ последовательность];
(просто, чтобы удобный способ работал и способность изменить его на другой путь, если мне будет нужно)
я создал функцию со списком последовательностей и использования выключатель
-> случай
, я выбрал последовательность возвращения
ну, теперь вопрос - то, что является правильным выбором - предпочтение времени или предпочтение памяти.
И в случае, если сайты большие и это займет много памяти - я не могу изменить его, потому что он построен с помощью массивов - Если он работает с функцией, я всегда могу изменить его.
-121--1089448-У меня проблемы с обратной ссылкой в тексте замены, за которой следует литерал. Я попробовал следующее:
perl -0pi -e "s/(<tag1>foo<\/tag1>\n\s*<tag2>)[^\n]*(<\/tag2>)/\1${varWithLeadingNumber}\2/" file.xml
perl -0pi -e "s/(<tag1>foo<\/tag1>\n\s*<tag2>)[^\n]*(<\/tag2>)/\g{1}${varWithLeadingNumber}\g{2}/" file.xml
Первый, конечно, вызывает проблемы, потому что $ {varWireLeadingNumber} начинается с числа, но я думал, что конструкция \g {1}
во второй попытке выше должна была решить эту проблему. Я использую perl 5.12.4.