乘风破浪,遇见最美Windows 11之现代Windows桌面应用开发 - Azure认知服务翻译器及支持语言清单

什么是Azure认知服务翻译器

https://azure.microsoft.com/zh-cn/services/cognitive-services/translator/

image

Azure认知服务翻译器是一种基于云的机器翻译服务,你通过简单的REST API调用便可使用该服务来翻译文本。该服务使用先进的神经机器翻译技术并提供统计机器翻译技术。“自定义翻译器”是“翻译器”的扩展,用于构建神经翻译系统。可以将自定义的翻译系统与“翻译器”或Microsoft语音服务配合使用来翻译文本。

支持语言清单

https://docs.microsoft.com/en-us/azure/cognitive-services/translator/language-support

https://docs.microsoft.com/zh-cn/azure/cognitive-services/translator/language-support

英语描述 英语代号 语言编码 中文描述
Detect language Detect N/A 自动检测
Afrikaans Afrikaans af 南非荷兰语
Albanian Albanian sq 阿尔巴尼亚语
Amharic Amharic am 阿姆哈拉语
Arabic Arabic ar 阿拉伯语
Armenian Armenian hy 亚美尼亚语
Assamese Assamese as 阿萨姆语
Azerbaijani (Latin) Azerbaijani_Latin az 阿塞拜疆语(拉丁语)
Bangla Bengali bn 孟加拉语
Bashkir Bashkir ba 巴什基尔语
Basque Basque eu 巴斯克语
Bosnian (Latin) Bosnian_Latin bs 波斯尼亚语(拉丁语系)
Bulgarian Bulgarian bg 保加利亚语
Cantonese (Traditional) Cantonese yue 粤语(繁体)
Catalan Catalan ca 加泰罗尼亚语
Chinese (Literary) Chinese_Literature lzh 中文(文学)
Chinese Simplified Simplified_Chinese zh-Hans 简体中文
Chinese Traditional Chinese_Traditional zh-Hant 中文(繁体)
Croatian Croatian hr 克罗地亚语
Czech Czech cs 捷克语
Danish Danish da 丹麦语
Dari Dari prs 达里语
Divehi Divehi dv 马尔代夫语
Dutch Dutch nl 荷兰语
English English en 英语
Estonian Estonian et 爱沙尼亚语
Faroese Faroese fo 法罗语
Fijian Fijian fj 斐济语
Filipino Filipino fil 菲律宾语
Finnish Finnish fi 芬兰语
French French fr 法语
French (Canada) French_Canada fr-CA 法语(加拿大)
Galician Galician gl 加利西亚语
Georgian Georgian ka 格鲁吉亚语
German German de 德语
Greek Greek el 希腊语
Gujarati Gujarati gu 古吉拉特语
Haitian Creole Haitian_Creole ht 海地克里奥尔语
Hebrew Hebrew he 希伯来语
Hindi Hindi hi 印地语
Hmong Daw (Latin) White_Hmong mww 白苗语(拉丁语)
Hungarian Hungarian hu 匈牙利语
Icelandic Icelandic is 冰岛语
Indonesian Indonesian id 印度尼西亚语
Inuinnaqtun Inuktun_language ikt 因纽纳敦语
Inuktitut Inuktitut iu 因纽特语
Inuktitut (Latin) Inuktitut_Latin iu-Latn 因纽特语(拉丁语)
Irish Irish_language ga 爱尔兰语
Italian Italian it 意大利语
Japanese Japanese ja 日语
Kannada Kannada kn 卡纳达语
Kazakh Kazakh kk 哈萨克语
Khmer Khmer km 高棉语
Klingon Klingon tlh-Latn 克林贡语
Klingon (plqaD) Klingon_plqaD tlh-Piqd 克林贡语(plqaD)
Korean Korean ko 朝鲜语
Kurdish (Central) Kurdish_Central ku 中库尔德语(阿拉伯语)
Kurdish (Northern) Kurdish_Northern kmr 南库尔德语(拉丁语)
Kyrgyz (Cyrillic) Kyrgyz_Cyrillic ky 吉尔吉斯语(西里尔语)
Lao Laotian lo 老挝语
Latvian Latvian lv 拉脱维亚语
Lithuanian Lithuanian lt 立陶宛语
Macedonian Macedonian mk 马其顿语
Malagasy Malagasy mg 马达加斯加语
Malay (Latin) Malay ms 马来语(拉丁语系)
Malayalam Malayalam ml 马拉雅拉姆语
Maltese Maltese mt 马耳他语
Maori Maori mi 毛利语
Marathi Marathi mr 马拉地语
Mongolian (Cyrillic) Mongolian_Cyrillic mn-Cyrl 蒙古语(西里尔文)
Mongolian (Traditional) Mongolian_Traditional mn-Mong 蒙古语(传统)
Myanmar Burmese my 缅甸(缅甸语)
Nepali Nepali ne 尼泊尔语
Norwegian Norwegian nb 挪威语
Odia Odia_language or 奥里亚语
Pashto Pashto ps 普什图语
Persian Persian fa 波斯语
Polish Polish pl 波兰语
Portuguese (Brazil) Portuguese_Brazil pt 葡萄牙语(巴西)
Portuguese (Portugal) Portuguese_Portugal pt-PT 葡萄牙语(葡萄牙)
Punjabi Punjabi pa 旁遮普语
Queretaro Otomi Queretaro_Otomi otq 克雷塔罗奥托米语
Romanian Romanian ro 罗马尼亚语
Russian Russian ru 俄语
Samoan (Latin) Samoan_Latin sm 萨摩亚语(拉丁语)
Serbian (Cyrillic) Serbian_Cyrillic sr-Cyrl 塞尔维亚语(西里尔)
Serbian (Latin) Serbian_Latin sr-Latn 塞尔维亚语(拉丁)
Slovak Slovakian sk 斯洛伐克语
Slovenian Slovenian sl 斯洛文尼亚语
Somali (Arabic) Somali_Arabic so 索马里语
Spanish Spanish es 西班牙语
Swahili (Latin) Swahili_Latin sw 斯瓦希里语(拉丁语)
Swedish Swedish sv 瑞典语
Tahitian Tahitian ty 塔希提语
Tamil Tamil ta 泰米尔语
Tatar (Latin) Tatar_Latin tt 鞑靼语(拉丁语)
Telugu Telugu te 泰卢固语
Thai Thai th 泰语
Tibetan Tibetan bo 藏语
Tigrinya Tigrinya ti 提格里尼亚语
Tongan Tonga to 汤加语
Turkish Turkish tr 土耳其语
Turkmen (Latin) Turkmen_Latin tk 土库曼语(拉丁语)
Ukrainian Ukrainian uk 乌克兰语
Upper Sorbian Kamisobe_language hsb 上索布语
Urdu Urdu ur 乌尔都语
Uyghur (Arabic) Uyghur_Arabic ug 维吾尔语(阿拉伯语)
Uzbek (Latin) Uzbek_Latin uz 乌兹别克语(拉丁文)
Vietnamese Vietnamese vi 越南语
Welsh Welsh cy 威尔士语
Yucatec Maya Yucatan_Mayan yua 尤卡坦玛雅语
Zulu Zulu zu 祖鲁语

