MS_ResourceFiles - NetDevInfraWGinOSSConsortium/NetDevInfraWiki GitHub Wiki
- æ»ãïŒåœéå察å¿é ç®ïŒ
-
ãªãœãŒã¹ãã¡ã€ã«ïŒãããŒãžãªãœãŒã¹ãã¡ã€ã«ïŒã¯ã
-
æååãç»åãªã©ã®ãªãœãŒã¹æ å ±ã Key-Value ã§ä¿æããã
æ¡åŒµåã .resources ãŸã㯠.resx ã®ãã¡ã€ã«ã®ããšã§ããã -
ãããããªèšèªã®ãªãœãŒã¹ãã¡ã€ã«ãçšæãããšã
å€èšèªå¯Ÿå¿ã®ã¢ããªã±ãŒã·ã§ã³ãäœæã§ããã -
ã¢ã»ã³ããªã»ãã¡ã€ã«(dll, exe)ã«å«ããããã
-
-
åè
- ãªãœãŒã¹ãã¡ã€ã«ãããªãœãŒã¹ãååŸãã: .NET Tips: C#, VB.NET
http://dobon.net/vb/dotnet/programing/resourcemanager.html
- ãªãœãŒã¹ãã¡ã€ã«ãããªãœãŒã¹ãååŸãã: .NET Tips: C#, VB.NET
è£è¶³ïŒ2 ã€ã®çšéïŒ: ãªãœãŒã¹ãã¡ã€ã«ã«ã¯ã
æ§è³ªã®ç°ãªã 2 ã€ã®çšéãæ··åšããŠããããã
å ã«åãåããŠãããšèªã¿ããããâ åã蟌ã¿ãªãœãŒã¹ïŒç»åã»ã¢ã€ã³ã³ã»ããã¹ãïŒ â ã1 ãã¡ã€ã«ã«ãŸãšããŠé åžãããããšããé 眮ã®è©± â¡ ããŒã«ã©ã€ãºïŒå€èšèªå¯Ÿå¿ïŒ â ãèšèªããšã«æèšãå·®ãæ¿ãããããšããåœéåã®è©±æ¬ããŒãžã¯â ãç¹åŸŽã§ãâ¡ãå€èšèªå¯Ÿå¿ã§æ±ã£ãŠããã
å®åã§äž»ã«äœ¿ãããã®ã¯â¡ã§ãã
ïŒâ ã¯çŸåšãåã蟌ã¿ãªãœãŒã¹ïŒEmbeddedResourceïŒãçŽæ¥äœ¿ãæ¹ãå€ãïŒã
-
*.resx ãã¡ã€ã« ãš *.designer.csïŒvbïŒãã¡ã€ã«ããæãã
-
*.resx ãã¡ã€ã«
åã蟌ãŸãããªãœãŒã¹ãšããŠåã蟌ãŸãã XML ãã¡ã€ã«ã -
*.designer.csïŒvbïŒãã¡ã€ã«
åã蟌ãŸãããªãœãŒã¹ãèªã¿åãã³ãŒããèªåçæãããã
è£è¶³ïŒãã«ãæã®æµãïŒ:
.resxãã©ã倿ããããã
æŒãããŠãããšãåŸè¿°ã®ãµãã©ã€ã ã¢ã»ã³ããªã®è©±ãçè§£ãããããStrings.resx ââ(ResGen)ââ> Strings.resources âââ Strings.ja.resx ââ(ResGen)ââ> Strings.ja.resources â†â Strings.resources â æ¬äœã¢ã»ã³ããªïŒMyApp.dllïŒã«åã蟌㿠Strings.ja.resources â [AL.exe](MS_NuGetMSB3086) ã§ ja\MyApp.resources.dllïŒãµãã©ã€ãïŒãçæ Strings.Designer.cs â ResXFileCodeGenerator ãèªåçæ ïŒResourceManager çµç±ã§ã¢ã¯ã»ã¹ããå³å¯ã«åæå®ãããããããã£ïŒ
AL.exeãèŠã€ãããªããš MSB3086 ã«ãªãã®ã¯ã
ãã®ãµãã©ã€ã ã¢ã»ã³ããªçæã®æ®µéã§ããã
-
ã¢ã»ã³ããªã»ãã¡ã€ã«(dll, exe)ã«å«ãããããããæ¹ããããã«ããã
-
ãã ãããªãœãŒã¹ãã¡ã€ã«ã®ä¿®æ£ãåæ ããã«ã¯åãã«ããå¿ èŠã
â» ILSpy çã®éã¢ã»ã³ãã«ããŒã«ã«ãŠãªãœãŒã¹ãã¡ã€ã«ã®å 容ã
æœåºãããããšã¯é²ããªã
è£è¶³ïŒé èœã®ç®çã§äœ¿ããªãïŒ: åæèªèº«ã泚èšããŠããéãã
ãªãœãŒã¹ã¯å®¹æã«æœåºã§ããïŒILSpy ã§äžžèŠãïŒããªãœãŒã¹ãã¡ã€ã«ãæäŸããã®ã¯ ã»ããã£ããç·šéããããããšã®é²æ¢ïŒèšå®ãã¡ã€ã«ãšéããå€ã«åºãªãïŒ ã»é åžç©ã®äžäœå ã§ãã£ãŠã ã»ç§å¯æ å ±ã®ä¿è· ã§ã¯ãªããæ¥ç¶æååã»API ããŒããªãœãŒã¹ã«å ¥ããŠã¯ãªããªãã
ããã㯠.NET Core config ã®
ãŠãŒã¶ãŒ ã·ãŒã¯ã¬ãã / ç°å¢å€æ° / Key Vault ã«çœ®ãããŸãããåãã«ããå¿ èŠããšããæ§è³ªã¯éçšäžã®å¶çŽã§ãããã
æèšãéçšäžã«å€ãããå Žåã¯ã
DB ãå€éšãã¡ã€ã«ããèªãä»çµã¿ïŒåŸè¿°ã®IStringLocalizerã®
ã«ã¹ã¿ã å®è£ çïŒãæ€èšããã
-
ãªãœãŒã¹ãã¡ã€ã«ã dll ã«å«ããããšã«ãããå®è¡æã«å·®ãæ¿ããå¯èœ
-
åè
- ResourceManager.ReleaseAllResources ã¡ãœãã (System.Resources)
https://learn.microsoft.com/ja-jp/dotnet/api/system.resources.resourcemanager.releaseallresources
- ResourceManager.ReleaseAllResources ã¡ãœãã (System.Resources)
ç§»è¡ã¡ã¢ïŒè¡šçŸïŒ: ãå®è¡äžã®å·®ãæ¿ããå¯èœãã¯ã
ãµãã©ã€ã ã¢ã»ã³ããªïŒja\MyApp.resources.dllïŒã
å·®ãæ¿ããããããšããæå³ã§ãã
ïŒæ¬äœã¢ã»ã³ããªã«åã蟌ãã æ¢å®ãªãœãŒã¹ã¯å·®ãæ¿ããããªãïŒã
ReleaseAllResources()ã§ãã£ãã·ã¥ãè§£æŸããã°
次åã®ã¢ã¯ã»ã¹ã§åèªã¿èŸŒã¿ããããã
ãã¡ã€ã«ãããã¯ãããŠããå Žåã¯å·®ãæ¿ãèªäœãã§ããªãç¹ã«æ³šæããã
ãªãœãŒã¹ãã¡ã€ã«ã«ç»åãªã©ã®ãã€ããªãã¡ã€ã«ãæååãšåæ§ã«å«ããããšãå¯èœã§ããã
ãã®éãBASE64 ãšã³ã³ãŒããããæååã resx ãã¡ã€ã«ã«æ ŒçŽãããã
- åè
- ãªãœãŒã¹ãã¡ã€ã«ãããªãœãŒã¹ãååŸãã: .NET Tips: C#, VB.NET
http://dobon.net/vb/dotnet/programing/resourcemanager.html
- ãªãœãŒã¹ãã¡ã€ã«ãããªãœãŒã¹ãååŸãã: .NET Tips: C#, VB.NET
è£è¶³ïŒãã€ããªã¯å¥ãã¡ã€ã«åç §ãæãŸããïŒ:
.resxã«
BASE64 ã§çŽæ¥åã蟌ããšã
.resxãè¥å€§ããå·®åãèªããªããªãïŒGit ã§æ±ãã«ããïŒ- ããŒãžç«¶åã解決äžèœã«ãªã
ãšããåé¡ãåºãã
.resxããã¯ããã¡ã€ã«ãžã®çžå¯Ÿãã¹ãã§åç §ãã圢
ïŒVisual Studio ã®æ¢å®åäœïŒã«ããŠããæ¹ãããã<data name="Logo" type="System.Resources.ResXFileRef, System.Windows.Forms"> <value>Resources\logo.png;System.Drawing.Bitmap, System.Drawing</value> </data>**åã«ãDLL ã«ç»åãåã蟌ã¿ããã**ã ããªãã
.resxã䜿ããEmbeddedResourceã§è¶³ããã<ItemGroup> <EmbeddedResource Include="Assets\logo.png" /> </ItemGroup>using var s = Assembly.GetExecutingAssembly() .GetManifestResourceStream("MyApp.Assets.logo.png");
ã«ã«ãã£ã䜿çšãã察å¿ãããªãœãŒã¹ãã¡ã€ã«ãã
æ
å ±ãååŸããããšã§æèšããUI èŠçŽ ã®å€èšèªå¯Ÿå¿ãå¯èœãšãªãïŒè©³çްã¯åŸè¿°ïŒã
ãªãœãŒã¹ãã¡ã€ã«ã®äœææ¹æ³ã«ã¯äžèšã®æ§ãªãã®ãããã
-
Visual Studio ã§ãªãœãŒã¹ãäœæãç·šéã§ããã
-
éåžž Key-Value ã ããç»å / ã¢ã€ã³ã³ / ããã¹ãã»ãã¡ã€ã«ã远å ã§ããã
- åè
- Visual Studioã§ãªãœãŒã¹ã管çãã: .NET Tips: C#, VB.NET
http://dobon.net/vb/dotnet/programing/vsresource.html
- Visual Studioã§ãªãœãŒã¹ã管çãã: .NET Tips: C#, VB.NET
- åè
-
Visual Studio ã§ãªãœãŒã¹äžã«æ¹è¡ã³ãŒããå ¥ããæ¹æ³
ãªãœãŒã¹äœæç»é¢ã«ãŠ
ShiftïŒïŒ»EnterããŒ
ãæŒäžãããšæ¹è¡ã³ãŒããæ¿å ¥ã§ããã
- åè
- æååã®ãªãœãŒã¹ã«æ¹è¡ã³ãŒããåã蟌ãã«ã¯ïŒïŒ»VS 2005ãVS 2008 ïŒ ïŒ IT
http://www.atmarkit.co.jp/fdotnet/dotnettips/825resourcesstrlf/resourcesstrlf.html
- æååã®ãªãœãŒã¹ã«æ¹è¡ã³ãŒããåã蟌ãã«ã¯ïŒïŒ»VS 2005ãVS 2008 ïŒ ïŒ IT
ãªãœãŒã¹ãã¡ã€ã«ãäœæãã API ãçšæãããŠããã
- åè
- ããã°ã©ã ã«ãã .resx ãã¡ã€ã«ã®äœ¿çš
https://learn.microsoft.com/ja-jp/dotnet/core/extensions/work-with-resx-files-programmatically- .resx ãã¡ã€ã«ã®äœæ
- ããã°ã©ã ã«ãã .resx ãã¡ã€ã«ã®äœ¿çš
.txt ãã¡ã€ã«ãããªãœãŒã¹ãã¡ã€ã«ãäœæãã Resgen.exe ãçšæãããŠããã
- åè
- ïŒ ITïŒ.NET TIPS ASP.NETãªãœãŒã¹ã»ãã¡ã€ã«æŽ»çšã§åœéå察å¿ãµã€ããæ§ç¯ããã«ã¯ïŒ - C# VB.NET Webãã©ãŒã
http://www.atmarkit.co.jp/fdotnet/dotnettips/192aspmultilang/aspmultilang.html - Resgen.exe (ãªãœãŒã¹ ãã¡ã€ã« ãžã§ãã¬ãŒã¿ãŒ)
https://learn.microsoft.com/ja-jp/dotnet/framework/tools/resgen-exe-resource-file-generator
- ïŒ ITïŒ.NET TIPS ASP.NETãªãœãŒã¹ã»ãã¡ã€ã«æŽ»çšã§åœéå察å¿ãµã€ããæ§ç¯ããã«ã¯ïŒ - C# VB.NET Webãã©ãŒã
è£è¶³ïŒç¿»èš³ã®ããåã㯠XLIFF / CSV ã§ïŒ: å®åã§ã¯ã
翻蚳äŒç€ŸãçŸå°æ åœè ãšãã¡ã€ã«ãããåãããå¿ èŠãããã
.resxããã®ãŸãŸæž¡ãã®ã¯æ±ãã«ããããã
äžé圢åŒã«å€æããã®ãäžè¬çã§ããã
åœ¢åŒ çšé XLIFF 翻蚳æ¥çã®æšæºåœ¢åŒãå€ãã®ç¿»èš³ããŒã«ãå¯Ÿå¿ CSV / Excel æè»œã瀟å 翻蚳åã Multilingual App Toolkit Visual Studio æ¡åŒµã .resxâ XLIFFããŒã®åœåèŠåãå ã«æ±ºããŠããããšãéèŠã§ã
åŸããäžæ¬å€æããã®ã¯éåžžã«æéããããã
ãªãœãŒã¹ãã¡ã€ã«ã®äœ¿ç𿹿³ã«ã¯äžèšã®æ§ãªãã®ãããã
-
*.resx ãã¡ã€ã«ãéãã
-
ã«ã¹ã¿ã ã»ããŒã«ãèšå®ããã
- ããã«ã¯ãªãã¯ããŠãã¶ã€ãã® DDL ãã Internal or Public ãéžæããã
- ããããã£ã»ã°ãªããã®ã«ã¹ã¿ã ã»ããŒã«ã«ä»¥äžãèšå®ããã
- ResXFileCodeGeneratorïŒInternalïŒ
- PublicResXFileCodeGeneratorïŒPublicïŒ
-
ããã«ããã
- *.resx ãã¡ã€ã«ãšã
- *.designer.csïŒvbïŒãã¡ã€ã«ã
ã°ã«ãŒãåãããã
ç§»è¡ã¡ã¢ïŒè¡šèšïŒ: åæã®ããã¶ã€ãã® DDLãã¯
**ããããããŠã³ ãªã¹ãïŒDDLïŒ**ãæããšèªãããã
ããŒã¿ããŒã¹ã® DDL ãšçŽããããããæ³šèšããŠãã
ïŒå®éã«ã¯ãªãœãŒã¹ ãšãã£ã¿ãŒäžéšã®ãã¢ã¯ã»ã¹ä¿®é£Ÿåãã®
ããããããŠã³ãæãïŒã
-
Internal
ãšã³ããªã»ã¢ã»ã³ã㪠â»1 å ã§ã®ã¿äœ¿çšããå Žåã³ãã©ãéžæããã
ïŒâ» 1: çŸåšã® AppDomain ã®ãšã³ããªãã€ã³ããå«ãã¢ã»ã³ããªïŒ -
Public
-
ä»ã®ã¢ã»ã³ããªã§å©çšããå Žåã³ãã©ãéžæããã
-
ãã®å Žåãåæ¹ã®ã¢ã»ã³ããªã®ã«ãŒãåå空éãäžèŽãããå¿ èŠãããã
-
c# - What does MissingManifestResourceException mean and how to fix it? - Stack Overflow
https://stackoverflow.com/questions/1327692/what-does-missingmanifestresourceexception-mean-and-how-to-fix-it
-
è£è¶³ïŒ
MissingManifestResourceExceptionã®åå ïŒ: åæã
åèã«æããŠãããã®äŸå€ã¯ããªãœãŒã¹åšãã§æé »åºã®ãã©ãã«ã§ãããåå ã®å€§åã¯ããªãœãŒã¹åã®è§£æ±ºã«å€±æããŠããã æåŸ ãããåå: <æ¢å®ã®åå空é>.<ãã©ã«ã>.<ãã¡ã€ã«å> äŸ: MyApp.Resources.Strings ãããããããã ã»ãããžã§ã¯ãã®æ¢å®ã®åå空éã倿Žãã ã».resx ãå¥ãã©ã«ãã«ç§»åãã ã»ãã«ã ã¢ã¯ã·ã§ã³ããåã蟌ãŸãããªãœãŒã¹ãã«ãªã£ãŠããªã ã»ã©ã€ãã©ãªåŽãšã¢ããªåŽã§ã«ãŒãåå空éãéãïŒåæã®ææïŒç¢ºèªæ¹æ³:
// å®éã«åã蟌ãŸããŠãããªãœãŒã¹åãåæãã foreach (var n in Assembly.GetExecutingAssembly().GetManifestResourceNames()) Console.WriteLine(n);
ResourceManagerãèªåã§äœãå Žåã¯ã
ãã®ååãæ£ç¢ºã«æž¡ãå¿ èŠããããvar rm = new ResourceManager("MyApp.Resources.Strings", typeof(SomeTypeInThatAssembly).Assembly);
-
*.designer.csïŒvbïŒã«å®è£ ãããã
ããããã£ã»ããã·ãŒãžã£çµç±ã§ãªãœãŒã¹ã«ã¢ã¯ã»ã¹ã§ããã -
ãªãœãŒã¹ãã¡ã€ã«ã䜿çšãã API ãçšæãããŠããã
-
åè
- ããã°ã©ã ã«ãã .resx ãã¡ã€ã«ã®äœ¿çš
https://learn.microsoft.com/ja-jp/dotnet/core/extensions/work-with-resx-files-programmatically- ãªãœãŒã¹ãåæãã
- ç¹å®ã®ãªãœãŒã¹ãååŸãã
- .resx ãã¡ã€ã«ããã€ã㪠.resources ãã¡ã€ã«ã«å€æãã
- ããã°ã©ã ã«ãã .resx ãã¡ã€ã«ã®äœ¿çš
- ãªãœãŒã¹ã®ååã« "="(åè§ã€ã³ãŒã«) ãå«ããããšãã§ããŸããã
- ãªãœãŒã¹ã®å€ã« LF(Line Feed) ãå«ããããšãã§ããŸããã
ç§»è¡ã¡ã¢ïŒå¶éã®èæ¯ïŒ: ãããã¯
.txt圢åŒïŒResgen.exeãæ±ãname=value圢åŒïŒã®å¶éã§ããã
.resxïŒXMLïŒã§ã¯è©²åœããªã
ïŒ.resxãªã=ã LF ãæ ŒçŽã§ããïŒã
åæã®ããã¹ããã¡ã€ã«ãããªãœãŒã¹ãã¡ã€ã«ãäœæããæ¹æ³ã«
察å¿ããæ³šæäºé ãšèªãã®ã劥åœã§ããã
ã¹ã¬ããæ¯ã«ä¿æããŠãã CurrentUICulture ã«èšå®ãããŠãã
ã«ã«ãã£ã䜿çšããŠã
察å¿ãããªãœãŒã¹ãã¡ã€ã«ããæ
å ±ãååŸããããšã§æèšãã
UI èŠçŽ ã®å€èšèªå¯Ÿå¿ãå¯èœãšãªãã
è£è¶³ïŒ
CurrentCultureãšCurrentUICultureã¯å¥ç©ïŒ: æ··åããããããã
圹å²ãæç¢ºã«åãããŠããã
CurrentCultureCurrentUICultureçšé æžåŒïŒæ¥ä»ã»æ°å€ã»é貚ã»äžŠã¹æ¿ãïŒ ãªãœãŒã¹ã®éžæïŒæèšïŒ äŸ 1,234.56/2026/08/19Strings.ja.resxãéžã¶èšå®å OS ã®å°åèšå® OS ã®è¡šç€ºèšèª // æ¥æ¬èª UIã»ç±³åœåŒã®æ°å€æžåŒããšããçµã¿åãããããåŸã Thread.CurrentThread.CurrentUICulture = new CultureInfo("ja-JP"); // æèš Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US"); // æžåŒ**ãæèšã¯æ¥æ¬èªãªã®ã«æ¥ä»ã
8/19/2026ã«ãªãã**ãšãã£ãçŸè±¡ã¯ã
ãã® 2 ã€ãåãéããŠããããšãåå ã§ããã
-
ãã¡ã€ã«åãšæ¡åŒµåã®éã«ã«ã«ãã£åãæ¿å ¥ããŠ
åã«ã«ãã£åãã®ãªãœãŒã¹ãã¡ã€ã«ãäœæããã -
äžäœã«ã«ãã£çšã®ãªãœãŒã¹ãã¡ã€ã«ã«ã¯å·®åã®ã¿å®çŸ©å¯èœã
R1.resxãããããããæ¢å®ã«ã«ãã£çšãªãœãŒã¹ãã¡ã€ã«
âR1.ja.resxãããããæ¥æ¬èªçšãªãœãŒã¹ãã¡ã€ã«
âR1.en.resxãããããè±èªçšãªãœãŒã¹ãã¡ã€ã«
âR1.zh-Hans.resxããç°¡äœåäžåœèªçšãªãœãŒã¹ãã¡ã€ã«
âR1.zh-Hant.resxããç¹äœåäžåœèªçšãªãœãŒã¹ãã¡ã€ã«
R2.resxãããããããæ¢å®ã«ã«ãã£çšãªãœãŒã¹ãã¡ã€ã«
âR2.ja-JP.resxãããæ¥æ¬èª(æ¥æ¬)çšãªãœãŒã¹ãã¡ã€ã«
âR2.en-US.resxãããè±èª(ç±³åœ)çšãªãœãŒã¹ãã¡ã€ã«
è£è¶³ïŒãæ¢å®ã«ã«ãã£ãã«äœãå ¥ãããïŒ: æ¡åŒµåãªãã®
R1.resxã«
äœèªãå ¥ãããã¯ãèšèšå€æã§ããã
æ¹é å©ç¹ æ¬ ç¹ è±èªãæ¢å®ã«ãã åœéçã«ç¡é£ãæªç¿»èš³ã§ãèªãã æ¥æ¬èªã®ã¿ã®æ¡ä»¶ã§ã¯åé· æ¥æ¬èªãæ¢å®ã«ãã åœå æ¡ä»¶ã§ã¯èªç¶ æªå¯Ÿå¿èšèªã§æ¥æ¬èªãåºã ããŒåã ãå ¥ãã æªç¿»èš³ãäžç®ã§åãã äºæ æã«è¡šç€ºã厩å£ãã
NeutralResourcesLanguage屿§ã§
ãæ¢å®ãªãœãŒã¹ã¯äœèªãããæç€ºããŠãããšã
ãã®èšèªã§ã¯ãµãã©ã€ãã®æ¢çŽ¢ãã¹ãããããããèµ·åãéããªãã[assembly: NeutralResourcesLanguage("ja-JP", UltimateResourceFallbackLocation.MainAssembly)]
- 䜿çšãããªãœãŒã¹ãã¡ã€ã«ãã·ã¹ãã ã倿ããããšãæãã
- CurrentUICulture ã®ã«ã«ãã£ãšäžèŽãããªãœãŒã¹ãã¡ã€ã«ã
ååšããªãå Žåã芪ã«ã«ãã£çšã®ãªãœãŒã¹ãã¡ã€ã«ãé ã«æ€çŽ¢ããã
è£è¶³ïŒæ¢çŽ¢ã®é åºïŒ: å ·äœçã«ã¯æ¬¡ã®é ã«æ¢ãã
CurrentUICulture = "zh-Hant-TW" ã®å Žå â zh-Hant-TW\MyApp.resources.dll ïŒç¹å®ã«ã«ãã£ïŒ â¡ zh-Hant\MyApp.resources.dll ïŒäžç«ã«ã«ãã£ïŒ ⢠zh\MyApp.resources.dll ïŒèŠªïŒ â£ æ¬äœã¢ã»ã³ããªã®æ¢å®ãªãœãŒã¹ ïŒæçµãã©ãŒã«ããã¯ïŒ ⣠ã«ãç¡ããã° MissingManifestResourceExceptionäžäœã«ã«ãã£ã§å·®åã®ã¿å®çŸ©ã§ããïŒåæã®èšè¿°ïŒã®ã¯ã
ãã®æ®µéçãªæ¢çŽ¢ã«ãããã®ã§ãããR1.resx : Yes / No / Cancel / Save / Delete R1.ja.resx : ã¯ã / ããã / ãã£ã³ã»ã« â Save/Delete ã¯æªå®çŸ© â æ¥æ¬èªç°å¢ã§ã¯ Save/Delete ã¯è±èªã®ãŸãŸè¡šç€ºããã
- Parent ããããã£ã§äžäœã®ã«ã«ãã£ãååŸå¯èœãªã®ã§åçŽãªã¢ã«ãŽãªãºã ã§äœæå¯èœã
- ãŸããã¡ãã»ãŒãžãèšèªæ¯ã«çšæããã®ã§ããã°
TwoLetterISOLanguageName ããããã£ã§ 2 éå±€ç®ã®å€ãååŸããããšãå¯èœãªããã
ãã®å€ã§åå²ããã°è¯ãã
- ããŒã«ãªãŒãŒã·ã§ã³çšãªãœãŒã¹ã®é局線æ
https://learn.microsoft.com/ja-jp/dotnet/core/extensions/localization
-
ãµãã©ã€ãã¢ã»ã³ããªïŒ*.resources.dll ãšããåç§°ïŒ
ã§ã«ã«ãã£åãã©ã«ãã«é 眮ãããã -
ãµãã©ã€ã ã¢ã»ã³ããªã®äœæ
https://learn.microsoft.com/ja-jp/dotnet/core/extensions/create-satellite-assemblies
è£è¶³ïŒé 眮ãšé åžã®æ³šæç¹ïŒ: ãµãã©ã€ã ã¢ã»ã³ããªã¯
ã¢ããªã®å®è¡ãã©ã«ãçŽäžã®ã«ã«ãã£åãã©ã«ãã«çœ®ããããbin\Release\net8.0\ MyApp.dll ja\MyApp.resources.dll en\MyApp.resources.dll zh-Hans\MyApp.resources.dllå®åäžã®æ³šæ:
è«ç¹ å 容 é åžæŒã ã«ã«ã㣠ãã©ã«ãã®ã³ããŒå¿ãã§ãè±èªã«ãªãã äžèŠãªèšèª SatelliteResourceLanguagesã§çµããïŒãµã€ãºåæžïŒåäžãã¡ã€ã«çºè¡ ãµãã©ã€ããåã蟌ãŸããïŒ.NET 5+ïŒ NuGet ã§é ã NuGetããã±ãŒãžã®éçºãšå ¬é ã® Localized Package <!-- æ¥æ¬èªãšè±èªã ããåºåããïŒä»èšèªã®ãµãã©ã€ããäœããªãïŒ --> <PropertyGroup> <SatelliteResourceLanguages>ja;en</SatelliteResourceLanguages> </PropertyGroup>NuGet ããã±ãŒãžãå€èšèªã®ãµãã©ã€ããæã£ãŠãããš
åºåãèšãããããäžèšã§çµãã®ã¯å®çšçãªæé©åã§ããã
ãªãœãŒã¹ãã¡ã€ã«ã䜿çšããããšã§ãUI ã®å€èšèªå¯Ÿå¿ãå¯èœã§ããã
Windows FormsãšASP.NET Web Formsã§
å®è£
ã®æ¹æ³ãç°ãªãã
Windows Formsã®å Žå
ASP.NETã®å Žå
WPF/Silverlightã®å Žå
è£è¶³ïŒASP.NET Core ã®æ¹åŒïŒææ°åïŒ: ASP.NET Core ã§ã¯
IStringLocalizer/IViewLocalizerãšããæœè±¡ãéãæ¹åŒã«
å€ãã£ãŠããã// Program.cs builder.Services.AddLocalization(o => o.ResourcesPath = "Resources"); builder.Services.AddControllersWithViews() .AddViewLocalization() .AddDataAnnotationsLocalization(); var cultures = new[] { "ja", "en" }; app.UseRequestLocalization(new RequestLocalizationOptions() .SetDefaultCulture("ja") .AddSupportedCultures(cultures) .AddSupportedUICultures(cultures));public class HomeController(IStringLocalizer<HomeController> L) : Controller { public IActionResult Index() { ViewData["Title"] = L["Welcome"]; ... } }@inject IViewLocalizer L <h1>@L["Welcome"]</h1>æ¬ããŒãžãšã®äž»ãªéã:
.NET Framework ASP.NET Core ã¢ã¯ã»ã¹ Designer.csã®åä»ãããããã£IStringLocalizerïŒDIïŒããŒãç¡ããšã äŸå€ ããŒåããã®ãŸãŸè¿ãïŒèœã¡ãªãïŒ ã«ã«ãã£ã®æ±ºå® ã¹ã¬ããã«èšå® RequestLocalizationMiddlewareïŒURL / Cookie / ããããŒïŒå·®ãæ¿ã ãµãã©ã€ã DLL IStringLocalizerãèªäœïŒDB / JSON ãå¯ïŒ**ãããŒãç¡ããŠãèœã¡ãªãã**ã®ã¯å®åäžå€§ããªéãã§ã
æªç¿»èš³ã®é ç®ããã£ãŠãç»é¢ã¯è¡šç€ºããã
ïŒä»£ããã«ãæªç¿»èš³ã®æ€åºã¯å¥éè¡ãå¿ èŠãããïŒããŸãã
IStringLocalizerãèªäœããã°
DB ã JSON ããæèšãèªããããã
æ¬ããŒãžã®ã¡ãã»ãŒãžçã®é èœåãå¯èœã§è¿°ã¹ã
ãåãã«ããå¿ èŠããšããå¶çŽãåé¿ã§ããã
- ã°ããŒããªãŒãŒã·ã§ã³ãšããŒã«ãªãŒãŒã·ã§ã³
https://learn.microsoft.com/ja-jp/dotnet/core/extensions/globalization-and-localization - .NET ã¢ããªã®ã°ããŒããªãŒãŒã·ã§ã³
https://learn.microsoft.com/ja-jp/dotnet/core/extensions/globalization - .NET ã¢ããªã®ããŒã«ãªãŒãŒã·ã§ã³
https://learn.microsoft.com/ja-jp/dotnet/core/extensions/localization - Windows ãã©ãŒã ã®ã°ããŒãã«å
https://learn.microsoft.com/ja-jp/dotnet/desktop/winforms/advanced/globalizing-windows-forms - ASP.NET Core ã®ã°ããŒããªãŒãŒã·ã§ã³ããã³ããŒã«ãªãŒãŒã·ã§ã³
https://learn.microsoft.com/ja-jp/aspnet/core/fundamentals/localization - WPF ã®ã°ããŒãã©ã€ãºãšããŒã«ã©ã€ãº
https://learn.microsoft.com/ja-jp/dotnet/desktop/wpf/advanced/wpf-globalization-and-localization-overview
- Visual Studioã§ãªãœãŒã¹ã管çãã
https://dobon.net/vb/dotnet/programing/vsresource.html - .resxãã¡ã€ã«ïŒXMLãªãœãŒã¹ãã¡ã€ã«ïŒãäœæãããèªã¿èŸŒã
https://dobon.net/vb/dotnet/programing/resxresourcewriter.html
Tags: ç§»è¡, .NETéçº, åœéå察å¿