Как я могу осуществить рефакторинг разметку HTML из своих файлов свойств?

Многие сайты используют AJAX для динамического добавления / отображения / изменения контента. Иногда он используется вместо навигации по сайту, поэтому текущий URL-адрес изменяется программно, а сценарии содержимого в этом случае автоматически не выполняются браузером, так как страница не извлекается с удаленного сервера целиком.


Обычные JS-методы обнаружения изменений страницы, доступные в сценарии контента .


Специфические расширения: обнаружение изменений URL на странице background / .

Для работы с навигацией существует расширенный API: webNavigation , webRequest , но мы будем использовать простой chrome.tabs.onUpdated прослушиватель событий, который посылает сообщение к скрипту содержимого:

  • manifest.json: declare background / event page объявить скрипт содержимого добавить "tabs" разрешено .
  • background.js
    var rxLookfor = /^https?:\/\/(www\.)?google\.(com|\w\w(\.\w\w)?)\/.*?[?#&]q=/;
    chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) {
        if (rxLookfor.test(changeInfo.url)) {
            chrome.tabs.sendMessage(tabId, 'url-update');
        }
    });
    
  • content.js
    chrome.runtime.onMessage.addListener(function(msg, sender, sendResponse) {
        if (msg === 'url-update') {
            doSomething();
        }
    });
    

8
задан Linus Caldwell 11 June 2013 в 14:18
поделиться

4 ответа

Постарайтесь не создавать ссылки в длинных блоках текста. Предпочтите более короткий текст, который может действовать как логически полный и независимый канал.

Обычно это приведет к меньшему количеству проблем. Иногда необходимо поставить под угрозу дизайн UI для размещения локализации; иногда необходимо поставить под угрозу процесс локализации для размещения UI.

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

Думая на нем, что-то вроде этого могло бы быть менее ужасным:

<p>Please update your address and contact information.
<br />
<a href="/address.do">update address</a>
<br />
<a href="/contact.do">update contact information</a></p>

... но я не разработчик UI.

2
ответ дан 6 December 2019 в 00:59
поделиться

Возможно:

#
alert=Please update your {0}address{1} and {2}contact information{3}.
0
ответ дан 6 December 2019 в 00:59
поделиться

Один подход, который приходит на ум, состоит в том, что Вы могли сохранить переведенные заменяющие параметры т.е. "адрес" и "контактную информацию" в файле раздельного имущества, один на локаль. Затем имейте свой класс Действия (или вероятно некоторый класс помощника) ищут значения от корректного ResourceBundle для текущей локали и передают их тегу сообщения.

1
ответ дан 6 December 2019 в 00:59
поделиться

Тег сообщения сообщения API позволяет только 5 параметрических аргументов

А-ч! Я обвиняю свое полное незнание Struts API.

Заключить руководство в кавычки:

Некоторые функции в этом taglib также доступны в Библиотеке тегов Стандарта Страниц JavaServer (JSTL). Команда Struts поощряет использование стандартных тегов по Struts определенные теги, если это возможно.

Вы могли, вероятно, сделать это с http://java.sun.com/jsp/jstl/fmt taglib.

<fmt:bundle basename="messages">
    <fmt:message key="alert">
        <fmt:param value='<a href="/">' />
        <fmt:param value="</a>" />
        <fmt:param value='<a href="/">' />
        <fmt:param value="</a>" />
    </fmt:message>
</fmt:bundle>

Оборотная сторона - то, что это не допустимый XML, и дергание значений к переменным включает больше косвенности, поисков и многословия. Это не хорошее решение.

Я не знаю Struts, но если это - что-нибудь как Поверхности JavaServer (тот же архитектор), затем существует, вероятно, поддержка конфигурирования заменяющего управления. Я или заменил бы существующее управление более гибким или добавил бы новое.

Каждый раз, когда я получаю недавно-переведенный-текст, я должен решить, что окружить <a>...</a> разметка.

Нет никакого способа, которым необходимо делать это, и я рассматриваю это как отказ в процессе перевода (я - инженер экс-локализации и экс-разработчик инструментов локализации). {0} символы должны быть включены в файлы, которые отправляются в переводчиков. Инструкции по локализации должны объяснить контекст строки и значение любых переменных.

Можно программно проверить пакеты свойства по возврату. Определенный для строки regex's мог бы добиться цели. Это не вне областей возможности, что "адрес" и "контактная информация" подкачали бы порядок во время перевода.

Простое решение состоит в том, чтобы перепроектировать сообщения для рендеринга:

<a href="/address.do">Please update your address.</a>
<a href="/contact.do">Please update your contact information.</a>

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

0
ответ дан 6 December 2019 в 00:59
поделиться
Другие вопросы по тегам:

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