Domanda

Sto cercando un modo culturalmente sensibile per inserire correttamente un sostantivo in una frase mentre usi l'articolo appropriato (a / an). Potrebbe usare String.Format, o forse qualcos'altro se il modo appropriato per farlo esiste altrove.

Ad esempio:

Frase di base: " Stai guardando un / an {0} "

Questo dovrebbe essere formattato come segue: " Stai guardando una carota " oppure " stai guardando un uovo. "

Attualmente lo sto facendo controllando manualmente il primo carattere della parola da inserire e quindi inserendo manualmente " a " o " an. " Ma sono preoccupato che ciò possa limitarmi quando l'applicazione è localizzata in altre lingue.

Esistono le migliori pratiche per affrontare questo problema?

RISOLUZIONE: Sembra che il problema sia complicato al punto che non esiste un'utilità o un framework per risolvere questo problema nel modo in cui inizialmente ho formulato. Sembra che la soluzione migliore (nella mia situazione) sia di archiviare l'articolo nel database insieme al nome in modo che i traduttori possano avere il livello di controllo di cui hanno bisogno. Grazie per tutti i suggerimenti!

È stato utile?

Soluzione

Oltre al problema rilevato da lc (un'ora, un cappello) le regole grammaticali in diverse lingue variano ampiamente. Ad esempio, molte lingue latine cambiano articoli di sostantivi in ??base al "genere" e al "numero" del nome, che a volte possono essere dedotti dagli ultimi caratteri della parola ma hanno lo stesso problema dell'inglese ... molte eccezioni.

Se stai parlando di localizzare un'interfaccia, memorizzerei l'articolo con il nome per l'elemento di interfaccia in ogni lingua. Se stai elaborando l'input dell'utente non vedo un modo semplice per farlo.

Altri suggerimenti

Il problema è persino in inglese, a-vs-an non è determinato dalla lettera iniziale, ma dal suono iniziale. Puoi fare un presupposto piuttosto buono in inglese basato sulla lettera iniziale, ma ci sono alcune eccezioni (ad es. & Quot; ora " ;, " user ").

La cosa migliore da fare è avere accesso alla pronuncia di una parola per poter scegliere.

Escludendo, la prossima cosa migliore da fare è avere un elenco di eccezioni comuni, quindi indovinare il resto.


Da Wikipedia :

  

La scelta di " a " o " an " è   determinato piuttosto da regole fonetiche   che per convenzione di ortografia. & Quot; Un " è   impiegato nel discorso per rimuovere il   imbarazzante arresto glottale (silenzio momentaneo   pausa) che è altrimenti richiesto   tra " a " e una parola seguente ad es.   "una radiografia" ... Il seguente   i paragrafi sono regole di ortografia per " an "   che può essere usato se la regola fonetica   non è compreso.

Ai tempi di vecchi giochi per computer con avventure testuali , un modo per risolvere questo problema era quello di rendere "quot" a "quot" un "quot", il "quot" ecc. parte del nome effettivo della cosa. Quando in questi giochi vedi "una casella di posta", non esiste un'intelligenza artificiale intelligente per determinare "a". Il nome dell'oggetto è "quotbox". In alcuni giochi potrebbe dire "apri una casella di posta", che sembra stupido, e in altri potrebbe dire "apri la casella di posta", il che significa che c'era un altro nome dell'oggetto inserito, da usare in diversi contesti grammaticali . Ti suggerisco di seguire questo percorso invece del percorso che stai percorrendo ora.

Altre lingue hanno problemi simili ma in contesti diversi, ad esempio a seconda del genere di oggetti o del numero effettivo di oggetti (E alcune lingue non solo differenziano tra uno e due oggetti, ma la grammatica è diversa per uno, due o più di due oggetti in russo).

Per usare un esempio dalla lingua tedesca:

L'equivalente di " Stai guardando una (n) X " sarebbe:

" Du siehst ein X "
oppure "Du siehst eine X"
o " Du siehst einen X "

a seconda del genere dell'oggetto X. E il genere di un oggetto è qualcosa che non puoi indovinare, è collegato al nome dell'oggetto solo sulla base della tradizione storica.

Quindi, non esiste un modo semplice per implementare tali distinzioni nella maggior parte delle lingue. Il mio consiglio sarebbe di usare sempre formulazioni che funzioneranno in tutti i casi, ad es.

" Stai guardando un oggetto di tipo X "
oppure " stai guardando una (n) X "
oppure " stai guardando una X "

In che modo questo è culturalmente sensibile? Quello che stai cercando di fare solo ha senso in inglese. Altre lingue potrebbero richiedere modifiche completamente diverse alla frase. Alcuni possono modificare il nome, altri possono cambiare la struttura della frase, altri possono riordinare le parole e così via.

Quello che stai cercando di fare si interromperà quando localizzato in altre lingue. Non esiste un modo automatico per risolvere questo.

Come semplice esempio, considera cosa succede quando provi a scrivere " il {qualcosa} " In inglese, devi semplicemente aggiungere il prefisso con la parola " il " e tutto va bene. In francese, lo si antepone con le, la o les, a seconda del genere e indipendentemente dal fatto che sia o meno plurale. In danese, invece, aggiungi un suffisso 'en' o 'et'. Quindi, dove la tabella delle parole si traduce in "bord", "tabella" diventa "bordet". E "sedia" (rubato) diventa "rubato".

L'unico modo significativo per evitare ciò è di dare al traduttore il controllo sull'intera intera frase. Non dare per scontato che puoi semplicemente inserire alcune parole dipendenti dalla cultura qua e là.

Quindi, in pratica, la soluzione migliore potrebbe essere quella di accettare che la tua applicazione non possa essere localizzata banalmente. Forse puoi assicurarti che sia possibile per alcune lingue chiave e, a parte questo, ignorare il problema. Quindi, se in futuro è necessario tradurre l'applicazione nella lingua X, collaborare con il traduttore per apportare le modifiche necessarie nel codice dell'applicazione.

In alternativa, dovresti rinunciare completamente a provare a costruire frasi da solo. L'unico modo per assicurarsi che una frase sia corretta è che un traduttore scriva la frase intera . E, naturalmente, ciò causa problemi quando si desidera essere in grado di scambiare singole parole.

Esiste una libreria chiamata inflector .NET che viene utilizzata per la pluralizzazione / singolarizzazione che potrebbe essere potenzialmente riproposta o esteso allo stesso modo per una cosa del genere. Quello che stai cercando qui è una regola generale che puoi quindi modificare con eccezioni ... ad esempio, parole che iniziano con combinazioni di lettere che sono generalmente pronunciate come vocali. Sebbene questo non sia [strettamente parlando] culturalmente sensibile, dovrebbe iniziare almeno in inglese.

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