MS_Culture - NetDevInfraWGinOSSConsortium/NetDevInfraWiki GitHub Wiki
- æ»ãïŒåœéå察å¿é ç®ïŒ
-
Windows ã§ã¯ããã±ãŒã«ïŒwin32ïŒãã«ã«ãã£ïŒ.NETïŒãšåŒã¶ã
-
.NET ã§ã¯ãã«ã«ãã£èšå®ã«ãã£ãŠèªåçã«åäœãå€ããåœéåïŒå€èšèªåïŒæ©èœãæã£ãŠããã
- Date åã®æåååæã®æ¢å®ã®ãã©ãŒããããå€åããã
- ç»é¢äžã®ã³ã³ãããŒã«ã®é
眮ã»ãã£ãã·ã§ã³ãªã©ã®åçš®ããããã£ã
ã«ã¬ã³ã ã³ã³ãããŒã«ãªã©ã®è¡šç€ºãå€åããã
-
åè
- CultureInfo ã¯ã©ã¹ (System.Globalization)
https://learn.microsoft.com/ja-jp/dotnet/api/system.globalization.cultureinfo
- CultureInfo ã¯ã©ã¹ (System.Globalization)
è£è¶³ïŒãèªåçã«åäœãå€ãããããšã®æãïŒ: æ¬ããŒãžã®å 容ã
å®åã®èгç¹ã§äžèšã«ãããšã
**ãæèããŠããªããšãç°å¢ã«ãã£ãŠåäœãå€ããã**ãšããç¹ã«å°œããã// å®è¡ç°å¢ã®ã«ã«ãã£ã«äŸåããïŒïŒç°å¢ã§çµæãå€ããïŒ DateTime.Parse("01/02/2026") // ja-JP: 1æ2æ¥ / en-US: 1æ2æ¥ / en-GB: 2æ1æ¥ 1234.5.ToString() // ja-JP: "1234.5" / de-DE: "1234,5" "ABC".ToLower() // tr-TR: "I" ã "ı" ã«ãªãïŒãã«ã³åé¡ïŒ**ãéçºæ©ã§ã¯åãã®ã«æ¬çªã§èœã¡ãã**ãšããäžå ·åã®
å žåçãªåå ã®äžã€ãããã§ãããåå:
çšé 䜿ããã® ãŠãŒã¶ãŒã«èŠããïŒç»é¢è¡šç€ºïŒ CurrentCultureïŒïŒãã®ãŸãŸïŒæ©æ¢°å¯èªãªå ¥åºåïŒãã¡ã€ã«ãDBãAPIããã°ïŒ InvariantCultureèå¥åã®æ¯èŒïŒããŒãã³ãŒãå€ïŒ StringComparison.Ordinal// ä¿åã»éä¿¡ã¯åžžã« InvariantCultureïŒãŸã㯠ISO 8601ïŒ var s = value.ToString("O", CultureInfo.InvariantCulture); var v = decimal.Parse(s, CultureInfo.InvariantCulture); // èå¥åã®æ¯èŒã¯ OrdinalïŒã«ã«ãã£ã«äŸåãããªãïŒ if (string.Equals(code, "ADMIN", StringComparison.Ordinal)) { }
ã¢ããªã±ãŒã·ã§ã³ã®åœéåïŒå€èšèªåïŒã«å©çšããã Windows ãã±ãŒã«ã«
察å¿ããã«ã«ãã£ã«ã¯ä»¥äžã® 3 çš®é¡ãããã
- ç¹å®ã®èšèªãåœã»å°åã«äŸåããªãç¹å¥ãªã«ã«ãã£
- è±èªåã§äœ¿ããããã®ãåºæ¬ãšããæžåŒã»èŠåãèšå®ãããŠããŠã
ç¹å®ã®ã«ã«ãã£ã«äŸåããªã圢åŒãžã®å€æãæ¯èŒãè¡ãããå Žåã«äœ¿çšããã
- ãæ¥æ¬èªããªã©ã®ããã«ãïŒèšèªåïŒã圢åŒã§èšè¿°ãããã«ã«ãã£
- åœãå°åã«äŸåãããèšèªã®ã¿ã«äŸåããã
- ãæ¥æ¬èª (æ¥æ¬)ããªã©ã®ããã«ãïŒèšèªåïŒ (ïŒåœã»å°ååïŒ)ã圢åŒã§èšè¿°ãããã«ã«ãã£
- åœãå°åã«äŸåããã
è£è¶³ïŒçšèªã®å¯Ÿå¿ïŒ: 3 çš®é¡ã®äœ¿ãåããæŽçããŠããã
çš®é¡ äŸ äž»ãªçšé æ¢å®ïŒInvariantïŒ ""ïŒç©ºæååïŒæ°žç¶åã»éä¿¡ã人ã«èŠããªãå€ ãã¥ãŒãã©ã« ja,enãªãœãŒã¹ã®éžæïŒãªãœãŒã¹ãã¡ã€ã«ïŒ åºæ ja-JP,en-USæžåŒïŒæ¥ä»ã»éè²šïŒ **ãæèšã¯èšèªã ãã§è¶³ããããæžåŒã¯å°åãŸã§èŠãã**ãšãã
é察称æ§ãããã® 2 段æ§ãã®çç±ã§ãããæèš: è±èªãªã en ã§ååïŒç±³è±ã§æèšãåããããšã¯çšïŒ æžåŒ: en-US 㯠8/19/2026ãen-GB 㯠19/08/2026 â å°åãèŠã
ã«ã«ãã£ã«ã¯éå±€é¢ä¿ããããåºæ¬çã« 3 éå±€ãšãªã£ãŠããã
æ¢å®ã«ã«ãã£
ãâjaãæ¥æ¬èª
ãââja-JPãæ¥æ¬
ãâ
ãâenãè±èª
ãââen-USãç±³åœ
ãââen-GBãè±åœ
ãââen-AUããªãŒã¹ãã©ãªã¢
ãïŒ
äŸå€çã«äžåœèªã®ã«ã«ãã£ã¯ 5 éå±€ãšãªãã
â» zh, zh-Hans, zh-CHS, zh-Hant, zh-CHT ã¯ãã¥ãŒãã©ã«ã«ã«ãã£
æ¢å®ã«ã«ãã£
ãâzhãäžåœèª
ããâzh-Hansãç°¡äœåäžåœèª
ããââzh-CHSãç°¡äœåäžåœèª(å€ãã«ã«ãã£å)
ããâãâzh-CNãäžåœ
ããâãâzh-SGãã·ã³ã¬ããŒã«
ããâ
ããâzh-Hantãç¹äœåäžåœèª
ãããâzh-CHTãç¹äœåäžåœèª(å€ãã«ã«ãã£å)
ããããâzh-HKãéŠæž¯
ããããâzh-MOããã«ãª
ããããâzh-TWãå°æ¹Ÿ
è£è¶³ïŒãã®éå±€ãããã©ãŒã«ããã¯ããæ±ºããïŒ: éå±€æ§é ã¯
ãªãœãŒã¹ãã¡ã€ã« ã®ãã©ãŒã«ããã¯ã®æ¢çŽ¢é
ãã®ãã®ã§ãããCurrentUICulture = zh-TW ã®ãšã zh-TW â zh-Hant â zh â æ¢å® ã®é ã«ãªãœãŒã¹ãæ¢ãäžåœèªã 5 éå±€ã«ãªã£ãŠããã®ã¯ã
**ãèšèªïŒzhïŒãšè¡šèšäœç³»ïŒç°¡äœåïŒç¹äœåïŒãç¬ç«ããŠããã**ããã§ã
äžéå±€ïŒzh-Hans/zh-HantïŒãæãŸã£ãŠããã誀: zh-CN ãš zh-TW ã§ãªãœãŒã¹ã 2 ã€äœã æ£: zh-Hans ãš zh-Hant ã§ãªãœãŒã¹ã 2 ã€äœã â zh-CN / zh-SG 㯠zh-Hans ã«ã zh-TW / zh-HK / zh-MO 㯠zh-Hant ã«ãã©ãŒã«ããã¯ãã
zh-CHS/zh-CHTã¯éæšå¥šïŒåæããå€ãã«ã«ãã£åããšæ³šèšïŒã§ã
æ°èŠã§ã¯zh-Hans/zh-Hantã䜿ãã
-
.NET ã§ã¯ãã«ã«ãã£ãæå®ããããšã«ãã£ãŠããŠãŒã¶ã®æåçæ £ç¿ã«å¿ããã
ãæååãããæ¥ä»ã®åœ¢åŒãããæ°å€ã®åœ¢åŒããªã©ã®æ å ±ã«å¯Ÿãã
äžè¬çãªèšå®ã®ã»ããã䜿çšã§ããã -
ã«ã«ãã£ã«ã¯ UICulture ãš Culture ã® 2 ã€ã®ã«ã«ãã£å€ãããã
2 ã€ã®ã«ã«ãã£èšå®ã«å¥ã ã®å€ãèšå®ããããšãã§ããã
- UI ã«è¡šç€ºãããèšèªã«é¢ããã«ã«ãã£ãäŸå€ã¡ãã»ãŒãžçãããã¡ãã®ã«ã«ãã£ã䜿çšããã
- ã«ã«ãã£åºæã®ããªãœãŒã¹ãã¡ã€ã«ããæ€çŽ¢ããããã«
䜿çšããããªãœãŒã¹å°çšã«ã«ãã£ã - åœåèŠåã«ããã«ã«ãã£æ¯ã«èªã¿èŸŒããªãœãŒã¹ ãã¡ã€ã«ãéžæãããã
//CurrentUICultureã®ååŸ
System.Globalization.CultureInfo uiCulture = System.Threading.Thread.CurrentThread.CurrentUICulture;
//CurrentUICultureã®èšå®
System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("en-US");-
Thread.CurrentUICulture ãããã㣠(System.Threading)
https://learn.microsoft.com/ja-jp/dotnet/api/system.threading.thread.currentuiculture -
CultureInfo ã¯ã©ã¹ (System.Globalization)
https://learn.microsoft.com/ja-jp/dotnet/api/system.globalization.cultureinfo -
ResourceManager ã¯ã©ã¹ (System.Resources)
https://learn.microsoft.com/ja-jp/dotnet/api/system.resources.resourcemanager
-
.NET Framework API ã®å éšåäœã§äœ¿çšãããã¹ã¬ããã®ã«ã«ãã£ã
-
CurrentUICulture ã® UI 以å€ã®ãã¹ãŠïŒãæ¥ä»ã®åœ¢åŒãããæ°å€ã®åœ¢åŒããªã©ïŒã決å®ããã
-
èšå®
- .NET Framework 3.5 以åã¯ãen-US ã en-GB ãªã©ã®ãç¹å®ã«ã«ãã£ãã ãèšå®ã§ããã
ãã¥ãŒãã©ã«ã»ã«ã«ãã£ãèšå®ããããšãããš NotSupportedException äŸå€ãçºçããã - .NET 4 ããã¯ãã¥ãŒãã©ã«ã»ã«ã«ãã£ãèšå®å¯èœã«ãªã£ãŠããã
ããã«ãããen-US ãš en-GB ã§ç°ãªãé貚èšå·ã䜿çšããã
en ã«äœ¿çšããæ£ããé貚èšå·ãèå¥ããå¿ èŠããªããªãã
- .NET Framework 3.5 以åã¯ãen-US ã en-GB ãªã©ã®ãç¹å®ã«ã«ãã£ãã ãèšå®ã§ããã
-
çšéïŒäŸïŒ
-
ãã©ãŒããã
- DateTime.ToString() ã®æ¢å®ã®ãã©ãŒããã
- éè²šã®æžåŒæå®åã®ãã©ãŒããã
-
ã¡ãœãã
- Microsoft.VisualBasic.Strings.StrConv ã¡ãœããïŒå
šè§åè§å€æïŒ
å šè§æåãååšããªãã«ã«ãã£ã§ã¯ãšã©ãŒãšãªãã
- Microsoft.VisualBasic.Strings.StrConv ã¡ãœããïŒå
šè§åè§å€æïŒ
-
- åºæ¬
//CurrentCultureã®ååŸ
System.Globalization.CultureInfo culture = System.Threading.Thread.CurrentThread.CurrentCulture;
//CurrentCultureã®èšå®
System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US");- Windows Formséå®ã§ä»¥äžã®æžãæ¹ãå¯èœ
//CurrentCultureã®ååŸãâ»Windows Formséå®
System.Globalization.CultureInfo culture = Application.CurrentCulture;
//CurrentCultureã®èšå®ãâ»Windows Formséå®
Application.CurrentCulture = new System.Globalization.CultureInfo("en-US");-
Thread.CurrentCulture ãããã㣠(System.Threading)
https://learn.microsoft.com/ja-jp/dotnet/api/system.threading.thread.currentculture -
Application.CurrentCulture ãããã㣠(System.Windows.Forms)
https://learn.microsoft.com/ja-jp/dotnet/api/system.windows.forms.application.currentculture -
CultureInfo ã¯ã©ã¹ (System.Globalization)
https://learn.microsoft.com/ja-jp/dotnet/api/system.globalization.cultureinfo
è£è¶³ïŒçŸåšã¯
CultureInfoã®éçããããã£ã䜿ãïŒ:Thread.CurrentThread
çµç±ã®æžãæ¹ã¯åäœããããçŸåšã¯
CultureInfo.CurrentCultureã䜿ãã®ãæšæºã§ãããCultureInfo.CurrentCulture = new CultureInfo("en-US"); CultureInfo.CurrentUICulture = new CultureInfo("en"); // ã¢ããªå šäœã®æ¢å®ïŒ.NET 4.5+ïŒâ æ°èŠã¹ã¬ããã«ãç¶æ¿ããã CultureInfo.DefaultThreadCurrentCulture = new CultureInfo("ja-JP"); CultureInfo.DefaultThreadCurrentUICulture = new CultureInfo("ja");
DefaultThreadCurrent*ãåŸè¿°ã®ã¹ã¬ããåé¡ã®è§£æ±ºçã§ããã
äœãèšå®ããã«ã¢ããªã±ãŒã·ã§ã³ãå®è¡ããéã®å€ã¯ã
ãããã以äžã®ç°å¢èšå®ã䜿çšãããã
å°åãšèšèªã®èšå®å€ã«ãã£ãŠæ±ºå®ãããã
-
WindowsXP
[ã³ã³ãããŒã«ããã«]-[å°åãšèšèªã®ãªãã·ã§ã³]-[å°åãªãã·ã§ã³]ã¿ã-[æšæºãšåœ¢åŒ]ã°ã«ãŒã -
Windows7
[ã³ã³ãããŒã«ããã«]-[æèšãèšèªãããã³å°å]-[å°åãšèšèª]-[圢åŒ]ã¿ã-[圢åŒ]
OS ã®èšèªããŒãžã§ã³ã«ãã£ãŠæ±ºå®ãããã
- æ¥æ¬èª OS ã®å Žåã¯ãja-JP
- ãã«ãèšèª OS ã®å Žåã¯ãéžæäžã®èšèª
è£è¶³ïŒLinux / ã³ã³ããã§ã®æ¢å®å€ïŒææ°åïŒ: .NET Core 以éã¯
Windows 以å€ã§ãåããããæ¢å®å€ã®æ±ºãŸãæ¹ãå¢ããŠããã
ç°å¢ æ¢å®ã®ã«ã«ã㣠Windows å°åèšå® / 衚瀺èšèªïŒåæã®éãïŒ Linux / macOS LANG/LC_ALLç°å¢å€æ°ïŒICU çµç±ïŒã³ã³ããïŒå€ãã®å ¬åŒã€ã¡ãŒãžïŒ InvariantCultureïŒICU ãå ¥ã£ãŠããªãïŒã³ã³ããã§ã®èœãšã穎ãç¹ã«éèŠã§ããã
.NET ã®å ¬åŒã€ã¡ãŒãžïŒalpine ç³»ã runtime-depsïŒã§ã¯ã ãµã€ãºåæžã®ãã ICU ãå«ãŸããªãããšããã â InvariantGlobalization ã¢ãŒãã§åã â ja-JP ãæå®ããŠãæžåŒãè±èªåã®ãã®ã«ãªã â æååã®æ¯èŒã»äžŠã¹æ¿ããåºæ°æ¯èŒã«ãªã# ICU ãå ¥ããïŒDebian ç³»ïŒ RUN apt-get update && apt-get install -y libicu-dev ENV DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=false<!-- éã«ãæå³çã« Invariant ã§åããïŒãµã€ãºã»èµ·åé床ãåªå ïŒ --> <InvariantGlobalization>true</InvariantGlobalization>
InvariantGlobalization=trueã«ãããšã
new CultureInfo("ja-JP")ã¯äŸå€ã«ãªããªããã
äžèº«ã¯ Invariant ãšåãã«ãªãïŒéãã«å£ããïŒããã
åœéåãå¿ èŠãªã¢ããªã§ã¯å¿ ã ICU ãå ¥ãã
ïŒ.NET Coreã®Dockerã³ã³ããåïŒã
-
Windows FormsãWPF ãªã©ã®
ãŠã£ã³ããŠã»ã·ã¹ãã ïŒã¡ãã»ãŒãžã»ã«ãŒãïŒãåŠçãã
UI ãµãã·ã¹ãã ã¯ãåºæ¬çã« UI åŠçãè¡ãã¹ã¬ããïŒïŒã€ã®äž»ã¹ã¬ããã§ããã -
ãã®ãããã¢ãŒãã«ãã€ã¢ãã°ãã¢ãŒãã¬ã¹ãã€ã¢ãã°ã§è¡šç€ºãããåç»é¢ã¯ã
芪ç»é¢ãšåäžã¹ã¬ãããšãªããã«ã«ãã£å€ã¯åç»é¢ãšèŠªç»é¢ã§åäžãšãªãã
Web ã¢ããªã±ãŒã·ã§ã³(ASP.NET, ASP.NET AJAX, Web ãµãŒãã¹)ã§ã¯
config èšå®ã«ãŠåäœã®å®çŸ©ãå¯èœã§ããã
â» Windows ã¢ããªã±ãŒã·ã§ã³ã« config èšå®ã¯ååšããªãã
Web.configã® globalization èŠçŽ ãèšå®ããã
- culture 屿§ã« CurrentCulture ã®æ¢å®å€
- uiCulture 屿§ã« CurrentUICulture ã®æ¢å®å€
<system.web>
<globalization culture="ja-JP" uiCulture="ja-JP" />
</system.web>⻠空æåãèšå®ãããšããã©ã«ãå€ã䜿çšãããã
æ¢å®ã«ã«ãã£(Invariant Culture)ã¯å®çŸ©ã§ããªãã
culture 屿§ãuiCulture 屿§ã« "auto" ãå®çŸ©ãããšã
ã¯ã©ã€ã¢ã³ãã®ãã©ãŠã¶ã®èšèªèšå®ã®å€ãæ¢å®å€ãšãªãã
<system.web>
<globalization culture="auto" uiCulture="auto" />
</system.web>- Internet Explorer 8
- [ããŒã«]-[ã€ã³ã¿ãŒããããªãã·ã§ã³]-[å šè¬]ã¿ã-[èšèª]
- ããã®èšå®ã«ãããHTTP ãããã«èšèªæ å ±ã远å ãããïŒAccept-LanguageïŒã
â» ã¯ã©ã€ã¢ã³ãã®ãã©ãŠã¶ã®èšèªèšå®ããããŠããªã(å
šãŠåé€ããŠãã)å Žåã
ããã©ã«ãå€ãæ¢å®å€ãšãªãã
â» Request.UserLanguages ããããã£(string[] å)ã«ãŠ
ãã©ãŠã¶ã®èšèªèšå®ã«ç»é²ãããŠããèšèªãå
šãŠååŸã§ããã
èšèªèšå®ããããŠããªãå Žåã¯ãnull å€ãšãªãã
- globalization èŠçŽ (ASP.NET èšå®ã¹ããŒã)
https://learn.microsoft.com/ja-jp/previous-versions/dotnet/netframework-4.0/hy4kkhe0(v=vs.100) - HttpRequest.UserLanguages ãããã㣠(System.Web)
https://learn.microsoft.com/en-us/dotnet/api/system.web.httprequest.userlanguages
è£è¶³ïŒASP.NET Core ã§ã®èšå®ïŒ:
<globalization>ã¯ç¡ãã
RequestLocalizationMiddlewareãåã圹å²ãæ ã
ïŒASP.NET ã® åœéåå¯Ÿå¿ ã®è£è¶³ãåç §ïŒãapp.UseRequestLocalization(new RequestLocalizationOptions() .SetDefaultCulture("ja-JP") .AddSupportedCultures("ja-JP", "en-US") // â CurrentCulture .AddSupportedUICultures("ja", "en")); // â CurrentUICulture
AddSupportedCulturesã«ç¡ãã«ã«ãã£ã¯æ¢å®å€ã«èœã¡ã
ïŒãã¯ã€ããªã¹ãæ¹åŒïŒããã
ã察å¿ããŠããªãèšèªã§è¡šç€ºã厩ãããããšãé²ããã
autoçžåœã®æåã¯AcceptLanguageHeaderRequestCultureProviderãæ ãã
æ°ããäœæãããã¹ã¬ããã®ã«ã«ãã£ã¯ããã©ã«ãå€ãšãªãã
â» Web.configã®èšå®ã¯é©çšãããªãã
- åºæ¬
public void Method1()
{
System.Threading.Thread th = new System.Threading.Thread(StaticMethod1);
th.Start();
}
public static void StaticMethod1()
{
Debug.WriteLine(System.Threading.Thread.CurrentThread.CurrentCulture.ToString()); // â ããã©ã«ãå€
Debug.WriteLine(System.Threading.Thread.CurrentThread.CurrentUICulture.ToString()); // â ããã©ã«ãå€
}- æ°ããäœæãããã¹ã¬ããã«ã«ã«ãã£ãèšå®ãã
public void Method1()
{
System.Threading.Thread th = new System.Threading.Thread(StaticMethod1);
th.CurrentCulture = System.Threading.Thread.CurrentThread.CurrentCulture; // â äœæããã¹ã¬ããã«ã«ã«ãã£å€ãã³ããŒ
th.CurrentUICulture = System.Threading.Thread.CurrentThread.CurrentUICulture; // â äœæããã¹ã¬ããã«ã«ã«ãã£å€ãã³ããŒ
th.Start();
}
public static void StaticMethod1()
{
Debug.WriteLine(System.Threading.Thread.CurrentThread.CurrentCulture.ToString()); // â 芪ã«ã«ãã£ãšåãå€
Debug.WriteLine(System.Threading.Thread.CurrentThread.CurrentUICulture.ToString()); // â 芪ã«ã«ãã£ãšåãå€
}ç§»è¡ã¡ã¢ïŒèª€èšïŒ: åæã®ãµã³ãã«ã«ã¯æ¬¡ã®èª€ããããã
C# ãšããŠæç«ããªãããä¿®æ£ããã
public sub Method1()⊠VB ã®æ§æãæ··åšïŒpublic voidïŒth,Start()⊠ã«ã³ããšããªãªãã®èª€ãïŒth.Start();ïŒpublic static StaticMethod1()⊠æ»ãå€ã®åãç¡ãïŒstatic voidïŒth.CurrentCultureã« 2 åãšãCurrentCultureãä»£å ¥ããŠãã
â 2 è¡ç®ã¯th.CurrentUICulture = ...CurrentUICultureãæ£ãã
-
Parallel.ForãParallel.Invoke ãå©çšãã䞊ååŠçã§ã¯ã
æ¬äœã¹ã¬ããã«ããåŠçãšå¥ã¹ã¬ããã«ããåŠçãæ··åšããã -
å¥ã¹ã¬ããã®ã«ã«ãã£ã¯ããã©ã«ãå€ãšãªãã
â» Web.configã®èšå®ã¯é©çšãããªãã
- åºæ¬
System.Threading.Tasks.Parallel.For(0, 5, i =>
{
Debug.WriteLine(System.Threading.Thread.CurrentThread.CurrentCulture.ToString()); // â å¥ã¹ã¬ããã§å®è¡ãããå Žåã¯ããã©ã«ãå€
Debug.WriteLine(System.Threading.Thread.CurrentThread.CurrentUICulture.ToString()); // â å¥ã¹ã¬ããã§å®è¡ãããå Žåã¯ããã©ã«ãå€
});- å¥ã¹ã¬ããã«ã«ã«ãã£ãèšå®ãã
System.Globalization.CultureInfo culture = System.Threading.Thread.CurrentThread.CurrentCulture; // â æ¬äœã¹ã¬ããã®ã«ã«ãã£å€ãã³ããŒ
System.Globalization.CultureInfo uiCulture = System.Threading.Thread.CurrentThread.CurrentUICulture; // â æ¬äœã¹ã¬ããã®ã«ã«ãã£å€ãã³ããŒ
System.Threading.Tasks.Parallel.For(0, 5, i =>
{
System.Threading.Thread.CurrentThread.CurrentCulture = culture; // â ã³ããŒããã«ã«ãã£ãèšå®
System.Threading.Thread.CurrentThread.CurrentUICulture = uiCulture; // â ã³ããŒããã«ã«ãã£ãèšå®
Debug.WriteLine(System.Threading.Thread.CurrentThread.CurrentCulture.ToString()); // â æ¬äœã¹ã¬ãããšåãã«ã«ãã£
Debug.WriteLine(System.Threading.Thread.CurrentThread.CurrentUICulture.ToString()); // â æ¬äœã¹ã¬ãããšåãã«ã«ãã£
});- Parallel ã¯ã©ã¹ (System.Threading.Tasks)
https://learn.microsoft.com/ja-jp/dotnet/api/system.threading.tasks.parallel
è£è¶³ïŒ.NET 4.5 以éã¯åŒãç¶ãããïŒææ°åïŒ: ãã® 2 ç¯ãæ±ã
**ãæ°ããã¹ã¬ããã§ã¯ã«ã«ãã£ãæ¢å®å€ã«æ»ãã**ãšããåé¡ã¯ã
.NET Framework 4.5 ã§æ¹åãããŠããã
ç æ°èŠã¹ã¬ãã / Task ã®ã«ã«ã㣠ã.NET 4.0 æ¢å®å€ã«æ»ãïŒæ¬ããŒãžã®èšè¿°ïŒ .NET 4.5 以é DefaultThreadCurrent*ã§æ¢å®ãèšå®ã§ãã.NET Framework 4.6 以é / .NET Core CurrentCultureãéåæã®æµãã§åŒãç¶ããã// ã¢ããªèµ·åæã« 1 床ã ãæžãã°ã以éã®ã¹ã¬ããã»Task ã«ç¶æ¿ããã CultureInfo.DefaultThreadCurrentCulture = new CultureInfo("ja-JP"); CultureInfo.DefaultThreadCurrentUICulture = new CultureInfo("ja");.NET Framework 4.6 以éã§ã¯
CurrentCultureã
AsyncLocalçžåœã®ä»çµã¿ã§ä¿æãããããã«ãªã£ãããã
async/await ããŸããã§ãåŒãç¶ããããCultureInfo.CurrentCulture = new CultureInfo("en-US"); await Task.Run(() => Console.WriteLine(CultureInfo.CurrentCulture)); // .NET 4.6+ / .NET Core â en-USïŒåŒãç¶ãããïŒ // .NET 4.5 以å â æ¢å®å€ãã ããæç€ºçã«
new Thread(...)ããå Žåã¯åŒãç¶ãããªã
ïŒåæã®ãµã³ãã«ã®éããæã§ã³ããŒãèŠãïŒãASP.NET Core ã§ã¯
RequestLocalizationMiddlewareã
ãªã¯ãšã¹ãããšã«èšå®ããããã
ã¢ã㪠ã³ãŒãåŽã§æèããå¿ èŠã¯ã»ãŒç¡ãã
-
æååã®æžåŒèšå® - ã¯ã©ã¹ã©ã€ãã©ãª | ++C++; // æªç¢ºèªé£è¡ C
http://ufcpp.net/study/dotnet/bcl_format.html#culture -
ç·æŠãœãããŠã§ã¢æšé²æ
- Programming-.NET Framework-ãã±ãŒã«(ã«ã«ãã£)
- ã«ã«ãã£ã®åºæ¬ãšã«ã«ãã£æ
å ± (CultureInfo)
http://smdn.jp/programming/netfx/locale/0_abstract/ - ã«ã«ãã£ãšæžåŒã»ããã¹ãåŠçã»æŠ
http://smdn.jp/programming/netfx/locale/1_infoes/
- ã«ã«ãã£ã®åºæ¬ãšã«ã«ãã£æ
å ± (CultureInfo)
- Programming-.NET Framework-æåå
- æååãšæ¯èŒãªãã·ã§ã³ã»ã«ã«ãã£ã®äžŠã¹æ¿ãèŠå
http://smdn.jp/programming/netfx/string/2_2_compareoptions/
- æååãšæ¯èŒãªãã·ã§ã³ã»ã«ã«ãã£ã®äžŠã¹æ¿ãèŠå
- Programming-.NET Framework-ãã±ãŒã«(ã«ã«ãã£)
- CultureInfo ã¯ã©ã¹
https://learn.microsoft.com/ja-jp/dotnet/api/system.globalization.cultureinfo - .NET ã®ã°ããŒããªãŒãŒã·ã§ã³
https://learn.microsoft.com/ja-jp/dotnet/core/extensions/globalization - .NET ã°ããŒããªãŒãŒã·ã§ã³ãš ICU
https://learn.microsoft.com/ja-jp/dotnet/core/extensions/globalization-icu - æååãæ¯èŒããããã®ãã¹ã ãã©ã¯ãã£ã¹
https://learn.microsoft.com/ja-jp/dotnet/standard/base-types/best-practices-strings
Tags: ç§»è¡, .NETéçº, åœéå察å¿