±¾ÎĽ«´ÓAsp.netʵÏÖ×ÊÔ´È«Çò»¯ºÍ±¾µØ»¯µÄ»ù±¾¸ÅÄîÈëÊÖ£¬²ûÊöÔÚAsp.net1.1ºÍAsp.net2.0ÖÐʵÏÖÈ«Çò»¯ºÍ±¾µØ»¯µÄ²½Öè¡¢·½·¨¡£

Ò»£®»ù±¾¸ÅÄî

1£®ÎªÊ²Ã´ÒªÊµÏÖ×ÊÔ´µÄ±¾µØ»¯£¿

        ÎÒÃǵÄÕ¾µã¿ÉÄÜΪȫÇò¸÷¸ö¹ú¼ÒºÍµØÇøµÄÈËËùä¯ÀÀ£¬Ã¿¸ö¹ú¼ÒºÍµØÇøµÄÈ˶¼ÓÐ×ÔÉíµÄÓïÑÔÎÄ»¯Ìص㡣¾ÍÄÃÔÛÃÇΰ´óµÄ׿¹úΪÀý£¬Öйú´ó½ÓüòÌåÖÐÎÄ£¬¸Û°Ą̈ÔòʹÓ÷±ÌåÖÐÎÄ¡£ÁíÍâ¸÷¸ö¹ú¼Ò¶ÔÓÚ»õ±Ò¡¢Êý×Ö¡¢ÈÕÀúµÈÐÅÏ¢µÄ±í´ï¸ñʽ¸÷Óв»Í¬£¬ÎÒÃǹú¼Ò¶àʹÓÃÄêÔÂÈյĸñʽ£¬¶øÃÀ¹úÔòÊÇÔÂÈÕÄê¡£ÖîÈç´ËÀàµÄÇø±ðÁÖÁÖ×Ü×Ü£¬ÎÒÒ²¾Í²»¶à¾ÙÀýÁË¡£ÎªÁ˸øÎÒÃǵÄÍøÕ¾ä¯ÀÀÕ߸üºÃµÄÓû§ÌåÑ飬ÎÒÃÇÓ¦¸ÃÌṩһ¸öÈ«Çò»¯µÄ½â¾ö·½°¸£¬Ö»ÒªÓû§Ñ¡ÔñÁËËûµÄÓïÑÔºÍÇøÓò£¬Õ¾µã¾Í°´ÕÕËûµÄÓïÑÔÎÄ»¯Ï°¹ßÀ´Õ¹ÏÖÒ³ÃæÐÅÏ¢£¬Õâ¸ö¹ý³Ì¿ÉÒÔ½Ð×ö±¾µØ»¯¡£

2£®ÇøÓòÐÔ¡¢¹Ì¶¨ÇøÓòÐÔ¡¢·ÇÌØ¶¨ÇøÓòÐÔ¡¢Ìض¨ÇøÓòÐÔ

        ÇøÓòÐÔÃû³Æ×ñÑ­ RFC 1766 ±ê×¼£¬¸ñʽΪ¡°<languagecode2>-<country/regioncode2>¡±£¬ÆäÖÐ <languagecode2> ÊÇ´Ó ISO 639-1 ÅÉÉúµÄÓÉÁ½¸öСд×Öĸ¹¹³ÉµÄ´úÂ룬<country/regioncode2> ÊÇ´Ó ISO 3166 ÅÉÉúµÄÓÉÁ½¸ö´óд×Öĸ¹¹³ÉµÄ´úÂë¡£ÀýÈ磬ÃÀ¹úÓ¢ÓïΪ¡°en-US¡±¡£ÔÚË«×ÖĸÓïÑÔ´úÂë²»¿ÉÓõÄÇé¿öÖУ¬½«Ê¹ÓÃ´Ó ISO 639-2 ÅÉÉúµÄÈý×Öĸ´úÂ룻ÀýÈ磬Èý×Öĸ´úÂë¡°div¡±ÓÃÓÚʹÓà Dhivehi ÓïÑÔµÄÇøÓò¡£Ä³Ð©ÇøÓòÐÔÃû³Æ´øÓÐÖ¸¶¨Êéд·ûºÅµÄºó׺£»ÀýÈç¡°-Cyrl¡±Ö¸¶¨Î÷Àï¶ûÓïÊéд·ûºÅ£¬¡°-Latn¡±Ö¸¶¨À­¶¡ÓïÊéд·ûºÅ¡£¾ÙÀý£º

ÇøÓòÐÔÃû³Æ

ÇøÓòÐÔ±êʶ·û

ÓïÑÔ-¹ú¼Ò/µØÇø

zh-CN

0x0804

ÖÐÎÄ-Öйú

zh-TW

0x0404

ÖÐÎÄ-̨Íå

zh-CHS

0x0004

¼òÌåÖÐÎÄ

zh-CHT

0x7C04

·±ÌåÖÐÎÄ

en

0x0009

Ó¢Óï

en-US

0x0409

Ó¢Óï-ÃÀ¹ú

en-GB

0x0809

Ó¢Óï-Ó¢¹ú

uz-UZ-Cyrl

0x0843

ÎÚ×ȱð¿ËÓÎ÷Àï¶ûÓ- ÎÚ×ȱð¿Ë˹̹

uz-UZ-Latn

0x0443

ÎÚ×ȱð¿ËÓÀ­¶¡£©- ÎÚ×ȱð¿Ë˹̹

         ¹Ì¶¨ÇøÓòÐÔ²»Çø·ÖÇøÓòÐÔ¡£¿ÉÒÔʹÓÿÕ×Ö·û´® ("") °´Ãû³Æ»òÕß°´ÇøÓòÐÔ±êʶ·û 0x007F À´Ö¸¶¨¹Ì¶¨ÇøÓòÐÔ¡£¹Ì¶¨ÇøÓòÐÔÓÉCultureInfoÀàµÄInvariantCultureÊôÐÔÀ´´ú±í¹Ì¶¨ÇøÓòÐÔµÄʵÀý¡£¹Ì¶¨ÇøÓòÐÔ½öÓëÓ¢ÓïÓïÑÔ¹ØÁª£¬²»ÓëÈκιú¼Ò/µØÇø¹ØÁª¡£Ëü¼¸ºõ¿ÉÓÃÔÚÒªÇóÇøÓòÐԵġ°È«¾Ö»¯¡±ÃüÃû¿Õ¼äÖеÄËùÓз½·¨ÖС£Èç¹ûÄãµÄ³ÌÐò½øÐÐ×Ö·û´®±È½Ï»ò´óСд¸ü¸Ä²Ù×÷£¬ÔòÓ¦¸ÃʹÓà InvariantCulture È·±£ÎÞÂÛϵͳÈçºÎÉèÖõÄÇøÓòÐÔ£¬ÐÐΪ¶¼½«°´ÕÕInvariantCultureËù´ú±íµÄÓ¢ÓïÓïÑԵĹ̶¨ÇøÓòÐÔÀ´Íê³É¡£µ«ÊÇ£¬¹Ì¶¨ÇøÓòÐÔ±ØÐë½öÓÉÐèÒª²»ÒÀÀµÇøÓòÐԵĽá¹ûµÄ½ø³Ì£¨Èçϵͳ·þÎñ£©Ê¹Óã»·ñÔò£¬ËüµÃµ½µÄ½á¹û¿ÉÄÜÔÚÓïÑÔÉϲ»ÕýÈ·£¬»òÕßÔÚÎÄ»¯Éϲ»ºÏÊÊ¡£¾ÙÀý£ºCultureInfo Invc = New CultureInfo("");
