что лучший метод должен создать “многоязычный” сценарий в php?

Ваши Документы Здесь определяют EOF, чтобы завершить их (<< EOF), но у вас никогда не будет EOF, чтобы завершить их. Обратите внимание, что EOF не означает конец файла, это означает строку «EOF». https://en.wikipedia.org/wiki/Here_document содержит примеры.

Я не уверен, что вы надеетесь достичь, но мне кажется, что вам нужно указать, какой файл следует оставить. Вы надеетесь передать внутренний кейс в удаленную оболочку на сервере, на котором вы работаете? Это упростит ваш код, чтобы сначала установить имя файла и имя сервера, а затем выполнить команду ssh. На самом деле, я не вижу особой цели в ваших внутренних заявлениях в любом случае. Вместо того, чтобы переносить все в 'env', вы можете просто установить имя хоста в переменную. И тогда «имя_сервера» можно просто вставить в путь файловой системы. что-то вроде этого кажется простым подходом:

#!/bin/bash
case "$1" in
env1)
  hostname="hostname1"
;;
env2)
  hostname="hostname2"
;;
esac
echo ssh weblogic@$hostname tailf  /app/Oracle/Middleware/domains/dq/servers/$servername/logs/$servername.log

Кажется, что работает просто и прямо:

servername=ManagedSvr1 ./t.sh env1
ssh weblogic@hostname1 tailf /app/Oracle/Middleware/domains/dq/servers/ManagedSvr1/logs/ManagedSvr1.log

Уберите «echo», чтобы фактически выполнить ssh.

8
задан Michael A 27 December 2011 в 18:05
поделиться

5 ответов

Существует много опций для хранения переводов:

  • TMX: относительно новый формат XML для переводов. Кажется, получает в популярности.
  • Gettext является другим открытым форматом для переводов. Фактический стандарт в течение долгого времени.
  • файлы ini - легкий отредактировать, очень простой формат
  • Файлы PHP (массивы) - легкий отредактировать для PHP программистов, хорошей производительности
  • Формат CSV - относительно простой использовать.

Я предложил бы, чтобы Вы использовали что-то как Zend_Translate, который поддерживает несколько адаптеров и обеспечивает основной подход для встраивания переводов в Вашем приложении.

11
ответ дан 5 December 2019 в 07:13
поделиться

Вопреки daddz я рекомендовал бы против использования gettext в PHP:

  • Установка локали для каждого процесса. Это означает, что то, когда Вы работаете с многопоточным апачем или любым другим многопоточным веб-сервером, выполняющим незавершенный PHP, звоня setlocale в одном потоке, будет влиять на другие потоки.

    Поскольку Вы не можете знать, который обрабатывает поток/процесс, какой запрос, Вы столкнетесь с ужасными проблемами с пользователями, периодически получающими неправильную локаль.

  • Локаль, которую Вы устанавливаете в PHP, имеет влияние на функции как printf или даже strtotime. Вы, конечно, получите бит "странными" числовыми форматами, прибывающими в Ваш код бэкенда, если Вы будете работать с gettext/setlocale

Используйте любое из других решений, выровненных к Eran, или быстро сделайте что-то сами (массивы PHP работают очень приятно). Также используйте intl-расширение, которое будет в базовом PHP 5.3 для числа и форматирования даты и сопоставления.

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

6
ответ дан 5 December 2019 в 07:13
поделиться

Я предложил бы Gettext.

Это является межплатформенным, с открытым исходным кодом, широко используемое и доступным для php: PHP Gettext

4
ответ дан 5 December 2019 в 07:13
поделиться

Я создал многоязычный CMS. Все содержание было сохранено в базе данных с основными таблицами для общего (не язык определенные значения) и отдельными таблицами для языка определенное содержание.

Например, давайте предположим хранить продукты - у нас есть таблица 'продуктов' (содержит unique_id, созданная дата, URL изображения и т.д. и т.д.) и 'product_local' таблица (содержит любой язык определенные поля).

Используя этот метод очень легко поддержать содержание.

1
ответ дан 5 December 2019 в 07:13
поделиться

У меня нет опыта в gettext так никакой комментарий, что тема, но я создал несколько многоязычных сайтов с помощью следующих методов:

МЕТОД 1

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

Например, у меня будет ассоциативный массив текста с индексами, определяющими который текст:

$text['english']['welcome'] = "Welcome to my site. blah blah blah";
$text['english']['login'] = "Please enter your username and password to login";

И возможно набор Ваш язык с постоянной переменной или переменной конфигурации.

МЕТОД 2

Я создал два сайта с идентичными структурами и бэкендами, но каждый использовал различную базу данных и сохранялся отдельно: data_french, data_english.

1
ответ дан 5 December 2019 в 07:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: