Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
Decompiled source of MarketplaceFrench v1.0.1
BepInEx/plugins/Ch3wb4k4-MarketplaceFrench/MarketplaceFrench.dll
Decompiled a week agousing System; using System.Collections.Generic; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using BepInEx; using HarmonyLib; using Microsoft.CodeAnalysis; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("MarketplaceFrench")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("MarketplaceFrench")] [assembly: AssemblyTitle("MarketplaceFrench")] [assembly: AssemblyVersion("1.0.0.0")] [module: RefSafetyRules(11)] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Embedded] [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace Ch3wb4k4.MarketplaceFrench { [BepInPlugin("ch3wb4k4.marketplacefrench", "Ch3wb4k4 - MarketplaceFrench", "0.1.0")] [BepInDependency(/*Could not decode attribute arguments.*/)] public class MarketplaceFrenchPlugin : BaseUnityPlugin { private Harmony _harmony; private static readonly Dictionary<string, string> French = new Dictionary<string, string> { { "title", "MARCHÉ" }, { "tab_buy", "MARCHÉ" }, { "tab_sell", "VENDRE" }, { "tab_mine", "MES ANNONCES" }, { "tab_mail", "MESSAGERIE" }, { "tab_bank", "BANQUE" }, { "hdr_inventory", "Inventaire" }, { "hdr_balance", "Solde" }, { "connecting", "Connexion au marché…" }, { "search", "Rechercher un objet ou un vendeur…" }, { "sort_new", "Trier : plus récents" }, { "sort_cheap", "Trier : moins chers" }, { "sort_expensive", "Trier : plus chers" }, { "sort_name", "Trier : nom" }, { "pick", "Sélectionnez une entrée dans la liste à gauche." }, { "loading", "Chargement des annonces…" }, { "no_match", "Aucun résultat pour cette recherche." }, { "no_listings", "Il n'y a pas encore d'annonces.\nMettez un objet en vente dans l'onglet VENDRE !" }, { "nothing_to_sell", "Vous n'avez aucun objet pouvant être mis en vente.\nLes objets équipés et les pièces sont ignorés." }, { "no_own", "Vous n'avez aucune annonce active." }, { "mail_empty_list", "Votre messagerie est vide.\nLes objets des annonces annulées ou expirées arrivent ici." }, { "no_history", "Aucune transaction pour le moment." }, { "your_listing", "Votre annonce" }, { "seller", "Vendeur : {0}" }, { "expires_in", "expire dans {0}" }, { "trader_value", "Valeur chez le marchand : {0} / pièce" }, { "price_each", "Prix unitaire : <color=#FFD27A>{0}</color> pièces" }, { "ago", "il y a {0}" }, { "available", "Disponible : {0} unités" }, { "avg_short", "moyenne du marché {0}" }, { "b_claimed", "Pris par {0}" }, { "b_open", "Ouvert — en attente d’un prestataire" }, { "b_submitted", "{0} indique que le travail est terminé" }, { "bank_amount", "Pièces :" }, { "bank_balance", "Solde : <color=#FFD27A>{0}</color> pièces" }, { "bank_desc", "Les pièces de votre solde sont stockées sur le serveur, et non dans votre inventaire : vous ne les perdez pas à votre mort. Les revenus des ventes arrivent ici et les achats sont d’abord payés avec ce solde." }, { "bank_inventory", "Dans l’inventaire : {0} pièces" }, { "bank_title", "Banque du marché" }, { "bounty_by", "Publié par {0}" }, { "bounty_desc_label", "Description (quoi, où et pour quand)" }, { "bounty_lock", "Bloque {0} pièces jusqu’à ce que vous confirmiez la fin du travail" }, { "bounty_no_desc", "(aucune description)" }, { "bounty_reward", "Récompense : <color=#FFD27A>{0}</color> pièces" }, { "bounty_reward_label", "Récompense :" }, { "bounty_timeout_in", "Vous pourrez annuler si le travail n’est pas signalé comme terminé avant {0}" }, { "bounty_title_label", "Titre du travail" }, { "bounty_title_ph", "Ex. : Construire un pont au-dessus de la rivière près du point d’apparition" }, { "btn_abandon", "Abandonner" }, { "btn_admin_cancel", "Admin : annuler" }, { "btn_admin_pay", "Admin : payer" }, { "btn_buy", "Acheter pour {0}" }, { "btn_cancel", "Annuler l’annonce" }, { "btn_cancel_bounty", "Annuler le travail (remboursement de {0})" }, { "btn_cancel_inactive", "Annuler (aucun compte rendu)" }, { "btn_cancel_order", "Annuler l’ordre (remboursement de {0})" }, { "btn_claim", "Accepter ce travail" }, { "btn_collect", "Tout récupérer" }, { "btn_confirm", "Confirmer et payer" }, { "btn_deposit", "Déposer" }, { "btn_deposit_all", "Tout déposer" }, { "btn_fill", "Vendre {0} pour {1}" }, { "btn_max_price", "Max. {0} / unité" }, { "btn_need_price", "Saisissez un prix" }, { "btn_need_reward", "Saisissez une récompense" }, { "btn_need_title", "Saisissez un titre" }, { "btn_no_items", "Vous ne possédez pas cet objet" }, { "btn_own", "C’est votre annonce" }, { "btn_poor", "Pas assez de pièces" }, { "btn_post_bounty", "Publier un travail" }, { "btn_post_order", "Publier un ordre d’achat" }, { "btn_reject", "Refuser" }, { "btn_sell", "Mettre en vente" }, { "btn_submit", "Signaler comme terminé" }, { "btn_taken", "Déjà accepté" }, { "btn_wait", "En attente du serveur…" }, { "btn_wait_confirm", "En attente de confirmation" }, { "btn_withdraw", "Retirer" }, { "btn_withdraw_all", "Tout retirer" }, { "c_bad_amount", "Quantité invalide." }, { "c_bounty_reward", "Saisissez une récompense (au moins 1 pièce)." }, { "c_bounty_title", "Saisissez un titre pour le travail." }, { "c_busy", "Attendez la réponse du serveur." }, { "c_cannot_list", "Cet objet ne peut pas être mis en vente." }, { "c_item_gone", "Cet objet n’est plus dans votre inventaire." }, { "c_max_price", "Le prix maximum est de {0} pièces par unité." }, { "c_need_price", "Saisissez un prix (au moins 1 pièce)." }, { "c_no_balance", "Vous n’avez pas autant de pièces sur votre solde." }, { "c_no_coins_inv", "Vous n’avez pas autant de pièces dans votre inventaire." }, { "c_no_player", "Personnage introuvable." }, { "c_no_space", "Pas assez de place dans l’inventaire pour {0} pièces (place disponible : {1})." }, { "c_not_enough_items", "Vous ne possédez pas autant d’exemplaires de cet objet." }, { "c_order_own", "C’est votre propre ordre d’achat." }, { "c_own", "C’est votre annonce." }, { "c_pick_item", "Choisissez d’abord un objet." }, { "c_poor", "Pas assez de pièces ({0} nécessaires)." }, { "c_remove_failed", "Impossible de retirer l’objet de votre inventaire." }, { "c_total_high", "Le prix total est trop élevé." }, { "c_unequip", "Retirez d’abord cet objet." }, { "cat_all", "Toutes les catégories" }, { "cat_armor", "Armures" }, { "cat_food", "Nourriture" }, { "cat_materials", "Matériaux" }, { "cat_other", "Autres" }, { "cat_potions", "Potions" }, { "cat_tools", "Outils" }, { "cat_weapons", "Armes" }, { "expires_after", "L’annonce expire après {0} h" }, { "expires_in_cap", "Expire dans {0}" }, { "h_bounty_escrow", "Travail publié : {0}" }, { "h_bounty_paid", "Travail terminé : {0}" }, { "h_bounty_refund", "Remboursement du travail : {0}" }, { "h_bounty_reward", "Récompense du travail : {0}" }, { "h_by", "par {0}" }, { "h_deposit", "Dépôt" }, { "h_fee", "frais : {0}" }, { "h_from", "de {0}" }, { "h_guild_in", "Versement de la guilde {0}" }, { "h_guild_out", "Paiement à la guilde {0}" }, { "h_order_escrow", "Ordre d’achat publié : {0}" }, { "h_order_filled", "Livré à votre ordre : {0}" }, { "h_order_refund", "Remboursement de l’ordre d’achat : {0}" }, { "h_order_sale", "Vente à l’ordre d’achat : {0}" }, { "h_purchase", "Achat : {0}" }, { "h_sale", "Vente : {0}" }, { "h_to", "à {0}" }, { "h_withdraw", "Retrait" }, { "hint_click_listing", "Cliquez pour ouvrir l’annonce et acheter maintenant." }, { "hint_click_order", "Cliquez pour ouvrir l’ordre ; vous serez payé immédiatement." }, { "hint_listing_better", "Identique ou moins cher sur le marché" }, { "hint_listing_text", "{0} vend {1}× à {2} pièces l’unité." }, { "hint_listing_topic", "Cet objet est en vente" }, { "hint_order_better", "Quelqu’un propose au moins votre prix" }, { "hint_order_text", "{0} achète {1}× à {2} pièces l’unité." }, { "hint_order_topic", "Ordre d’achat pour cet objet" }, { "hud_prefix", "Marché : {0}" }, { "in_inventory", "Dans l’inventaire : {0} unités" }, { "inv_full_drop", "Inventaire plein — certains objets ont été déposés à côté de vous" }, { "listed_ago", "Mis en vente il y a {0}" }, { "mail_desc", "Les objets provenant des annonces annulées ou expirées, ainsi que les achats qui n’ont pas pu être livrés, sont conservés ici.\n\n« Tout récupérer » transfère les objets dans votre inventaire. Ceux qui ne tiennent pas seront déposés à côté de vous." }, { "mail_items", "Objets : {0}" }, { "mail_title", "Votre boîte aux lettres" }, { "max", "Max." }, { "missing_mod", "<color=#FF7766>Cet objet provient d’un mod que vous n’avez pas installé.</color>" }, { "mode_bounties", "Tous les travaux" }, { "mode_new_bounty", "+ Publier un travail" }, { "mode_new_order", "+ Publier un ordre d’achat" }, { "mode_orders", "Tous les ordres d’achat" }, { "my_bounties_count", "Vos travaux : {0} / {1}" }, { "my_listings_count", "Vos annonces : {0} / {1}" }, { "my_orders_count", "Vos ordres d’achat : {0} / {1}" }, { "never_expires", "Les annonces n’expirent jamais" }, { "new_bounty_title", "Nouveau travail" }, { "new_order_title", "Acheter : {0}" }, { "no_bounties", "Aucun travail publié pour le moment.\nPubliez-en un avec « + Publier un travail » !" }, { "no_expiry", "N’expire pas" }, { "no_orders", "Aucun ordre d’achat pour le moment.\nPubliez-en un avec « + Publier un ordre d’achat » !" }, { "order_by", "Acheteur : {0}" }, { "order_escrow", "Bloqué dans l’ordre : {0} pièces" }, { "order_lock", "Bloque {0} pièces jusqu’à la livraison" }, { "order_remaining", "Quantité encore recherchée : {0} unités (déjà livrées : {1})" }, { "order_row", "Recherche : {0}" }, { "order_title", "Recherche : {0}" }, { "pay_split", "Depuis le solde : {0}, depuis l’inventaire : {1}" }, { "pick_hint", "Saisissez au moins 2 lettres du nom de l’objet." }, { "pick_none", "Aucun objet correspondant." }, { "pick_order_item", "Choisissez l’objet que vous souhaitez acheter dans la liste à gauche." }, { "pick_search", "Recherchez l’objet que vous souhaitez acheter…" }, { "price", "Prix / unité :" }, { "price_none", "Prix du marché : aucune transaction pour le moment" }, { "price_stats", "Prix du marché : moyenne <color=#FFD27A>{0}</color>, fourchette {1}–{2} (transactions : {3})" }, { "price_stats_one", "Prix du marché : <color=#FFD27A>{0}</color> (transactions : {1})" }, { "qty", "Quantité :" }, { "quality", "niv. {0}" }, { "remaining", "Restant : {0} unités" }, { "s_amount_changed", "La quantité disponible a changé." }, { "s_bad_amount", "Quantité invalide." }, { "s_bad_price", "Le prix doit être compris entre 1 et {0} pièces." }, { "s_blocked", "Cet objet ne peut pas être mis en vente sur le marché." }, { "s_bought", "Achat effectué : {0} pour {1} pièces." }, { "s_bounty_abandoned", "Vous avez abandonné le travail : « {0} »." }, { "s_bounty_abandoned_owner", "{0} a abandonné votre travail « {1} ». Il est de nouveau disponible." }, { "s_bounty_bad_reward", "La récompense doit être comprise entre 1 et {0} pièces." }, { "s_bounty_cancelled", "Travail annulé : « {0} ». {1} pièces ont été rendues au solde." }, { "s_bounty_cancelled_admin", "Un administrateur a annulé votre travail « {0} ». {1} pièces ont été rendues à votre solde." }, { "s_bounty_cancelled_contractor", "Le travail « {0} » sur lequel vous travailliez a été annulé." }, { "s_bounty_claimed", "Vous avez accepté le travail : « {0} ». Signalez-le comme terminé dans l’onglet TRAVAUX lorsque vous aurez fini." }, { "s_bounty_claimed_owner", "{0} a accepté votre travail : « {1} »." }, { "s_bounty_confirmed", "« {0} » a été confirmé — récompense versée à {1}." }, { "s_bounty_confirmed_admin", "Un administrateur a confirmé votre travail « {0} » et versé la récompense." }, { "s_bounty_created", "Travail publié : « {0} » — {1} pièces bloquées jusqu’à confirmation de sa réalisation." }, { "s_bounty_expired", "Personne n’a accepté votre travail « {0} ». {1} pièces ont été rendues à votre solde." }, { "s_bounty_gone", "Ce travail n’existe plus." }, { "s_bounty_limit", "Limite de travaux atteinte ({0})." }, { "s_bounty_no_title", "Le travail doit avoir un titre." }, { "s_bounty_not_allowed", "Cette action n’est pas disponible pour le moment." }, { "s_bounty_paid", "{0} a confirmé « {1} ». {2} pièces ont été ajoutées à votre solde." }, { "s_bounty_rejected", "Vous avez refusé le compte rendu pour « {0} ». Le prestataire peut continuer le travail." }, { "s_bounty_rejected_contractor", "{0} a refusé votre compte rendu pour « {1} ». Terminez le travail et signalez-le à nouveau." }, { "s_bounty_submitted", "Vous avez signalé « {0} » comme terminé. En attente de confirmation." }, { "s_bounty_submitted_owner", "{0} signale votre travail « {1} » comme terminé — vérifiez-le puis confirmez ou refusez dans l’onglet TRAVAUX." }, { "s_bounty_too_long", "Le titre ou la description est trop long." }, { "s_buy_failed_deposit", "{0} Les pièces payées restent sur votre solde du marché." }, { "s_cancelled", "Annonce annulée : {0}." }, { "s_claimed", "Contenu de la boîte aux lettres récupéré." }, { "s_create_failed", "{0} L’objet vous a été rendu." }, { "s_deposited", "{0} pièces déposées. Solde : {1}." }, { "s_expired", "Votre annonce a expiré : {0}. L’objet vous attend dans la boîte aux lettres du marché." }, { "s_gone", "Cette annonce n’est plus disponible." }, { "s_limit", "Limite d’annonces atteinte ({0})." }, { "s_listed", "Mis en vente : {0} à {1} pièces l’unité." }, { "s_mail_empty", "Votre boîte aux lettres est vide." }, { "s_no_funds", "Pas assez de pièces : {0} nécessaires, {1} sur votre solde." }, { "s_not_found", "Annonce introuvable." }, { "s_order_cancelled", "Ordre d’achat annulé : {0}. {1} pièces ont été rendues au solde." }, { "s_order_cancelled_admin", "Un administrateur a annulé votre ordre d’achat : {0}. {1} pièces ont été rendues à votre solde." }, { "s_order_created", "Ordre d’achat publié : {0} à {1} pièces l’unité. {2} pièces bloquées." }, { "s_order_expired", "Votre ordre d’achat a expiré : {0}. {1} pièces ont été rendues à votre solde." }, { "s_order_filled", "{0} a livré {1} à votre ordre d’achat. Les objets vous attendent dans votre BOÎTE AUX LETTRES." }, { "s_order_gone", "Cet ordre d’achat n’existe plus." }, { "s_order_limit", "Limite d’ordres d’achat atteinte ({0})." }, { "s_order_own", "Vous ne pouvez pas vendre à votre propre ordre d’achat." }, { "s_order_sold", "Vous avez vendu {0} à un ordre d’achat. {1} pièces ont été ajoutées à votre solde." }, { "s_order_wrong_item", "Ces objets ne correspondent pas à l’ordre." }, { "s_own", "Vous ne pouvez pas acheter votre propre annonce." }, { "s_price_changed", "Le prix de l’annonce a changé." }, { "s_raw", "{0}" }, { "s_sold", "{0} vous a acheté {1}. {2} pièces ont été ajoutées à votre solde du marché." }, { "s_total_high", "Le prix total est trop élevé." }, { "s_unknown_item", "Le serveur ne connaît pas cet objet (mod absent du serveur ?)." }, { "s_unresolved_coins", "Le serveur n’a pas pu identifier votre personnage — vos pièces vous ont été rendues." }, { "s_unresolved_item", "Le serveur n’a pas pu identifier votre personnage — l’objet vous a été rendu." }, { "s_withdraw_too_much", "Vous ne possédez que {0} pièces sur votre solde." }, { "s_withdrawn", "{0} pièces retirées. Solde : {1}." }, { "span_d", "{0} j {1} h" }, { "span_h", "{0} h {1} min" }, { "span_m", "{0} min" }, { "tab_jobs", "TRAVAUX" }, { "tab_orders", "ORDRES D’ACHAT" }, { "total_buy", "Total : {0} pièces" }, { "total_sell", "Vous recevrez : {0} pièces" }, { "total_sell_fee", "Total : {0}, frais de {1} % — vous recevez {2}" }, { "unknown_prefab", "Objet inconnu {0} — mod manquant ?" }, { "you_have", "Vous possédez : {0}" }, { "your_bounty", "Votre travail" }, { "your_order", "Votre ordre d’achat" } }; private void Awake() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Expected O, but got Unknown //IL_0094: Unknown result type (might be due to invalid IL or missing references) //IL_00a1: Expected O, but got Unknown _harmony = new Harmony("ch3wb4k4.marketplacefrench"); try { Type type = AccessTools.TypeByName("Marketplace.Loc"); if (type == null) { ((BaseUnityPlugin)this).Logger.LogError((object)"Marketplace.Loc introuvable. Vérifiez que Marketplace est chargé."); return; } MethodInfo methodInfo = AccessTools.Method(type, "T", new Type[1] { typeof(string) }, (Type[])null); if (methodInfo == null) { ((BaseUnityPlugin)this).Logger.LogError((object)"Marketplace.Loc.T(string) introuvable."); return; } MethodInfo method = typeof(MarketplaceFrenchPlugin).GetMethod("TranslatePostfix", BindingFlags.Static | BindingFlags.NonPublic); _harmony.Patch((MethodBase)methodInfo, (HarmonyMethod)null, new HarmonyMethod(method), (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null); ((BaseUnityPlugin)this).Logger.LogInfo((object)"MarketplaceFrench : interception installée."); } catch (Exception ex) { ((BaseUnityPlugin)this).Logger.LogError((object)("Erreur d'installation : " + ex)); } } private static void TranslatePostfix(string key, ref string __result) { if (key != null && French.TryGetValue(key, out var value)) { __result = value; } } private void OnDestroy() { Harmony harmony = _harmony; if (harmony != null) { harmony.UnpatchSelf(); } } } }