希伯来语字符串concat与数字结果顺序错误

我正在尝试从语言文件中提取一个字符串,并在执行过程中包含一个变量。问题是,根据语言的不同,变量的位置会有所不同。在希伯来语的情况下,似乎不可能将变量放在最后。由于无法从资源文件中提取字符串,因此无法使用字符串插值。 参见video 有提示吗?

我正在使用的代码是:

// the {0} should be positioned at the end of the Hebrew string
<data name="BeforeStartingYourMeeting" xml:space="preserve">
  <value>{0}פני התחלת הישיבה שלך</value>
</data>

我稍后将尝试通过以下方式在代码中使用字符串:

string timeLeft = appointment.Start.Subtract(DateTime.Now).TotalMinutes + " min";
string timeBeforeMeetingLabel = string.Format(Properties.Resources.BeforeStartingYourMeeting,timeLeft);

我读过:

这个案例正好描述了我的问题:

想到以下解决方法,但最终遇到了相同的问题:

<data name="BeforeStartingYourMeeting" xml:space="preserve">
  <value>פני התחלת הישיבה שלך {time}</value>
</data>

代码here清楚地表明了问题所在。输入字符串不同但输出相同!!!看起来它与必须使用特定RTL格式的字符串的显示有关。如果我将生成的行复制/粘贴到文本板中,则第二行是不同的。

ddrcon 回答:希伯来语字符串concat与数字结果顺序错误

如@Avi在他的post中所述:

  

“ unicode字符” RTL标记”(U + 200F)和“ LTR标记”(U + 200E)   正是为此目的而创建的。”

参考:  -https://docs.microsoft.com/en-us/globalization/input/text-rendering#directionality-control-marks

代码可以更新如下:

string heText1 = "פני התחלת הישיבה שלך time";
string timePattern1 = "time";
Console.WriteLine(heText1.Replace(timePattern1,"\u200e" +DateTime.Now.ToString("dd/MM/yyyy")));

提琴code

N.B .:我仍然无法在资源文件中存储带有{0}模式的希伯来语字符串,并且不得不接受使用笨拙的{time}模式并进行替换。

本文链接:https://www.f2er.com/3130034.html

大家都在问