Редактирование: Это не работает перекрестный домен, если соответствующее заголовок CORS не установлено.
здесь существует две разных вещи: стиль iframe блока и стиль страницы встраиваются в iframe. Можно установить стиль iframe блока обычный путь:
стиль страницы, встроенной в iframe, должен быть или установлен включением его на дочерней странице:
Или это может быть загружено из родительской страницы с JavaScript:
var cssLink = document.createElement("link");
cssLink.href = "style.css";
cssLink.rel = "stylesheet";
cssLink.type = "text/css";
frames['iframe1'].document.head.appendChild(cssLink);
Пожалуйста, используйте функцию ngettext
для подобных вещей. Это
позволяет правильно работать с множественным числом в английском и других
языков раз и навсегда. Вы используете его так:
printf(ngettext("%d Comment", "%d Comments", $numComments), $numComments);
Функция ngettext
вернет первую строку формата ( "% d
Комментарий "
), если есть только один комментарий и второй формат
строка ( «% d комментариев»
), если их больше. Функция printf
будет
затем введите число в строку.
Это может показаться большим трудом, но это очень мощный инструмент: он работает с языками, имеющими более одной формы множественного числа (!) - они действительно существуют. В руководстве по PHP приведен пример слова «окно». что становится "1 окно", "2 окна" и " 5 окен " в некоторых экзотических язык, который я не знаю ...
Если вы намерены использовать ngettext
, то ваши будущие пользователи
из далеких стран будут вам очень благодарны: -)
Edit: Как было предложено в комментариях, есть одна функция для выполните указанные выше действия:
function pluralize($num, $singleWord, $pluralWord) {
return printf(ngettext($singleWord, $pluralWord, $num), $num);
}
По умолчанию xgettext
не распознает эту новую функцию, но вы можете
добавьте его с помощью флага - keyword
. Имея файл test.php
с
echo ngettext("foo", "foos", 1);
echo pluralize(2, "bar", "bars");
, вы можете извлечь строки с помощью
xgettext --keyword=pluralize:2,3 test.php
. Полученный файл messages.po
содержит такие записи:
#: test.php:7
msgid "foo"
msgid_plural "foos"
msgstr[0] ""
msgstr[1] ""
#: test.php:8
msgid "bar"
msgid_plural "bars"
msgstr[0] ""
msgstr[1] ""
Переводчик заполнит каждая форма множественного числа и с правильным сформировали строку "Множественные формы" в заголовке каталога сообщений, вы будете способен поддерживать все языки.
Почему бы не найти время, чтобы еще больше очеловечить вещи ....
switch ($numComments)
{
case 0:
echo "Be the first to write a comment";
break;
case 1:
echo "Just one comment so far";
break;
default:
echo "There are $numComments comments";
}
Создайте функцию, которая принимает число и слово и возвращает строку, содержащую и то, и другое. Он будет добавлять букву «s» (или обращаться к создаваемому вами словарю), если число больше 1.
Меня удивляет, что этого еще никто не предлагал, но обычно я использую условный оператор:
string commentWord = numComments != 1 ? "Comments" : "Comment";
Примечание: строка, конечно, не должна быть жестко закодирована таким образом, а скорее загружается из некоторого репозитория ресурсов, где он хранится с заполнителем форматирования для числа, так что вы можете обрабатывать языки, на которых число должно появиться последним (или посередине):
// should load "{0} Comments" or "{0} Comment" if we run in an English locale
string comments = string.Format(
numComments != 1 ? GetResource("Comments") : GetResource("Comment"),
numComments);
Не самый элегантный, но самый простой для вывода «Комментарии».
[Entry title]
[Content........]
1 Comment(s)
Проверьте Модуль инфлектора направляющих . Это обеспечивает удобное, централизованное и настраиваемое решение этой проблемы.