Come si mescolano gli script da sinistra a destra e da destra a sinistra senza che i file sembrino pazzi?

8

La tua lingua nativa è l'ebraico e stai lavorando in un linguaggio di programmazione come Python 3, che ti consente di inserire l'ebraico nel codice sorgente. Buon per te! Hai un dict :

d = {'a': 1}

e vuoi sostituire quel a con un po 'di ebraico. Quindi sostituisci quel singolo carattere:

d = {'א': 1}

Uh oh. Semplicemente sostituendo un carattere, senza apportare altre modifiche , il tuo display è diventato pazzo. Tutto dall'ebraico al 1 è retrocesso, ed è estremamente ovvio che questa sia anche una sintassi valida ( è ), lascia da solo cosa significa.

L'ebraico è intrinsecamente da destra a sinistra e, anche senza caratteri di controllo invisibili, il testo ebraico verrà visualizzato da destra a sinistra. Questo si applica anche a certi personaggi "normali" in posizioni vicine all'ebraico, così come a personaggi tratti da poche altre sceneggiature. I dettagli sono complicati.

Come ti occupi di questo? Non è possibile inserire caratteri di controllo nel codice sorgente per correggere lo schermo senza rompere il codice. Scrivere tutto in esadecimale sfugge a un tipo di illeggibilità per un altro. Anche se ti rassegni a nominare tutto con i caratteri del blocco Latin Basic e ad attaccare tutte le stringhe ebraiche nei file di localizzazione, è difficile evitare di mescolare il testo da destra a sinistra con sinistra-destra.

JSON o CSV con ebraico in esso saranno confusi. Se quei file di localizzazione in cui hai inserito le tue stringhe dovevano essere leggibili dall'uomo, beh, probabilmente non lo sono. Che cosa fai?

    
posta user2357112 09.04.2016 - 05:07
fonte

1 risposta

1

AFAIK, questo è principalmente rilevante quando si utilizza una lettera non ASCII in identificatori (e forse commenti) nel codice.

Se ti disciplinano per evitarlo, ad es. se il tuo codice usa "inglese" come identificativi e parole chiave e commenti, questo è molto meno un problema (e ogni sviluppatore di software dovrebbe essere in grado di leggere la documentazione e il codice in inglese). Quindi, internazionalizzazione & la localizzazione della tua applicazione avviene solo in messaggi , in particolare stringhe letterali .

Potresti quindi utilizzare un catalogo messaggi. Ad esempio in C e POSIX, utilizzerai gettext (3) e amici. Il catalogo messaggi localizzato contiene tutte le varianti localizzate / internazionalizzate del messaggio. Se la tua applicazione è solo per gli utenti ebrei (e questo non è un grande mercato) hai solo l'ebraico in stringhe letterali.

Per essere più specifici, l'applicazione Hello World dovrebbe contenere

void say_hello(char*towhom) {
  printf(gettext("hello %s"), towhom);
}

e la tua applicazione si personalizzerebbe all'inizio della corsa chiamando alcuni setlocale (3) con argomenti appropriati.

Vedi locale (7) . Adatta tutto al tuo Python e al tuo sistema operativo. Molti framework multipiattaforma (ad es. Qt ) hanno un ampio supporto per l'internazionalizzazione & localizzazione.

Ovviamente c'è il delicato problema per visualizzare le stringhe Unicode. Le più serie librerie e strumenti di visualizzazione e GUI (Qt, GTk, ...) sono in grado di gestire stringhe di lingue miste (ad esempio, mostrando qualcosa che contiene ebraico e inglese, russo e cinese).

Per una visualizzazione più ampia, leggi la wiki su internazionalizzazione e localizzazione del software.

Un file JSON è valido quando contiene solo caratteri ASCII, con altri caratteri (che appaiono solo nelle stringhe JSON) codificati con \u05d0 (anziché א ) nella stringa.

Forse potresti trovare un editor abbastanza buono e personalizzarlo in base alle tue esigenze. Sono sicuro che potresti trovare qualche Emacs submode (oppure personalizzarne uno) per coprire il particolare problema dell'ebraico stringhe letterali in Python (ma hanno ancora identificativi e commenti in inglese).

A proposito, non so come sia la tastiera ebraica, ma nella maggior parte dei layout di tastiera, è possibile configurarli in modo che la digitazione di lettere ASCII (ad esempio latine) sia più veloce rispetto alla digitazione di caratteri non ASCII. Quindi, anche per te stesso, potrebbe essere meglio digitare codice in inglese.

Riguardo ai dati JSON, dovresti essere in grado di configurare il tuo editor per vedere א quando una stringa contiene \u05d0 (altrimenti usa un convertitore JSON à la JQ )

Quindi credo che il tuo vero problema dovrebbe essere quello di scegliere e configurare abbastanza bene un buon editor (pur avendo l'ebraico solo all'interno di stringhe letterali; nel raro caso in cui una stringa letterale deve contenere sia l'ebraico sia Inglese, diviso in più parti.). Immagino che entrambi Emacs e Vim potrebbe essere configurato in base alle proprie esigenze.

    
risposta data 09.04.2016 - 07:29
fonte

Leggi altre domande sui tag