Пусть сайт отображает базовый контент на том языке, который установлен в браузере, как предпочитаемый.
Например, в ASP.NET список предпочитаемых языков можно получить из массива HttpContext.Current.Request.UserLanguages.
Формируемый XML:
<Page>
<Language>ru-ru</Language>
<Resources>
<ru-ru>
<subscribe>Подписаться</subscribe>
</ru-ru>
<en>
<subscribe>Subscribe</subscribe>
</en>
</Resources>
</Page>
* This source code was highlighted with Source Code Highlighter.
В этой структуре устанавливаем значение тега Language из массива UserLanguages (можно взять самый первый элемент массива т.к. список языков, передаваемый браузером, располагается в порядке предпочтительности).
Затем, используем такой шаблон XSLT, чтобы получить значение на соответствующем языке, например, для кнопки формы подписки:
<xsl:template match="/">
<xsl:variable name="lang">
<xsl:value-of select="/Page/Language" />
</xsl:variable>
<form action="/" method="post">
<input type="text" name="email" />
<input type="submit" value="{/Page/Resources/*[name() = $lang]/subscribe}" />
</form>
</xsl:template>
* This source code was highlighted with Source Code Highlighter.
Теперь, при смене предпочитаемого языка (русский или английский) в браузере, кнопка будет иметь надпись либо "Подписаться", либо "Subscribe".