From ce33c159fd5c71b7204297f846f2e8c20e1f2314 Mon Sep 17 00:00:00 2001 From: sys4 Date: Fri, 11 Sep 2020 08:21:51 +0200 Subject: [PATCH] Add french translations --- atm.lua | 57 +++++++++++------------ exchange.lua | 89 ++++++++++++++++++------------------ exchange_machine.lua | 73 +++++++++++++++-------------- locale/global_exchange.fr.tr | 77 +++++++++++++++++++++++++++++++ 4 files changed, 190 insertions(+), 106 deletions(-) create mode 100644 locale/global_exchange.fr.tr diff --git a/atm.lua b/atm.lua index abab9c1..4555319 100644 --- a/atm.lua +++ b/atm.lua @@ -1,5 +1,6 @@ -- A telling machine. Call this file with the exchange argument. local exchange, formlib = ... +local S = minetest.get_translator("global_exchange") local atm_form = "global_exchange:atm_form" local atm_pos = {} @@ -28,7 +29,7 @@ local function withdraw_fs(fs, p_name, amount) local msg = "" local w_amount = tonumber(amount) if w_amount and math.floor(w_amount) == w_amount and w_amount > 0 then - local succ, err = exchange:give_credits(p_name, 0 - w_amount, "Cash withdrawal: (-"..w_amount..")") + local succ, err = exchange:give_credits(p_name, 0 - w_amount, S("Cash withdrawal: (-@1)", w_amount)) if succ then local index = 1 repeat @@ -43,7 +44,7 @@ local function withdraw_fs(fs, p_name, amount) msg = err end elseif w_amount then - msg = "Invalid number ! Must be an Integer > 0" + msg = S("Invalid number ! Must be an Integer > 0") end local balance = exchange:get_balance(p_name) @@ -51,12 +52,12 @@ local function withdraw_fs(fs, p_name, amount) fs:size(8,10) if not balance then - fs:label(0.5, 0.5, "You don't have an account.") + fs:label(0.5, 0.5, S("You don't have an account.")) else - fs:label(3,8.9, "Balance: " .. balance) - fs:field(0.75, 1.25, 3.25, 1, "w_amount", "Desired amount:") - fs:button(4, 1, 3.25, 1, "withdraw", "Get !") - fs:label(1, 2.25, "Or deposit your coins to credit your account:") + fs:label(3,8.9, S("Balance: @1", balance)) + fs:field(0.75, 1.25, 3.25, 1, "w_amount", S("Desired amount:")) + fs:button(4, 1, 3.25, 1, "withdraw", S("Get !")) + fs:label(1, 2.25, S("Or deposit your coins to credit your account:")) fs:list(1,3,6,1, "nodemeta:"..spos, "main") fs:list(0,4.25, 8,4, "current_player", "main") fs("listring[current_player;main]".. @@ -64,7 +65,7 @@ local function withdraw_fs(fs, p_name, amount) ) fs:label(0,9.75, msg) end - fs:button(0,8.75, 2,1, "logout", "Log Out") + fs:button(0,8.75, 2,1, "logout", S("Log Out")) end local function info_fs(fs, p_name) @@ -73,12 +74,12 @@ local function info_fs(fs, p_name) fs:size(4,3) if balance then - fs:label(0.5,0.5, "Balance: " .. balance) + fs:label(0.5,0.5, S("Balance: @1", balance)) else - fs:label(0.5,0.5, "You don't have an account.") + fs:label(0.5,0.5, S("You don't have an account.")) end - fs:button(1,2, 2,1, "logout", "Log Out") + fs:button(1,2, 2,1, "logout", S("Log Out")) end @@ -91,15 +92,15 @@ local function wire_fs(fs, p_name) -- To detect duplicate/stale form submission fs:field(-100, -100, 0,0, "trans_id", "", unique()) - fs:label(0.50,0.325, "Balance: " .. balance) - fs:field(0.75,1.750, 3,1, "recipient", "Send to:", "") - fs:field(0.75,3.000, 3,1, "amount", "Amount", "") + fs:label(0.50,0.325, S("Balance: @1", balance)) + fs:field(0.75,1.750, 3,1, "recipient", S("Send to:"), "") + fs:field(0.75,3.000, 3,1, "amount", S("Amount"), "") - fs:button(0,4.25, 2,1, "logout", "Log Out") - fs:button(2,4.25, 2,1, "send", "Send") + fs:button(0,4.25, 2,1, "logout", S("Log Out")) + fs:button(2,4.25, 2,1, "send", S("Send")) else - fs:button(0,4, 2,1, "logout", "Back") - fs:label(0.5,0.5, "You don't have an account.") + fs:button(0,4, 2,1, "logout", S("Back")) + fs:label(0.5,0.5, S("You don't have an account.")) end end @@ -107,13 +108,13 @@ end local function send_fs(fs, p_name, receiver, amt_str) fs:size(10,3) - fs:button(4,2, 2,1, "wire", "Back") + fs:button(4,2, 2,1, "wire", S("Back")) local amt = tonumber(amt_str) local msg = nil if not amt or amt <= 0 then - msg = "Invalid transfer amount." + msg = S("Invalid transfer amount.") else local succ, err = exchange:transfer_credits(p_name, receiver, amt) @@ -132,7 +133,7 @@ end local function log_fs(fs, p_name) fs:size(14,8) - fs:label(0,0, "Transaction Log") + fs:label(0,0, S("Transaction Log")) fs:element("tablecolumns", "text", "text") @@ -142,16 +143,16 @@ local function log_fs(fs, p_name) end fs("]") - fs:button(6,7.5, 2,1, "logout", "Log Out") + fs:button(6,7.5, 2,1, "logout", S("Log Out")) end local function main_menu_fs(fs, p_name) fs:size(8,2) - fs:button(0,0.125, 4,1, "withdraw", "Cash deposit and withdrawal") - fs:button(4,0.125, 2,1, "info", "Account Info") - fs:button(6,0.125, 2,1, "wire", "Wire Monies") - fs:button(0.50, 1.125, 7, 1, "transaction_log", "Transaction Log") + fs:button(0,0.125, 4,1, "withdraw", S("Cash deposit and withdrawal")) + fs:button(4,0.125, 2,1, "info", S("Account Info")) + fs:button(6,0.125, 2,1, "wire", S("Wire Monies")) + fs:button(0.50, 1.125, 7, 1, "transaction_log", S("Transaction Log")) end @@ -198,7 +199,7 @@ end) minetest.register_node("global_exchange:atm_bottom", { - description = "ATM", + description = "ATM", inventory_image = "global_exchange_atm_icon.png", wield_image = "global_exchange_atm_hi_front.png", drawtype = "nodebox", @@ -304,7 +305,7 @@ minetest.register_node("global_exchange:atm_bottom", { local inv = meta:get_inventory() local nb = stack:get_count() local amount = coins_convert[itname] * nb - local succ, msg = exchange:give_credits(p_name, amount, "Cash deposit (+"..amount..")") + local succ, msg = exchange:give_credits(p_name, amount, S("Cash deposit (+@1)", amount)) if succ then inv:set_stack(listname, index, nil) minetest.log("action", p_name.." put "..nb.." "..stack:get_name() .. " to ATM at " .. minetest.pos_to_string(pos)) diff --git a/exchange.lua b/exchange.lua index 0bf7bb5..3ff7229 100644 --- a/exchange.lua +++ b/exchange.lua @@ -2,6 +2,7 @@ local insecure_env = ... local sql = insecure_env.require("lsqlite3") local exports = {} +local S = minetest.get_translator("global_exchange") local order_book_cache = (function(cache) return function(ex_name) @@ -284,7 +285,7 @@ local function exec_stmt(db, stmt, names) stmt:reset() if res == sqlite3.BUSY then - return false, "Database Busy." + return false, S("Database Busy.") elseif res ~= sqlite3.DONE then sql_error(db:errmsg()) else @@ -368,9 +369,9 @@ function ex_methods.log(self, message, recipient) if res == sqlite3.ERROR then sql_error(db:errmsg()) elseif res == sqlite3.MISUSE then - error("Programmer error.") + error(S("Programmer error.")) elseif res == sqlite3.BUSY then - return false, "Failed to log message." + return false, S("Failed to log message.") else return true end @@ -385,7 +386,7 @@ function ex_methods.new_account(self, p_name, amt) local exists = self:get_balance(p_name) if exists then - return false, "Account already exists." + return false, S("Account already exists.") end db:exec("BEGIN TRANSACTION;") @@ -401,11 +402,11 @@ function ex_methods.new_account(self, p_name, amt) local res = stmt:step() if res == sqlite3.MISUSE then - error("Programmer error.") + error(S("Programmer error.")) elseif res == sqlite3.BUSY then stmt:reset() db:exec("ROLLBACK;") - return false, "Database Busy." + return false, S("Database Busy.") elseif res ~= sqlite3.DONE then sql_error(db:errmsg()) end @@ -444,7 +445,7 @@ function ex_methods.get_balance(self, p_name) if res == sqlite3.ERROR then sql_error(db:errmsg()) elseif res == sqlite3.MISUSE then - error("Programmer error.") + error(S("Programmer error.")) elseif res == sqlite3.ROW then local balance = stmt:get_value(0) stmt:reset() @@ -465,7 +466,7 @@ function ex_methods.set_balance(self, p_name, new_bal) local bal = self:get_balance(p_name) if not bal then - return false, p_name .. " does not have an account." + return false, S("@1 does not have an account.", p_name) end set_stmt:bind_names({ @@ -478,10 +479,10 @@ function ex_methods.set_balance(self, p_name, new_bal) if res == sqlite3.ERROR then sql_error(db:errmsg()) elseif res == sqlite3.MISUSE then - error("Programmer error.") + error(S("Programmer error.")) elseif res == sqlite3.BUSY then set_stmt:reset() - return false, "Database busy" + return false, S("Database busy.") else set_stmt:reset() return true @@ -499,11 +500,11 @@ function ex_methods.change_balance(self, p_name, delta) local bal = self:get_balance(p_name) if not bal then - return false, p_name .. " does not have an account." + return false, S("@1 does not have an account.", p_name) end if bal + delta < 0 then - return false, p_name .. " does not have enough money." + return false, S("@1 does not have enough money.", p_name) end return self:set_balance(p_name, bal + delta) @@ -516,7 +517,7 @@ function ex_methods.transfer_credits(self, sender, receiver, amt) local db = self.db if not is_integer(amt) then - return false, "Non-integer credit amount" + return false, S("Non-integer credit amount") end db:exec("BEGIN TRANSACTION;") @@ -539,14 +540,14 @@ function ex_methods.transfer_credits(self, sender, receiver, amt) if not succ_log1 then db:exec("ROLLBACK") - return false, "Failed to log sender message" + return false, S("Failed to log sender message") end local succ_log2 = self:log("Received " .. amt .. " credits from " .. sender, receiver) if not succ_log2 then db:exec("ROLLBACK") - return false, "Failed to log receiver message" + return false, S("Failed to log receiver message") end db:exec("COMMIT;") @@ -669,17 +670,17 @@ end -- Adds a new order. Returns success, and an error string if failed. function ex_methods.add_order(self, p_name, ex_name, order_type, item_name, wear, amount, rate) if not is_integer(amount) then - return false, "Noninteger quantity" + return false, S("Noninteger quantity") elseif amount <= 0 then - return false, "Nonpositive quantity" + return false, S("Nonpositive quantity") elseif not is_integer(rate) then - return false, "Noninteger rate" + return false, S("Noninteger rate") elseif rate <= 0 then - return false, "Nonpositive rate" + return false, S("Nonpositive rate") elseif not is_integer(wear) then - return false, "Noninteger wear" + return false, S("Noninteger wear") elseif wear < 0 or wear > 65535 then - return false, "Invalid wear" + return false, S("Invalid wear") end order_book_cache(ex_name)[item_name] = nil @@ -702,7 +703,7 @@ function ex_methods.add_order(self, p_name, ex_name, order_type, item_name, wear if res == sqlite3.BUSY then stmt:reset() - return false, "Database Busy" + return false, S("Database Busy.") elseif res ~= sqlite3.DONE then sql_error(db:errmsg()) end @@ -730,13 +731,13 @@ function ex_methods.cancel_order(self, p_name, id) if res == sqlite3.ERROR then sql_error(db:errmsg()) elseif res == sqlite3.MISUSE then - error("Programmer error.") + error(S("Programmer error.")) elseif res == sqlite3.ROW then order = get_stmt:get_named_values() get_stmt:reset() else db:exec("ROLLBACK;") - return false, "No such order." + return false, S("No such order.") end order_book_cache(order.Exchange)[order.Item] = nil @@ -783,7 +784,7 @@ function ex_methods.put_in_inbox(self, p_name, item_name, wear, amount) if res == sqlite3.BUSY then search_stmt:reset() db:exec("ROLLBACK;") - return false, "Database Busy." + return false, S("Database Busy.") elseif res == sqlite3.ROW then row = search_stmt:get_named_values() elseif res ~= sqlite3.DONE then @@ -817,7 +818,7 @@ function ex_methods.put_in_inbox(self, p_name, item_name, wear, amount) if res == sqlite3.BUSY then stmt:reset() db:exec("ROLLBACK;") - return false, "Database Busy." + return false, S("Database Busy.") elseif res ~= sqlite3.DONE then sql_error(db:errmsg()) end @@ -835,17 +836,17 @@ end -- bought. If failed, returns an error message function ex_methods.buy(self, p_name, ex_name, item_name, wear, amount, rate) if not is_integer(amount) then - return false, "Noninteger quantity" + return false, S("Noninteger quantity") elseif amount <= 0 then - return false, "Nonpositive quantity" + return false, S("Nonpositive quantity") elseif not is_integer(rate) then - return false, "Noninteger rate" + return false, S("Noninteger rate") elseif rate <= 0 then - return false, "Nonpositive rate" + return false, S("Nonpositive rate") elseif not is_integer(wear) then - return false, "Noninteger wear" + return false, S("Noninteger wear") elseif wear < 0 or wear > 65535 then - return false, "Invalid wear" + return false, S("Invalid wear") end local db = self.db @@ -856,7 +857,7 @@ function ex_methods.buy(self, p_name, ex_name, item_name, wear, amount, rate) if not balance then db:exec("ROLLBACK;") - return false, p_name .. " does not have an account." + return false, S("@1 does not have an account.", p_name) end local bought = {} @@ -909,7 +910,7 @@ function ex_methods.buy(self, p_name, ex_name, item_name, wear, amount, rate) red_del_stmt:reset() search_stmt:reset() db:exec("ROLLBACK;") - return false, "Database Busy." + return false, S("Database Busy.") elseif red_del_res ~= sqlite3.DONE then red_del_stmt:reset() search_stmt:reset() @@ -1018,17 +1019,17 @@ end -- remaining desired amount. Returns success. If failed, returns an error message. function ex_methods.sell(self, p_name, ex_name, item_name, wear, amount, rate) if not is_integer(amount) then - return false, "Noninteger quantity" + return false, S("Noninteger quantity") elseif amount <= 0 then - return false, "Nonpositive quantity" + return false, S("Nonpositive quantity") elseif not is_integer(rate) then - return false, "Noninteger rate" + return false, S("Noninteger rate") elseif rate <= 0 then - return false, "Nonpositive rate" + return false, S("Nonpositive rate") elseif not is_integer(wear) then - return false, "Noninteger wear" + return false, S("Noninteger wear") elseif wear < 0 or wear > 65535 then - return false, "Invalid wear" + return false, S("Invalid wear") end local db = self.db @@ -1081,7 +1082,7 @@ function ex_methods.sell(self, p_name, ex_name, item_name, wear, amount, rate) if red_del_res == sqlite3.BUSY then search_stmt:reset() db:exec("ROLLBACK;") - return false, "Database Busy." + return false, S("Database Busy.") elseif red_del_res ~= sqlite3.DONE then search_stmt:reset() sql_error(db:errmsg()) @@ -1214,10 +1215,10 @@ function ex_methods.take_inbox(self, id, amount) if res == sqlite3.BUSY then get_stmt:reset() - return false, "Database Busy." + return false, S("Database Busy.") elseif res == sqlite3.DONE then get_stmt:reset() - return false, "Order does not exist." + return false, S("Order does not exist.") elseif res ~= sqlite3.ROW then sql_error(db:errmsg()) end @@ -1246,7 +1247,7 @@ function ex_methods.take_inbox(self, id, amount) if red_del_res == sqlite3.BUSY then red_del_stmt:reset() db:exec("ROLLBACK;") - return false, "Database Busy." + return false, S("Database Busy.") elseif red_del_res ~= sqlite3.DONE then sql_error(db:errmsg()) end diff --git a/exchange_machine.lua b/exchange_machine.lua index 624c982..cad353e 100644 --- a/exchange_machine.lua +++ b/exchange_machine.lua @@ -5,12 +5,17 @@ local summary_interval = 600 local global_inv = nil +local S = minetest.get_translator("global_exchange") + -- NALC split() function local function split(str, sep) if not str then return nil end local result = {} local regex = ("([^%s]+)"):format(sep) for each in str:gmatch(regex) do + if #each > 30 then + each = string.sub(each, 1, 30).."..." + end table.insert(result, each) end return result @@ -36,17 +41,17 @@ local function mk_summary_fs() fs:table(0,0, 11.75,9, "summary_table", function(add_row) add_row("Item", "Description", - "Wear", - "Buy Vol", - "Buy Max", - "Sell Vol", - "Sell Min") + S("Wear"), + S("Buy Vol"), + S("Buy Max"), + S("Sell Vol"), + S("Sell Min")) local all_items = minetest.registered_items for i, row in ipairs(exchange:market_summary()) do local def = all_items[row.Item] or {} add_row(row.Item, - split(def.description, "\n")[1] or "Unknown Item", + split(def.description, "\n")[1] or S("Unknown Item"), wear_string(row.Wear), row.Buy_Volume or 0, row.Buy_Max or "N/A", @@ -72,10 +77,10 @@ end) local wear_levels = { - [1] = { index = 1, text = "New (-0%)", wear = math.floor(0.00*65535) }, - [2] = { index = 2, text = "Good (-10%)", wear = math.floor(0.10*65535) }, - [3] = { index = 3, text = "Worn (-50%)", wear = math.floor(0.50*65535) }, - [4] = { index = 4, text = "Junk (-100%)", wear = math.floor(1.00*65535) }, + [1] = { index = 1, text = S("New (-0%)"), wear = math.floor(0.00*65535) }, + [2] = { index = 2, text = S("Good (-10%)"), wear = math.floor(0.10*65535) }, + [3] = { index = 3, text = S("Worn (-50%)"), wear = math.floor(0.50*65535) }, + [4] = { index = 4, text = S("Junk (-100%)"), wear = math.floor(1.00*65535) }, } -- Allow lookup by text label as well as index @@ -131,15 +136,15 @@ local main_form = "global_exchange:exchange_main" local function table_from_results(fs, results, name, x, y, w, h, selected) fs:tablecolumns("text", "text", "text", "text", "text", "text", "text") fs:table(x,y, w,h, name, function(add_row) - add_row("Poster", "Type", "Item", + add_row(S("Poster"), "Type", "Item", "Description", - "Wear", "Amount", "Rate") + S("Wear"), S("Qty"), S("Rate")) local all_items = minetest.registered_items for i, row in ipairs(results) do local def = all_items[row.Item] or {} add_row(row.Poster, row.Type, row.Item, - split(def.description, "\n")[1] or "Unknown Item", + split(def.description, "\n")[1] or S("Unknown Item"), wear_string(row.Wear), row.Amount, row.Rate) end end, math.max(0, tonumber(selected) or 0) + 1) @@ -154,7 +159,7 @@ local function mk_main_order_book_fs(fs, p_name, x, y, w, h, item_name) fs:tablecolumns("text", "text", "text", "text") fs:table(x,y, w,h, "order_book", function(add_row) - add_row("Type", "Rate", "Wear", "Amount") + add_row("Type", S("Rate"), S("Wear"), S("Qty")) for _,row in ipairs(order_book) do add_row(row.Type, row.Rate, wear_string(row.Wear), row.Amount) end @@ -166,7 +171,7 @@ local function mk_main_buy_fs(fs, p_name, state) fs:item_image_button(9,0, 1,1, "buy_item", state.buy_item) - fs:field(10.25,0.40, 2,1, "buy_amount", "Quantity", state.buy_amount, false) + fs:field(10.25,0.40, 2,1, "buy_amount", S("Quantity"), state.buy_amount, false) local wear = wear_levels[state.buy_wear] or wear_levels[1] fs:dropdown(9,1, 3, "buy_wear", function(add_item) @@ -175,9 +180,9 @@ local function mk_main_buy_fs(fs, p_name, state) end end, wear.index) - fs:field(9.35,2.40, 2.9,1, "buy_price", "Bid (ea.)", state.buy_price, false) + fs:field(9.35,2.40, 2.9,1, "buy_price", S("Bid (ea.)"), state.buy_price, false) - fs:button(9,3, 3,1, "buy", "Place Bid") + fs:button(9,3, 3,1, "buy", S("Place Bid")) fs:container(0,4, function() fs:button( 0,0.25, 1,1, "buy_left", "<<") @@ -206,9 +211,9 @@ local function mk_main_sell_fs(fs, p_name, state) fs:list(9,0, 1,1, "detached:global_exchange", "p_" .. p_name) - fs:field(9.35,2.40, 2.9,1, "sell_price", "Ask (ea.)", state.sell_price, false) + fs:field(9.35,2.40, 2.9,1, "sell_price", S("Ask (ea.)"), state.sell_price, false) - fs:button(9,3, 3,1, "sell", "Sell") + fs:button(9,3, 3,1, "sell", S("Sell")) fs:box(1.9375,5.1875, 7.96875,4.03, "#00000020") @@ -223,14 +228,14 @@ local function mk_main_own_orders_fs(fs, p_name, state) state.selected_index = math.min(state.selected_index or 0, #state.own_results) table_from_results(fs, state.own_results, "result_table", 0, 0, 11.75, 8.5, state.selected_index) - fs:button(4.5,8.5, 3,1, "cancel", "Cancel Order") + fs:button(4.5,8.5, 3,1, "cancel", S("Cancel Order")) end local main_tabs = { - [1] = { text = "Market", mk_fs = mk_main_market_fs }, - [2] = { text = "Buy", mk_fs = mk_main_buy_fs }, - [3] = { text = "Sell", mk_fs = mk_main_sell_fs }, - [4] = { text = "My Orders", mk_fs = mk_main_own_orders_fs }, + [1] = { text = S("Market"), mk_fs = mk_main_market_fs }, + [2] = { text = S("Buy"), mk_fs = mk_main_buy_fs }, + [3] = { text = S("Sell"), mk_fs = mk_main_sell_fs }, + [4] = { text = S("My Orders"), mk_fs = mk_main_own_orders_fs }, } local function mk_main_fs(fs, p_name, err_str, success) @@ -279,23 +284,23 @@ local function post_buy(player, ex_name, item_name, wear_str, amount_str, rate_s local p_name = player:get_player_name() if (item_name or "") == "" then - return false, "You must input an item" + return false, S("You must input an item") elseif not minetest.registered_items[item_name] then - return false, "That item does not exist." + return false, S("That item does not exist.") end local wear_level = wear_levels[wear_str] if not wear_level then - return false, "Invalid wear." + return false, S("Invalid wear.") end local amount = tonumber(amount_str) local rate = tonumber(rate_str) if not amount or not is_integer(amount) or amount < 1 then - return false, "Invalid amount." + return false, S("Invalid amount.") elseif not rate or not is_integer(rate) or rate < 1 then - return false, "Invalid rate." + return false, S("Invalid rate.") end local p_inv = player:get_inventory() @@ -331,9 +336,9 @@ local function post_sell(player, ex_name, rate_str) local stack = global_inv:get_stack("p_" .. p_name, 1) if not stack or stack:is_empty() then - return false, "You must input an item" + return false, S("You must input an item") elseif not minetest.registered_items[stack:get_name()] then - return false, "That item does not exist." + return false, S("That item does not exist.") end if stack.get_meta then @@ -341,16 +346,16 @@ local function post_sell(player, ex_name, rate_str) local def_meta = ItemStack(stack:get_name()):get_meta() if not stack:get_meta():equals(def_meta) then - return false, "Cannot sell an item with metadata." + return false, S("Cannot sell an item with metadata.") end elseif (stack:get_metadata() or "") ~= "" then - return false, "Cannot sell an item with metadata." + return false, S("Cannot sell an item with metadata.") end local rate = tonumber(rate_str) if not rate or not is_integer(rate) or rate < 1 then - return false, "Invalid rate." + return false, S("Invalid rate.") end local item_name = stack:get_name() diff --git a/locale/global_exchange.fr.tr b/locale/global_exchange.fr.tr new file mode 100644 index 0000000..25176d4 --- /dev/null +++ b/locale/global_exchange.fr.tr @@ -0,0 +1,77 @@ +# textdomain:global_exchange + +### exchange.lua ### +Database Busy.=BDD occupée. +Programmer error.=Erreur du programmeur. +Failed to log message.=Echec journalisation message. +Account already exists.=Compte déjà existant. +@1 does not have an account.=@1 n'a pas de compte. +Non-integer credit delta=Delta de crédit non entier +@1 does not have enough money.=@1 n'a pas assez d'argent. +Non-integer credit amount=Montant de crédit non entier +Failed to log sender message=Echec journalisation message de l'émetteur +Failed to log receiver message=Echec journalisation message du récepteur +Noninteger quantity=Quantité non entière +Nonpositive quantity=Quantité non positive +Noninteger rate=Taux non entier +Nonpositive rate=Taux non positif +Noninteger wear=Usure non entière +Invalid wear=Usure invalide +No such order.=Pas un tel ordre. +Order does not exist.=L'ordre n'existe pas. + +### init.lua ### +set a player's trading balance=définir le solde commercial d'un joueur +Invalid parameters (see /help setbalance)=Paramètres invalides (voir /help setbalance) + +### atm.lua ### +Cash withdrawal: (-@1)=Retrait d'espèces : (-@1) +Invalid number ! Must be an Integer > 0=Nombre invalide ! Doit être un Entier > 0 +You don't have an account.=Vous n'avez pas de compte. +Balance: @1=Balance : @1 +Desired amount:=Montant désiré : +Get !=Obtenir ! +Or deposit your coins to credit your account:=Ou deposez vos pièces pour créditer votre compte : +Log Out=Sortir +Balance: @1=Balance : @1 +Send to:=Envoyer à : +Amount=Montant +Send=Envoie +Back=Retour +Invalid transfer amount.=Montant de transfert invalide. +Cash deposit and withdrawal=Dépot et retrait d'espèces +Account Info=Infos du compte +Wire Monies=Virement bancaire +Transaction Log=Journaux transactions +ATM=Distributeur Automatique d'argent +Cash deposit (+@1)=Dépot d'espèces (+@1) + +### exchange_macine.lua ### +Wear=Usure +Buy Vol=Qté achat +Buy Max=Achat Max +Sell Vol=Qté vente +Sell Min=Vente Min +Unknown Item=Item inconnue +New (-0%)=Neuf (-0%) +Good (-10%)=Bon (-10%) +Worn (-50%)=Usé (-50%) +Junk (-100%)=Indésirable (-100%) +Poster=Émetteur +Rate=Taux +Quantity=Quantité +Bid (ea.)=Offre +Place Bid=Faire Offre +Ask (ea.)=Demande +Sell=Vendre +Cancel Order=Annuler Ordre +Market=Marché +Buy=Acheter +My Orders=Mes Ordres +You must input an item=Vous devez saisir un élément +That item does not exist.=Cet élément n'existe pas. +Invalid wear.=Usure invalide. +Invalid amount.=Montant invalide. +Invalid rate.=Taux invalide. +Cannot sell an item with metadata.=Ne peut vendre un item avec des métadonnées. +Qty=Qté \ No newline at end of file