Come organizzare le risorse stringa di localizzazione?

13

Stiamo sviluppando una grande applicazione, 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") potrebbe verificarsi più volte all'interno di un determinato pacchetto. L'istinto di programmazione (DRY) mi dice di creare una risorsa a stringa singola condivisa da tutte le occorrenze .

Inoltre, un traduttore potrebbe voler scegliere una traduzione lunga ("Postleitzahl") in alcuni posti e una più breve ("PLZ") in luoghi con meno spazio. Oppure potremmo decidere di aggiungere due punti a qualche occorrenza ("CAP:"), ma non agli altri. Oppure potremmo richiedere una diversa lettera maiuscola ("codice postale") in alcuni punti. Tutti questi argomenti puntano a creare una risorsa per utilizzo, anche se il loro contenuto è identico .

Naming

Se miriamo ad eliminare i duplicati, ha senso denominare le risorse per 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 = " CAP ".

La denominazione per contenuto ha il vantaggio di gestire gli argomenti del formato in modo naturale: la risorsa messageFileHas_0_MBWhileMaximumIs_1_MB accetta chiaramente due argomenti di formattazione, le dimensioni effettive del file e la dimensione massima del file.

Se consentiamo duplicati, tuttavia, la denominazione per contenuto non ha senso. Per ottenere nomi di risorse univoci, dobbiamo in qualche modo includere il luogo di utilizzo nel nome della risorsa. Questo funziona per i controlli grafici, anche se gli identificatori tendono a essere 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à eventualmente visualizzato? Dal file di codice e dal nome della funzione? Sembra piuttosto maldestro e fragile per me.

Tutto sommato, sono propenso a consentire i duplicati, ma sto cercando di trovare uno schema di denominazione coerente che supporti questo.

Modifica: questa domanda ha due aspetti: come organizzare risorse (DRY vs. duplicati) e come chiamarli . Finora, le risposte si sono concentrate sul primo aspetto. Gradirei un feedback sulle convenzioni di denominazione!

    
posta Daniel Wolf 02.08.2016 - 10:15
fonte

5 risposte

8

Accetterei la duplicazione ogni volta che non puoi essere assolutamente sicuro che il significato sia esattamente lo stesso in tutti i casi in cui viene usata una determinata stringa.

Anche se due etichette contengono sempre la stessa stringa in inglese (o nella tua lingua madre), non saranno necessariamente le stesse in tutte le lingue. Accettare la duplicazione può dare (o meglio ai traduttori) la flessibilità necessaria per gestire tali situazioni.

Ad esempio: considera un'etichetta "Condizione" che, a seconda del contesto, può essere tradotta in "Zustand" o "Bedingung" in tedesco (tra molte altre traduzioni possibili).

    
risposta data 02.08.2016 - 14:20
fonte
2

Accetta alcuni duplicati.

Puoi evitare alcune traduzioni multiple creando controlli aggiuntivi. Per esempio. un CancelButton e un OKButton che contengono già il loro testo, e ora Annulla / Abbrechen OK / OK devono essere tradotti solo una volta. Ma questo è quasi un caso speciale.

    
risposta data 02.08.2016 - 13:45
fonte
2

Questo è il modo in cui lo gestiamo nella mia azienda:

Convenzione di denominazione: Denominiamo le etichette prefiggendole con la loro classe / sezione / modulo / ecc. Ad esempio loadFile_loadButton , loadFile_fileNameLabel , loadFile_cancel sono tutte le etichette che appartengono a una finestra di dialogo Carica file. Sebbene questa convenzione di denominazione sottolineata non sia la più comune, la prediligiamo rispetto ad altre convenzioni standard perché migliora la leggibilità e la "groupability": nota come è facile vedere a quale elemento appartengono le etichette e cosa rappresenta ciascuna etichetta, rispetto alle etichette named loadFileLoadButton , loadFileNameLabel e loadFileCancel . Potresti pensare che la differenza non sia così grande, ma quando hai migliaia di etichette, ne vale la pena.

Commenti dell'intestazione: Oltre ai nomi delle etichette con prefisso, aggiungiamo anche commenti di "intestazione" ai file delle risorse per definire chiaramente i raggruppamenti delle etichette. In questo modo, qualcuno che desideri modificare o aggiungere etichette specifiche relative a una particolare classe / sezione / modulo / ecc può trovare tutte le etichette relative a quel particolare elemento in un solo posto, sotto un'intestazione, e può facilmente procedere ad aggiungere o modificare facilmente etichette sapendo che non interromperanno le traduzioni per nessun altro elemento (IMHO, questo è anche un punto molto strong sul perché è necessario consentire la duplicazione).

I duplicati "giustificati" sono desiderabili: Come accennato in precedenza, queste pratiche porteranno definitivamente a duplicare le etichette, ma non vediamo alcun problema (maggiori informazioni su come gestirlo in Strumenti del mestiere).

