2012-06-08 4 views
11

Sto cercando di visualizzare un messaggio per l'utente lungo le linee di:Come includere le variabili nelle stringhe localizzate?

"Utente 5 non può essere aggiunto"

Ma come posso aggiungere le variabili in una stringa che viene collocato in una. file resx? Ho provato a cercare cose come "Variabili nella localizzazione" "Globalizzazione con variabili" ecc., Ma sono venuto fuori asciutto.

Se non fossi localizzazione avrei scritto:

Console.Write("User " + userNum + " could not be added"); 

Come può questo essere realizzato con le risorse?

+0

Non si dovrebbe costruire/stampare una stringa con + in ogni caso. String.Format è molto più facile da usare con ... –

risposta

8

Nelle squadre in cui ho fatto l'internazionalizzazione, in genere ha anche creato una risorsa per la stringa di formato, qualcosa come USER_COULD_NOT_BE_ADDED_FORMAT, e chiamato String.Format (o l'equivalente del vostro ambiente) passando valore della risorsa come il modello di formato.

Poi ti fare Console.Write(String.Format(resourceManager.GetString("USER_COULD_NOT_BE_ADDED_FORMAT"), userNum));

La maggior parte dei localizzatori o avere una formazione nelle stringhe di formato utilizzati dal sistema sono localizzando, o sono dotati di una guida nel kit di localizzazione che si forniscono loro. Ad esempio, non si tratta di una barriera tanto elevata quanto la modifica diretta del codice.

Generalmente è necessario aggiungere un commento locale all'ID risorsa per spiegare i parametri posizionali.

+1

Potresti andare un po 'più in là nel modo in cui posso aggiungere un "commento locale all'ID risorsa"? O fornirmi un link per saperne di più? Grazie! :) –

+0

Inoltre, mentre io ho qui da quando sembra che tu abbia esperienza con queste cose, è meglio avere un singolo file resx per tutte le stringhe in un dato progetto, o sarebbe meglio separarle in più file resx , ad esempio, uno per ogni forma? (I miei file resx sono memorizzati in un progetto di Globalizzazione separato) –

+1

Supponendo che si stia utilizzando il formato .resx, il commento di localizzazione è solo "Commento" nell'interfaccia utente resx o '' nell'xml subito dopo ' 'elemento. – JasonTrue

11

Non è possibile farlo direttamente.

Che cosa si può fare è inserire un gettone - una stringa specifica che può essere sostituito con string.Replace con il valore della variabile.

un buon candidato per questo sarebbe il costruito nelle formattazione delle stringhe:

Console.Write(string.Format("User {0} could not be added", userNum)); 

Supponendo userNum ha il valore 5, il risultato sarebbe:

User 5 could not be added 

È possibile localizzare questa stringa con la specificatori di formato composito.

5

Usa Composite Formatting in questo modo:

Console.Write("User {0} could not be added", userNum); 

In questo modo si potrebbe localizzare "User {0} could not be added".

0

si può fare che la sua semplice enter image description here

nuova Vediamo come

String.Format(Resource_en.PhoneNumberForEmployeeAlreadyExist,letterForm.EmployeeName[i]) 

questa volontà mi ha dato un messaggio dinamico ogni volta

dal modo che sto usando g ResXManager