CultureInfo Invc = CultureInfo.InvariantCulture;ÕâÁ½ÐдúÂëµÄ×÷ÓÃÏàͬ£¬Ä¿µÄÊÇ»ñµÃ¹Ì¶¨ÇøÓòÐÔʵÀý¡£

        ±ÈÈçÄãÏÖÔÚÒª¶ÔÒ»¸öDateTimeµÄʵÀýdateTimeÖ´ÐÐdateTime.ToString()·½·¨¡£Õâ¸ö·½·¨Êµ¼ÊÊÇʹÓÃÄ㵱ǰÏ̵߳ÄCurrentCulture×÷ΪĬÈϵÄÇøÓòÐÔ£¬¸ù¾ÝÕâ¸öÇøÓòÐÔ½«ÈÕÆÚʵÀýת»¯ÎªÏàÓ¦µÄ×Ö·û´®ÐÎʽ¡£ÄÇôÈç¹ûÎÒÃÇ´Ëʱ²»ÐèÒªËü°´ÕÕÏ̻߳òϵͳµÄÇøÓòÐÔ½øÐÐToString²Ù×÷£¬ÄÇôÎÒÃÇÓ¦¸ÃÓÃÕâ¸ö·½·¨dateTime.ToString(¡°G¡±, CultureInfo.InvariantCulture)»òÕßdateTime.ToString(¡°G¡±, DateTimeFormatInfo.InvariantInfo)¡£

        ·ÇÌØ¶¨ÇøÓòÐÔÊÇÓëijÖÖÓïÑÔ¹ØÁªµ«²»Óë¹ú¼Ò/µØÇø¹ØÁªµÄÇøÓòÐÔ¡£Ìض¨ÇøÓòÐÔÊÇÓëijÖÖÓïÑÔºÍij¸ö¹ú¼Ò/µØÇø¹ØÁªµÄÇøÓòÐÔ¡£ÀýÈ磬¡°en¡±ÊÇ·ÇÌØ¶¨ÇøÓòÐÔ£¬¶ø¡°en-US¡±ÊÇÌØ¶¨ÇøÓòÐÔ¡£×¢Ò⣬¡°zh-CHS¡±£¨¼òÌåÖÐÎÄ£©ºÍ¡°zh-CHT¡±£¨·±ÌåÖÐÎÄ£©¾ùΪ·ÇÌØ¶¨ÇøÓòÐÔ¡£

        ÇøÓòÐÔÓвã´Î½á¹¹£¬¼´Ìض¨ÇøÓòÐԵĸ¸¼¶ÊÇ·ÇÌØ¶¨ÇøÓòÐÔ£¬¶ø·ÇÌØ¶¨ÇøÓòÐԵĸ¸¼¶ÊÇ InvariantCulture¡£CultureInfoÀàµÄParentÊôÐÔ½«·µ»ØÓëÌØ¶¨ÇøÓòÐÔ¹ØÁªµÄ·ÇÌØ¶¨ÇøÓòÐÔ¡£Èç¹ûÌØ¶¨ÇøÓòÐÔµÄ×ÊÔ´ÔÚϵͳÖв»´æÔÚ£¬»òÒòÆäËüÔ­Òò²»¿ÉÓã¬ÔòʹÓ÷ÇÌØ¶¨ÇøÓòÐÔµÄ×ÊÔ´£»Èç¹û·ÇÌØ¶¨ÇøÓòÐÔµÄ×ÊÔ´Ò²²»¿ÉÓã¬ÄÇôʹÓÃÖ÷³ÌÐò¼¯ÖÐǶÈëµÄ×ÊÔ´¡£

3.ʵÏÖ±¾µØ»¯³£ÓõÄÀàÐÍ¡¢ÊôÐԺͷ½·¨

        CultureInfoÀà±íʾÓйØÌض¨ÇøÓòÐÔµÄÐÅÏ¢£¬°üÀ¨ÇøÓòÐÔµÄÃû³Æ¡¢ÊéдÌåϵºÍʹÓõÄÈÕÀú£¬ÒÔ¼°ÓйضԳ£ÓòÙ×÷£¨Èç¸ñʽ»¯ÈÕÆÚºÍÅÅÐò×Ö·û´®£©ÌṩÐÅÏ¢µÄÇøÓòÐÔÌØ¶¨¶ÔÏóµÄ·ÃÎÊ¡£CultureInfoÀàµÄʵÀý»¯Ò»°ãÓÐÁ½¸ö;¾¶£¬ÈçÏÂËùʾ£º
CultureInfo culture = CultureInfo. CreateSpecificCulture (name);
CultureInfo culture = new CultureInfo(name);

        ¶þÕßµÄÇø±ðÊÇ£¬Ê¹ÓõÚÒ»ÖÖ·½·¨£¬Ö»ÄÜ´´½¨¹Ì¶¨ÇøÓòÐÔ»òÌØ¶¨ÇøÓòÐÔµÄCultureInfoʵÀý¡£Èç¹ûnameΪ¿Õ×Ö·û´®£¬Ôò½¨Á¢¹Ì¶¨ÇøÓòÐÔµÄʵÀý£¬Èç¹ûnameΪ·ÇÌØ¶¨ÇøÓòÐÔ£¬ÄÇô½¨Á¢name ¹ØÁªµÄĬÈÏÌØ¶¨ÇøÓòÐ﵀ CultureInfoʵÀý¡£µÚ¶þÖÖ·½·¨£¬ÔòÊǽ¨Á¢Ò»¸önameËùÖ¸¶¨µÄÇøÓòÐÔµÄCultureInfoʵÀý£¬Ëü¿ÉÒÔÊǹ̶¨µÄ£¬·ÇÌØ¶¨µÄ»òÌØ¶¨ÇøÓòÐԵġ£

        ThreadÀàµÄCurrentCultureÊôÐÔÓÃÀ´»ñÈ¡»òÉèÖõ±Ç°Ï̵߳ÄÇøÓòÐÔ¡£Ëü±ØÐë±»ÉèÖÃÎªÌØ¶¨ÇøÓòÐÔ¡£Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");Èç¹ûThread.CurrentThread.CurrentCulture = new CultureInfo("en ");¾Í»á±¨´í£¡

        ThreadÀàµÄCurrentUICultureÊôÐÔÓÃÀ´»ñÈ¡»òÉèÖÃ×ÊÔ´¹ÜÀíÆ÷ʹÓõĵ±Ç°ÇøÓòÐÔÒÔ±ãÔÚÔËÐÐʱ²éÕÒÇøÓòÐÔÌØ¶¨µÄ×ÊÔ´¡£ÕâÀïµÄ×ÊÔ´¹ÜÀíÆ÷¿ÉÒÔ¹ØÁªÎªResourceMangerÀà¡£
