CePolyglotte

CéroceCéroce Membre, Modérateur
avril 2012 modifié dans API AppKit #1
Je viens de mettre cette classe sous GitHub.



http://ceroce.github.com/CePolyglotte



Il s'agit d'un système de traduction des NIB à  la volée pour Mac OS X.

(Le pendant OS X de AutoNibL10n).
Mots clés:

Réponses

  • APAP Membre
    Juste ce que j'ai rapidement cherché il y a quelques jours et que je n'ai pas trouvé sur Google.

    Il y a qqlch qui le limite à  OSX?
  • Google doit pas bien marcher alors image/tongue.png' class='bbc_emoticon' alt=':P' />

    https://forrst.com/posts/Localization_Automation-whZ
  • APAP Membre
    ah, y'a de la compétition image/wink.png' class='bbc_emoticon' alt=';)' />



    Lequel des 2 est le mieux image/wink.png' class='bbc_emoticon' alt=';)' />
  • C'est un vieux truc le mien image/tongue.png' class='bbc_emoticon' alt=':P' /> et puis je préfère largement le système de Céroce même si au fond ça reste le même principe.
  • J'ai lu, intéressant. Mais avec le même problème que j'ai dans mon programme "Localise", Il faut prévoir la place pour les phrases les plus longues et la difficulté est que ce n'est pas toujours la même langue qui a la traduction la plus longue.

    Je pense d'ailleurs résoudre ce problème de manière compatible avec mon logiciel.
  • APAP Membre
    'tablier' a écrit:


    J'ai lu, intéressant. Mais avec le même problème que j'ai dans mon programme "Localise", Il faut prévoir la place pour les phrases les plus longues et la difficulté est que ce n'est pas toujours la même langue qui a la traduction la plus longue.

    Je pense d'ailleurs résoudre ce problème de manière compatible avec mon logiciel.


    Intéressant, tu comptes t'y prendre comment?
  • CéroceCéroce Membre, Modérateur
    'AP' a écrit:


    Il y a qqlch qui le limite à  OSX?




    Au moins deux choses:
    • les classes ne sont pas les mêmes (NSControl sous OS X, UIControl sous iOS)
    • je n'ai pas trouvé de moyen de récupérer une liste des objets instanciés dans un NIB sous OS X. C'est pour cela que j'utilise des outlets. On peut sous iOS.
  • CéroceCéroce Membre, Modérateur
    'tablier' a écrit:


    Il faut prévoir la place pour les phrases les plus longues et la difficulté est que ce n'est pas toujours la même langue qui a la traduction la plus longue.


    J'y ai réfléchi; effectivement ce n'est pas un problème simple. On pourrait imaginer ajouter des symboles pour commander un redimensionnement automatique.

    Par exemple, si le titre d'un bouton est "cancelBtn=>", le "=" signifierait qu'il faut envoyer un sizeToFit et le ">" qu'il faut conserver l'écart sur le côté droit.



    J'ai laissé ce problème pour l'instant, dans PortraiMatic, sans redimensionnement, je trouve que ça va, même si ce n'est pas parfait.
  • CéroceCéroce Membre, Modérateur
    'ldesroziers' a écrit:


    Je le garde au chaud, il y a certaines choses (comme les NSMatrix) que mon code ne gère pas. Un oubli !
  • tabliertablier Membre
    avril 2012 modifié #11
    Pour la longueur des phrases, ce que je pense faire:

    Avec toutes les langues présentes, créer un fausses langue qui contiendra toutes les phrases les plus longues quelque soit leur langue. Puis générer les nib ou Xib dans cette pseudo-langue. Le programmeur vérifie et ajuste les tailles des champs de texte puis ce sert de ces nib ou xib comme modèle pour générer tout les nib/xib de toutes les langues.

    Il reste le problème des phrases qui évoluent avec l'environnement et je ne sais pas si ça marchera pour les langues arabes, asiatiques.. etc
  • JaumardJaumard Membre
    août 2012 modifié #12
    Merci pour cette classe que je cherché ardemment !!! image/biggrin.png' class='bbc_emoticon' alt=':D' />



    Je me permet d'ajouter que si on a ARC d'activé il faut mettre. (derniere version de xcode)


    <br />
    @property (nonatomic, retain) IBOutlet NSView *topLevelView;<br />
    @property (nonatomic, retain) IBOutlet NSMenu *topLevelMenu;<br />
    @property (nonatomic, retain) IBOutlet NSWindow *topLevelWindow;<br />
    




    Sinon on a une erreur pour les @synthetize



    On peux aussi rajouter ceci pour les NSTextFields pour traduire aussi le placeHolder


    <br />
    NSString *key = [[(NSTextField*)view cell] placeholderString];<br />
    		if(&#33;[key isEqualToString:@&quot;&quot;])  // The text might be set by bindings<br />
    			[[(NSTextField*)view cell] setPlaceholderString:[self _translationForKey:key]];<br />
    




    Pour les NSComboBox :
    <br />
    // NSComboBox<br />
        else if([view isKindOfClass:[NSComboBox class]]){<br />
    	    for (int i=0; i&lt;(int)[(NSComboBox*)view numberOfItems]; i++) {<br />
    		    [(NSComboBox*)view insertItemWithObjectValue:[self _translationForKey:[(NSComboBox*)view itemObjectValueAtIndex:i]] atIndex:i];<br />
    		    [(NSComboBox*)view removeItemAtIndex:i+1];<br />
    	    }<br />
    	   <br />
        }// NSTextField: stringValue property<br />
    




    A rajouter avant les NSTextField.
  • CéroceCéroce Membre, Modérateur
    Merci pour tes suggestions. N'hésite pas à  les proposer sur GitHub, la principale valeur de l'Open Source est justement la possibilité de faire évoluer du code existant.



    Par ailleurs, la classe est devenue inutile sous 10.8. ça ne signifie pas forcément que je ne la ferai pas évoluer puisque mon appli tourne encore sous 10.5, mais que pour un nouveau développement, il vaut mieux utiliser la solution d'Apple.
Connectez-vous ou Inscrivez-vous pour répondre.