Domanda

Devo creare un'applicazione GUI su Windows Mobile e vorrei che l'utente potesse scegliere la lingua che desidera o che l'applicazione potesse scegliere la lingua automaticamente.Considero l'utilizzo di più DLL contenenti solo le risorse richieste.

1) Qual è il modo preferito (predefinito?) per far sì che l'applicazione scelga automaticamente la lingua corretta della risorsa, senza l'intervento dell'utente?Qualche campione?

2) Quali sono le mie opzioni per consentire all'utente/applicazione di controllare quale lingua deve essere visualizzata?

3) Se possibile, come posso creare una DLL che contenga più risorse linguistiche e quindi scegliere dinamicamente la lingua?

È stato utile?

Soluzione

Per # 1, è possibile utilizzare la funzione GetSystemDefaultLangID per ottenere l'identificatore della lingua per la macchina.

Per # 2, potresti elencare le lingue supportate e quando l'utente ne seleziona una, scrivi la selezione in un file di testo o registro (esiste un registro su Windows Mobile?). All'avvio, utilizzare la funzione in # 1 solo se non è presente alcuna selezione nel file o nel registro.

Per # 3, il modo in cui lo facciamo è avere una DLL di risorse per lingua, ognuna delle quali contiene gli stessi ID risorsa. Una volta che hai capito la lingua, carica la DLL per quella lingua e il resto funziona.

Altri suggerimenti

Rif. 1: Il precedente suggerimento GetSystemDefuaultLangID è valido.

Rif. 2: Puoi chiedere come primo passo nella tua installazione.Oppure puoi creare pacchetti di programmi di installazione diversi per ciascuna lingua.

Rif. 3: In teoria il metodo DLL menzionato sopra sembra fantastico, ma in pratica non ha funzionato affatto bene per me personalmente.

Un metodo migliore è racchiudere tutte le stringhe nel programma con:Localizza o NoLocalizza.

MessageBox(Localize("Hello"), Localize("Title"), MB_OK);
RegOpenKey(NoLocalize("\\SOFTWARE\\RegKey"), ...);

Localizza è solo una funzione che converte il tuo testo inglese nella lingua selezionata.NoLocalize non fa nulla.

Tuttavia, vuoi circondare le tue stringhe con questi valori perché puoi creare un paio di script utili nel tuo linguaggio di scripting preferito.

1) Uno script che cerca tutti i prefissi Localize(" e genera un file .ini con coppie valore nome english=otherlangauge.Se il file .ini di output contiene già una mappatura, non aggiungerla nuovamente.Non ricrei mai completamente il file ini, il tuo script aggiunge semplicemente quelli mancanti ogni volta che esegui lo script.

2) Uno script che cerca tutte le stringhe e si assicura che siano circondate da Localize(" o NoLocalize(".In caso contrario ti dice quali stringhe devi ancora localizzare.

Il motivo n. 2 è importante è perché devi assicurarti che tutte le tue stringhe siano effettivamente contrassegnate consapevolmente come bisognose di localizzazione o meno.Altrimenti è assolutamente impossibile assicurarsi di avere una localizzazione corretta.

Il motivo per il n. 1 invece di caricare da una DLL è perché non è necessario alcun lavoro per mantenere questa soluzione ed è possibile aggiungere nuove stringhe che devono essere tradotte al volo.

Spedisci i file ini che vengono generati con il tuo programma.Dai questi file ini anche ai tuoi traduttori in modo che possano convertire le coppie inglese=altra lingua.Quando te lo rispediranno, sostituirai semplicemente il file .ini archiviato con quello fornito dal tuo traduttore.L'esecuzione dello script come menzionato al punto 1 aggiungerà nuovamente eventuali traduzioni mancanti, se eseguite durante la traduzione del traduttore.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top