2009-02-28 4 views
7

In Apple Docs si dice che un pennino consente l'internazionalizzazione semplicemente traducendo il pennino in molte lingue. Sto pensando ora a uno scenario peggiore ma realistico: hai creato un'interfaccia utente enorme. Quindi traduci questo in 25 lingue. Quindi ottieni 25 pennini diversi. Hai anche un'enorme ridondanza nello stile e nella definizione dell'interfaccia utente: 25 volte la stessa roba. Stessi attacchi, stesso tutto. Solo il testo è diverso.Internazionalizzazione con pennini. È davvero una buona idea?

Quindi, penso davvero che questo sia un approccio pessimo. Invece, preferirei semplicemente collegare tutti i testi da un pacchetto di risorse o qualcosa del genere. Solo un file con stringhe di testo, che è collegato in fase di esecuzione dalla risorsa della lingua appropriata. Quindi hai solo "problemi" di collegamento nel testo che non rende affatto divertente. Ma poi, puoi fare cambiamenti sulla tua interfaccia utente senza dover ripetere la stessa operazione 25 volte più e più volte. Un nuovo rilegatura in ogni pennino. Sarebbe così orribile !!

Ora, per favore dimmi che ho sbagliato. Apple non presume che facciamo qualcosa di così creativo?

risposta

9

La situazione di localizzazione non è l'ideale. Sebbene gli elementi dell'interfaccia utente di Cocoa supportino una certa flessibilità dinamica nel dimensionamento (i flag ausiliari), è molto difficile organizzarli in una vista in modo che possano contenere testo di qualsiasi dimensione.

Come indicato da Heng-Cheong, questo di solito significa che è necessario un certo adeguamento al layout in base alla localizzazione. Apple supporta un processo chiamato localizzazione incrementale con uno strumento chiamato "ibtool", in bundle con i tuoi strumenti di sviluppo. Il processo è tutt'altro che intuitivo e sembra avere alcuni bug sottili, ma aiuta a rendere il processo più facile rispetto, ad esempio, mantenendo manualmente 25 diversi pennini manualmente. Il processo consiste essenzialmente nel mappare le modifiche apportate al pennino principale sugli altri pennini localizzati. Apple ha descritto il processo in modo più dettagliato:

https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/LoadingResources/CocoaNibs/CocoaNibs.html

Al fine di evitare questo processo doloroso, alcune persone prendono un approccio diverso. Se si compromette il layout delle proprie visualizzazioni, è possibile ottenere una situazione in cui ogni elemento dell'interfaccia utente contiene la stringa localizzata più grande. Utilizzando le caratteristiche di allineamento dei campi di testo, ecc., È possibile quindi organizzare un layout accettabile, sebbene la spaziatura aggiuntiva richiesta per la localizzazione con le stringhe più grandi spesso causi un layout non ideale della lingua le cui stringhe siano più corte. Se si segue questo approccio, è necessario progettare i propri pennini in modo che una classe di controller compili gli elementi dell'interfaccia utente del pennino con le stringhe localizzate corrette in fase di runtime.

Infine, alcuni sviluppatori arrivano al punto di applicare il proprio relayout agli elementi di un pennino, ottimizzandoli per le dimensioni delle stringhe impostate su di essi. Questo sarebbe un perfezionamento della strategia precedente, in cui un singolo pennino viene utilizzato e manipolato in fase di runtime per ottenere l'effetto desiderato.

5

A volte, la localizzazione implica più di una semplice sostituzione del testo, ma anche dei cambiamenti nel layout. Ad esempio, le stringhe in una lingua/lingua possono essere significativamente più lunghe che in un'altra, forzando un cambiamento nel layout. La lingua da destra a sinistra spesso significa anche alcuni cambiamenti nel layout.

+1

Secondo questo. Se pensate di supportare le lingue da destra a sinistra, la semplice sostituzione delle stringhe è quasi impossibile. – sbooth

5

Sulla base delle due risposte precedenti, c'è uno strumento chiamato iLocalize che mira a semplificare il processo rispetto a ibtool (ed è più vecchio di ibtool). Non l'ho mai usato da solo, ma il mio amico Evan lo usa sia su Adium che su Growl e lo adora.