Decompiled source of MarketplaceFrench v1.0.1

BepInEx/plugins/Ch3wb4k4-MarketplaceFrench/MarketplaceFrench.dll

Decompiled a week ago
using 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();
			}
		}
	}
}