Thread.CurrentThread.CurrentUICulture = new CultureInfo("en");
Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-US");

        ResourceMangerÀà¿ÉÒÔ²éÕÒÇøÓòÐÔÌØ¶¨µÄ×ÊÔ´£¬µ±±¾µØ»¯×ÊÔ´²»´æÔÚʱÌṩ´úÓÃ×ÊÔ´£¬²¢Ö§³Ö×ÊÔ´ÐòÁл¯¡£³£ÓõÄResourceManagerµÄ¹¹Ô캯ÊýÊÇpublic ResourceManager(string,Assembly)¡£Æäº¬ÒåÊdzõʼ»¯ ResourceManagerÀàµÄÐÂʵÀý£¬ËüʹÓÃÖ¸¶¨µÄ¸ùÃû³Æ´Ó¸ø¶¨µÄAssemblyÖвéÕÒ×ÊÔ´Îļþ¡£Ëùν¸ùÃû³ÆÊÇÀýÈçÃûΪ¡°MyResource.en-US.resources¡±µÄ×ÊÔ´ÎļþµÄ¸ùÃû³ÆÎª¡°MyResource¡±¡£ÔÚ¸ùÃû³ÆµÄ±í´ïÖпÉÒÔ¼ÓÉÏÃüÃû¿Õ¼ä£¬Èç¡°MyWebSite.Resource.UserFolder. MyResource¡±¡£¶øAssembly¿ÉÒÔÊÇÐèÒªµ÷ÓÃ×ÊÔ´ÎļþµÄÒ³ÃæËùÔÚµÄAssembly£¬Èçtypeof(MyPage).Assembly¡£ResourceManagerÀàµÄGetString·½·¨ÓÃÀ´»ñµÃ×ÊÔ´ÎļþÖеÄÖ¸¶¨¼üµÄÖµ¡£¾ÙÀý£ºµ±ÒÑÉèÖÃÁËÏ̵߳ÄCurrentUICultureÊôÐÔÖ®ºó°´ÈçÏ·½·¨¡£
ResourceManager rm = new ResourceManager("items", Assembly.GetExecutingAssembly());
String str = rm.GetString("welcome");

Èç¹ûÏë°´ÕÕÖ¸¶¨µÄÇøÓòÐÔÀ´»ñµÃ×ÊÔ´Ôò°´ÕÕÈçÏÂд·¨£º
ResourceManager rm = new ResourceManager("items", Assembly.GetExecutingAssembly());
CultureInfo ci = Thread.CurrentThread.CurrentCulture;
String str = rm.GetString("welcome",ci);


¶þ£®ÔÚAsp.net1.1ÖÐʵÏÖ×ÊÔ´±¾µØ»¯

        Ê×ÏÈÓ¦ÔÚÍøÕ¾ÏîÄ¿WebTestÖн¨Á¢Ò»¸öResourceÎļþ¼Ð£¬ÔÚÕâ¸öÎļþ¼ÐÖдæ·ÅÕû¸öÏîÄ¿¹«ÓõÄ×ÊÔ´Îļþ¡£±ÈÈçÎÒÃǽ¨Á¢ÁËÒÔÏÂÈý¸ö×ÊÔ´Îļþ:MyResource.en.resx,MyResource.en-US.resx,MyResource.zh-CN.res¡£Ã¿¸ö×ÊÔ´ÎļþÖж¼ÓÐÁ½¸ö¼üÖµ¶Ô£¬¼üֵΪStateºÍAddress¡£ÔÚÐèҪʹÓÃ×ÊÔ´ÎļþµÄÒ³ÃæMyPage.aspxÖе÷ÓÃ×ÊÔ´Îļþ£¬ÈçÏÂËùʾ£º
Thread.CurrentThread.CurrentCulture= CultureInfo.CreateSpecificCulture("zh-CN");
Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture;
ResourceManager rm = new ResourceManager("WebTest.Resource.MyResource", typeof (MyPage).Assembly);
Label1.Text = rm.GetString("State");
Label2.Text = rm.GetString("Address");

ºÃÁË£¬Õâ¸öʱºòLabel1ºÍLabel2¾Í°´ÕÕMyResource.zh-CN.resxÎļþÖеĹ涨ÏÔʾ¡°ÖÝ¡±ºÍ¡°µØÖ·¡±¡£ÒÔÉÏÊÇÒ»¸ö×î»ù±¾×î¼òµ¥µÄ±¾µØ»¯·½·¨£¬ÕâÀïÒþº¬×ÅһЩÎÊÌ⣬ÎÒÃÇÀ´ÖðÒ»½â¾ö²¢ÓÅ»¯¸Ã·½·¨¡£

1£® ÈçºÎ»ñµÃÓû§µÄĬÈÏÇøÓòÐÔ

        ͨ¹ýÓû§ä¯ÀÀÆ÷¡°ÊôÐÔ¡±->¡°ÓïÑÔ¡±Ñ¡ÏîÀïµÄÉèÖã¬È¡×îÉÏÃæÄÇÌõ×÷ΪÓû§µÄĬÈÏÓïÑÔ¡£
CultureInfo cultureInfo = CultureInfo.CreateSpecificCulture(Request.UserLanguages[0]);
Thread.CurrentThread.CurrentCulture = cultureInfo;
Thread.CurrentThread.CurrentUICulture = cultureInfo;

        Ò»°ãÇé¿öÏ£¬É趨CurrentCultureºÍCurrentUICulture¾ßÓÐÏàͬµÄÇøÓòÐÔ£¬µ±È»Ò²¿ÉÒÔ²»Ïàͬ£¬±ÈÈçÄã¹æ¶¨CurrentCultureΪen-US£¬¶øCurrentUICultureΪzh-CN¡£ÄÇôÕâÑùÔì³ÉµÄЧ¹ûÊÇ£¬Ò³ÃæÖлõ±Ò¡¢ÈÕÆÚµÈÐÅÏ¢¶¼°´ÕÕÃÀ¹úÓ¢ÓïµÄ¸ñʽÏÔʾ£¬¶øÐèÒª´Ó×ÊÔ´ÎļþÖÐȡֵµÄÄÚÈÝ£¬×ÊÔ´¹ÜÀíÆ÷»á´ÓMyResource.zh-CN.resxÎļþÀï»ñµÃ¡£

        Èç¹ûÄãµÄÕ¾µãÒ³ÃæÉϲ¢Ã»ÓÐÌṩÈÃÓû§Ñ¡ÔñÓïÑԵŦÄÜ£¬ÄÇôҲ¾ÍÊÇĬÈϰ´ÕÕÓû§ä¯ÀÀÆ÷ÉèÖõÄÇøÓòÐÔ½øÐÐÏÔʾ£¬Òò´ËÄã¾Í¿ÉÒÔ°ÑÉÏÊö´úÂë·ÅÔÚGlobal.asax.csÎļþµÄApplication_BeginRequest·½·¨ÖС£ÕâÑùÿ´ÎÓû§¶ÔÒ³Ãæ·¢³öÇëÇóʱ£¬ÎÒÃǵijÌÐò¶¼»áÊ×ÏȽøÐÐÇøÓòÐÔÉèÖá£

