Я работаю над новым проектом, в котором я пытаюсь придерживаться некоторых самоопределенных правил, чтобы посмотреть, смогу ли я решить старые проблемы лучше , но у меня мало сомнений, и мне бы хотелось немного отзывы от более опытных разработчиков .
Я занимаюсь разработкой слоя пользовательского интерфейса с начальной загрузкой и jQuery, aspx в основном генерирует статический HTML и выполняет много AJAX.
Одна старая проблема - локализация на нескольких разных языках.Что я делаю, так это оборачиваю локализованные фрагменты страницы в пользовательские теги, как показано ниже:
<localization culture="en" runat="server">
<h3>Add everything...</h3>
<p><i>Remember you can add also <a href="">by email</a> and <a href="">by gtalk</a>.</i></p>
</localization>
<localization culture="it" runat="server">
<h3>Aggiungi tutto...</h3>
<p><i>Ricorda che puoi farlo anche <a href="">via email</a> e <a href="">via gtalk</a>.</i></p>
</localization>
Затем в моей page_load я вызываю рекурсивную функцию:
protected void Page_Load(object sender, EventArgs e)
{
Localization(Page);
}
, которая выполняет следующие действия:
protected void Localization(Control parent)
{
foreach (Control c in parent.Controls)
{
if (c.GetType() == typeof(HtmlGenericControl))
{
HtmlGenericControl hgc = (HtmlGenericControl)c;
if( hgc.TagName == "localization")
{
if (hgc.Attributes["culture"] != null && hgc.Attributes["culture"] != lu.ui_culture)
{
c.Visible = false;
}
}
}
Localization(c);
}
}
Я вижу несколько недостатков в этом подходе: у меня не может быть переводов в отдельном XML-файле, и я обрабатываю HTML с помощью рекурсивной функции.
Но нав то же время мне это нравится, потому что это позволяет легко переводить фрагменты с большой разметкой HTML, и я также могу хранить все в одном месте.
Раньше я использовал другой подход, рендеринг HTML с помощьюxslt + xml, но тоже был кошмаром, даже если вам удалось стать пуристом без встроенного JavaScript и встроенного CSS, визуально сложно управлять XML и HTML в одном файле.
Итак, мой вопросы :
- это глупое решение?
- с точки зрения производительности это слишком плохо?
- как мне управлять самым динамичнымсодержание таким образом, чтобы неопытные люди могли редактировать файл перевода?