【发布时间】:2023-04-11 01:53:01
【问题描述】:
我有一系列用于本地化目的的资源文件。在 Drupal 中,有一种叫做标记的东西,它是一些有图案的文本,当它被调用时它会被服务器替换。
例子:
英文资源文件:
我的资源文件中有这个英文的本地化文本,我想向 $[user] 展示它是如何工作的。
西班牙语资源文件:
Yo tengo este texto localizado en el archivo de recursos en español y quisiera enseñarle al $[user] cómo esto funciona。
然后,经过一些解析后,我会用正确的详细信息替换令牌。
我目前的方法如下:
public class LocalizationParser
{
private Dictionary<string, dynamic> Tokens { get; set; }
public LocalizationParser()
{
Tokens = new Dictionary<string, dynamic>();
Tokens.Add("$[user]", HttpContext.Current.User.Identity.Name);
}
public string ParseResource(string text)
{
foreach(var token in Tokens)
{
text.Replace(token.Key, token.Value);
}
return text;
}
}
我知道我有一个很大的问题是我要填充所有这些值,并且会产生不必要的性能影响。我知道,如果我可以调用一个只有在找到字典键的情况下才能检索正确值的方法,那么它不会产生巨大的开销。
在 c# 中执行此操作的正确方法是什么? (目前使用 ASP.NET MVC 5 和 EF 6.1)
【问题讨论】:
-
在 ParseResource 循环中,你应该有
text = text.Replace(token.Key, token.Value);才能工作 -
哈哈。谢谢你是对的!方法呢?
-
我也不确定,为什么在那里使用动态。你能解释一下为什么不
吗? -
至于方法,我不确定我是否理解问题所在 - 你是否担心你有成千上万的这些令牌和成千上万的这些消息,但每条消息只包含一个或两个令牌因此遍历所有令牌是资源浪费?
-
@Wapac:动态的原因是因为它正在运行...... OMG 你是对的。我的坏:/顺便说一句,我在考虑未来。我不知道这是否会变大,所以我想以防万一。
标签: c# asp.net drupal localization resource-files