Come altri hanno sottolineato, un'etichetta in una lingua può essere tradotta in due o più modi diversi in altre lingue a seconda dei contesti in cui vengono presentati. Se si "unificano" le etichette, il traduttore avrà davvero difficoltà a trovare una singola etichetta che si adatti a tutti i contesti in cui viene trovata. Quindi, così come lo vediamo, consentire duplicati "giustificati" aiuta a migliorare la qualità della localizzazione, a patto che non si riferiscano alla stessa cosa nello stesso contesto (questo è il significato di "giustificato").

Strumenti del mestiere: Per essere il più efficace possibile quando esegui le tue traduzioni, puoi creare il tuo strumento che cerca etichette simili che esistono nei tuoi bundle e offrire le loro traduzioni come valori predefiniti per nuove etichette, oppure puoi anche utilizzare servizi esistenti come < a href="https://www.getlocalization.com"> questo , che fornisce strumenti come quello appena menzionato, rendendo la traduzione delle nuove etichette un gioco da ragazzi (ancor più se vengono ripetute più volte, poiché lo strumento offrirà diverse opzioni di traduzione per impostazione predefinita per le nuove etichette).

Riassumendo: La duplicazione giustificata e l'etichetta raggruppata in modo contestuale aiuta davvero i traduttori a fare il loro lavoro. Grande tempo. Pensaci: avere un contesto molto utile per aiutare il traduttore a selezionare la traduzione corretta. E consentire duplicati "giustificati" elimina il conflitto di dover selezionare una traduzione che si adatta male ad alcuni contesti (ma è comunque il miglior adattamento generale).

Spero che questo aiuti!

    
risposta data 11.08.2016 - 05:38
fonte
1

Quando ho fatto questo in passato abbiamo discusso il percorso del file di risorse contenente frasi complete. Se la stessa frase veniva usata ripetutamente alla grande, ma se si trattasse di singole parole all'interno di una frase, quelle parole sarebbero state duplicate.

Siamo stati legati a un framework in cui il file di risorse conteneva solo un elenco di frasi inglesi seguite dalla traduzione (con alcuni dati di indicizzazione alla fine per una rapida ricerca).

Per piccoli prompt o pulsanti di dati, come un nome di campo di "CAP" o un pulsante di "OK", memorizzerebbe la stringa "CAP" seguita dalla traduzione e la userebbe ovunque fosse richiesta la stringa completa . Ma (a meno che non interrompiamo manualmente una stringa) non lo useremmo per "CAP" che appare in una frase.

Usando il tuo esempio di codice di avviamento postale, se provi a tradurlo da solo e lo sostituisci in tutte le frasi che lo utilizzano, otterrai una traduzione molto pessima.

Ad esempio, "Il codice postale deve essere inserito" potrebbe essere necessario tradurre l'equivalente letterale di "Codice postale inserito deve essere" in un'altra lingua. Se tagli una frase non ottieni quell'inversione di parole richiesta in un'altra lingua.

Ecco perché alcune traduzioni malamente tradotte in inglese appaiono così ridicole, la persona che lo fa ha appena tradotto le singole parole, non l'intera frase.

Abbiamo sempre trovato il modo migliore per tradurre le frasi nel loro insieme, senza romperle. Disponevamo di segnaposto per i dati che dovevano essere inseriti (ad esempio, "Numero parte @ 1 è ridondante") e il traduttore poteva spostare il segnaposto nella posizione in cui lo desiderava per una buona traduzione.

Tuttavia, abbiamo scoperto che consentire l'uso di spazi che utilizzavano esattamente la stessa frase, lo stesso prompt di dati o la stessa etichetta di pulsante ecc., andava bene per condividere le traduzioni. Non è mai emerso come problema e ha risparmiato tempo e costi per il traduttore.

    
risposta data 02.08.2016 - 11:34
fonte
0

Il tuo modo di pensare ai nomi è buono.

Obiettivi

  • Definisci un'etichetta comune (ad esempio il nome della variabile) per il testo localizzato.
  • L'etichetta deve essere "a misura di mente". Cioè ... come pratica breve pur essendo inequivocabile.
  • Le etichette dovrebbero seguire un formato coerente in modo da massimizzare la prevedibilità e il richiamo.

Implementazione

  • Ridurre il carico cognitivo con l'uso coerente di abbreviazioni ben note (ad es., msg = messaggio, lbl = etichetta, btn = pulsante, ...)
  • Gli strumenti presentano variabili / etichette in elenchi alfabetici, quindi la ricerca umana è la migliore quando le etichette correlate si raggruppano. Rendi i nomi gerarchici dal più generale al più specifico. (cioè msgFileMissing, msgFileSaved, msgFileDeleted).
  • L'inglese è un linguaggio ordinato da un verbo-nome. Molte (la maggior parte?) Altre lingue sono verbo-sostantivo. Noun-verb funziona meglio per il raggruppamento gerarchico.
risposta data 05.08.2016 - 04:47
fonte

Leggi altre domande sui tag