Лучший способ реализации многоязычного PHP

Прежде всего, я знаю, что есть много ответов о многоязычной функциональности, я не нашел ответа на то, что я хочу.

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

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

Третий способ - создать функцию, которая вызывается каждый раз с ключевым словом или полной фразой и с помощью IF -s или switch выбрать правильный термин (или вернуть вызываемый ключ, если он не совпадает).

Как лучше всего это сделать? Я решил сделать несколько тестов. Я попробовал три разных способа и измерил время и память, затраченные на это:

  1. Я определил массив (22 значения) с и запустить его от 1 до 1 000 000 - проверено на вызывающее значение - 1 из трех с помощью оператора % , чтобы выбрать, что использовать и просто установить его для переменной

    • Время заняло: 0.476591110229 second
    • Память: 6536 байт
  2. Я использовал тот же массив (22 значения) и вызвал его с помощью функции - return $ arr [$ последовательность]; (просто, чтобы удобный способ работал и способность изменить его на другой путь, если мне будет нужно)

    • , Время взяло: 0,960635185242 секунды
    • Память: 6 704 байта
  3. я создал функцию со списком последовательностей и использования выключатель -> случай , я выбрал последовательность возвращения

    • , Время взяло: 1,46953487396 секунды
    • Память: 848 байтов

ну, теперь вопрос - то, что является правильным выбором - предпочтение времени или предпочтение памяти.

И в случае, если сайты большие и это займет много памяти - я не могу изменить его, потому что он построен с помощью массивов - Если он работает с функцией, я всегда могу изменить его.

-121--1089448- В данном случае обратная ссылка в тексте замены, за которой следует числовой литерал У меня возникают проблемы с обратной ссылкой в тексте замены, за которой следует литерал. Я попробовал следующее: perl -0pi -e "s/( < tag1 > foo <\/tag1 >\n\s * < tag2 >) [^\n] * (<\/...

У меня проблемы с обратной ссылкой в тексте замены, за которой следует литерал. Я попробовал следующее:

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.

9
задан jonderry 26 September 2011 в 18:29
поделиться