Polyglot语言切换器asp.net

时间:2014-11-28 09:12:48

标签: javascript jquery asp.net polyglot

我想在asp.net 4.0网站上使用多语言语言切换器。下面的代码有效;

 <body>
 <div id="polyglotLanguageSwitcher"> 
    <form id="form1" runat="server"  > 
        <form action="#" >
           <select id="polyglot-language-options" >
               <option id="en" value="en" selected="selected">English</option>
               <option id="fr" value="fr">Fran&ccedil;ais</option>
               <option id="de" value="de">Deutsch</option>
               <option id="it" value="it">Italiano</option>
               <option id="es" value="es">Espa&ntilde;ol</option>
           </select>
        </form>
   </form>
</div>

我想使用如下所示(在<form id="form1" runat="server"> </form>标记中),但它不起作用。

<body>
 <form id="form1" runat="server"  >
    <div id="polyglotLanguageSwitcher">
       <form action="#" >
           <select id="polyglot-language-options" >
               <option id="en" value="en" selected="selected">English</option>
               <option id="fr" value="fr">Fran&ccedil;ais</option>
               <option id="de" value="de">Deutsch</option>
               <option id="it" value="it">Italiano</option>
               <option id="es" value="es">Espa&ntilde;ol</option>
           </select>
       </form>
    </div>
 </form>

polyglog.js在这里: https://github.com/ixtendo/Polyglot-Language-Switcher/blob/master/js/jquery.polyglot.language.switcher.js

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

尝试按照它正在我的工作。我在div polyglotLanguageSwitcher中添加了表单标签,它起作用了:

<body>
    <div id="container" style="width: 400px; margin: 140px auto 40px;">
        <!-- begin language switcher -->
        <div id="polyglotLanguageSwitcher">
            <form id="form1" runat="server">

                <select id="polyglot-language-options">
                    <option id="en" value="en">English</option>
                    <option id="fr" value="fr">Fran&ccedil;ais</option>
                    <option id="de" value="de">Deutsch</option>
                    <option id="it" value="it">Italiano</option>
                    <option id="es" value="es">Espa&ntilde;ol</option>
                </select>

            </form>
        </div>
        <!-- end language switcher -->

    </div>
</body>

如果你想在div之外的表格然后在js中更改以下行,但我不会推荐它:

var options = $("#" + rootElementId + " > form > select > option");

var options = $("#" + rootElementId + " > select > option");

  $("#" + rootElementId + " form:first-child").remove();

$("#" + rootElementId + " :first-child").remove();

答案 1 :(得分:0)

ASP.Net MVC还有其他选择,因此大部分工作都是在服务器端完成的。您需要一个自定义路由,一个控制器钩子(例如在OnActionExecuting中)和一些改变服务器端文化的技巧。此外,您的所有字符串都必须位于特定于语言环境的资源文件中。

以下是一些可以提供帮助的链接:

http://geekswithblogs.net/shaunxu/archive/2010/05/06/localization-in-asp.net-mvc-ndash-3-days-investigation-1-day.aspx

http://download1.parallels.com/SiteBuilder/Windows/docs/3.2/en_US/sitebulder-3.2-win-sdk-localization-pack-creation-guide/30801.htm

我使用这些作为我的参考,为我的MVC应用程序构建通用本地化库。

第1部分自定义路由

我的自定义路线如下所示。它需要2个字母或2-2字母语言代码(ISO格式),例如enen-EN等:

//Special localisation route mapping - expects specific language/culture code as first param
routes.MapRoute(
    name: "Localisation",
    url: "{lang}/{controller}/{action}/{id}",
    defaults: new { lang = "en", controller = "Home", action = "List", id = UrlParameter.Optional },
    constraints: new { lang = @"[a-z]{2}|[a-z]{2}-[a-zA-Z]{2}" }
);

然后,您更改语言的链接将看起来像这些锚:

<a href="en">Englishe</a>
<a href="fr">Fran&ccedil;ais</a>
<a href="de">Deutsch</a>
<a href="it">Italiano</a>
<a href="es">Espa&ntilde;ol</a>