Stiamo sviluppando un'applicazione di grandi dimensioni, composta da molti piccoli pacchetti. Ogni pacchetto ha il proprio set di file di risorse per la localizzazione.
Qual è l'approccio migliore per l'organizzazione e la denominazione delle stringhe di localizzazione?
Ecco i miei pensieri finora:
Gestione dei duplicati
Lo stesso testo (ad esempio "Codice postale") può essere ripetuto più volte all'interno di un determinato pacchetto. L'istinto di programmazione (DRY) mi dice di creare una singola risorsa stringa condivisa da tutte le occorrenze .
Inoltre, un traduttore potrebbe voler scegliere una traduzione lunga ("Postleitzahl") in alcuni punti e una più breve ("PLZ") in luoghi con meno spazio. Oppure potremmo decidere di aggiungere due punti ad alcune occorrenze ("Codice postale:"), ma non ad altre. Oppure potremmo richiedere una diversa capitalizzazione ("codice postale") in alcuni punti. Tutti questi argomenti indicano la creazione di una risorsa per utilizzo, anche se il loro contenuto è identico .
Naming
Se miriamo ad eliminare i duplicati, ha senso nominare le risorse in base al contenuto , forse suggerendo il tipo di utilizzo tramite prefisso. Quindi potremmo avere labelOK
= "OK" , messageFileTooLarge
= "Il file supera la dimensione massima del file." e labelZipCode
= "Codice postale" .
La denominazione in base al contenuto ha il vantaggio di gestire naturalmente gli argomenti di formato: la risorsa messageFileHas_0_MBWhileMaximumIs_1_MB
prende chiaramente due argomenti di formattazione, la dimensione effettiva del file e la dimensione massima del file.
Se consentiamo duplicati, tuttavia, la denominazione solo per contenuto non ha senso. Per ottenere nomi di risorse univoci, dobbiamo in qualche modo includere il luogo di utilizzo nel nome della risorsa. Funziona con i controlli grafici, anche se gli identificatori tendono a diventare un po 'lunghi: fileSelectionConfirmationButtonText
= "OK" , customerDetailsTableColumnZipCode
= "Codice postale" . Tuttavia, per i file di codice non visivi, diventa più difficile. Come si nomina un uso specifico di una stringa se non si sa dove verrà visualizzata? Per file di codice e nome della funzione? Sembra piuttosto goffo e fragile per me.
Tutto sommato, mi sto impegnando per consentire i duplicati, ma sto lottando per trovare uno schema di denominazione coerente che supporti questo.
Modifica: questa domanda ha due aspetti: come organizzare le risorse (DRY vs. duplicati) e come nominarle . Finora le risposte si sono concentrate sul primo aspetto. Gradirei un feedback sulle convenzioni di denominazione!