У меня есть сайт, который в конечном итоге будет поддерживать 4 языка и 2 страны (США и Канада, английский и испанский)
Мне интересно, как лучше настроить структуру каталогов?
Сейчас у меня есть корневой сайт site.com:
Вы попадете на страницу, где вы выбираете свою страну и язык.
В идеале я хочу, чтобы каталог был таким:
site.com/ca/en/ (Canada English)
site.com/ca/fr/ (Canada French)
site.com/us/en/ (US English)
site.com/us/es/ (US Spanish)
Но это будет означать, что я буду помещать в него виртуальный каталог «ca» и «us» и языковые виртуальные каталоги. Это хорошая практика, или я должен сделать что-то вроде:
site.com/ca-en/ (Canada English)
site.com/ca-fr/ (Canada French)
site.com/us-en/ (US English)
site.com/us-es/ (US Spanish)
изменить: я сделал следующее:
В приложении есть фиктивный каталог: / ca / и / us /. У них обоих есть default.aspx, который является просто перенаправлением. В моем случае я перенаправляю их на англоязычные сайты:
Например:
site.com/ca/ -> site.com/ca/en/
site.com/us/ -> site.com/us/en/
если введен site.com, вы попадаете на страницу выбора языка. По сути, я использую регулярное выражение в Global.asax при каждом запросе для поиска строки языка / культуры.
Это имеет следующие преимущества. Разделение страны. Таким образом, вы контролируете site.com/ca/ или site.com/us/ и можете предоставить простой URL для каждой страны.
В любом случае, виртуальные каталоги / en /, / fr / и / es / находятся внутри физических папок соответствующих стран.
Итак, у вас есть следующее (Виртуальные каталоги выделены жирным шрифтом ):
site.com / ca / ru / (по умолчанию)
site.com/ca/fr/
site.com/us/en/ (по умолчанию)
site.com/us/es/
Это означает, что вам нужно иметь пять (идентичных) приложений, за исключением того, что вы можете использовать URL-адрес, чтобы получить текущий язык и страну (и указать нужную базу данных).