Локализации и диалекты - PullRequest
       18

Локализации и диалекты

1 голос
/ 11 января 2012

Я читаю различные композитные обсуждения, касающиеся разработки веб-сайтов не только для многоязычных сценариев, но также и для поддержки локализации словарного запаса и грамматики для конкретного сообщества;например, технические и общедоступные сообщества.

Я нашел эти дискуссии убедительными, однако они не объяснили, как реализовать эти сценарии в контексте C1 для добавления различных " диалектов ".

Я предполагаю, что эти диалекты должны быть добавлены вручную в следующий файл источника данных и рассматриваться как язык: "Composite.Cultures.en-us".

Пожалуйста, объясните, есть ли лучшая практика для обработки вышеупомянутого сценария и есть ли менее ручной метод для его достижения.

Ответы [ 2 ]

1 голос
/ 14 января 2012

Если вы хотите показывать разный контент в одной и той же структуре страницы для разных «диалектов», тогда да - трактовать их как языки имеет смысл. Список языков выбирается системой из реестра Windows, поэтому, если вы хотите добавить диалект в качестве языка, вы можете зарегистрировать его с некоторым кодом (http://msdn.microsoft.com/en-us/library/ms172469.aspx). Однако я бы не рекомендовал это делать, так как связанный процесс ASP.NET должен иметь доступ к реестру Windows, и каждый раз, когда вам нужно переместить сайт в новую среду, может потребоваться дополнительная работа.
Вы также можете использовать существующий код культуры, который вы не собираетесь использовать в качестве переключателя диалекта F.e. en-US / en-GB / en-AU.

Другой альтернативой может быть наличие отдельных заполнителей для контента на каждой странице, один для технических пользователей и еще один для нетехнических. Тот или иной будет отображаться в зависимости от URL / cookie. При таком подходе вы также должны решить, хотите ли вы сохранить их под одним и тем же URL-адресом для сканеров или под другим, должны ли страницы иметь одинаковые комментарии или разделяться и т. Д.

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

1 голос
/ 12 января 2012

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

Файлы локализации по умолчанию в С1 находятся в ~/Composite/localization в формате Some.Namespace.language.xml. Это означает, что если ваш сайт написан на американском английском языке, но вы хотите показывать разные версии определенных строк для Techs или Others, вы можете создать следующие xml-файлы

  • My.Component.General.en-us.xml
  • My.Component.Technical.en-us.xml

И когда вам нужно получить строки для показа, у вас будет следующая логика

var ns = "My.Component";
var mode = is_tech ? "Technical" : "General";

return StringResourceSystemFacade.GetString(ns +"."+ mode, "title");
...