Forums Développement Multimédia

Les formations Mediabox
Les formations Mediabox
EN CHANTIER
Cette page n'est pas terminée et est en cours d'écriture. Merci de m'aider pour l'orthographe !

Aide localisable pour vos applications Mac OS X

Compatible MacOS 10.6. Cliquer pour en savoir plus sur les compatibilités.Par seb_stien (seb), le 07 juin 2011

Ce tutoriel vous permettra d'intégrer une Aide simple et localisée via le Menu Aide de votre application pour OSX.

Par simple on entend une aide basé sur un ensemble de fichiers HTML.

Par localisée on entend l'utilisation automatique de l'ensemble de fichier correspondant à la langue par défaut de l'utilisateur (en fonction de ce choix définit dans Préférence Système / Langue et texte).

Il s'agira d'ouvrir un fichier html en fonction de la langue par défaut de l'utilisateur avec l'application Help Viewer inclue dans OS X.

Prenez note que selon les versions d'OS X l'application peut se nommer “HelpViewer.App” ou “Help Viewer.App” (avec un espace entre Help et Viewer). Il faudra bien entendu que notre application tiennent compte de ce problème. Pour plus de sécurité nous tiendrons aussi compte du fait qu'HelpViewer n'existe pas dans le système de l'utilisateur ; nous utiliserons alors l'application définit par défaut dans le système pour la lecture des fichiers html.

Prérequis

Pour pouvoir suivre ce tutoriel vous devez déjà avoir une connaissance de base dans les domaines suivants :

  • Avoir écris au moins une application simple en cocoa
  • Cocoa / Objective C (basic)
  • Interface Builder (basic)
  • XCode 4 (basic)
  • HTML (Connaissance des balises de base <b></br><p><i>….)

Fichiers d'aide HTML

Introduction

La première étape consiste à créer la version anglaise du fichier HTML qui servira de base à notre système d'aide. Il s'agira ensuite de procéder à des localisations de ce fichier à travers xCode.

Version anglaise

Dans xCode, ajouter un fichier vide. Nommer le help.html. Ce fichier contiendra à terme votre aide en anglais.

  • Dans votre navigateur xCode, cliquez sur le dossier Supporting Files

  • Sélectionnez dans xCode New File dans le menu File/New…
  • Dans la fenêtre suivante sélectionnez Ressource dans l'onglet de gauche
  • Sélectionnez String Filedans la partie gauche
  • Cliquez sur Next

  • Dans la fenêtre Save As indiquez help.html dans la zone réservée au nom de fichier ; et sélectionnez le dossier en.lproj
  • Cliquez sur Save

  • Dans l'alerte qui apparaît sélectionnez Use .html

Votre fichier est créé ! Saisissez le code suivant à l'intérieur :

<big><center><b>English Help</b></center></big></br>
HelpViewer est un lecteur HTML très simpliste. Il n'autorise pas par exemple le java ni les balises html comme <mailto:…> qui permet de déclencher l'envoie d'un mail.

Version française

Nous allons utilisez xCode pour ajouter la localisation française à help.html.

Pour cela nous allons nous servir de file inspector.

Si vous ne le voyez pas dans votre espace de travail vous devez l'afficher en sélection file inspector dans le menu View/Utilities.

Dans l'onglet file inspector, cliquez sur Localization puis sur + et choisissez French dans le menu déroulant. Vous obtiendrez ainsi une copie de la version anglaise de help.html.

Dans le navigateur de xCode, dans le dossier Supporting Files le fichier help.html contient maintenant deux versions que vous pouvez personnaliser indépendamment l'une de l'autre.

Editez la version française en saisissant le code suivant à l'intérieur :

<big><center><b>Aide fran&ccedil;aise</b></center></big></br>
Dans vos fichiers HTML les caractères spéciaux et accentués (comme ç dans notre exemple) sont à écrire selon des codes définis dont vous trouverez une liste à l'adresse suivante (entre autres) http://lorem-ipsum.studiovitamine.com/caracteres-speciaux,287,fr.html.

Conclusion

Vous l'aurez compris il suffira par la suite de créer autant de fichier help.html que de langues que vous souhaitez prendre en compte.

Implémentation

Il est convenu qu'en lisant ce tutoriel vous avez déjà écris une application simple et que vous connaissez les bases d'Interface Builder.

Fichier entête .h

Dans le délégué de notre application Nous allons ajoutez une méthode qui sera déclenché par la sélection de l'élémentApplication aide du menu Aide.

Le fichier d'entête du fichier AppDelegate devra définir cette nouvelle méthode

-(IBAction) openHelpFile:(id)sender;

Fichier principal .m

Dans le fichier .h d'AppDelegate nous ajoutez le code suivant.

-(IBAction) openHelpFile:(id)sender
{
    NSBundle *myBundle = [NSBundle mainBundle] ;
    NSString *toCall = [myBundle pathForResource:@"help" 
                                          ofType:@"html"] ;
    // Use HelpViewer.app if existing
    if (![[NSWorkspace sharedWorkspace] openFile:toCall withApplication:@"HelpViewer"])
        // Use Help Viewer.app if existing
        if (![[NSWorkspace sharedWorkspace] openFile:toCall withApplication:@"Help Viewer"])
            // Use systeme defined html file reader (for ex safari.app)
            [[NSWorkspace sharedWorkspace] openFile:toCall] ;    
}
  • myBundle s'occupe de récupérer le Bundle principal de l'application
  • toCall va rechercher l'url du fichier help.html dans le Bundle de l'application. S'il ne le trouve pas à la racine du Bundle il va alors explorer les dossiers de localisation en utilisant l'ordre défini par l'utilisateur dans ses préférences système.
  • Ensuite nous tentons d'ouvrir le fichier dont l'url est toCall avec l'application HelpViewer * Si cela ne marche pas nous tentons d'ouvrir le fichier dont l'url est toCall avec l'application Help Viewer
  • Si cela ne marche toujours pas nous demandons au système d'ouvrir le fichier dont l'url est toCall. Le système ce chargera alors de choisir l'application par défaut définie pour lire les fichiers .html.

Interface Builder

Dans IB vous devrez relier l'item du menu Application Aide à la méthode openHelpFile d'AppDelegate. Je ne m'attarde pas la dessus car vous avez déjà écris une application et vous connaissez donc suffisamment xCode et IB pour établir ce lien dans IB.

Les sources