Langage: HTML | XAML

Comment charger des ressources de type chaîne (HTML)

Applies to Windows and Windows Phone

Vous pouvez charger des ressources de type chaîne à partir de divers objets, notamment des fichiers de ressources, des bibliothèques, des contrôles, ainsi que des packages et des manifestes d’applications du Windows Store.

Chargement de chaînes à partir de fichiers de ressources

Les ressources de type chaîne sont créées dans des fichiers de ressources et des identificateurs de ressource permettent d’y faire référence. Pour obtenir une présentation des grandes lignes du chargement de ressources de type chaîne, voir Démarrage rapide : utilisation de ressources de type chaîne.

La plupart des applications ont besoin d’un seul fichier de ressources (<language>/Resources.resjson) et peuvent faire référence à leurs ressources en utilisant un chemin d’accès relatif ('String1'). Mais, dans certaines applications, il convient de scinder les ressources en plusieurs fichiers de ressources afin de garantir la séparation des composants.

Par exemple :

Nom de fichier :

Strings/en-US/Errors.resjson


<span data-win-res="{textContent: '/Errors/AlreadyRegistered'}"></span>


WinJS.Resources.getString('/Errors/AlreadyRegistered');

L’identificateur de ressource adopte la forme /ResourceFileName/StringName. Notez que le nom du fichier de ressources n’inclut ni l’extension ni le chemin d’accès au fichier. Les noms des fichiers de ressources n’ont donc pas besoin d’être uniques dans un composant ou un projet.

Chargement de chaînes à partir de bibliothèques, de contrôles ou de kits de développement logiciel (SDK)

Les applications disposent souvent de plusieurs composants ou deviennent dépendantes de bibliothèques, par exemple les bibliothèques portables, les bibliothèques de classes et les bibliothèques de contrôles .NET.

Lorsque cela est possible, les contrôles et les kits de développement logiciel doivent tenter de réduire le nombre de ressources et laisser le soin à l’application de les fournir. Si une bibliothèque doit absolument fournir des ressources, elle doit également permettre aux applications de remplacer ces ressources sous forme de données d’entrée. Cela peut s’avérer nécessaire si la bibliothèque n’a pas la même portée de localisation que l’application qui l’utilise.

Par exemple :


var rating = new WinJS.UI.RatingsControl(el, {label: 'Please Rate', image: 'images/star.png'});

Le contrôle doit afficher les chaînes personnalisées telles qu’elles lui sont passées. En outre, dans la mesure du possible, il doit laisser l’application gérer la localisation.


