Partager via


Pour prendre en charge plusieurs langues

[La fonctionnalité associée à cette page, le Kit de développement logiciel (SDK) Windows Media Format 11, est une fonctionnalité héritée. Il a été remplacé par lecteur source et enregistreur récepteur. Le lecteur source et l’enregistreur récepteur ont été optimisés pour Windows 10 et Windows 11. Microsoft recommande vivement que le nouveau code utilise le lecteur source et l’enregistreur récepteur au lieu du Kit de développement logiciel (SDK) Windows Media Format 11, lorsque cela est possible. Microsoft suggère que le code existant qui utilise les API héritées soit réécrit pour utiliser les nouvelles API si possible.]

Vous pouvez prendre en charge plusieurs langues à la fois dans les flux et dans les métadonnées. Le cœur de la prise en charge de plusieurs langues dans le Kit de développement logiciel (SDK) au format Windows Media est l’interface IWMLanguageList , qui gère une liste des langues prises en charge. La liste des langues donne à chaque langue prise en charge un index, qui est utilisé dans différents objets du KIT de développement logiciel (SDK) lors du traitement de plusieurs langues.

La méthode IWMLanguageList::AddLanguageByRFC1766String ajoute un langage à la liste. Vous pouvez identifier les langues déjà dans la liste en obtenant le nombre total de langues avec IWMLanguageList::GetLanguageCount , puis en effectuant une boucle dans les langues appelant IWMLanguageList::GetLanguageDetails pour chacune d’elles. L’index de langue est basé sur zéro.

Pour configurer l’exclusion mutuelle par langue

La configuration d’un objet d’exclusion mutuelle simple par langage est très simple. Chaque flux est désormais associé à une langue. La langue associée à un flux peut être définie à l’aide de IWMStreamConfig3::SetLanguage. Une fois tous les flux mutuellement exclusifs configurés, il vous suffit de créer un objet d’exclusion mutuelle comme vous le feriez pour n’importe quel autre type. Appelez ensuite IWMMutualExclusion::SetType en passant CLSID_WMMUTEX_Language pour le type.

Les flux qui s’excluent mutuellement par langue deviennent plus complexes lorsque les flux exclusifs s’excluent également mutuellement par débit binaire. Dans ce cas, vous devez utiliser des enregistrements mutuellement exclusifs, en effectuant les étapes suivantes :

  1. Créez un objet d’exclusion mutuelle pour les flux de débits binaires différents dans chaque langue. Pour plus d’informations sur la création d’un objet d’exclusion mutuelle par débit binaire, consultez Utilisation de l’exclusion mutuelle à débit binaire multiple.
  2. Créez un objet d’exclusion mutuelle. Appelez IWMMutualExclusion::SetType et passez CLSID_WMMUTEX_Language pour spécifier l’exclusivité par langue.
  3. Obtenez un pointeur vers l’interface IWMMutualExclusion2 de l’objet d’exclusion mutuelle créé à l’étape 2 en appelant la méthode QueryInterfaced’IWMMutualExclusion.
  4. Appelez une fois la méthode IWMMutualExclusion2::AddRecord pour chaque langue pour créer des enregistrements de flux qui s’excluent mutuellement.
  5. Pour chaque enregistrement créé à l’étape 4, ajoutez les flux de la langue appropriée avec des appels à IWMMutualExclusion2::AddStreamForRecord.

Pour lire des fichiers avec plusieurs langues

L’objet reader fournit des méthodes permettant d’identifier les langues disponibles des flux dans un fichier. Vous pouvez récupérer le nombre de langues prises en charge pour une sortie en appelant IWMReaderAdvanced4::GetLanguageCount. Vous pouvez ensuite récupérer des détails sur chaque langue avec des appels à IWMReaderAdvanced4::GetLanguage.

Vous pouvez spécifier la langue à lire en transmettant l’index de cette langue au lecteur avec un appel à IWMReaderAdvanced2::SetOutputSetting. Cette opération sélectionne la langue spécifiée tout en conservant la sélection automatique du flux pour tous les autres objets d’exclusion mutuelle dans le fichier.

Rubriques avancées

IWMLanguageList, interface

IWMMutualExclusion, interface

IWMMutualExclusion2, interface

IWMReaderAdvanced2, interface

IWMReaderAdvanced4, interface

IWMStreamConfig3 Interface