From 2ebd9dfd61489a8456d0e872d4610087bdca2d18 Mon Sep 17 00:00:00 2001 From: Kevin Kowalski Date: Thu, 17 Mar 2022 14:40:42 -0500 Subject: [PATCH] feat(text-to-speech-v1): add voices and update comments --- ...IBM.Watson.TextToSpeech.v1.Examples.csproj | 2 +- .../IBM.Watson.TextToSpeech.v1.csproj | 2 +- ...BM.Watson.TextToSpeech.v1.UnitTests.csproj | 2 +- .../TextToSpeechService.cs | 229 +++++++++--------- 4 files changed, 111 insertions(+), 124 deletions(-) diff --git a/src/IBM.Watson.TextToSpeech.v1/Examples/IBM.Watson.TextToSpeech.v1.Examples.csproj b/src/IBM.Watson.TextToSpeech.v1/Examples/IBM.Watson.TextToSpeech.v1.Examples.csproj index 43dfe043dd..1806b56f4b 100644 --- a/src/IBM.Watson.TextToSpeech.v1/Examples/IBM.Watson.TextToSpeech.v1.Examples.csproj +++ b/src/IBM.Watson.TextToSpeech.v1/Examples/IBM.Watson.TextToSpeech.v1.Examples.csproj @@ -6,7 +6,7 @@ - + diff --git a/src/IBM.Watson.TextToSpeech.v1/IBM.Watson.TextToSpeech.v1.csproj b/src/IBM.Watson.TextToSpeech.v1/IBM.Watson.TextToSpeech.v1.csproj index be66ff76b0..a33ac78c6c 100644 --- a/src/IBM.Watson.TextToSpeech.v1/IBM.Watson.TextToSpeech.v1.csproj +++ b/src/IBM.Watson.TextToSpeech.v1/IBM.Watson.TextToSpeech.v1.csproj @@ -34,8 +34,8 @@ - + diff --git a/src/IBM.Watson.TextToSpeech.v1/Test/Unit/IBM.Watson.TextToSpeech.v1.UnitTests.csproj b/src/IBM.Watson.TextToSpeech.v1/Test/Unit/IBM.Watson.TextToSpeech.v1.UnitTests.csproj index bfe5ca3a35..e96ad2c1db 100644 --- a/src/IBM.Watson.TextToSpeech.v1/Test/Unit/IBM.Watson.TextToSpeech.v1.UnitTests.csproj +++ b/src/IBM.Watson.TextToSpeech.v1/Test/Unit/IBM.Watson.TextToSpeech.v1.UnitTests.csproj @@ -29,7 +29,7 @@ - + diff --git a/src/IBM.Watson.TextToSpeech.v1/TextToSpeechService.cs b/src/IBM.Watson.TextToSpeech.v1/TextToSpeechService.cs index bd0c22ead8..95ad8213b7 100644 --- a/src/IBM.Watson.TextToSpeech.v1/TextToSpeechService.cs +++ b/src/IBM.Watson.TextToSpeech.v1/TextToSpeechService.cs @@ -1,5 +1,5 @@ /** -* (C) Copyright IBM Corp. 2016, 2021. +* (C) Copyright IBM Corp. 2022. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,7 +16,7 @@ */ /** -* IBM OpenAPI SDK Code Generator Version: 3.38.0-07189efd-20210827-205025 +* IBM OpenAPI SDK Code Generator Version: 3.46.0-a4e29da0-20220224-210428 */ using System.Collections.Generic; @@ -107,30 +107,11 @@ public DetailedResponse ListVoices() /// **See also:** [Listing a specific /// voice](https://cloud.ibm.com/docs/text-to-speech?topic=text-to-speech-voices#listVoice). /// - /// ### Important voice updates for IBM Cloud - /// - /// The service's voices underwent significant change on 2 December 2020. - /// * The Arabic, Chinese, Dutch, Australian English, and Korean voices are now neural instead of concatenative. - /// * The `ar-AR_OmarVoice` voice is deprecated. Use `ar-MS_OmarVoice` voice instead. - /// * The `ar-AR` language identifier cannot be used to create a custom model. Use the `ar-MS` identifier - /// instead. - /// * The standard concatenative voices for the following languages are now deprecated: Brazilian Portuguese, - /// United Kingdom and United States English, French, German, Italian, Japanese, and Spanish (all dialects). - /// * The features expressive SSML, voice transformation SSML, and use of the `volume` attribute of the - /// `` element are deprecated and are not supported with any of the service's neural voices. - /// * All of the service's voices are now customizable and generally available (GA) for production use. - /// - /// The deprecated voices and features will continue to function for at least one year but might be removed at a - /// future date. You are encouraged to migrate to the equivalent neural voices at your earliest convenience. For - /// more information about all voice updates, see the [2 December 2020 service - /// update](https://cloud.ibm.com/docs/text-to-speech?topic=text-to-speech-release-notes#December2020) in the - /// release notes for IBM Cloud. + /// **Note:** The Arabic, Chinese, Czech, Dutch (Belgian and Netherlands), Australian English, Korean, and + /// Swedish languages and voices are supported only for IBM Cloud; they are deprecated for IBM Cloud Pak for + /// Data. Also, the `ar-AR_OmarVoice` voice is deprecated; use the `ar-MS_OmarVoice` voice instead. /// - /// The voice for which information is to be returned. For more information about specifying - /// a voice, see **Important voice updates for IBM Cloud** in the method description. - /// - /// **IBM Cloud:** The Arabic, Chinese, Dutch, Australian English, and Korean languages and voices are supported - /// only for IBM Cloud. + /// The voice for which information is to be returned. /// The customization ID (GUID) of a custom model for which information is to be /// returned. You must make the request with credentials for the instance of the service that owns the custom /// model. Omit the parameter to see information about the specified voice with no customization. @@ -185,11 +166,7 @@ public DetailedResponse GetVoice(string voice, string customizationId = n public class GetVoiceEnums { /// - /// The voice for which information is to be returned. For more information about specifying a voice, see - /// **Important voice updates for IBM Cloud** in the method description. - /// - /// **IBM Cloud:** The Arabic, Chinese, Dutch, Australian English, and Korean languages and voices are - /// supported only for IBM Cloud. + /// The voice for which information is to be returned. /// public class VoiceValue { @@ -202,6 +179,10 @@ public class VoiceValue /// public const string AR_MS_OMARVOICE = "ar-MS_OmarVoice"; /// + /// Constant CS_CZ_ALENAVOICE for cs-CZ_AlenaVoice + /// + public const string CS_CZ_ALENAVOICE = "cs-CZ_AlenaVoice"; + /// /// Constant DE_DE_BIRGITVOICE for de-DE_BirgitVoice /// public const string DE_DE_BIRGITVOICE = "de-DE_BirgitVoice"; @@ -222,13 +203,17 @@ public class VoiceValue /// public const string DE_DE_ERIKAV3VOICE = "de-DE_ErikaV3Voice"; /// - /// Constant EN_AU_CRAIGVOICE for en-AU-CraigVoice + /// Constant EN_AU_CRAIGVOICE for en-AU_CraigVoice + /// + public const string EN_AU_CRAIGVOICE = "en-AU_CraigVoice"; + /// + /// Constant EN_AU_MADISONVOICE for en-AU_MadisonVoice /// - public const string EN_AU_CRAIGVOICE = "en-AU-CraigVoice"; + public const string EN_AU_MADISONVOICE = "en-AU_MadisonVoice"; /// - /// Constant EN_AU_MADISONVOICE for en-AU-MadisonVoice + /// Constant EN_AU_STEVEVOICE for en-AU_SteveVoice /// - public const string EN_AU_MADISONVOICE = "en-AU-MadisonVoice"; + public const string EN_AU_STEVEVOICE = "en-AU_SteveVoice"; /// /// Constant EN_GB_CHARLOTTEV3VOICE for en-GB_CharlotteV3Voice /// @@ -370,6 +355,10 @@ public class VoiceValue /// public const string NL_BE_ADELEVOICE = "nl-BE_AdeleVoice"; /// + /// Constant NL_BE_BRAMVOICE for nl-BE_BramVoice + /// + public const string NL_BE_BRAMVOICE = "nl-BE_BramVoice"; + /// /// Constant NL_NL_EMMAVOICE for nl-NL_EmmaVoice /// public const string NL_NL_EMMAVOICE = "nl-NL_EmmaVoice"; @@ -386,6 +375,10 @@ public class VoiceValue /// public const string PT_BR_ISABELAV3VOICE = "pt-BR_IsabelaV3Voice"; /// + /// Constant SV_SE_INGRIDVOICE for sv-SE_IngridVoice + /// + public const string SV_SE_INGRIDVOICE = "sv-SE_IngridVoice"; + /// /// Constant ZH_CN_LINAVOICE for zh-CN_LiNaVoice /// public const string ZH_CN_LINAVOICE = "zh-CN_LiNaVoice"; @@ -414,6 +407,10 @@ public class VoiceValue /// **See also:** [The HTTP /// interface](https://cloud.ibm.com/docs/text-to-speech?topic=text-to-speech-usingHTTP#usingHTTP). /// + /// **Note:** The Arabic, Chinese, Czech, Dutch (Belgian and Netherlands), Australian English, Korean, and + /// Swedish languages and voices are supported only for IBM Cloud; they are deprecated for IBM Cloud Pak for + /// Data. Also, the `ar-AR_OmarVoice` voice is deprecated; use the `ar-MS_OmarVoice` voice instead. + /// /// ### Audio formats (accept types) /// /// The service can return audio in the following formats (MIME types). @@ -451,25 +448,6 @@ public class VoiceValue /// formats, see [Using audio /// formats](https://cloud.ibm.com/docs/text-to-speech?topic=text-to-speech-audio-formats). /// - /// ### Important voice updates for IBM Cloud - /// - /// The service's voices underwent significant change on 2 December 2020. - /// * The Arabic, Chinese, Dutch, Australian English, and Korean voices are now neural instead of concatenative. - /// * The `ar-AR_OmarVoice` voice is deprecated. Use `ar-MS_OmarVoice` voice instead. - /// * The `ar-AR` language identifier cannot be used to create a custom model. Use the `ar-MS` identifier - /// instead. - /// * The standard concatenative voices for the following languages are now deprecated: Brazilian Portuguese, - /// United Kingdom and United States English, French, German, Italian, Japanese, and Spanish (all dialects). - /// * The features expressive SSML, voice transformation SSML, and use of the `volume` attribute of the - /// `` element are deprecated and are not supported with any of the service's neural voices. - /// * All of the service's voices are now customizable and generally available (GA) for production use. - /// - /// The deprecated voices and features will continue to function for at least one year but might be removed at a - /// future date. You are encouraged to migrate to the equivalent neural voices at your earliest convenience. For - /// more information about all voice updates, see the [2 December 2020 service - /// update](https://cloud.ibm.com/docs/text-to-speech?topic=text-to-speech-release-notes#December2020) in the - /// release notes for IBM Cloud. - /// /// ### Warning messages /// /// If a request includes invalid query parameters, the service returns a `Warnings` response header that @@ -483,11 +461,13 @@ public class VoiceValue /// `accept` parameter to specify the audio format. For more information about specifying an audio format, see /// **Audio formats (accept types)** in the method description. (optional, default to /// audio/ogg;codecs=opus) - /// The voice to use for synthesis. For more information about specifying a voice, see - /// **Important voice updates for IBM Cloud** in the method description. - /// - /// **IBM Cloud:** The Arabic, Chinese, Dutch, Australian English, and Korean languages and voices are supported - /// only for IBM Cloud. + /// The voice to use for synthesis. If you omit the `voice` parameter, the service uses a + /// default voice, which depends on the version of the service that you are using: + /// * _For IBM Cloud,_ the service always uses the US English `en-US_MichaelV3Voice` by default. + /// * _For IBM Cloud Pak for Data,_ the default voice depends on the voices that you installed. If you installed + /// the _enhanced neural voices_, the service uses the US English `en-US_MichaelV3Voice` by default; if that + /// voice is not installed, you must specify a voice. If you installed the _neural voices_, the service always + /// uses the Australian English `en-AU_MadisonVoice` by default. /// /// **See also:** See also [Using languages and /// voices](https://cloud.ibm.com/docs/text-to-speech?topic=text-to-speech-voices). (optional, default to @@ -617,11 +597,13 @@ public class AcceptValue } /// - /// The voice to use for synthesis. For more information about specifying a voice, see **Important voice - /// updates for IBM Cloud** in the method description. - /// - /// **IBM Cloud:** The Arabic, Chinese, Dutch, Australian English, and Korean languages and voices are - /// supported only for IBM Cloud. + /// The voice to use for synthesis. If you omit the `voice` parameter, the service uses a default voice, + /// which depends on the version of the service that you are using: + /// * _For IBM Cloud,_ the service always uses the US English `en-US_MichaelV3Voice` by default. + /// * _For IBM Cloud Pak for Data,_ the default voice depends on the voices that you installed. If you + /// installed the _enhanced neural voices_, the service uses the US English `en-US_MichaelV3Voice` by + /// default; if that voice is not installed, you must specify a voice. If you installed the _neural voices_, + /// the service always uses the Australian English `en-AU_MadisonVoice` by default. /// /// **See also:** See also [Using languages and /// voices](https://cloud.ibm.com/docs/text-to-speech?topic=text-to-speech-voices). @@ -637,6 +619,10 @@ public class VoiceValue /// public const string AR_MS_OMARVOICE = "ar-MS_OmarVoice"; /// + /// Constant CS_CZ_ALENAVOICE for cs-CZ_AlenaVoice + /// + public const string CS_CZ_ALENAVOICE = "cs-CZ_AlenaVoice"; + /// /// Constant DE_DE_BIRGITVOICE for de-DE_BirgitVoice /// public const string DE_DE_BIRGITVOICE = "de-DE_BirgitVoice"; @@ -657,13 +643,17 @@ public class VoiceValue /// public const string DE_DE_ERIKAV3VOICE = "de-DE_ErikaV3Voice"; /// - /// Constant EN_AU_CRAIGVOICE for en-AU-CraigVoice + /// Constant EN_AU_CRAIGVOICE for en-AU_CraigVoice + /// + public const string EN_AU_CRAIGVOICE = "en-AU_CraigVoice"; + /// + /// Constant EN_AU_MADISONVOICE for en-AU_MadisonVoice /// - public const string EN_AU_CRAIGVOICE = "en-AU-CraigVoice"; + public const string EN_AU_MADISONVOICE = "en-AU_MadisonVoice"; /// - /// Constant EN_AU_MADISONVOICE for en-AU-MadisonVoice + /// Constant EN_AU_STEVEVOICE for en-AU_SteveVoice /// - public const string EN_AU_MADISONVOICE = "en-AU-MadisonVoice"; + public const string EN_AU_STEVEVOICE = "en-AU_SteveVoice"; /// /// Constant EN_GB_CHARLOTTEV3VOICE for en-GB_CharlotteV3Voice /// @@ -805,6 +795,10 @@ public class VoiceValue /// public const string NL_BE_ADELEVOICE = "nl-BE_AdeleVoice"; /// + /// Constant NL_BE_BRAMVOICE for nl-BE_BramVoice + /// + public const string NL_BE_BRAMVOICE = "nl-BE_BramVoice"; + /// /// Constant NL_NL_EMMAVOICE for nl-NL_EmmaVoice /// public const string NL_NL_EMMAVOICE = "nl-NL_EmmaVoice"; @@ -821,6 +815,10 @@ public class VoiceValue /// public const string PT_BR_ISABELAV3VOICE = "pt-BR_IsabelaV3Voice"; /// + /// Constant SV_SE_INGRIDVOICE for sv-SE_IngridVoice + /// + public const string SV_SE_INGRIDVOICE = "sv-SE_IngridVoice"; + /// /// Constant ZH_CN_LINAVOICE for zh-CN_LiNaVoice /// public const string ZH_CN_LINAVOICE = "zh-CN_LiNaVoice"; @@ -845,32 +843,14 @@ public class VoiceValue /// **See also:** [Querying a word from a /// language](https://cloud.ibm.com/docs/text-to-speech?topic=text-to-speech-customWords#cuWordsQueryLanguage). /// - /// ### Important voice updates for IBM Cloud - /// - /// The service's voices underwent significant change on 2 December 2020. - /// * The Arabic, Chinese, Dutch, Australian English, and Korean voices are now neural instead of concatenative. - /// * The `ar-AR_OmarVoice` voice is deprecated. Use `ar-MS_OmarVoice` voice instead. - /// * The `ar-AR` language identifier cannot be used to create a custom model. Use the `ar-MS` identifier - /// instead. - /// * The standard concatenative voices for the following languages are now deprecated: Brazilian Portuguese, - /// United Kingdom and United States English, French, German, Italian, Japanese, and Spanish (all dialects). - /// * The features expressive SSML, voice transformation SSML, and use of the `volume` attribute of the - /// `` element are deprecated and are not supported with any of the service's neural voices. - /// * All of the service's voices are now customizable and generally available (GA) for production use. - /// - /// The deprecated voices and features will continue to function for at least one year but might be removed at a - /// future date. You are encouraged to migrate to the equivalent neural voices at your earliest convenience. For - /// more information about all voice updates, see the [2 December 2020 service - /// update](https://cloud.ibm.com/docs/text-to-speech?topic=text-to-speech-release-notes#December2020) in the - /// release notes for IBM Cloud. + /// **Note:** The Arabic, Chinese, Czech, Dutch (Belgian and Netherlands), Australian English, Korean, and + /// Swedish languages and voices are supported only for IBM Cloud; they are deprecated for IBM Cloud Pak for + /// Data. Also, the `ar-AR_OmarVoice` voice is deprecated; use the `ar-MS_OmarVoice` voice instead. /// /// The word for which the pronunciation is requested. /// A voice that specifies the language in which the pronunciation is to be returned. All - /// voices for the same language (for example, `en-US`) return the same translation. For more information about - /// specifying a voice, see **Important voice updates for IBM Cloud** in the method description. - /// - /// **IBM Cloud:** The Arabic, Chinese, Dutch, Australian English, and Korean languages and voices are supported - /// only for IBM Cloud. (optional, default to en-US_MichaelV3Voice) + /// voices for the same language (for example, `en-US`) return the same translation. (optional, default to + /// en-US_MichaelV3Voice) /// The phoneme format in which to return the pronunciation. The Arabic, Chinese, Dutch, /// Australian English, and Korean languages support only IPA. Omit the parameter to obtain the pronunciation in /// the default format. (optional, default to ipa) @@ -939,11 +919,7 @@ public class GetPronunciationEnums { /// /// A voice that specifies the language in which the pronunciation is to be returned. All voices for the - /// same language (for example, `en-US`) return the same translation. For more information about specifying - /// a voice, see **Important voice updates for IBM Cloud** in the method description. - /// - /// **IBM Cloud:** The Arabic, Chinese, Dutch, Australian English, and Korean languages and voices are - /// supported only for IBM Cloud. + /// same language (for example, `en-US`) return the same translation. /// public class VoiceValue { @@ -956,6 +932,10 @@ public class VoiceValue /// public const string AR_MS_OMARVOICE = "ar-MS_OmarVoice"; /// + /// Constant CS_CZ_ALENAVOICE for cs-CZ_AlenaVoice + /// + public const string CS_CZ_ALENAVOICE = "cs-CZ_AlenaVoice"; + /// /// Constant DE_DE_BIRGITVOICE for de-DE_BirgitVoice /// public const string DE_DE_BIRGITVOICE = "de-DE_BirgitVoice"; @@ -976,13 +956,17 @@ public class VoiceValue /// public const string DE_DE_ERIKAV3VOICE = "de-DE_ErikaV3Voice"; /// - /// Constant EN_AU_CRAIGVOICE for en-AU-CraigVoice + /// Constant EN_AU_CRAIGVOICE for en-AU_CraigVoice + /// + public const string EN_AU_CRAIGVOICE = "en-AU_CraigVoice"; + /// + /// Constant EN_AU_MADISONVOICE for en-AU_MadisonVoice /// - public const string EN_AU_CRAIGVOICE = "en-AU-CraigVoice"; + public const string EN_AU_MADISONVOICE = "en-AU_MadisonVoice"; /// - /// Constant EN_AU_MADISONVOICE for en-AU-MadisonVoice + /// Constant EN_AU_STEVEVOICE for en-AU_SteveVoice /// - public const string EN_AU_MADISONVOICE = "en-AU-MadisonVoice"; + public const string EN_AU_STEVEVOICE = "en-AU_SteveVoice"; /// /// Constant EN_GB_CHARLOTTEV3VOICE for en-GB_CharlotteV3Voice /// @@ -1124,6 +1108,10 @@ public class VoiceValue /// public const string NL_BE_ADELEVOICE = "nl-BE_AdeleVoice"; /// + /// Constant NL_BE_BRAMVOICE for nl-BE_BramVoice + /// + public const string NL_BE_BRAMVOICE = "nl-BE_BramVoice"; + /// /// Constant NL_NL_EMMAVOICE for nl-NL_EmmaVoice /// public const string NL_NL_EMMAVOICE = "nl-NL_EmmaVoice"; @@ -1140,6 +1128,10 @@ public class VoiceValue /// public const string PT_BR_ISABELAV3VOICE = "pt-BR_IsabelaV3Voice"; /// + /// Constant SV_SE_INGRIDVOICE for sv-SE_IngridVoice + /// + public const string SV_SE_INGRIDVOICE = "sv-SE_IngridVoice"; + /// /// Constant ZH_CN_LINAVOICE for zh-CN_LiNaVoice /// public const string ZH_CN_LINAVOICE = "zh-CN_LiNaVoice"; @@ -1181,33 +1173,20 @@ public class FormatValue /// **See also:** [Creating a custom /// model](https://cloud.ibm.com/docs/text-to-speech?topic=text-to-speech-customModels#cuModelsCreate). /// - /// ### Important voice updates for IBM Cloud - /// - /// The service's voices underwent significant change on 2 December 2020. - /// * The Arabic, Chinese, Dutch, Australian English, and Korean voices are now neural instead of concatenative. - /// * The `ar-AR_OmarVoice` voice is deprecated. Use `ar-MS_OmarVoice` voice instead. - /// * The `ar-AR` language identifier cannot be used to create a custom model. Use the `ar-MS` identifier - /// instead. - /// * The standard concatenative voices for the following languages are now deprecated: Brazilian Portuguese, - /// United Kingdom and United States English, French, German, Italian, Japanese, and Spanish (all dialects). - /// * The features expressive SSML, voice transformation SSML, and use of the `volume` attribute of the - /// `` element are deprecated and are not supported with any of the service's neural voices. - /// * All of the service's voices are now customizable and generally available (GA) for production use. - /// - /// The deprecated voices and features will continue to function for at least one year but might be removed at a - /// future date. You are encouraged to migrate to the equivalent neural voices at your earliest convenience. For - /// more information about all voice updates, see the [2 December 2020 service - /// update](https://cloud.ibm.com/docs/text-to-speech?topic=text-to-speech-release-notes#December2020) in the - /// release notes for IBM Cloud. + /// **Note:** The Arabic, Chinese, Czech, Dutch (Belgian and Netherlands), Australian English, Korean, and + /// Swedish languages and voices are supported only for IBM Cloud; they are deprecated for IBM Cloud Pak for + /// Data. Also, the `ar-AR` language identifier cannot be used to create a custom model; use the `ar-MS` + /// identifier instead. /// /// The name of the new custom model. /// The language of the new custom model. You create a custom model for a specific /// language, not for a specific voice. A custom model can be used with any voice for its specified language. - /// Omit the parameter to use the the default language, `en-US`. **Note:** The `ar-AR` language identifier - /// cannot be used to create a custom model. Use the `ar-MS` identifier instead. + /// Omit the parameter to use the the default language, `en-US`. /// - /// **IBM Cloud:** The Arabic, Chinese, Dutch, Australian English, and Korean languages and voices are supported - /// only for IBM Cloud. (optional, default to en-US) + /// **Important:** If you are using the service on IBM Cloud Pak for Data _and_ you install the neural voices, + /// the `language`parameter is required. You must specify the language for the custom model in the indicated + /// format (for example, `en-AU` for Australian English). The request fails if you do not specify a language. + /// (optional, default to en-US) /// A description of the new custom model. Specifying a description is recommended. /// (optional) /// CustomModel @@ -1330,6 +1309,10 @@ public class LanguageValue /// public const string AR_MS = "ar-MS"; /// + /// Constant CS_CZ for cs-CZ + /// + public const string CS_CZ = "cs-CZ"; + /// /// Constant DE_DE for de-DE /// public const string DE_DE = "de-DE"; @@ -1390,6 +1373,10 @@ public class LanguageValue /// public const string PT_BR = "pt-BR"; /// + /// Constant SV_SE for sv-SE + /// + public const string SV_SE = "sv-SE"; + /// /// Constant ZH_CN for zh-CN /// public const string ZH_CN = "zh-CN";