-2

J'avais lu la documentation sur la localisation Embarcadero DocWiki.Delphi Application internationalisation et localisation

Mais je ne sais pas comment:

  1. changer la langue dans Run-Time - par exemple je voudrais cliquer dans la langue menu de l'application de changement vers l'anglais ou
  2. polonais
  3. Afficher le texte traduit dans les dialogues, par exemple : ShowMessage ('Zmieniłeś język');
+0

Êtes-vous sous firemonkey ou VCL? –

+0

VCL. Delphi 10 Seattle Enterprise. – InnerWorld

+0

Vous pouvez essayer d'utiliser le composant TLang, mais il est buggé et ne fonctionne pas avec tous les composants. J'ai écrit mon propre composant pour localiser les applications Android et ios et les programmes Windows, je vous suggère de faire la même chose. Sinon, vous pouvez vérifier ceci: https://yktoo.com/en/software/dklang –

Répondre

2

1. projet Il y avait de l'échantillon (livré avec Delphi) appelé RichEdit qui avait le changement d'exécution du langage. Pour y parvenir, Reinit unité a été utilisée (vous pouvez le prendre à partir de là) qui recharge réellement toutes les ressources. Il fonctionne normalement sur des programmes simples comme celui-ci, mais peut être très pénible à implémenter dans quelque chose de plus complexe, puisque tous les contrôles sur la forme sont retournés à l'état initial dans lequel ils ont été au démarrage, donc c'est votre responsabilité pour garder vos données cohérentes. Bien que dans une implémentation correcte où toute la logique d'application est séparée de l'interface graphique (donc il n'y a pas de variables sur TForm, pas de stockage de données utilisateur dans les boîtes d'édition, etc.), cela devrait fonctionner normalement.

Voir le code source de RichEdit exemple pour comprendre comment utiliser Reinit.pas

2. L'approche classique consiste à utiliser ResourceString. Dans la section d'interface de l'appareil ou mieux dans l'unité séparée, écrivez:

ResourceString 
    ChangeLanguageStr = 'Zmieniłeś język'; 
    //another strings here 

et pour montrer un message:

ShowMessage(ChangeLanguageStr); 

Ces chaînes seront affichés dans le gestionnaire de traduction.

+0

Je voudrais mentionner que les chaînes de ressources sont généralement préfixées par 'rs' comme' r'source 's'trings. – Victoria

+0

Je ne trouve pas la démo RichEdit, peut-être que je n'ai pas installé l'IDE avec des démos. Je vais essayer de le trouver. Maintenant, je vois ResourceString dans le fichier .rc - avant que je recherche dans le mauvais module, mais quand la langue est polonaise - chaîne est montre dans la boîte de dialogue, mais quand change en anglais, chaîne est vide (je l'ai traduit dans Translator Editor), je ne savoir pourquoi. – InnerWorld

+0

@InnerWorld J'ai toujours eu du mal à mettre à jour toutes les ressources après avoir changé, j'ai eu recours à cliquer partout: 'projet -> langues -> mettre à jour les projets localisés' puis 'projet -> construire tous les projets' groupe est ouvert avec l'application originale et ses traductions. Autrement dit: peut-être que vous voyez la version précédente. –