2. ¼ÇסÓû§µÄÇøÓòÐÔÉèÖÃ

        ͨ¹ý»á»°¿ÉÒÔ¼Çסä¯ÀÀÕßµÄÇøÓòÐÔÉèÖûòÑ¡Ôñ¡£µ«ÊÇÕâ¸ö²Ù×÷²»ÄÜÔÚGlobal.asax.csÎļþÖÐApplication_BeginRequest·½·¨ÖнøÐУ¬ÒòΪÄÇʱ»á»°»¹´¦ÓÚ²»¿ÉÓÃ״̬¡£Èç¹ûÄãµÄÕ¾µã²¢Ã»ÓÐÌṩÈÃÓû§Ñ¡ÔñÓïÑԵŦÄÜ£¬ÄÇôÄãҲûʲô±ØÒª¼ÇסÓû§µÄÇøÓòÐÔÉèÖã¬Ö»Òª°´ÕÕÉÏÃæ½éÉܵÄÔÚGlobal.asax.csÎļþÖÐApplication_BeginRequest·½·¨ÀïÉèÖÃһϾͿÉÒÔÁË£¬²»Ó°ÏìÐÔÄÜ¡£ÕâÖ÷Òª¿ÉÒÔ±ÜÃâÓû§ÔÚÖÐ;ͻȻ¸Ä±äÁËä¯ÀÀÆ÷ÖÐÓïÑÔµÄÉèÖ㬶øÍøÕ¾ÈÔ°´ÕջỰÖд洢µÄÇøÓòÐÔΪÓû§ÏÔÊ¾Ò³ÃæÄÚÈݵijåÍ»¡£

        Èç¹ûÄãÌá¹ýÁËÈÃÓû§Ñ¡ÔñÓïÑԵŦÄÜ£¬ÄÇÏÔȻҪÔÚÒ³Ãæ³ÌÐòÖÐʹÓûỰÀ´¼Ç¼Óû§µÄÇøÓòÐÔÑ¡Ôñ¡£ÒòΪ´Ó¿Í»§¶Ëµ½·þÎñÆ÷¶ÎµÄÿ´ÎÇëÇ󣬷þÎñÆ÷¶Î¶¼»á¿ªÆôÒ»¸öеÄÏ߳̽øÐд¦ÀíºÍÏìÓ¦¡£Èç¹ûÄãµÄ³ÌÐòûÓмÇס¿Í»§µÄÑ¡Ôñ£¬ÄÇôֻÄܰ´ÕÕĬÈϵÄÇøÓòÐÔ½øÐÐÏìÓ¦¡£

3. ×ÊÔ´¹ÜÀíÆ÷ÈçºÎ²éÕÒÖ¸¶¨ÇøÓòÐÔµÄÏàÓ¦×ÊÔ´Îļþ£¿

        ÔÚÖ´ÐÐȡֵ²Ù×÷ʱ£¬Ò²¾ÍÊÇÖ´ÐÐResourceManagerÀàµÄGetString·½·¨Ê±£¬×ÊÔ´¹ÜÀíÆ÷»á°´ÕÕµ±Ç°Ï̵߳ÄCurrentUICultureÊôÐÔȥѰÕÒÏà¶ÔÓ¦µÄ×ÊÔ´Îļþ¡£ÓÐÈçϼ¸ÖÖÇé¿ö£º
(1). ±ÈÈ統ǰCurrentUICulture¶ÔÓ¦µÄÇøÓòÐÔÊÇen-US£¬ÄÇôÊ×ÏÈÕÒMyResource.en-US.resxÊÇ·ñ´æÔÚ£¬Èç´æÔÚÔò´ÓÖÐȡֵ£»Èç²»´æÔÚ£¬Ôò¿´MyResource.en.resxÊÇ·ñ´æÔÚ¡£
(2). ±ÈÈ統ǰCurrentUICulture¶ÔÓ¦µÄÇøÓòÐÔÊÇen£¬ÒòΪenÊÇ·ÇÌØ¶¨ÇøÓòÐԵģ¬ÄÇôÊ×ÏÈÕÒÆäĬÈϹØÁªµÄÌØ¶¨ÇøÓòÐÔen-USµÄ×ÊÔ´ÎļþMyResource.en-US.resxÊÇ·ñ´æÔÚ£¬Èç´æÔÚÔò´ÓÖÐȡֵ£»Èç²»´æÔÚ£¬Ôò¿´MyResource.en.resxÊÇ·ñ´æÔÚ¡£
(3). ±ÈÈ統ǰCurrentUICulture¶ÔÓ¦µÄÇøÓòÐÔÊÇen-GB£¬ÄÇôÊ×ÏÈÕÒ×ÊÔ´ÎļþMyResource.en-GB.resx£¬Èç²»´æÔÚ£¬Ôò¿´MyResource.en.resxÊÇ·ñ´æÔÚ£¬Èç´æÔÚÔò´ÓÖÐȡֵ£»ÈçÒ²²»´æÔÚ£¬Ôò¿´en¹ØÁªµÄĬÈÏÌØ¶¨ÇøÓòÐÔen-USµÄ×ÊÔ´ÎļþMyResource.en-US.resxÊÇ·ñ´æÔÚ,Èç¹û´ËʱMyResource.en-US.resx²»´æÔÚ£¬µ«ÊÇMyResource.en-CA.resx´æÔÚ£¬Ôò³ÌÐòÒÀÈ»»áÅ׳öÕÒ²»µ½ºÏÊÊ×ÊÔ´ÎļþµÄÒì³£¡£

        Òò´ËÎÒÃÇ¿ÉÒÔ×ܽáһϣ¬µ±Ç°Ïß³ÌCurrentUICulture¶ÔÓ¦µÄÊÇÌØ¶¨ÇøÓòÐÔʱ£¬×ÊÔ´¹ÜÀíÆ÷ÓÅÏȲéÕÒ´ËÌØ¶¨ÇøÓòÐÔ¶ÔÓ¦µÄ×ÊÔ´Îļþ£¬Èç¹ûûÕÒµ½£¬ÔòÈ¥ÕÒÆä·ÇÌØ¶¨ÇøÓòÐÔµÄ×ÊÔ´Îļþ£¬Èç¹û»¹Ã»ÕÒµ½£¬ÔÙÈ¥ÕÒÆä·ÇÌØ¶¨ÇøÓòÐÔ¹ØÁªµÄĬÈÏÇøÓòÐÔµÄ×ÊÔ´Îļþ¡£µ±Ç°Ïß³ÌCurrentUICulture¶ÔÓ¦µÄÊÇ·ÇÌØ¶¨ÇøÓòÐÔʱ£¬×ÊÔ´¹ÜÀíÆ÷ÓÅÏȲéÕÒ´Ë·ÇÌØ¶¨ÇøÓòÐÔ¶ÔÓ¦µÄĬÈÏÌØ¶¨ÇøÓòÐÔµÄ×ÊÔ´ÎļþÊÇ·ñ´æÔÚ£¬Èç¹û²»´æÔÚ£¬ÔòÈ¥¿´´Ë·ÇÌØ¶¨ÇøÓòÐÔ¶ÔÓ¦µÄ×ÊÔ´ÎļþÊÇ·ñ´æÔÚ£¬Èç¹ûÒ²²»´æÔÚÔòÅ׳öÒì³£¡£

