c# - 使用 string.Format 进行本地化
问题描述
目前我主要通过将键值对放入Resources.resw
文件来进行本地化。所以我想知道我应该如何本地化需要格式化的字符串或用不同的语言说出具有不同语法顺序的字符串。通过下面的示例可能更容易理解我的意思。
例如,正如本地化官方文档中的这部分所建议的那样,一种语言可以具有以下日期格式
string.Format("Every {0} {1}", monthName, dayNumber);
而其他用途
string.Format("Every {1} {0}", monthName, dayNumber);
在这种情况下,本地化此类字符串的最佳方法是什么?
事物/语法可能比这个例子复杂得多。官方文档中的建议对我来说看起来不太好,因为日期可能无法预测。或者您可以枚举日期,但这需要大量工作。或者假设我们有一个接受用户输入的字符串,比如
string.Format("Do you want to delete {name}?", name);
在另一种语言中,它可能具有这种语法顺序
string.Format("You want to delete {name} do?", name);
不可能像文档中所建议的那样对整个句子进行本地化。
我能想到的避免情况的唯一方法是不要输入用户输入....
解决方案
如果您有权访问日期,则可以使用The Month ("M", "m") 格式说明符
从文档中:
DateTime date1 = new DateTime(2008, 4, 10, 6, 30, 0);
Console.WriteLine(date1.ToString("m",
CultureInfo.CreateSpecificCulture("en-us")));
// Displays April 10
Console.WriteLine(date1.ToString("m",
CultureInfo.CreateSpecificCulture("ms-MY")));
// Displays 10 April
因为string.Format("Do you want to delete {name}?", name);
你可以
$"Do you want to delete the following user? '{name}'";
推荐阅读
- google-sheets - 除了引用的单元格通过 not(isblank) 为空白之外,Arrayformula 正在整个列上扩展
- c# - Devexpress 报告:表重复 C#
- python - xlearn 预测错误给出的 mse 与函数的输出不同
- c - %s 正在跳过整个打印行 - 没有用户输入
- anaconda - 无法将 Seaborn 正确导入我的 IBM Watson-Studio
- java - 通过反向代理的 Java Paho MQTT 客户端连接
- c# - 在 Visual Studio 2015 中调试 nunit 测试时出错
- amazon-web-services - 用于查询另一个区域中存在的 DynamoDB 的 lambda 函数?
- sql-server - 防止 MS SQL Studio 系统连接到多个数据库
- javascript - HTML5 表单验证初始“工具提示”消息