В проекте, над которым я работаю, используется определенная терминология в графическом интерфейсе, например, "Цель" или "Цель".Однако не в каждом экземпляре программного обеспечения используется одна и та же терминология, например, «Цель» может называться «План» или «Цель» (смутно) может называться «Цель».
Количество замен увеличивается, потому чтоон должен учитывать нижний регистр и множественное число, и таких замен не просто два, а, вероятно, тридцать.
Мне нужен лучший способ реализовать это (наилучший, который проще всего вставить в HTML и код безизлишняя нагрузка на скорость рендеринга.) Я использую два подхода.
Для HTML я создаю таблицу стилей, например, такую:
span.txt-goal::before { content: "Goal"; }
span.txt-goals::before { content: "Goals"; }
span.txt-plan::before { content: "Plan"; }
span.txt-plans::before { content: "Plans"; }
Затем в HTML я бы сделал:
<div>
Here is the <span class="txt-goal"></span> for user ABC.
</div>
Я могу изменить метки, изменив таблицу стилей (которая будет сгенерирована из базы данных). Обратите внимание, что, хотя это немедленно меняет рендеринг, в этом нет необходимости.Это шаг настройки, который настраивается в основном один раз, поэтому нет необходимости, чтобы он был динамическим.
Для кода, сгенерированного HTML, я применяю функцию, подобную этой (очевидно, машинопись, но вы поняли идею):
class Util {
...
private label(str: string): string {
return str
.replace("##Goal##", "Goal")
.replace("##Target##", "Target")
.replace("##Goals##", "Goals")
.replace("##Targets##", "Targets")
.replace("##goal##", "goal")
.replace("##target##", "target")
.replace("##goals##", "goals")
.replace("##targets##", "targets");
}
}
Затем я использую это так:
$("#info-label").html(
Util.cleanStr(Util.label("There is the ##Goall## for user ABC")));
Очевидно, что изменение параметров для вызова замены позволяет изменять имена.В конце концов и таблица стилей, приведенная выше, и строки .replace будут взяты из базы данных.
Однако, по мере увеличения числа замен, я чувствую, что это не лучший подход к этой проблеме.Кажется, это связано с локализацией и переводом, однако имена настраиваются для каждой организации, извлеченной из базы данных.
Интересно, будет ли что-то вроде автоматизации конечного состояния лучше для замены, может быть, некоторыеможет помочь необычная работа ног с регулярным выражением?
У кого-нибудь есть превосходный подход к этой проблеме?