4£®ÈçºÎ´¦ÀíδÌṩ±¾µØ»¯Ö§³ÖµÄÇøÓòÐÔ£¿

        Èç¹ûÕ¾µãûÓÐÌṩÏàÓ¦µÄ×ÊÔ´ÎļþÖ§³ÖÓû§Ä¬ÈϵÄÇøÓòÐÔ£¬ÄÇô±ØÐ뽫Æäµ±Ç°Ï̵߳ÄCurrentUICultureת»¯ÎªÄãÕ¾µãĬÈϵÄÇøÓòÐÔ£¬±ÈÈçen-US»òzh-CN¡£×ª»¯µÄʱ»úÓÐÁ½¸ö£º
Ò»Êǵ±ÄãÔÚ»ñµÃRequest.UserLanguages[0]ʱ£¬ÓÃÆäÓëÅäÖÃÎļþÖÐÔ¤ÏÈÉ趨µÄ±»Ö§³ÖµÄÇøÓòÐÔ½øÐбȽϣ¬Èç¹ûÈ·ÈÏÆäΪ²»±»Ö§³ÖµÄ£¬ÄÇôÁ¢¿ÌÉèÖÃCurrentUICultureΪĬÈÏÇøÓòÐÔ¡£
¶þÊÇÔÚʹÓÃResourceManagerµÄGetString·½·¨½øÐÐȡֵµÄʱºò£¬Ê¹ÓÃtry catch½á¹¹£¬²¶»ñMissingManifestResourceExceptionÒì³££¬ÔÚÒì³£´¦ÀíÖУ¬Ê×ÏȽ«CurrentUICultureÉèΪĬÈÏÇøÓòÐÔ£¬Ö®ºóÔÙÖØÐÂʹÓÃGetStringȡֵ¡£

5. ͨ¹ýWeb.configÉ趨վµãĬÈϵÄcultureºÍuiCulture

        <globalization requestEncoding="utf-8" responseEncoding="utf-8" uiCulture="zh-CN" culture="en-US"/>
ÈçÉÏËùʾ£º¹æ¶¨Õ¾µãµÄĬÈÏcultureΪen-US(´Ë´¦±ØÐëÎªÌØ¶¨ÇøÓòÐÔ)£¬uiCultureΪzh-CN¡£

        µ±È»ÄãÒ²¿ÉÒÔÔÚÿ¸öÒ³ÃæµÄPage±êÇ©ÖнøÐÐÖðÒ³É趨£º<@Page Culture=¡°zh-CN¡± UICulture=¡°en¡±>¡£ÕâÀï¾Í²»¹Üweb.configÊÇÈçºÎÉèÖõģ¬Ò³Ãæ»á°´ÕÕPage±êÇ©µÄÉ趨½øÐÐÏÔʾ¡£

Èý£®ÔÚAsp.net2.0 ÖÐʵÏÖ×ÊÔ´±¾µØ»¯

        Asp.net2.0ÖÐΪ×ÊÔ´±¾µØ»¯ÌṩÁ˸ü¼Ó¶àÑùµÄʵÏÖ·½·¨¡£ÎÒÕâÀï×ÅÖØÌ¸ÆäÓëAsp.net1.1ÖеIJ»Í¬Ö®´¦¡£

1£®Í¨¹ýWeb.configÉ趨վµãĬÈϵÄcultureºÍuiCulture

        ÔÚAsp.net1.1ÖÐʹÓÃweb.configÎļþ½øÐÐÕ¾µãÇøÓòÐÔÉ趨µÄ·½·¨ÒѾ­½²¹ýÁË£¬¶øÔÚAsp.net2.0ÖÐÆä¸ü¼ÓÁé»î¡£Í¨³££¬Äú»áÏëÒªÕ¾µãÖеÄËùÓÐÒ³Ãæ¶¼·ûºÏÏàͬµÄÇøÓòÐÔÉèÖá£Ö»Ðè°´ÈçÏÂËùʾÔÚweb.configÖУ¬ÎªglobalizationÔªËØµÄUICulture ºÍ Culture£¨ÇøÓòÐÔ£©ÊôÐÔ·ÖÅäÒ»¸öÕ¾µã·¶Î§µÄ¡°auto¡±Öµ£¬ ×¢ÒâÕâ¸ö¡°auto¡±ÖµÔÚAsp.net1.1ÖÐÊDz»±»½ÓÊܵġ£<globalization uiCulture="auto" culture="auto" /> autoµÄÒâÒåÔÚÓÚASP.NET ͨ¹ý¼ì²éä¯ÀÀÆ÷·¢Ë굀 HTTP ±êÌâ»ñÈ¡µ½µÄÓû§Ê×Ñ¡ÇøÓòÐÔÉèÖ㬲¢Ê¹ÓÃÕâ¸öÇøÓòÐÔÉèÖÃÕ¾µãµÄĬÈÏÇøÓòÐÔ£¬¼´µ±Ç°Ï̵߳ÄCurrentUICultureºÍCurrentCultureÊôÐÔ¡£

        ³ýÁË×Ô¶¯ÉèÖÃÒÔÍ⣬Äú»¹¿ÉÒÔΪ Asp.net Ö¸¶¨Ò»¸öÕ¾µãµÄĬÈÏÇøÓòÐÔ£º <globalization uiCulture="auto:zh-CN" culture="auto:zh-CN" /> ×¢Ò⣺ֻÓе±ASP.NETÎÞ·¨ÕÒµ½ HTTP ±êÌâÀ´È·¶¨Óû§µÄÊ×Ñ¡ÇøÓòÐÔ£¬±ÈÈçä¯ÀÀÆ÷µÄ¡°ÊôÐÔ¡±->¡°ÓïÑÔ¡±ÖÐûÓÐÈκÎÇøÓòÐÔÉèÖÃÍêÈ«ÊǿյÄʱºò£¬autoºóÃæÉ趨µÄĬÈÏÇøÓòÐԲŻáÉúЧ¡£

        ÔÚweb.configÖнøÐÐÁËglobalizationÅäÖÃÖ®ºó£¬ÄãµÄÓ¦ÓóÌÐò²»ÐèҪдÈκδúÂ룬Ï̵߳ÄCurrentUICultureºÍCurrentCulture¾Í»á°´ÕÕÔÚglobalizationÔªËØÖÐÉèÖõÄuiCultureºÍcultureÊôÐÔÖµ»ñµÃÇøÓòÐÔÉèÖá£Èç¹ûûÓнøÐÐglobalizationÅäÖã¬ÔòÏ̵߳ÄCurrentUICultureºÍCurrentCulture¾Í»áĬÈÏΪen-US¡£

