Question

Lors de la création d'un site Web multilingue (avec des formulaires Web ASP.NET), j'utilise un module HTTP pour réécrire les URL afin d'obtenir quelque chose de plus convivial (pour les moteurs de recherche et humains), tel que:

uk/products/product_category_one/sub_category_one/index.aspx
uk/products/product_category_one/sub_category_one/widget_mk5.aspx
es/productos/categoría_de_producto_una/widget_mk5.aspx

D'après ce que je comprends (novice) de MVC, l'URL doit prendre le format de

  

Contrôleur / Action / Identifiant

de sorte que la réplication de la fonctionnalité ci-dessus avec MVC aboutira à des URL similaires à:

products/category/123/product_category_one/sub_category_one
products/items/456/widget_mk5

Questions ..

  • Puis-je insérer un code de pays dans l'URL avant le segment "contrôleur"?
  • Est-il possible de mapper les "produits" et les "produits" sur le même contrôleur?

Merci de votre aide

Modifier: En plus de la réponse de Panos ci-dessous, j'ai trouvé plus d'informations sur le site Web ASP.NET. .

Était-ce utile?

La solution

L’URL peut prendre presque n’importe quelle autre forme. Pour plus d'informations, consultez ASP.NET MVC Framework (Partie 2): Routage des URL . Juste pour commencer (car je ne suis pas sûr que ce soit la solution optimale), vous pouvez ajouter deux nouvelles routes dans votre global.asax:

        routes.MapRoute(
            "ukRoute",
            "{lang}/Products/{action}/{id}/{subcategory}",
            new { lang = "uk", controller = "Products", action = "Index", id = "", subcategory = "" }
        );
        routes.MapRoute(
            "esRoute",
            "{lang}/Productos/{action}/{id}/{subcategory}",
            new { lang = "es", controller = "Products", action = "Index", id = "", subcategory = "" }
        );

Ces itinéraires comprennent les URL suivantes (et les associent à la méthode ActionResult Category (id de chaîne, sous-catégorie de chaîne) de ProductsController ):

uk/Products/Category/1/A
es/Productos/Category/1/A

Si vous souhaitez créer de telles URL dans vos vues, vous pouvez utiliser quelque chose comme:

<%= Html.RouteLink("English 1.A", "ukRoute", new { lang = "uk", action = "Category", id = "1", subcategory = "A" })%>
<%= Html.RouteLink("Spanish 1.A", "esRoute", new { lang = "es", action = "Category", id = "1", subcategory = "A" })%>

Autres conseils

Vous pouvez le faire, mais gardez à l'esprit que tous les pays ne sont pas des langues. Par exemple, en-gb est la représentation habituelle de l'anglais britannique, ou plus précisément des paramètres régionaux de la Grande-Bretagne pour le contenu anglais, par exemple. Si vous le pouvez, respectez les conventions issues de RFC1766 pour language-LOCALE.

Soit dit en passant, les moteurs de recherche ont tendance à faire un assez bon travail en matière de négociation de contenu. Il n'est donc pas nécessaire de disposer d'URI distincts pour le même contenu dans différentes langues. Par exemple, Google Japon explorera avec ja-JP l'en-tête de langue d'acceptation.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top