【发布时间】:2021-06-13 01:15:21
【问题描述】:
我将用户的源语言和目标语言作为输入,我想使用 .Net 库生成这些输入的文化,如下所示;
例如,用户从两个组合框中选择“English”和“Turkish”。然后我想从“英语”和土耳其语中生成“En”和“Tr”。我想为所有可能的语言实现这一点,这样做的正确方法是什么?
我将在我的请求中使用这些文化来翻译文本,而不是这个;
string url = String.Format("https://translate.googleapis.com/translate_a/single?client=gtx&sl={0}&tl={1}&dt=t&q={2}",
"En", "Tr", Uri.EscapeUriString(input));
我想用这个;
string url = String.Format("https://translate.googleapis.com/translate_a/single?client=gtx&sl={0}&tl={1}&dt=t&q={2}",
sourceLanguage, targetLanguage, Uri.EscapeUriString(input));
我不想使用字典,因为我需要手动输入每种语言的所有信息,我想用 CultureInfo 类来做,但我还没弄清楚该怎么做。
【问题讨论】:
-
您的实际问题是什么?知道有效的语言 ID?
-
您可以从一开始就将此信息与语言名称相关联。例如,使用包含以下对的
Dictionary<string, string>:English, en-GB、Turkish, tr-TR等。您以某种方式将这些名称放入您的 ComboBoxes 中。 -
我想要做的基本上是使用 .Net 库将“English”转换为“En”,将“Turkish”转换为“Tr”等。
-
好的,但是,您是如何将这些名称添加到组合框的?你应该有一个字符串的集合,某种来源。请注意,例如,
English非常模糊。您有大约 10 种使用该名称的子语言。无论如何,您可以获得DisplayName.StartsWith("English")所在的第一个文化并阅读其TwoLettersISOLanguageName属性。 -
好吧,如果你这样做:
var culture = CultureInfo.GetCultures(CultureTypes.NeutralCultures).FirstOrDefault(c => c.DisplayName.StartsWith("English"))?.TwoLetterISOLanguageName;,够好吗?
标签: c# language-translation google-translation-api