2.ʹÓÃWeb.configÎļþ¸ú×ÙÓû§µÄÇøÓòÐÔÑ¡Ôñ

        ÔÚAsp.net1.1ÖУ¬ÄÇЩÌṩÁËÇøÓòÐÔÑ¡ÔñµÄÕ¾µã£¬Ò»°ãʹÓûỰÀ´¼Ç¼Óû§µÄÑ¡Ôñ£¬ÒÔ±ãÔÚÓû§Ã¿´Î¶ÔÕ¾µã·¢³öÇëÇóʱ£¬¶¼°´ÕÕÓû§Ñ¡ÔñµÄÇøÓòÐÔ¶ÔÏÔʾÄÚÈݽøÐб¾µØ»¯¡£ÔÚAsp.net2.0ÖÐÌṩÁËÁíÒ»¸ö·½·¨£¬ÄǾÍÊÇʹÓÃweb.configÎļþÀ´¸ú×ÙÓû§µÄÇøÓòÐÔÑ¡Ôñ¡£

        Äú¿ÉÒÔÔÚweb.configÎļþÖÐÌí¼ÓÒ»¸öÃûΪ LanguagePreference µÄ»ùÓÚ×Ö·û´®µÄÅäÖÃÎļþÊôÐÔÀ´Ö§³ÖÄäÃûʶ±ðÓû§ÇøÓòÐԵŦÄÜ¡£Çë×¢ÒâanonymousIdentificationÔªËØµÄenabledÊôÐÔ±ØÐëΪ¡°true¡±£¬·ñÔòÄäÃûʶ±ð¹¦ÄܾͲ»¿ÉÓá£
<anonymousIdentification enabled="true"/>
<profile>
    <properties>
        <add name="LanguagePreference" type="string"  defaultValue="auto" allowAnonymous="true" />
    </properties>
</profile>

