如何将 YouTube 本地化(翻译)添加到我的 C# YouTube 视频上传器?

How do I add YouTube localizations (translations) to my C# YouTube video uploader?

我目前正在开发一个可以将视频文件上传到 YouTube 的程序,并希望向该程序添加本地化(翻译)。

我已经复制了在 this link 中给出的示例 .NET 代码。上传视频很顺利,上传本身没有任何问题,但我似乎真的不知道如何为视频添加本地化。

这是我目前拥有的代码:

var video = new Video();
video.Snippet = new VideoSnippet();
video.Snippet.Title = this.Title;
video.Snippet.Description = this.Description;
video.Snippet.Tags = new string[] { "tag1", "tag2" };
video.Snippet.CategoryId = "22"; // See https://developers.google.com/youtube/v3/docs/videoCategories/list
video.Status = new VideoStatus();
video.Status.PrivacyStatus = "unlisted"; // or "private" or "public"

我已经尝试了一些东西:

//Example 1.
video.Localizations["de_DE"].Title = "testLocalization Title";
video.Localizations["de_DE"].Description = "testLocalization Description";

// 

//Example 2.
video.Localizations["de-DE"].Title = "testLocalization Title";
video.Localizations["de-DE"].Description = "testLocalization Description";

//

//Example 3.
VideoLocalization germanLocalization = new VideoLocalization();
germanLocalization.Title = "testLocalization title";
germanLocalization.Description = "testLocalization description";

video.Localizations.Add("de_DE", germanLocalization);

//

//Example 4.
VideoLocalization germanLocalization = new VideoLocalization();
germanLocalization.Title = "testLocalization title";
germanLocalization.Description = "testLocalization description";

video.Localizations.Add("de-DE", germanLocalization);

(我认为它应该包含下划线而不是连字符,因为 docs 就是这么说的,但是尝试了两种方式只是为了看看(连字符和下划线只是前 1 和 2 之间的区别以及示例 3 和 4))

我注意到还有一个 video.Snippet.Localized,但似乎没有办法向其添加国家/地区代码,因此我没有进一步研究。

很想听听任何可以帮助我推进这个项目的人。

经过更长时间的研究,我找到了解决问题的办法。 我在示例 3/4 中走在了正确的轨道上。首先,您想制作一个包含本地化语言代码的 Dictionary,例如"nl-nl" 和实际的 VideoLocalization 对象。

Dictionary<string, VideoLocalization> localizationDictionary = new Dictionary<string, VideoLocalization>();
VideoLocalization dutch = new VideoLocalization();
dutch.Description = "dutch test description";
dutch.Title = "dutch test titel";

然后,您将荷兰语 VideoLocalization 添加到词典中,并将 video.Localizations 设置为您刚刚创建的词典。

localizationDictionary.Add("nl-nl", dutch);
video.Localizations = localizationDictionary;

最后,在 InsertRequest 中将本地化部分添加到 part 参数。

var videosInsertRequest = youtubeService.Videos.Insert(video, "snippet,status,localizations", fileStream, "video/*");

然后你就大功告成了!希望这可以帮助遇到与我相同问题的任何人。