Personalizzare le risorse di lingua, scala, contrasto elevato e altri qualificatori
Questo argomento descrive il concetto generale di qualificatori di risorse, il relativo uso e lo scopo di ognuno dei nomi qualificatori. Per una tabella di riferimento di tutti i possibili valori qualificatori, vedere ResourceContext.QualifierValues.
L'app può caricare asset e risorse personalizzate in contesti di runtime, ad esempio linguaggio di visualizzazione, contrasto elevato, fattore di scala di visualizzazione e molti altri. Il modo in cui si esegue questa operazione consiste nel assegnare un nome alle cartelle o ai file delle risorse in modo che corrispondano ai nomi dei qualificatori e ai valori qualificatori corrispondenti a tali contesti. Ad esempio, è possibile che l'app carichi un set diverso di asset di immagine in modalità a contrasto elevato.
Per altre informazioni sulla proposta di valore associata alla localizzazione dell'app, vedi Globalizzazione e localizzazione.
Nome qualificatore, valore qualificatore e qualificatore
Un nome qualificatore è una chiave che esegue il mapping a un set di valori di qualificatore. Ecco i valori di qualificatore e qualificatore per il contrasto.
Contesto | Nome qualificatore | Valori qualificatori |
---|---|---|
Impostazione di contrasto elevato | contrasto | standard, alto, nero, bianco |
È possibile combinare un nome qualificatore con un valore qualificatore per formare un qualificatore. <qualifier name>-<qualifier value>
è il formato di un qualificatore. contrast-standard
è un esempio di qualificatore.
Pertanto, per il contrasto elevato, il set di qualificatori è contrast-standard
, contrast-high
, contrast-black
e contrast-white
. I nomi dei qualificatori e i valori qualificatori non fanno distinzione tra maiuscole e minuscole. Ad esempio, contrast-standard
e Contrast-Standard
sono gli stessi qualificatori.
Usare qualificatori nei nomi delle cartelle
Di seguito è riportato un esempio di utilizzo dei qualificatori per assegnare un nome alle cartelle che contengono file di asset. Usare i qualificatori nei nomi delle cartelle se sono presenti diversi file di asset per qualificatore. In questo modo, si imposta il qualificatore una volta a livello di cartella e il qualificatore si applica a tutti gli elementi all'interno della cartella.
\Assets\Images\contrast-standard\<logo.png, and other image files>
\Assets\Images\contrast-high\<logo.png, and other image files>
\Assets\Images\contrast-black\<logo.png, and other image files>
\Assets\Images\contrast-white\<logo.png, and other image files>
Se denomina le cartelle come nell'esempio precedente, l'app usa l'impostazione a contrasto elevato per caricare i file di risorse dalla cartella denominata per il qualificatore appropriato. Pertanto, se l'impostazione è Nero a contrasto elevato, i file di risorse nella \Assets\Images\contrast-black
cartella vengono caricati. Se l'impostazione è None (ovvero il computer non è in modalità a contrasto elevato), i file di risorse nella \Assets\Images\contrast-standard
cartella vengono caricati.
Usare qualificatori nei nomi di file
Invece di creare e denominare cartelle, è possibile usare un qualificatore per denominare i file di risorse stessi. È consigliabile eseguire questa operazione se si dispone di un solo file di risorse per qualificatore. Ecco un esempio.
\Assets\Images\logo.contrast-standard.png
\Assets\Images\logo.contrast-high.png
\Assets\Images\logo.contrast-black.png
\Assets\Images\logo.contrast-white.png
Il file il cui nome contiene il qualificatore più appropriato per l'impostazione è quello caricato. Questa logica di corrispondenza funziona allo stesso modo per i nomi di file come per i nomi delle cartelle.
Fare riferimento a una stringa o a una risorsa immagine in base al nome
Vedi Fare riferimento a un identificatore di risorsa stringa dal markup XAML, fare riferimento a un identificatore di risorsa stringa dal codice e fare riferimento a un'immagine o a un altro asset dal markup e dal codice XAML.
Corrispondenze effettive e neutre del qualificatore
Non è necessario specificare un file di risorse per ogni valore qualificatore. Ad esempio, se si scopre che è necessario un solo asset visivo per il contrasto elevato e uno per il contrasto standard, è possibile denominare tali asset come questo.
\Assets\Images\logo.contrast-high.png
\Assets\Images\logo.png
Il primo nome file contiene il contrast-high
qualificatore. Tale qualificatore è una corrispondenza effettiva per qualsiasi impostazione a contrasto elevato quando il contrasto elevato è attivo. In altre parole, è una corrispondenza ravvicinata, quindi è preferibile. Una corrispondenza effettiva può verificarsi solo se il qualificatore contiene un valore effettivo , come in questo caso. In questo caso, high
è un valore effettivo per contrast
.
Il file denominato logo.png
non dispone di alcun qualificatore di contrasto. L'assenza di un qualificatore è un valore neutro . Se non è possibile trovare alcuna corrispondenza preferita, il valore neutro funge da corrispondenza di fallback. In questo esempio, se il contrasto elevato è disattivato, non esiste alcuna corrispondenza effettiva. La corrispondenza neutra è la corrispondenza migliore che è possibile trovare e quindi l'asset logo.png
viene caricato.
Se si desidera modificare il nome di logo.png
in logo.contrast-standard.png
, il nome del file conterrà un valore qualificatore effettivo. Con contrasto elevato, ci sarebbe una corrispondenza effettiva con logo.contrast-standard.png
e questo è il file di asset che verrebbe caricato. Quindi, gli stessi file verranno caricati, nelle stesse condizioni, ma a causa di corrispondenze diverse.
Se è necessario un solo set di asset per il contrasto elevato e un set per il contrasto standard, è possibile usare i nomi delle cartelle anziché i nomi di file. In questo caso, omettendo completamente il nome della cartella si ottiene la corrispondenza neutra.
\Assets\Images\contrast-high\<logo.png, and other images to load when high contrast theme is not None>
\Assets\Images\<logo.png, and other images to load when high contrast theme is None>
Per altre informazioni sul funzionamento della corrispondenza dei qualificatori, vedere Sistema di gestione risorse.
Qualificatori multipli
È possibile combinare qualificatori in nomi di file e cartelle. Ad esempio, potresti voler che l'app carichi asset immagine quando la modalità a contrasto elevato è attiva e il fattore di scala dello schermo è 400. Un modo per eseguire questa operazione consiste nell'usare cartelle nidificate.
\Assets\Images\contrast-high\scale-400\<logo.png, and other image files>
Per logo.png
e gli altri file da caricare, le impostazioni devono corrispondere a entrambi i qualificatori.
Un'altra opzione consiste nel combinare più qualificatori in un nome di cartella.
\Assets\Images\contrast-high_scale-400\<logo.png, and other image files>
In un nome di cartella si combinano più qualificatori separati con un carattere di sottolineatura. Il formato è <qualifier1>[_<qualifier2>...]
.
È possibile combinare più qualificatori in un nome file nello stesso formato.
\Assets\Images\logo.contrast-high_scale-400.png
A seconda degli strumenti e del flusso di lavoro usati per la creazione di asset o di ciò che si trova più semplice da leggere e/o gestire, è possibile scegliere una singola strategia di denominazione per tutti i qualificatori oppure combinarli per qualificatori diversi.
AlternateForm
Il alternateform
qualificatore viene usato per fornire una forma alternativa di una risorsa per uno scopo speciale. Questo viene in genere usato solo dagli sviluppatori di app giapponesi per fornire una stringa furigana per cui il valore msft-phonetic
è riservato (vedere la sezione "Supporto furigana per le stringhe giapponesi che possono essere ordinate" in Come preparare la localizzazione).
Il sistema di destinazione o l'app deve fornire un valore rispetto alternateform
ai qualificatori corrispondenti. Non usare il msft-
prefisso per i propri valori di qualificatore personalizzati alternateform
.
Impostazione
È improbabile che sia necessario il nome del configuration
qualificatore. Può essere usato per specificare le risorse applicabili solo a un determinato ambiente in fase di creazione, ad esempio risorse di sola prova.
Il configuration
qualificatore viene usato per caricare una risorsa che corrisponda al valore della MS_CONFIGURATION_ATTRIBUTE_VALUE
variabile di ambiente. È quindi possibile impostare la variabile sul valore stringa assegnato alle risorse pertinenti, ad esempio designer
, o test
.
Contrasto
Il contrast
qualificatore viene usato per fornire risorse che corrispondano meglio alle impostazioni di contrasto elevato.
Personalizzazione
L'app può impostare un valore per il custom
qualificatore e quindi le risorse vengono caricate in base a tale valore. Ad esempio, potresti voler caricare le risorse in base alla licenza dell'app. Quando l'app viene avviata, controlla la licenza e la usa come valore per il custom
qualificatore chiamando SetGlobalQualifierValue, come illustrato nell'esempio di codice.
public void SetLicenseLevel(BrandID brand)
{
if (brand == BrandID.Premium)
{
ResourceContext.SetGlobalQualifierValue("Custom", "Premium", ResourceQualifierPersistence.LocalMachine);
}
else if (brand == BrandID.Standard)
{
ResourceContext.SetGlobalQualifierValue("Custom", " Standard", ResourceQualifierPersistence.LocalMachine);
}
else
{
ResourceContext.SetGlobalQualifierValue("Custom", "Trial", ResourceQualifierPersistence.LocalMachine);
}
}
In questo scenario si assegnano quindi i nomi delle risorse che includono i qualificatori custom-premium
, custom-standard
e custom-trial
.
DeviceFamily
È improbabile che sia necessario il nome del devicefamily
qualificatore. È possibile evitare di usarlo quando possibile perché esistono tecniche che è possibile usare invece che sono molto più convenienti e robuste. Queste tecniche sono descritte in Rilevamento della piattaforma in cui è in esecuzione l'app e Codice adattivo versione.
Ma come ultima risorsa è possibile usare qualificatori devicefamily per denominare le cartelle che contengono le visualizzazioni XAML (una visualizzazione XAML è un file XAML che contiene layout e controlli dell'interfaccia utente).
\devicefamily-desktop\<MainPage.xaml, and other markup files to load when running on a desktop computer>
\devicefamily-mobile\<MainPage.xaml, and other markup files to load when running on a phone>
In alternativa, è possibile denominare i file.
\MainPage.devicefamily-desktop.xaml
\MainPage.devicefamily-mobile.xaml
In entrambi i casi ogni copia di MainPage.[<qualifier>].xaml
condivide un comune MainPage.xaml.cs
, che rimane invariato nel progetto in termini di nome, posizione e contenuto.
È anche possibile usare un qualificatore devicefamily per denominare un file di risorse (.resw
) o una cartella. Ad esempio, quando l'app è in esecuzione nella famiglia di dispositivi mobili, l'elemento <TextBlock x:Uid="DeviceFriendlyName"/>
dell'interfaccia utente userà il testo e le risorse in primo piano definite nel Resources.devicefamily-mobile.resw
file se contiene
<data name="DeviceFriendlyName.Foreground">
<value>Red</value>
</data>
<data name="DeviceFriendlyName.Text">
<value>Mobile device</value>
</data>
Per altre informazioni sull'uso di un file di risorse, vedere Localizzare le stringhe dell'interfaccia utente.
DXFeatureLevel
È improbabile che sia necessario il nome del dxfeaturelevel
qualificatore. È stato progettato per essere usato con asset di gioco Direct3D, per far sì che le risorse di livello inferiore vengano caricate in modo che corrispondano a una particolare configurazione hardware di livello inferiore del tempo. Ma la prevalenza della configurazione hardware è ora così bassa che è consigliabile non usare questo qualificatore.
HomeRegion
Il homeregion
qualificatore corrisponde all'impostazione dell'utente per il paese o l'area geografica. Rappresenta la posizione iniziale dell'utente. I valori includono qualsiasi tag BCP-47 region. Ovvero, qualsiasi codice di area geografica ISO 3166-1 alfa-2 a due lettere, più il set di codici geografici numerici ISO 3166-1 per le aree composte (vedere Composizione M49 della Divisione statistica delle Nazioni Unite M49 dei codici di area). I codici per "Gruppi economici selezionati e altri raggruppamenti" non sono validi.
Lingua
Un language
qualificatore corrisponde all'impostazione della lingua di visualizzazione. I valori includono qualsiasi tag BCP-47 language. Per un elenco delle lingue, vedere registro dei sottotag della lingua IANA.
Se desideri che la tua app supporti lingue di visualizzazione diverse e disponi di valori letterali stringa nel codice o nel markup XAML, sposta tali stringhe dal codice/markup e in un file di risorse (.resw
). Puoi quindi creare una copia tradotta del file di risorse per ogni lingua supportata dall'app.
In genere si usa un language
qualificatore per denominare le cartelle che contengono i file di risorse (.resw
).
\Strings\language-en\Resources.resw
\Strings\language-ja\Resources.resw
È possibile omettere la language-
parte di un language
qualificatore (ovvero il nome del qualificatore). Non puoi farlo con gli altri tipi di qualificatori; ed è possibile farlo solo in un nome di cartella.
\Strings\en\Resources.resw
\Strings\ja\Resources.resw
Invece di denominare le cartelle, è possibile usare language
qualificatori per denominare i file di risorse stessi.
\Strings\Resources.language-en.resw
\Strings\Resources.language-ja.resw
Vedi Localizzare le stringhe dell'interfaccia utente per altre informazioni su come localizzare l'app usando le risorse stringa e su come fare riferimento a una risorsa stringa nell'app.
LayoutDirection
Un layoutdirection
qualificatore corrisponde alla direzione del layout dell'impostazione della lingua di visualizzazione. Ad esempio, potrebbe essere necessario eseguire il mirroring di un'immagine per una lingua da destra a sinistra, ad esempio arabo o ebraico. I pannelli di layout e le immagini nell'interfaccia utente rispondono in modo appropriato alla direzione del layout se imposti la proprietà FlowDirection (vedi Regolare layout e tipi di carattere e supportare RTL). Tuttavia, il layoutdirection
qualificatore è per i casi in cui il semplice capovolgimento non è adeguato e consente di rispondere alla direzionalità di ordine di lettura e allineamento del testo specifici in modi più generali.
Ridimensiona
Windows imposta automaticamente il fattore di scala per ogni visualizzazione in base ai relativi valori DPI (punti per pollice) e alla distanza di visualizzazione del dispositivo. Vedere Pixel effettivi e fattore di scala. È consigliabile creare le immagini con diverse dimensioni consigliate (almeno 100, 200 e 400) in modo che Windows possa scegliere le dimensioni perfette o usare le dimensioni più vicine e ridimensionarla. In modo che Windows possa identificare il file fisico contenente le dimensioni corrette dell'immagine per il fattore di scala di visualizzazione, si usa un scale
qualificatore. La scala di una risorsa corrisponde al valore di DisplayInformation.ResolutionScale o alla risorsa con scalabilità successiva.
Ecco un esempio di impostazione del qualificatore a livello di cartella.
\Assets\Images\scale-100\<logo.png, and other image files>
\Assets\Images\scale-200\<logo.png, and other image files>
\Assets\Images\scale-400\<logo.png, and other image files>
E questo esempio lo imposta a livello di file.
\Assets\Images\logo.scale-100.png
\Assets\Images\logo.scale-200.png
\Assets\Images\logo.scale-400.png
Per informazioni sulla qualificazione di una risorsa per e scale
targetsize
, vedere Qualificare una risorsa immagine per le destinazioni.
TargetSize
Il targetsize
qualificatore viene usato principalmente per specificare icone di associazione del tipo di file o icone del protocollo da visualizzare in Esplora file. Il valore del qualificatore rappresenta la lunghezza laterale di un'immagine quadrata in pixel non elaborati (fisici). La risorsa il cui valore corrisponde all'impostazione Visualizza in Esplora file viene caricata oppure la risorsa con il valore più grande successivo in assenza di una corrispondenza esatta.
È possibile definire asset che rappresentano diverse dimensioni del valore del targetsize
qualificatore per l'icona dell'app (/Assets/Square44x44Logo.png
) nella scheda Asset visivi della finestra di progettazione del manifesto del pacchetto dell'app.
Per informazioni sulla qualificazione di una risorsa per e scale
targetsize
, vedere Qualificare una risorsa immagine per le destinazioni.
Tema
Il theme
qualificatore viene usato per fornire risorse che corrispondano meglio all'impostazione predefinita della modalità app o all'override dell'app usando Application.RequestedTheme.
Tema chiaro shell e risorse senza sfondo
Il Aggiornamento di Windows 10 (maggio 2019) ha introdotto un nuovo tema "chiaro" per la shell di Windows. Di conseguenza, alcuni asset dell'applicazione visualizzati in precedenza su uno sfondo scuro verranno ora visualizzati su uno sfondo chiaro. Per le app che hanno fornito asset altform-unplated per i commutatori della barra delle applicazioni e delle finestre (ALT+TAB, Visualizzazione attività e così via), è necessario verificare che abbiano un contrasto accettabile su uno sfondo chiaro.
Fornire asset specifici del tema chiaro
Le app che vogliono fornire una risorsa personalizzata per il tema chiaro della shell possono usare un nuovo qualificatore di risorsa modulo alternativo: altform-lightunplated
. Questo qualificatore rispecchia il qualificatore altform-unplated esistente.
Considerazioni di livello inferiore
Le app non devono usare il theme-light
qualificatore con il altform-unplated
qualificatore. Questo causerà un comportamento imprevedibile in RS5 e versioni precedenti di Windows a causa del modo in cui le risorse vengono caricate per la barra delle applicazioni. Nelle versioni precedenti di windows, la versione theme-light potrebbe essere usata in modo non corretto. Il altform-lightunplated
qualificatore evita questo problema.
Comportamento di compatibilità
Per la compatibilità con le versioni precedenti, Windows include la logica per rilevare icone monocromatiche e verificare se è in contrasto con lo sfondo previsto. Se l'icona non soddisfa i requisiti di contrasto, Windows cercherà una versione bianca a contrasto dell'asset. Se non è disponibile, Windows eseguirà il fallback all'uso della versione con targhetta dell'asset.
API importanti
Argomenti correlati
- Pixel effettivi e fattore di scala
- Sistema gestione risorse
- Come prepararsi per la localizzazione
- Rilevamento della piattaforma in cui è in esecuzione l'app
- Programmazione con gli SDK di estensione
- Localizzare le stringhe dell'interfaccia utente
- BCP-47
- Composizione dei codici di area geografica delle Nazioni Unite M49
- Registro dei subtag della lingua IANA
- Regolare layout e caratteri e supportare RTL