Add french translations

This commit is contained in:
Sys Quatre 2020-09-11 08:21:51 +02:00
rodič c1a527eeea
revize ce33c159fd
4 změnil soubory, kde provedl 190 přidání a 106 odebrání

57
atm.lua
Zobrazit soubor

@ -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))

Zobrazit soubor

@ -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

Zobrazit soubor

@ -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()

Zobrazit soubor

@ -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é