Ваши Документы Здесь определяют 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.
Существует много опций для хранения переводов:
Я предложил бы, чтобы Вы использовали что-то как Zend_Translate, который поддерживает несколько адаптеров и обеспечивает основной подход для встраивания переводов в Вашем приложении.
Вопреки daddz я рекомендовал бы против использования gettext в PHP:
Установка локали для каждого процесса. Это означает, что то, когда Вы работаете с многопоточным апачем или любым другим многопоточным веб-сервером, выполняющим незавершенный PHP, звоня setlocale в одном потоке, будет влиять на другие потоки.
Поскольку Вы не можете знать, который обрабатывает поток/процесс, какой запрос, Вы столкнетесь с ужасными проблемами с пользователями, периодически получающими неправильную локаль.
printf
или даже strtotime
. Вы, конечно, получите бит "странными" числовыми форматами, прибывающими в Ваш код бэкенда, если Вы будете работать с gettext/setlocaleИспользуйте любое из других решений, выровненных к Eran, или быстро сделайте что-то сами (массивы PHP работают очень приятно). Также используйте intl-расширение, которое будет в базовом PHP 5.3 для числа и форматирования даты и сопоставления.
Используя gettext на веб-решении, которым много раз оказываются вполне как открытие общеизвестной кучи проблем.
Я предложил бы Gettext.
Это является межплатформенным, с открытым исходным кодом, широко используемое и доступным для php: PHP Gettext
Я создал многоязычный CMS. Все содержание было сохранено в базе данных с основными таблицами для общего (не язык определенные значения) и отдельными таблицами для языка определенное содержание.
Например, давайте предположим хранить продукты - у нас есть таблица 'продуктов' (содержит unique_id, созданная дата, URL изображения и т.д. и т.д.) и 'product_local' таблица (содержит любой язык определенные поля).
Используя этот метод очень легко поддержать содержание.
У меня нет опыта в 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
.