Domanda

Ho giocato con le funzionalità di localizzazione integrate in .NET e sembra che facciano tutti affidamento sull'inserimento di dati in file resx.

Ma la maggior parte dei sistemi non può fare affidamento su questo perché sono basati su database. Quindi, come risolvi questo problema? Esiste un modo .NET incorporato o crei una tabella di traduzioni in SQL e fai tutto manualmente? E se devi farlo sulla maggior parte dei tuoi siti, c'è qualche motivo per usare il modo resx di localizzazione?

Un esempio di questo è che ho un elenco di FAQ sul mio sito, tengo questo elenco nel database in modo da poter aggiungere / rimuovere facilmente altro, ma inserendolo nel database, non ho alcun buon modo per tradurre queste informazioni in più lingue.

È stato utile?

Soluzione

A mio avviso, la localizzazione dei contenuti dinamici (ad es. le tue FAQ) dovrebbe essere effettuata da te nel tuo database. A seconda di come sono archiviate le tue domande, probabilmente creerei una "locale" colonna e utilizzarlo quando si selezionano le domande frequenti dal database. Non sono sicuro che questo si ridimensionerebbe molto bene quando hai iniziato a localizzare molte tabelle.

Per i contenuti statici (ad es. etichette dei campi dei moduli, testo statico, icone, ecc.) Probabilmente dovresti usare bene le risorse basate su file. Se lo volessi davvero, tuttavia, sembra che non sarebbe molto difficile creare un'implementazione del provider di risorse personalizzata in grado di gestirlo.

Ecco alcuni link correlati:

Altri suggerimenti

Per un determinato elemento nel modello di dati, suddividere la parte della descrizione in una tabella localizzata con una colonna Id impostazioni internazionali (LCID).

Quindi la tabella per il Prodotto non contiene infatti la descrizione o il nome del prodotto, ma solo i suoi valori rigidi e veloci (ProductId, EAN, NumberInStock, NextStockData, IsActive, IsPublished) ecc.

ProductDescription quindi contiene  ProductId, Nome, Descrizione, LCID

Vivo in Canada, quindi il multilinguismo è un grosso problema. Ho visto due approcci. La prima opzione è archiviare tutti i dati localizzati per un record specifico in una tabella diversa, collegata alla tabella originale dalla chiave primaria e dalla locale. La seconda opzione è simile alla prima, tranne che per ogni locale, esiste una tabella diversa, con la locale come suffisso per il nome della tabella.

Opzione A

Item (ItemID, ...)
ItemLocal (ItemID,LocaleID,....)

Opzione B

Item (ItemID, ...)
Item_ENUS (ItemID,....)
Item_ENGB (ItemID,....)
Item_FR (ItemID,....)

Una terza opzione che ho pensato di recente, che sarebbe davvero bello se un database lo supportasse in modo nativo sarebbe quella di memorizzare i valori per tutti i locali nello stesso campo. E se il campo fosse impostato come varchar-multilocal, allora dovresti accedervi passando un parametro per specificare la lingua. Nulla di simile esiste come lo conosco, ma è qualcosa che penso renderebbe le cose molto più facili e molto più fluide.

Attualmente, la traduzione non è qualcosa che può essere fatto automaticamente. Il modo migliore è convincere una persona a tradurre e usare i metodi di Nick per mostrare la lingua corretta.

Utilizziamo un mix di file RESX e l'opzione A della risposta di Kibbee. Abbiamo creato un semplice strumento per gestire i file RESX online: http://blog.lavablast.com/post/ 2008/02 / RESX-file-Web-Editor.aspx

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