下载基于语言的文件(Current Culture)

时间:2013-07-04 10:23:35

标签: c# .net globalization

我正在开发一个Windows应用程序,它使用WebClient从http URL下载模板。

我必须在报告中实现本地化。应用程序将始终使用默认语言(英语),并且我将拥有一个变量,该变量将保存报告必须打印的语言。报告模板将根据语言下载。具有命名约定的每种语言的报告模板都不同,如

默认:http://www.xyz.com/report/report.htm

英语:report.en-US.htm, 西班牙语:report.es-ES.htm 葡萄牙语:report.pt-PT.htm

我是否可以为每种语言使用switch..case,或者可以采用其他任何方式。

3 个答案:

答案 0 :(得分:1)

如果文件名格式保持不变,则可以执行此操作

string cultureCode = "en-US"; //set current locale    
Uri reportUri = new Uri(String.Format("http://www.xyz.com/report/report.{0}.htm", cultureCode), UriKind.Absolute);

这样,它会为您添加相关的区域设置动态创建URI。作为一种快速方法

public void Uri GetLocalReportUri(string cultureCode)
{  
   return new Uri(String.Format("http://www.xyz.com/report/report.{0}.htm", cultureCode), UriKind.Absolute);
}

答案 1 :(得分:1)

您可以从

获取当前的文化名称

System.Globalization.CultureInfo.CurrentUICulture.Name

System.Web.HttpRequest.UserLanguages

所以你可以按照

的方式做点什么

string url = string.Format("http://www.xyz.com/report/report{0}.htm", CultureInfo.CurrentUICulture.Name);

输出如

http://www.xyz.com/report/report.en-US.htm

答案 2 :(得分:1)

您可以使用Globalization类来获取当前的文化。请尝试以下方法。

string culture = System.Globalization.CultureInfo.CurrentCulture.Name;

string destUri = String.Format("http://www.xyz.com/report/report.{0}.htm", culture);