Question

J'écris un jeu qui utilise les entrées de l'utilisateur et les affiche à l'écran. Le moteur que j'utilise pour cela est entièrement compatible Unicode, j'aimerais donc le conserver si possible. Le problème est que la boucle de rendu ressemble à ceci:

"string".each_byte do |c|
    render_this_letter(c)
end

Je ne connais pas grand chose à propos de i18n, mais j'en sais assez pour savoir que le code ci-dessus ne fonctionnera jamais que pour moi et les personnes qui parlent ma langue. Je préférerais quelque chose comme:

"unicode string".each_unicode_letter do |u|
    render_unicode_letter(u)
end

Cela existe-t-il dans la distribution principale? Je suis quelque peu opposé à l'ajout d'exigences supplémentaires à l'installation, mais si c'est le seul moyen de le faire, je vivrai.

Pour plus de plaisir, je n'ai aucun moyen de savoir si la chaîne est en fait une chaîne unicode.

EDIT: La bibliothèque que j'utilise peut en effet restituer des chaînes entières, mais je laisse l’utilisateur éditer ce qui se présente à la volée - s’ils appuient sur «retour arrière», j’ai besoin de savoir combien d’octets à couper de la fin.

Était-ce utile?

La solution

Malheureusement, ruby ??1.8.x a un support unicode faible. On en parle dans 1.9. Mais dans l’intervalle, les bibliothèques comme celle-ci ( http://snippets.dzone.com/posts / show / 4527 ) sont une bonne solution. En utilisant la bibliothèque liée, votre code ressemblerait à ceci:

"unicode_string".each_utf8_char do |u| 
    render_unicode_letter(u)
end

Autres conseils

Vous pouvez essayer d'inclure le ActiveSupport :: CoreExtensions :: String: : Unicode module de la base de code rails.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top