var control = new Control(el, {commands: [
    {label: R.getString('Reply')}, 
    {label: R.getString('ReplyAll')
    ]});

En règle générale, les composants ou les fichiers bibliothèques sont ajoutés dans un sous-dossier du package où ils sont inclus au cours du processus de création, de la même manière que leurs ressources de type chaîne. Leur identificateur de ressource prend généralement la forme suivante :

ClassLibrarySDKOrAssemblyName/ResourceFileName/StringName

Par programme, les bibliothèques peuvent se procurer leur propre ResourceLoader pour leurs ressources. Par exemple, le code qui suit illustre comment une bibliothèque ou un kit de développement peut se procurer un ResourceLoader pour son propre fichier de ressources :


ResourceLoader R = new Windows.ApplicationModel.Resources.ResourceLoader('ContosoControl/Resources');
R.getString('loadingStr'); // which came from ContosoControl's Resources.resw


Chargement de chaînes à partir d’autres packages

Les ressources de chaque package d’applications du Windows Store sont gérées séparément et sont accessibles par le biais d’éléments ResourceMap de niveau supérieur distincts à partir du ResourceManager actuel. Au sein de chaque package, divers composants peuvent avoir leurs propres ResourceMap Subtree.

Les packages d’infrastructure peuvent avoir accès à leurs propres ressources avec un URI plus absolu :


ResourceLoader R = new Windows.ApplicationModel.Resources.ResourceLoader('ms-resource://Microsoft.WinJS/ui');
R.getString('loadingStr'); // which came from Resources.resw/resjson in the Microsoft.WinJS package.

Pour plus d’informations sur les URI ms-resource, voir URI ms-resource et ms-appx.

Chargement de chaînes à partir de contrôles JavaScript

Les contrôles JavaScript qui fournissent des chaînes par défaut doivent utiliser WinJS.Resources.getString pour extraire leurs propres chaînes.

Les documents HTML chargés dans le contexte Web (avec ms-app-web://) n’ont pas accès aux API WinRT. C’est pourquoi, dans le code JavaScript, vous devez inclure des contrôles JavaScript qui ont été rédigés pour utiliser la fonction WinJS.Resources.getString. Dans le contexte Web, WinJS.Resources.getString recherche finalement un ID donné comme propriété d’un objet String global.


var strings = { 'String1' : 'Hello' };
WinJS.Resources.getString('String1');

Vous pouvez également remplacer la fonction WinJS.Resources.getString pour rechercher des ressources à partir d’un emplacement différent.


WinJS.Resources.getString = function(id){
    return getStringFromOtherService(id);
}

Chargement de chaînes à partir du manifeste d’applications du Windows Store.

Toutes les chaînes et les logos affichables dans le manifeste sont localisables. Les logos peuvent également être adaptés pour les modes Échelle et Contraste élevé. Des références de chaîne peuvent être ajoutées à la place d’une chaîne codée en dur en plaçant un schéma d’URI ms-resource: dans le manifeste. Par exemple :


<DisplayName>ms-resource:String1</DisplayName>

fait référence à une chaîne String1 dans le fichier de ressources Resources.resw ou Resources.resjson, tandis que


ShortName="ms-resource:/ManifestStrings/Shortname"

fait référence à une chaîne Shortname dans le fichier de ressources ManifestStrings.resw/.resjson.

Chargement de chaînes pour une langue ou un contexte spécifique

L’objet ResourceContext par défaut (obtenu de ResourceManager) représente l’état actuel auquel les ressources correspondent. L’objet ResourceContext contient tous les divers qualificateurs de l’utilisateur et de l’ordinateur actuels. Bien que chaque qualificateur puisse être remplacé, cela n’est pas conseillé. La plupart des qualificateurs possèdent un fournisseur de données système qu’il est préférable, dans certains cas, de modifier par le biais d’une API distincte (c’est-à-dire PrimaryLanguageOverride) ou de laisser tel quel.

Windows.ApplicationModel.Resources.Core.ResourceManager.current.defaultContext;

Pour plus d’informations détaillées sur les qualificateurs et leurs fournisseurs de données, voir Comment nommer des ressources à l’aide de qualificateurs.

Le ResourceManager conserve l’objet contextuel par défaut d’après lequel les recherches de ressources ont lieu. Dans certains cas particuliers, il peut être utile de se montrer explicite sur la langue, l’échelle ou tout autre qualificateur de contexte quand l’application charge les ressources. Par exemple, une application peut autoriser un utilisateur à choisir une autre langue pour les info-bulles ou les messages d’erreur. Les recherches peuvent spécifier leur propre objet contextuel remplacé explicite pour influencer la ressource choisie. Pour spécifier un contexte explicite :


var resourceNS = Windows.ApplicationModel.Resources.Core;

var context = new resourceNS.ResourceContext();
context.languages = new Array('en-us');

var resourceMap = resourceNS.ResourceManager.current.mainResourceMap.getSubtree('Resources');
var str = resourceMap.getValue('scenario3Message', context);

Événements et changements de contexte

Des applications du Windows Store peuvent être en cours d’exécution lors des changements apportés au système. Cela entraîne l’utilisation d’un ensemble de qualificateurs différent. L’activation du mode Contraste élevé par l’utilisateur est un exemple de ce type de changement. Divers changements système appellent des événements dans l’objet ResourceContext.

Dans JavaScript, la méthode la plus simple d’écouter ces événements est via


WinJS.Resources.addEventListener('contextchanged', refresh, false);

Après avoir détecté l’événement, les applications peuvent retraiter le document afin que les ressources correctes puissent être chargées.


function refresh(){
    WinJS.Resources.processAll(); // Refetch string resources.
}

Le fait de retraiter les ressources peut entraîner la réinitialisation des valeurs liées aux données au sein des ressources, dans la mesure où la nouvelle ressource est appliquée directement à la propriété de l’élément. Si la ressource contient des emplacements de liaison de données, veillez à rétablir la liaison lors du retraitement.

Rubriques associées

Windows.ApplicationModel.Resources.ResourceLoader
Windows.ApplicationModel.Resources.Core.ResourceContext
Windows.ApplicationModel.Resources.Core.ResourceManager
Windows.ApplicationModel.Resources.Core.ResourceMap
Windows.Globalization.ApplicationPreferences.PrimaryLanguageOverride
WinJS.Resources.getString
Fonctionnalités et restrictions par contexte
Comment nommer des ressources à l’aide de qualificateurs

 

 

Afficher:
© 2014 Microsoft