【问题标题】:What is the BEST and OPTIMIZED way to have a multiple language website? [closed]拥有多语言网站的最佳和优化方式是什么? [关闭]
【发布时间】:2013-09-25 18:03:00
【问题描述】:

我想知道是使用谷歌翻译 API 还是使用这样的 url 更好:

/example.com/en/page/show

并使用带有大量 if 的 url 中提到的语言生成视图? 还是什么?

谢谢。

【问题讨论】:

    标签: c# asp.net-mvc-4 culture


    【解决方案1】:

    如果您想支持多种语言,一种方法是使用资源文件,而不是对页面上的任何字符串/资源进行硬编码,而是使用资源表示。

    通过这种方式,您可以轻松添加新语言、翻译内容等...

    关于它所依赖的 URL,通过 URL 设置它是一种方法,你也可以使用 cookie..

    您可以在当前线程上设置 CurrentUICulture,所有资源检索方法和/或字符串操作实际上都支持您指定要使用的CultureInfo。它应该自动采用当前线程中设置的文化。

    例如,您可以将这样的内容放入您的 global.asax

    void context_BeginRequest(object sender, EventArgs e)
    {
        // eat the cookie (if any) and set the culture
        if (HttpContext.Current.Request.Cookies["lang"] != null)
        {
            HttpCookie cookie = HttpContext.Current.Request.Cookies["lang"];
            string lang = cookie.Value;
            var culture = new System.Globalization.CultureInfo(lang);
            Thread.CurrentThread.CurrentCulture = culture;
            Thread.CurrentThread.CurrentUICulture = culture;
        }
    }
    

    或者,如果您使用 MVC,您的路由配置可以包含语言,您可以使用 URL 路由来设置语言而不是 cookie...

    所以这只是一个示例,我建议您在 google 上找到更多示例并找出解决您问题的最佳方法。

    【讨论】:

    • 对于 2 页的网站资源文件可能就足够了,但对于任何专业项目,尤其是动态项目,这必须存储在数据库中。
    • 资源文件是一种方法,我没有说它是唯一的方法;)使用数据库还有很多其他问题,您必须编写一些代码来进行翻译等。 .我们也在使用数据库,但我只是说
    • 您不会编写翻译代码。您为语言选择编写代码,这是一件原始的事情。翻译由了解该国计算机术语的语言专家完成。请给我命名一个使用数据库的问题?事实上,DB 会让生活变得轻松,因为您可以根据需要加载任意多种语言的字符串,而无需编译任何内容并更改任何代码。
    • 正如我所说,我知道将资源存储在数据库中是一件好事,但仍然很难维护。例如,您如何提供完全类型安全的资源对象以在您的应用程序中使用?像使用资源文件一样更容易还是更难? ;)
    • Ela,让我不同意 :o))
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-12
    • 2011-03-24
    • 2018-06-21
    • 2012-02-05
    • 2010-10-04
    • 2014-07-21
    • 2019-01-10
    相关资源
    最近更新 更多