【发布时间】:2015-05-18 01:23:17
【问题描述】:
C#6.0 有一个 string interpolation - 一个很好的功能来格式化字符串,例如:
var name = "John";
WriteLine($"My name is {name}");
示例转换为
var name = "John";
WriteLine(String.Format("My name is {0}", name));
从本地化的角度来看,存储这样的字符串要好得多:
"My name is {name} {middlename} {surname}"
比 String.Format 表示法:
"My name is {0} {1} {2}"
如何使用字符串插值进行 .NET 本地化?有没有办法把 $"..." 放到资源文件中?还是应该像“...{name}”一样存储字符串并以某种方式即时插值?
附:这个问题不是关于“如何制作 string.FormatIt 扩展”(有很多这样的库、SO 答案等)。这个问题是关于“本地化”上下文中“字符串插值”的 Roslyn 扩展(两者都是 MS .NET 词汇表中的术语),或者像 Dylan 提出的动态用法。
【问题讨论】:
-
你能澄清你的问题吗?您是在问如何在 C# 6.0 中执行此操作,还是在早期版本的 C# 中执行此操作?
-
我不会将这些字符串存储在文件中以供以后读取。您仍然应该创建一个存储这些字段的类。将它们读入。然后在本地通过字符串插值传递它们。
-
@nintendojunkie 我在问 C# 6.0。关于是否可以使用 C# 6.0 字符串插值进行本地化以及如果可能的话如何做。
-
还没有回应,只是我正在研究 Roslyn 的一个分支以提供 TranslatableStrings