pourquoi ne pas utiliser gettext? C'est plus rapide pour la compilation?
Je me suis arrêté sur libintl-lite car c'était la première solution qui m'a permis de passer la compilation avec la chaîne d'outils du NDK. J'ai essayé de compiler gettext aussi mais cela s'est avéré beaucoup plus compliqué, principalement à cause de la dépendance à iconv. Je ne me souviens plus où je m'étais arrêté mais je crois que la compilation de libiconv bloquait à cause de fichiers d'entêtes manquants dans le NDK.
Cependant j'ai quand même dû modifier quelques trucs dans libintl-lite : il manquait quelques méthodes à l'interface pour retrouver celle de gettext et l'implémentation était un peu buggée.
concrètement, est-ce que les fonctionnalités qui manquent sont utilisées des fois où ce ne sont que des cas particuliers?
Il manque la conversion entre locales du coup ! Ce que gettext fait avec iconv, libintl-lite ne le fait pas du tout. En pratique cela signifie que les fichiers de traductions .po doivent utiliser le même encodage que celui du système. Là aussi il y avait un piège puisque les appels à setlocale sont ignorés dans le code natif et renvoient toujours la locale C plutôt que celle de l'interface Android (i.e. la langue de l'utilisateur). J'ai dû patcher la SDL pour obtenir la langue de l'utilisateur depuis mon code C++.
[^] # Re: libintl-lite
Posté par Julien Jorge (site web personnel) . En réponse à la dépêche Andy's Super Great Park, libéré, arrive sur Android. Évalué à 3.
Je me suis arrêté sur libintl-lite car c'était la première solution qui m'a permis de passer la compilation avec la chaîne d'outils du NDK. J'ai essayé de compiler gettext aussi mais cela s'est avéré beaucoup plus compliqué, principalement à cause de la dépendance à iconv. Je ne me souviens plus où je m'étais arrêté mais je crois que la compilation de libiconv bloquait à cause de fichiers d'entêtes manquants dans le NDK.
Cependant j'ai quand même dû modifier quelques trucs dans libintl-lite : il manquait quelques méthodes à l'interface pour retrouver celle de gettext et l'implémentation était un peu buggée.
Il manque la conversion entre locales du coup ! Ce que gettext fait avec iconv, libintl-lite ne le fait pas du tout. En pratique cela signifie que les fichiers de traductions .po doivent utiliser le même encodage que celui du système. Là aussi il y avait un piège puisque les appels à
setlocalesont ignorés dans le code natif et renvoient toujours la locale C plutôt que celle de l'interface Android (i.e. la langue de l'utilisateur). J'ai dû patcher la SDL pour obtenir la langue de l'utilisateur depuis mon code C++.