From c3c73d2ac2a5738b42aa657b65c93fe1ca0fb284 Mon Sep 17 00:00:00 2001 From: Akash Mozumdar Date: Thu, 2 Jul 2020 12:52:07 -0600 Subject: [PATCH] fix french translation --- text.cpp | 246 +++++++++++++++++++++++++++---------------------------- 1 file changed, 123 insertions(+), 123 deletions(-) diff --git a/text.cpp b/text.cpp index 9564f27..9545739 100644 --- a/text.cpp +++ b/text.cpp @@ -1001,25 +1001,25 @@ original_text의 빈공간은 무시되지만, replacement_text는 공백과 엔 #endif // KOREAN #ifdef FRENCH - const char* NATIVE_LANGUAGE = "French"; - const char* ATTACH = u8"Attacher le jeu"; - const char* LAUNCH = u8"Lancer le jeu"; - const char* GAME_CONFIG = u8"Configure le jeu"; - const char* DETACH = u8"Detacher du jeu"; - const char* FORGET = u8"Oublier le jeu"; - const char* ADD_HOOK = u8"Ajouter un hook"; - const char* REMOVE_HOOKS = u8"Enlever un hook(s)"; - const char* SAVE_HOOKS = u8"Sauvegarder un hook(s)"; - const char* SEARCH_FOR_HOOKS = u8"Rechercher des hooks"; - const char* SETTINGS = u8"Paramètres"; - const char* EXTENSIONS = u8"Extensions"; - const char* SELECT_PROCESS = u8"Selectionner le processus"; - const char* ATTACH_INFO = u8R"(Si vous ne voyez pas le processus que vous souhaitez joindre, essayez de l'exécuter avec les droits d'administrateur + NATIVE_LANGUAGE = "French"; + ATTACH = u8"Attacher le jeu"; + LAUNCH = u8"Lancer le jeu"; + GAME_CONFIG = u8"Configure le jeu"; + DETACH = u8"Detacher du jeu"; + FORGET = u8"Oublier le jeu"; + ADD_HOOK = u8"Ajouter un hook"; + REMOVE_HOOKS = u8"Enlever un hook(s)"; + SAVE_HOOKS = u8"Sauvegarder un hook(s)"; + SEARCH_FOR_HOOKS = u8"Rechercher des hooks"; + SETTINGS = u8"Paramètres"; + EXTENSIONS = u8"Extensions"; + SELECT_PROCESS = u8"Selectionner le processus"; + ATTACH_INFO = u8R"(Si vous ne voyez pas le processus que vous souhaitez joindre, essayez de l'exécuter avec les droits d'administrateur Vous pouvez également saisir l'ID de processus)"; - const char* SELECT_PROCESS_INFO = u8"Si vous saisissez manuellement le nom du fichier de processus, veuillez utiliser le chemin exact"; - const char* FROM_COMPUTER = u8"Selectionner depuis l'ordinateur"; - const char* PROCESSES = u8"Processus (*.exe)"; - const char* CODE_INFODUMP = u8R"(Enter read code + SELECT_PROCESS_INFO = u8"Si vous saisissez manuellement le nom du fichier de processus, veuillez utiliser le chemin exact"; + FROM_COMPUTER = u8"Selectionner depuis l'ordinateur"; + PROCESSES = u8"Processus (*.exe)"; + CODE_INFODUMP = u8R"(Enter read code R{S|Q|V|M}[null_length<][codepage#]@addr OR Enter hook code @@ -1038,48 +1038,48 @@ Negatives for data_offset/split_offset refer to registers -4 for EAX, -8 for ECX, -C for EDX, -10 for EBX, -14 for ESP, -18 for EBP, -1C for ESI, -20 for EDI -C for RAX, -14 for RBX, -1C for RCX, -24 for RDX, and so on for RSP, RBP, RSI, RDI, R8-R15 * means dereference pointer+deref_offset)"; - const char* SAVE_SETTINGS = u8"Sauvergarder les paramètres"; - const char* EXTEN_WINDOW_INSTRUCTIONS = u8R"(Pour ajouter une extension, cliquez avec le bouton droit sur la liste des extensions + SAVE_SETTINGS = u8"Sauvergarder les paramètres"; + EXTEN_WINDOW_INSTRUCTIONS = u8R"(Pour ajouter une extension, cliquez avec le bouton droit sur la liste des extensions Vous pouvez également faire glisser et déposer le fichier d'extension depuis votre ordinateur Pour réorganiser les extensions, faites-les glisser et déposez-les dans la liste (Les extensions sont utilisées de haut en bas: l'ordre est IMPORTANT) Pour supprimer une extension, sélectionnez-la et appuyez sur supprimer)"; - const char* ADD_EXTENSION = u8"Ajouter une extension"; - const char* INVALID_EXTENSION = u8"%1 C'est une extension invalide"; - const char* CONFIRM_EXTENSION_OVERWRITE = u8"Une autre version de cette extension existe déjà. Voulez-vous la supprimer et la remplacer?"; - const char* EXTENSION_WRITE_ERROR = u8"Impossible d'enregistrer l'extension"; - const char* USE_JP_LOCALE = u8"Émuler les paramètres régionaux japonais?"; - const char* FAILED_TO_CREATE_CONFIG_FILE = u8"Impossible de créer le fichier de configuration \"%1\""; - const char* HOOK_SEARCH_UNSTABLE_WARNING = u8"La recherche de crochets est instable! Soyez prêt à ce que votre jeu plante!"; - const char* SEARCH_CJK = u8"Recher pour Chinois/Japonais/Coréen"; - const char* SEARCH_PATTERN = u8"Modèle de recherche (tableau d'octets hexadécimaux)"; - const char* SEARCH_DURATION = u8"Durée de la recherche(ms)"; - const char* SEARCH_MODULE = u8"Recherche sans module"; - const char* PATTERN_OFFSET = u8"Décalage par rapport au début du modèle"; - const char* MAX_HOOK_SEARCH_RECORDS = u8"Limite du résultat de la recherche"; - const char* MIN_ADDRESS = u8"Minimum d'adresses (hex)"; - const char* MAX_ADDRESS = u8"Maximum d'adresses (hex)"; - const char* STRING_OFFSET = u8"Décalage de la chaîne (hex)"; - const char* HOOK_SEARCH_FILTER = u8"Results must match this regex"; - const char* TEXT = u8"Texte"; - const char* CODEPAGE = u8"Code de page"; - const char* SEARCH_FOR_TEXT = u8"Rechercher un texte spécifique"; - const char* START_HOOK_SEARCH = u8"Lancer la recherche de hook"; - const char* SAVE_SEARCH_RESULTS = u8"Sauvergarder les résultats de la recherche"; - const char* TEXT_FILES = u8"Texte (*.txt)"; - const char* DOUBLE_CLICK_TO_REMOVE_HOOK = u8"Double click un hook pour l'enlever"; - const char* FILTER_REPETITION = u8"Répétition de filtre"; - const char* AUTO_ATTACH = u8"Attachement Automatique"; - const char* ATTACH_SAVED_ONLY = u8"Attachement Automatique(Sauvergardé seulement)"; - const char* SHOW_SYSTEM_PROCESSES = u8"Montrer les processus système"; - const char* DEFAULT_CODEPAGE = u8"Page de code de base"; - const char* FLUSH_DELAY = u8"Retard de vidage"; - const char* MAX_BUFFER_SIZE = u8"Taille maximale du tampon"; - const char* MAX_HISTORY_SIZE = u8"Taille d'historique maximale"; - const char* CONFIG_JP_LOCALE = u8"Lancement avec les paramètres régionaux JP"; - const wchar_t* CONSOLE = L"Console"; - const wchar_t* CLIPBOARD = L"Presse-papier"; - const wchar_t* ABOUT = L"Textractor " ARCH L" v" VERSION LR"( Fait par moi: Artikash (email: akashmozumdar@gmail.com) + ADD_EXTENSION = u8"Ajouter une extension"; + INVALID_EXTENSION = u8"%1 C'est une extension invalide"; + CONFIRM_EXTENSION_OVERWRITE = u8"Une autre version de cette extension existe déjà. Voulez-vous la supprimer et la remplacer?"; + EXTENSION_WRITE_ERROR = u8"Impossible d'enregistrer l'extension"; + USE_JP_LOCALE = u8"Émuler les paramètres régionaux japonais?"; + FAILED_TO_CREATE_CONFIG_FILE = u8"Impossible de créer le fichier de configuration \"%1\""; + HOOK_SEARCH_UNSTABLE_WARNING = u8"La recherche de crochets est instable! Soyez prêt à ce que votre jeu plante!"; + SEARCH_CJK = u8"Recher pour Chinois/Japonais/Coréen"; + SEARCH_PATTERN = u8"Modèle de recherche (tableau d'octets hexadécimaux)"; + SEARCH_DURATION = u8"Durée de la recherche(ms)"; + SEARCH_MODULE = u8"Recherche sans module"; + PATTERN_OFFSET = u8"Décalage par rapport au début du modèle"; + MAX_HOOK_SEARCH_RECORDS = u8"Limite du résultat de la recherche"; + MIN_ADDRESS = u8"Minimum d'adresses (hex)"; + MAX_ADDRESS = u8"Maximum d'adresses (hex)"; + STRING_OFFSET = u8"Décalage de la chaîne (hex)"; + HOOK_SEARCH_FILTER = u8"Results must match this regex"; + TEXT = u8"Texte"; + CODEPAGE = u8"Code de page"; + SEARCH_FOR_TEXT = u8"Rechercher un texte spécifique"; + START_HOOK_SEARCH = u8"Lancer la recherche de hook"; + SAVE_SEARCH_RESULTS = u8"Sauvergarder les résultats de la recherche"; + TEXT_FILES = u8"Texte (*.txt)"; + DOUBLE_CLICK_TO_REMOVE_HOOK = u8"Double click un hook pour l'enlever"; + FILTER_REPETITION = u8"Répétition de filtre"; + AUTO_ATTACH = u8"Attachement Automatique"; + ATTACH_SAVED_ONLY = u8"Attachement Automatique(Sauvergardé seulement)"; + SHOW_SYSTEM_PROCESSES = u8"Montrer les processus système"; + DEFAULT_CODEPAGE = u8"Page de code de base"; + FLUSH_DELAY = u8"Retard de vidage"; + MAX_BUFFER_SIZE = u8"Taille maximale du tampon"; + MAX_HISTORY_SIZE = u8"Taille d'historique maximale"; + CONFIG_JP_LOCALE = u8"Lancement avec les paramètres régionaux JP"; + CONSOLE = L"Console"; + CLIPBOARD = L"Presse-papier"; + ABOUT = L"Textractor " ARCH L" v" VERSION LR"( Fait par moi: Artikash (email: akashmozumdar@gmail.com) Page d'acceuil du projet: https://github.com/Artikash/Textractor Vidéo tuto: https://tinyurl.com/textractor-tutorial FAQ: https://github.com/Artikash/Textractor/wiki/FAQ @@ -1087,52 +1087,52 @@ Veuillez me contacter pour tout problème, demande de fonctionnalité ou questio Vous pouvez le faire via la page d'accueil du projet (section problèmes) ou par e-mail Code source disponible sous GPLv3 sur la page d'accueil du projet Si vous aimez ce projet, parlez-en à tout le monde :))"; - const wchar_t* CL_OPTIONS = LR"(usage: Textractor [-p{process id|"process name"}]... + CL_OPTIONS = LR"(usage: Textractor [-p{process id|"process name"}]... example: Textractor -p4466 -p"My Game.exe" tries to inject processes with id 4466 or with name My Game.exe)"; - const wchar_t* UPDATE_AVAILABLE = L"Mise à jour disponible: téléchargez-la depuis https://github.com/Artikash/Textractor/releases"; - const wchar_t* ALREADY_INJECTED = L"Textractor: déjà injecté"; - const wchar_t* NEED_32_BIT = L"Textractor: incompatibilité d'architecture: seul Textractor x86 peut injecter ce processus"; - const wchar_t* NEED_64_BIT = L"Textractor: incompatibilité d'architecture: seul Textractor x64 peut injecter ce processus"; - const wchar_t* INJECT_FAILED = L"Textractor: ne peut pas injecter"; - const wchar_t* LAUNCH_FAILED = L"Textractor: ne peut pas lancer"; - const wchar_t* INVALID_CODE = L"Textractor: code invalide"; - const wchar_t* INVALID_CODEPAGE = L"Textractor: impossible de convertir le texte (page de code non valide?)"; - const char* PIPE_CONNECTED = u8"Textractor: tuyau connecté"; - const char* INSERTING_HOOK = u8"Textractor: insertion du hook: %s"; - const char* REMOVING_HOOK = u8"Textractor: enlève le hook: %s"; - const char* HOOK_FAILED = u8"Textractor: n'a pas réussi à insérer un hook"; - const char* TOO_MANY_HOOKS = u8"Textractor: trop de hooks: impossible d'insérer"; - const char* STARTING_SEARCH = u8"Textractor: démarrage de la recherche"; - const char* NOT_ENOUGH_TEXT = u8"Textractor: pas assez de texte pour effectuer une recherche précise"; - const char* HOOK_SEARCH_INITIALIZED = u8"Textractor: la recherche a été initialisé avec %zd hooks"; - const char* MAKE_GAME_PROCESS_TEXT = u8"Textractor: veuillez cliquer dans le jeu pour le forcer à traiter le texte lors de la prochaine %d seconds"; - const char* HOOK_SEARCH_FINISHED = u8"Textractor: la recherche du hook est finie, %d results found"; - const char* OUT_OF_RECORDS_RETRY = u8"Textractor: hors des enregistrements de recherche, veuillez réessayer si les résultats sont médiocres (le nombre d'enregistrements par défaut a augmenté)"; - const char* FUNC_MISSING = u8"Textractor: function non présente"; - const char* MODULE_MISSING = u8"Textractor: module non présente"; - const char* GARBAGE_MEMORY = u8"Textractor: mémoire en constante évolution, inutile à lire"; - const char* SEND_ERROR = u8"Textractor: envoyer ERREUR (comme un H-code instable/incorrect)"; - const char* READ_ERROR = u8"Textractor: Lire ERREUR (comme un R-code incorrect)"; - const char* HIJACK_ERROR = u8"Textractor: ERREUR Hijack"; - const char* COULD_NOT_FIND = u8"Textractor: ne peut pas trouver le texte"; - const char* TRANSLATE_TO = u8"Traduire à"; - const char* TRANSLATE_SELECTED_THREAD_ONLY = u8"Traduire uniquement le thread sélectionné"; - const char* RATE_LIMIT_ALL_THREADS = u8"Taux limite tout les threads de texte"; - const char* RATE_LIMIT_SELECTED_THREAD = u8"Limite de débit du thread de texte sélectionné"; - const char* USE_TRANS_CACHE = u8"Utiliser le cache de traduction"; - const char* RATE_LIMIT_TOKEN_COUNT = u8"Nombre de tokens du limiteur de débit"; - const char* RATE_LIMIT_TOKEN_RESTORE_DELAY = u8"Délai de restauration du token du limiteur de débit (ms)"; - const wchar_t* TOO_MANY_TRANS_REQUESTS = L"Limite de taux dépassée: refus de faire plus de demande de traduction"; - const wchar_t* TRANSLATION_ERROR = L"Une erreur est survenue pendant la traduction"; - const char* USE_PREV_SENTENCE_CONTEXT = u8"Utiliser la phrase précédente comme contexte"; - const char* API_KEY = u8"API key"; - const char* EXTRA_WINDOW_INFO = u8R"(Clic droit pour modifier les paramètres + UPDATE_AVAILABLE = L"Mise à jour disponible: téléchargez-la depuis https://github.com/Artikash/Textractor/releases"; + ALREADY_INJECTED = L"Textractor: déjà injecté"; + NEED_32_BIT = L"Textractor: incompatibilité d'architecture: seul Textractor x86 peut injecter ce processus"; + NEED_64_BIT = L"Textractor: incompatibilité d'architecture: seul Textractor x64 peut injecter ce processus"; + INJECT_FAILED = L"Textractor: ne peut pas injecter"; + LAUNCH_FAILED = L"Textractor: ne peut pas lancer"; + INVALID_CODE = L"Textractor: code invalide"; + INVALID_CODEPAGE = L"Textractor: impossible de convertir le texte (page de code non valide?)"; + PIPE_CONNECTED = u8"Textractor: tuyau connecté"; + INSERTING_HOOK = u8"Textractor: insertion du hook: %s"; + REMOVING_HOOK = u8"Textractor: enlève le hook: %s"; + HOOK_FAILED = u8"Textractor: n'a pas réussi à insérer un hook"; + TOO_MANY_HOOKS = u8"Textractor: trop de hooks: impossible d'insérer"; + STARTING_SEARCH = u8"Textractor: démarrage de la recherche"; + NOT_ENOUGH_TEXT = u8"Textractor: pas assez de texte pour effectuer une recherche précise"; + HOOK_SEARCH_INITIALIZED = u8"Textractor: la recherche a été initialisé avec %zd hooks"; + MAKE_GAME_PROCESS_TEXT = u8"Textractor: veuillez cliquer dans le jeu pour le forcer à traiter le texte lors de la prochaine %d seconds"; + HOOK_SEARCH_FINISHED = u8"Textractor: la recherche du hook est finie, %d results found"; + OUT_OF_RECORDS_RETRY = u8"Textractor: hors des enregistrements de recherche, veuillez réessayer si les résultats sont médiocres (le nombre d'enregistrements par défaut a augmenté)"; + FUNC_MISSING = u8"Textractor: function non présente"; + MODULE_MISSING = u8"Textractor: module non présente"; + GARBAGE_MEMORY = u8"Textractor: mémoire en constante évolution, inutile à lire"; + SEND_ERROR = u8"Textractor: envoyer ERREUR (comme un H-code instable/incorrect)"; + READ_ERROR = u8"Textractor: Lire ERREUR (comme un R-code incorrect)"; + HIJACK_ERROR = u8"Textractor: ERREUR Hijack"; + COULD_NOT_FIND = u8"Textractor: ne peut pas trouver le texte"; + TRANSLATE_TO = u8"Traduire à"; + TRANSLATE_SELECTED_THREAD_ONLY = u8"Traduire uniquement le thread sélectionné"; + RATE_LIMIT_ALL_THREADS = u8"Taux limite tout les threads de texte"; + RATE_LIMIT_SELECTED_THREAD = u8"Limite de débit du thread de texte sélectionné"; + USE_TRANS_CACHE = u8"Utiliser le cache de traduction"; + RATE_LIMIT_TOKEN_COUNT = u8"Nombre de tokens du limiteur de débit"; + RATE_LIMIT_TOKEN_RESTORE_DELAY = u8"Délai de restauration du token du limiteur de débit (ms)"; + TOO_MANY_TRANS_REQUESTS = L"Limite de taux dépassée: refus de faire plus de demande de traduction"; + TRANSLATION_ERROR = L"Une erreur est survenue pendant la traduction"; + USE_PREV_SENTENCE_CONTEXT = u8"Utiliser la phrase précédente comme contexte"; + API_KEY = u8"API key"; + EXTRA_WINDOW_INFO = u8R"(Clic droit pour modifier les paramètres Cliquez et faites glisser sur les bords de la fenêtre pour vous déplacer ou dans le coin inférieur droit pour redimensionner)"; - const char* SENTENCE_TOO_BIG = u8"Phrase trop grande pour être affichée"; - const char* MAX_SENTENCE_SIZE = u8"Taille maximale de la phrase"; - const char* TOPMOST = u8"Toujours au dessus"; - const char* DICTIONARY = u8"Dictionnaire"; - const char* DICTIONARY_INSTRUCTIONS = u8R"(Ce fichier est utilisé uniquement pour la fonction "Dictionnaire" de l'extension Extra Window. + SENTENCE_TOO_BIG = u8"Phrase trop grande pour être affichée"; + MAX_SENTENCE_SIZE = u8"Taille maximale de la phrase"; + TOPMOST = u8"Toujours au dessus"; + DICTIONARY = u8"Dictionnaire"; + DICTIONARY_INSTRUCTIONS = u8R"(Ce fichier est utilisé uniquement pour la fonction "Dictionnaire" de l'extension Extra Window. Il utilise un format personnalisé spécifique à Textractor et n'est pas destiné à être écrit manuellement. Vous devriez rechercher un dictionnaire dans ce format en ligne (https://github.com/Artikash/Textractor-Dictionaries/releases est un bon point de dépar). Alternativement, si vous êtes programmeur, vous pouvez écrire un script pour convertir un dictionnaire d'un autre format avec les informations ci-dessous. @@ -1147,19 +1147,19 @@ L'expression regex d'inflexion utilise la syntaxe unicode QRegularExpression (ht Textractor affichera le terme racine final ainsi que toutes les inflexions utilisées pour arriver à ce terme racine. Cependant, le texte d'un terme après << est ignoré lors de l'affichage. Ceci est destiné à stocker des informations sur une partie de la parole. Ce fichier doit être encodé en UTF-8.)"; - const char* SHOW_ORIGINAL = u8"Texte Original"; - const char* SHOW_ORIGINAL_INFO = u8R"(Le texte d'origine ne sera pas affiché + SHOW_ORIGINAL = u8"Texte Original"; + SHOW_ORIGINAL_INFO = u8R"(Le texte d'origine ne sera pas affiché Fonctionne uniquement si cette extension est utilisée directement après une extension de traduction)"; - const char* SIZE_LOCK = u8"Verouiller la taille"; - const char* OPACITY = u8"Opacité"; - const char* BG_COLOR = u8"COuleur d'arrière-plan"; - const char* TEXT_COLOR = u8"COuleur du texte"; - const char* TEXT_OUTLINE = u8"Contour du texte"; - const char* OUTLINE_COLOR = u8"Couleur du contour"; - const char* OUTLINE_SIZE = u8"Taille du contour"; - const char* OUTLINE_SIZE_INFO = u8"Taille en pixels (recommandé de rester en dessous de 20% de la taille de la police)"; - const char* FONT = u8"Police"; - const char* LUA_INTRO = u8R"(--[[ + SIZE_LOCK = u8"Verouiller la taille"; + OPACITY = u8"Opacité"; + BG_COLOR = u8"COuleur d'arrière-plan"; + TEXT_COLOR = u8"COuleur du texte"; + TEXT_OUTLINE = u8"Contour du texte"; + OUTLINE_COLOR = u8"Couleur du contour"; + OUTLINE_SIZE = u8"Taille du contour"; + OUTLINE_SIZE_INFO = u8"Taille en pixels (recommandé de rester en dessous de 20% de la taille de la police)"; + FONT = u8"Police"; + LUA_INTRO = u8R"(--[[ ProcessSentence est appelée chaque fois que Textractor reçoit une phrase de texte. Phrase param: phrase reçue par Textractor (UTF-8). Param sentenceInfo: tableau d'informations diverses sur la phrase. @@ -1175,23 +1175,23 @@ Properties in sentenceInfo: function ProcessSentence(sentence, sentenceInfo) --Your code here... end)"; - const char* LOAD_LUA_SCRIPT = u8"Charger le script"; - const wchar_t* LUA_ERROR = L"Erreur Lua: %s"; - const char* REGEX_FILTER = u8"Filtre regex"; - const char* INVALID_REGEX = u8"Regex invalide"; - const char* CURRENT_FILTER = u8"En train de filtrer: %1"; - const wchar_t* REPLACER_INSTRUCTIONS = LR"(Ce fichier ne fait rien lorsque l'extension "Replacer" est utilisée. + LOAD_LUA_SCRIPT = u8"Charger le script"; + LUA_ERROR = L"Erreur Lua: %s"; + REGEX_FILTER = u8"Filtre regex"; + INVALID_REGEX = u8"Regex invalide"; + CURRENT_FILTER = u8"En train de filtrer: %1"; + REPLACER_INSTRUCTIONS = LR"(Ce fichier ne fait rien lorsque l'extension "Replacer" est utilisée. Les commandes de remplacement doivent être formatées comme: |ORIG|original_text|BECOMES|replacement_text|END| Tout le texte de ce fichier en dehors d'une commande de remplacement est ignoré. Un caret (^) agit comme un caractère générique qui correspond à tout autre caractère unique. Les espaces dans original_text sont ignorés, mais remplacement_text peut contenir des espaces, des nouvelles lignes, etc. Ce fichier doit être encodé en Unicode (UTF-16 Little Endian).)"; - const char* THREAD_LINKER = u8"Lien du thread"; - const char* LINK = u8"Lien"; - const char* THREAD_LINK_FROM = u8"Nombre du thread du lien depuis"; - const char* THREAD_LINK_TO = u8"Nombre du thread du lien a"; - const char* HEXADECIMAL = u8"Hexadecimal"; + THREAD_LINKER = u8"Lien du thread"; + LINK = u8"Lien"; + THREAD_LINK_FROM = u8"Nombre du thread du lien depuis"; + THREAD_LINK_TO = u8"Nombre du thread du lien a"; + HEXADECIMAL = u8"Hexadecimal"; #endif // FRENCH return 0;