ÏÂÃæÎÒ½«²ûÊöÔÚAsp.net2.0ÖÐÈçºÎÕë¶ÔLanguagePreferenceÊôÐÔ±à³Ì¡£Ê×ÏÈ£¬¿ÉÒÔдһ¸öPageBaseÀ࣬Ëü¼Ì³Ð×ÔSystem.Web.UI.Page£¬²¢×÷ΪվµãÖÐËùÓÐÒ³ÃæÀàµÄ»ùÀà¡£Õâô×öµÄÄ¿µÄÆäʵºÜ¼òµ¥£¬¾ÍÊÇΪÁ˽«¸÷¸öÒ³ÃæÖÐһЩ¹²Í¬µÄ´¦Àí¹ý³ÌÌáÁ¶³öÀ´·Åµ½»ùÀàÖУ¬ÒÔ¼õÉÙ´úÂëÖØ¸´£¬Ìá¸ß¿Éά»¤ÐÔ¡£È»ºóÔÚPageBaseÀàÖÐдÈçÏ´úÂ룺protected override void InitializeCulture()
{
        base.InitializeCulture();
        string LanguagePreference = ((ProfileCommon)this.Context.Profile).LanguagePreference;
        //¸ÃÓû§Ê״ηÃÎʱ¾Õ¾£¬Profile.LanguagePreferenceΪ¿Õʱ£¬Ê¶±ðÓû§ä¯ÀÀÆ÷µÄÓïÑÔÉèÖÃ
        if(string.IsNullOrEmpty(LanguagePreference))
        {
             if (this.Context.Request.UserLanguages != null)
             {
                  LanguagePreference = this.Context.Request.UserLanguages[0];
                  ((ProfileCommon)Context.Profile).LanguagePreference = LanguagePreference;
              }
          }
          else
          {
               Thread.CurrentThread.CurrentUICulture = new CultureInfo(LanguagePreference);                               
               Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(LanguagePreference);
           }
}

        System.Web.UI.PageÀàµÄInitializeCulture·½·¨ÊÇÔÚAsp.net2.0ÖÐмӵģ¬ËüΪµ±Ç°Ïß³ÌÉèÖÃCultureºÍUICulture¡£Ò³ÃæÉúÃüÖÜÆÚÒѱ»Éè¼ÆÎªInitializeCulture·½·¨ÏÈÓÚÒ³ÃæµÄInitºÍLoadÔËÐС£ÔÚÉÏÊö´úÂëÖУ¬Ê×ÏÈʹÓÃ((ProfileCommon)this.Context.Profile).LanguagePreference;»ñµÃµ±Ç°LanguagePreferenceÅäÖÃÎļþÊôÐÔµÄÖµ£¬ÅÐ¶ÏÆäÊÇ·ñΪ¿Õ£¬Ò²¾ÍÊÇÊÇ·ñÒѾ­ÎªÓû§±£´æÁËÇøÓòÐÔÉèÖá£Èç¹ûΪ¿Õ£¬Ôò´ÓHttpÍ·ÖлñÈ¡Óû§µÄÊ×Ñ¡ÇøÓòÐÔÉèÖ㬲¢Í¨¹ý((ProfileCommon)Context.Profile).LanguagePreference = LanguagePreference;±£´æÓû§µÄÊ×Ñ¡ÇøÓòÐÔÉèÖá£Èç¹û²»Îª¿Õ£¬ËµÃ÷ÒѾ­±£´æÁËÓû§µÄÇøÓòÐÔÉèÖã¬ÄÇôʹÓÃÕâ¸öÇøÓòÐÔÉèÖõ±Ç°Ï̵߳ÄCurrentUICultureºÍCurrentCultureÊôÐÔ¡£
         Èç¹ûWeb.configÖж¨ÒåÁË<globalization uiCulture="auto" culture="auto" />£¬ÄÇô¿ÉÒÔ½«ÉÏÊö´úÂë¼ò»¯Îª£ºprotected override void InitializeCulture()
{
        base.InitializeCulture();
        string LanguagePreference = ((ProfileCommon)this.Context.Profile).LanguagePreference;    

        if(!string.IsNullOrEmpty(LanguagePreference))
        {
              Thread.CurrentThread.CurrentUICulture = new CultureInfo(LanguagePreference);
              Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(LanguagePreference);
        }
        else
        {
               ((ProfileCommon)Context.Profile).LanguagePreference = Thread.CurrentThread.CurrentCulture.Name;
         £ý
}

        Èç¹ûÔÚÕ¾µãÖÐÌṩÁËÈÃÓû§Ñ¡ÔñÇøÓòÐԵŦÄÜ£¬±ÈÈçÔÚÕ¾µãµÄĸ°æÒ³ÖзÅÁËÒ»¸öÑ¡ÔñÓïÑÔµÄÁÐ±í£¬ÄÇô¿ÉÒÔͨ¹ýÒÔÏÂÓï¾äÀ´¼ÇסÓû§¶ÔÇøÓòÐÔµÄÑ¡Ôñ£º
 protected void lstLanguage_SelectedIndexChanged(object sender,EventArgs e)
{
        if (lstLanguage.SelectedValue != "Auto") //ĬÈÏÑ¡ÏîÊÇAuto
    {
 Profile.LanguagePreference = lstLanguage.SelectedValue;
     }
    else
    {
       Profile.LanguagePreference = null;
     }
    Response.Redirect(Request.Url.AbsolutePath);
 }
        ×¢ÒâResponse.Redirect(Request.Url.AbsolutePath);ÕâÐдúÂ룬ÒòΪʼþ´¦Àí´úÂëÊÇÔÚPage_LoadÖ®ºóÖ´Ðеģ¬ÒªÊÇÏëÈÃÒ³ÃæÑ¸ËÙ·¢Éú±ä»¯±ØÐëÖ´ÐÐÖØ¶¨Ïò²Ù×÷¡£

3.     ÔÚAsp.net2.0ÖÐʹÓÃ×ÊÔ´Îļþ

        ÔÚÕ¾µãÖн¨Á¢È«¾Ö×ÊÔ´ÎļþµÄʱºò£¬VS.Net2005»á×Ô¶¯½¨Á¢Ò»¸öApp_GlobalResourcesÎļþ¼ÐרÃÅÀ´´æ·ÅÈ«¾Ö×ÊÔ´Îļþ¡£Ëùνȫ¾Ö×ÊÔ´Îļþ£¬Ò²¾ÍÊǸøÕ¾µãÖжà¸öÒ³ÃæÎļþ»òĸ°æÒ³Ê¹ÓõÄ×ÊÔ´Îļþ¡£¼ÙÉèÎÒÃÇ´´½¨ÃûΪMyResource.resxºÍMyResource.zh-cn.resxµÄÎļþ¡£ÔÚ³ÌÐòÖÐÎÒÃÇ¿ÉÒÔʹÓÃÒÔÏ´úÂëÀ´»ñµÃ×ÊÔ´ÎļþÖеÄÖµ£ºthis.lblCountry.Text = Resources.MyResource.Country£»
ÆäÖÐCountryÊÇ×ÊÔ´ÎļþÖеļü¡£ÏÔÈ»£¬Õâ±ÈAsp.net1.1ÖдÓ×ÊÔ´Îļþ»ñȡֵҪÈÝÒ׺ܶࡣ

        ÕâÀïÓÐÁ½¸öÎÊÌâÐèҪעÒ⣺µÚÒ»£¬ÔÚ´´½¨Ò»×é¾ßÓÐÏàͬ¸ùÃû³ÆµÄ×ÊÔ´Îļþʱ£¬Ã»ÓÐÇøÓòÐÔ±êʾµÄÎļþ±ØÐ뽨Á¢£¬±ÈÈçMyResource.resxÊDZØÐëÓе쬯äËüÈçMyResource.en-gb.resxºÍMyResource.zh-cn.resxµÄ½¨Á¢ÊǸù¾ÝÐèÒªµÄ¡£Èç¹û²»½¨Á¢MyResource.resxÖ»½¨Á¢ÁËMyResource.zh-cn.resxµÈ,ÔòÉÏÊö´úÂëÖеÄResourcesÃüÃû¿Õ¼äϾͲ»»á³öÏÖMyResource£¬Òò´ËÉÏÊö´úÂë±àÒëÎÞ·¨Í¨¹ý¡£MyResource.resxÖÐÓ¦¸Ã´æ·ÅÕ¾µãĬÈÏÓïÑÔµÄÄÚÈÝ£¬ÒÔ±¸ÔÚÕÒ²»µ½Ó뵱ǰÏß³ÌCurrentUICultureÆ¥ÅäµÄ±¾µØ»¯×ÊÔ´Îļþ»òÔÚ±¾µØ»¯×ÊÔ´ÎļþÖÐÕÒ²»µ½ÏàÓ¦¼üֵʱʹÓá£Asp.netÊÇÒÔMyResource.resxÎļþÖеļüΪ׼£¬¼ÙÈçÔÚMyResource.resxÖв»´æÔÚCountry¼ü£¬¶øÔÚMyResource.zh-cn.resxÖдæÔÚCountry¼ü£¬ÄÇôÉÏÊö´úÂëÔÚ±àÒëʱҲ»á±¨´í¡£µÚ¶þ£¬Asp.netÔÚÕÒ²»µ½ÏàÓ¦ÇøÓòµÄ±¾µØ»¯×ÊԴʱ£¬²»»á±¨¸æÈκÎÒì³££¬»á×Ô¶¯´ÓMyResource.resxÎļþÖлñȡֵ£¬µ«²¢²»¸Ä±äµ±Ç°Ï̵߳ÄCurrentUICulture¡£
       
        ÔÚÕ¾µãÖн¨Á¢¾Ö²¿×ÊÔ´ÎļþµÄʱºò£¬VS.Net2005»á×Ô¶¯½¨Á¢Ò»¸öApp_LocalResourcesÎļþ¼ÐרÃÅÀ´´æ·Å¾Ö²¿×ÊÔ´Îļþ¡£Ëùν¾Ö²¿×ÊÔ´Îļþ£¬Ò²¾ÍÊǸøÕ¾µãÖе¥Ò»Ò³ÃæÎļþʹÓõÄ×ÊÔ´Îļþ¡£ËüµÄÃüÃû·½Ê½Ò»°ãÊÇDefault.aspx.resxºÍDefault.aspx.zh-cn.resx¡£ÏÖÔÚÎÒÔÚDefault×ÊÔ´ÎļþÖÐÌí¼ÓÈý¸ö¼üLanguage¡¢lblNavigation.TextºÍlblNavigation.ForeColor¡£ÆäÖÐÎÒΪDefault.aspx.resxµÄlblNavigation.ForeColorÉèÖÃblue£¬ÎªDefault.aspx.zh-cn.resxµÄlblNavigation.ForeColorÉèÖÃred¡£ÔÚÒ³ÃæÎļþÖÐDefault.aspxÖдӾֲ¿×ÊÔ´ÎļþÀï»ñµÃÄÚÈݵķ½·¨ÈçÏÂÓÐÁ½ÖÖ£º
(1). <asp:Label ID="lblLanguage" runat="server" Text="<%$ Resources:Language %>"></asp:Label>
(2). <asp:Label ID="lblNavigaion" runat="server" meta:resourcekey="lblNavigation"></asp:Label>
 Ê¹ÓõÚÒ»ÖÖ·½·¨Ê±Òª×¢ÒâʹÓ÷ûºÅ$¡£Ê¹ÓõڶþÖÖ·½·¨¸ü¼ÓÁé»î£¬Ëü¿ÉÒÔÒ»´ÎÐÔµØÎª¿Ø¼þµÄºÜ¶àÊôÐÔÉ趨ֵ¡£

        ÔÚÕâÀïÈÔÈ»ÓÐÎÊÌâÐèҪעÒâ£ºÒ³ÃæÄ¬Èϵľֲ¿×ÊÔ´Îļþ±ØÐë±»½¨Á¢£¬±ÈÈçDefault.aspx.resxÊDZØÐëµÄ£¬¶øDefault.aspx.zh-cn.resxÔò¸ù¾ÝÐèÒª¡£Èç¹ûÄã²»½¨Á¢Ä¬Èϵľֲ¿×ÊÔ´Îļþ£¬¶øÔÚÒ³ÃæÖÐȴҪʹÓþֲ¿×ÊÔ´Îļþʱ£¬µ±Ê¹ÓõÚÒ»ÖÖ·½·¨½øÐаó¶¨Ê±£¬³ö±àÒë´íÎó£»µ±Ê¹ÓõڶþÖÖ·½·¨½øÐаó¶¨Ê±£¬²»»á³ö±àÒë´íÎ󣬵«ÊÇÕâЩÊôÐÔµÄÉèÖÃÈ«¶¼Ã»Æð×÷Óã¬ÈçͬûдһÑù¡£

4£®ÏÔʾ±¾µØ»¯Í¼Ïñ

        ÏÔʾ±¾µØ»¯Í¼ÏñÒ²ÊÇAsp.net2.0µÄй¦ÄÜ¡£ÔÚAsp.net2.0ÖÐ×ÊÔ´ÎļþÒѾ­²»½öÏÞÓÚstringÀàÐ͵ļüÖµ¶Ô×éºÏ£¬Ëü¿ÉÒÔ±£´æ¶àÖÖÀàÐ͵ÄÎļþ¡£ÀûÓÃÕâÒ»¹¦ÄÜ¿ÉÒÔʵÏÖͼÏñµÄ±¾µØ»¯¡£ÆäʵËùν±¾µØ»¯Í¼Ïñ£¬Î޷ǾÍÊǽ«¸ø²»Í¬ÇøÓòÐÔ×¼±¸µÄͼÏñ·Åµ½²»Í¬µÄ±¾µØ»¯×ÊÔ´ÎļþÖÐÈ¥¡£±ÈÈ罫LitwareSlogan.jpg·Åµ½MyResource.resxÖУ¬°ÑLitwareSlogan.cn.jpg·Åµ½MyResource.zh-cn.resxÖС£


        µ±²»Í¬±¾µØ»¯°æ±¾µÄÈ«¾Ö×ÊÔ´ÎļþÖк¬Óб¾µØ»¯°æ±¾µÄͼÏñÎļþʱ£¬Äú¿ÉÒÔ×Ô¶¨ÒåÒ»¸öÃûΪ MyLocalImage.ashx µÄ´¦Àí³ÌÐòÎļþ£¬»ùÓÚÓû§µÄÓïÑÔÊ×Ñ¡ÏîÀ´ÓÐÌõ¼þµØ½øÐмÓÔØ£¬´úÂëÈçÏÂËùʾ¡£
 

Ò³ÃæÖеĵ÷Ó÷½·¨£º

<asp:Image ID="Image1" runat="server" ImageUrl="~/ MyLocalImage.ashx" />

MyLocalImage.ashx µÄ´¦Àí³ÌÐòµÄд·¨£º

public class MyLocalImage : IHttpHandler
{
       public void ProcessRequest (HttpContext context)
       {
            context.Response.ContentType = "image/png";
            string LanaguageReference = ((ProfileCommon)context.Profile).LanguagePreference;
            if (!string.IsNullOrEmpty(LanaguageReference))
            {
                    Thread.CurrentThread.CurrentUICulture = new CultureInfo(LanaguageReference);
            }
            Bitmap bm = Resources.Litware.LitwareSlogan;
            MemoryStream image = new MemoryStream();
            bm.Save(image,ImageFormat.Png);
            context.Response.BinaryWrite(image.GetBuffer());
         }
}

        MyLocalImage.ashx Öж¨ÒåµÄ×Ô¶¨Òå´¦Àí³ÌÐòÀà¿ÉʹÓÃÄúÒÔǰÔÚ×Ô¶¨Òå InitializeCulture ·½·¨Öп´µ½µÄÀàËÆÂß¼­£¬ÔÚ´ÓÈ«¾Ö×ÊÔ´ÎļþÖмìË÷ͼÏñÎļþÒÔǰ£¬³õʼ»¯µ±Ç°Ïß³ÌµÄ CurrentUICulture ÉèÖá£Äú¿ÉÄÜÒÉÎÊΪºÎÔÚÒ³ÃæµÄ»ùÀàÖÐÒѾ­ÉèÖÃÁ˵±Ç°Ï̵߳ÄCurrentUICulture£¬¶øÔÚÕâÀï»¹ÒªÖØÐÂÉèÖã¬ÄÇÊÇÒòΪÕâÀïµÄÏß³ÌÓë»ùÀàÖд¦ÀíµÄÏ̲߳»ÊÇͬһÏ̡߳£ÔÚ¸Ã×Ô¶¨Òå´¦Àí³ÌÐòÕýÈ·³õʼ»¯ÁË CurrentUICulture ÉèÖÃÖ®ºó£¬Ëü¼´¿Éͨ¹ý MyResource.resx µÄÇ¿ÀàÐÍ»¯×ÊÔ´ÀàÀ´·ÃÎÊͼÏñÎļþ¡£È»ºó£¬±ãÖ»Ð轫ͼÏñÎļþµÄÊýλ±àдµ½ HTTP ÏìÓ¦Á÷¡£