如果你是把语言编码做枚举值,那么需要把其中的-换成_,使用的时候,再转换回来。

另外,这里面有些语言编码属于C#的关键词,做枚举使用的时候,需要加@符号。属于关键词的包括:

  • @as
  • @is

API对接

API根节点

string EndPoint = "https://api.cognitive.microsofttranslator.com";

API相对路径

string TransApiPath = "/translate"

请求地址

string GetApiAddress(string fromLangCode, string toLangCode)
{
    var apiAddress = $"{EndPoint}{TransApiPath}?api-version=3.0&from={fromLangCode}&to={toLangCode}";
    return apiAddress;
}

示例:

POST https://api.cognitive.microsofttranslator.com/translate?api-version=3.0&from=zh-Hans&to=yue

如果需要自动检测源语言,那么fromLangCode就直接不传即可。

string GetApiAddress(string toLangCode)
{
    var apiAddress = $"{EndPoint}{TransApiPath}?api-version=3.0&to={toLangCode}";
    return apiAddress;
}

示例:

POST https://api.cognitive.microsofttranslator.com/translate?api-version=3.0&to=yue

请求信息

请求方式

  • POST

请求头:

  • ContentType : application/json
  • Accept : application/json

请求授权:

在请求头里面添加授权信息:

  • Ocp-Apim-Subscription-Key : xxxxxxxxxxxxxxxxxxxx
  • Ocp-Apim-Subscription-Region : xxxx

上行结构

public class TransTextItem
{
    public string Text;
}

var transBody = new List<TransTextItem>();
var transTextItem = new TransTextItem
{
    Text = "你是中国人吗?"
};
transBody.add(transTextItem);

示例:

[
    {
        "text": "你是中国人吗?"
    },
    {
        "text": "你是中国人吗?"
    }
]

下行结构

public class TransResultItem
{
    public string Text { get; set; }

    public string To { get; set; }
}

public class TransDetectItem
{
    public string Language { get; set; }

    public string Score { get; set; }
}

public class TransResultGroup
{
    public TransResultItem Translations { get; set; }

    public TransDetectItem DetectedLanguage { get; set; }
}

var transResult = HttpClient.Result as TransResultGroup[];

示例:

[
    {
        "translations": [
            {
                "text": "Are you Chinese?",
                "to": "en"
            }
        ]
    },
    {
        "translations": [
            {
                "text": "Are you Chinese?",
                "to": "en"
            }
        ]
    }
]

或者:

[
    {
        "detectedLanguage": {
            "language": "zh-Hans",
            "score": 1.0
        },
        "translations": [
            {
                "text": "É chinês?",
                "to": "pt-PT"
            }
        ]
    },
    {
        "detectedLanguage": {
            "language": "zh-Hans",
            "score": 1.0
        },
        "translations": [
            {
                "text": "É chinês?",
                "to": "pt-PT"
            }
        ]
    }
]

异常情况的结构:

public class TransErrorItem
{
    public string Code { get; set; }

    public string Message { get; set; }
}

public class TransResultError
{
    public TransErrorItem Error { get; set; }
}

var transResult = HttpClient.Result as TransResultError;
{
    "error": {
        "code": 400035,
        "message": "The source language is not valid."
    }
}

历史小知识

波斯尼亚语和克罗地亚语

https://artsandculture.google.com/entity/m01841n?hl=zh

波斯尼亚语是波斯尼亚和黑塞哥维那的官方语言,属于印欧语系斯拉夫语族的南斯拉夫语支,基于舒特方言。在南斯拉夫社会主义联邦共和国因为内战瓦解前,并没有波斯尼亚语这样的说法,当时塞尔维亚人、克罗地亚人与波斯尼亚人,都是使用一种称为塞尔维亚-克罗地亚语的南斯拉夫官方语言。在内战的过程当中语言也产生了变化,虽然各族群在语言上的差异极微小,但是克罗地亚人主张其语言为不同于塞尔维亚语的克罗地亚语,波斯尼亚人也开始称他们所使用的语言为波斯尼亚语。

参考

posted @ 2022-08-02 16:18  TaylorShi  阅读(121)  评论(0编辑  收藏  举报