1
0
Fork 0
forked from Simnation/Main
This commit is contained in:
Nordi98 2025-08-04 20:32:58 +02:00
parent f57a27b8df
commit 4b4bb3b0ab
76 changed files with 6389 additions and 0 deletions

Binary file not shown.

View file

@ -0,0 +1,17 @@
# JG Scripts Dealerships
Hey there! Thanks so much for purchasing, it really means a lot to me. I've spent a lot of time on this script (almost a year total), and I hope you love it. This document has a bunch of the essential information that should help you out:
## Useful Links
🔧 Configure Dealerships in just minutes: https://configurator.jgscripts.com/dealerships
📚 Documentation: https://docs.jgscripts.com/dealerships/introduction
🔗 Official Website: https://jgscripts.com
🛒 Store: https://store.jgscripts.com
## Support
Join Discord https://discord.jgscripts.com, and we will do whatever it takes to help you out and get you up and running!

View file

@ -0,0 +1,141 @@
local blips, points = {}, {}
---@param name string
---@param coords vector3
---@param blipId integer
---@param blipColour integer
---@param blipScale number
local function createBlip(name, coords, blipId, blipColour, blipScale)
local blip = AddBlipForCoord(coords.x, coords.y, coords.z)
SetBlipSprite(blip, blipId)
SetBlipColour(blip, blipColour)
SetBlipScale(blip, blipScale)
SetBlipAsShortRange(blip, true)
BeginTextCommandSetBlipName("STRING")
AddTextComponentString(name)
EndTextCommandSetBlipName(blip)
return blip
end
---@param coords vector3
---@param marker table
local function drawMarkerOnFrame(coords, marker)
---@diagnostic disable-next-line: missing-parameter
DrawMarker(marker.id, coords.x, coords.y, coords.z, 0, 0, 0, 0, 0, 0, marker.size.x, marker.size.y, marker.size.z, marker.color.r, marker.color.g, marker.color.b, marker.color.a, marker.bobUpAndDown, marker.faceCamera, 0, marker.rotate, marker.drawOnEnts)
end
---@param coords vector3
---@param dist number
---@param marker table | false | nil
---@param onEnter function
---@param onExit function
---@param nearby function | nil
local function createLocation(coords, dist, marker, onEnter, onExit, nearby)
local point = lib.points.new({
coords = coords,
distance = dist,
})
function point:onEnter() onEnter(self) end
function point:onExit() onExit(self) end
if nearby then function point:nearby() nearby(self) end end
points[#points+1] = point
if not marker then return end
local markerPoint = lib.points.new({
coords = coords,
distance = dist * 4,
})
function markerPoint:nearby() drawMarkerOnFrame(coords, marker) end
points[#points+1] = markerPoint
end
-- New code
local function createDealershipZonesAndBlips()
for _, point in ipairs(points) do point:remove() end -- Remove existing zones
for _, blip in ipairs(blips) do RemoveBlip(blip) end -- Remove existing blips
local dealerships = lib.callback.await("jg-dealerships:server:get-locations-data", false)
for _, dealer in ipairs(dealerships) do
if dealer and dealer.config then
if IsShowroomAccessAllowed(dealer.name) or (dealer.type == "owned" and dealer.managementAccess) then
-- Showroom location
createLocation(
dealer.config.openShowroom?.coords or dealer.config.openShowroom,
dealer.config.openShowroom?.size or 5,
not dealer.config.hideMarkers and dealer.config.markers or false,
function() Framework.Client.ShowTextUI(Config.OpenShowroomPrompt) end,
function() Framework.Client.HideTextUI() end,
function()
if IsControlJustPressed(0, Config.OpenShowroomKeyBind) then
TriggerEvent("jg-dealerships:client:open-showroom", dealer.name)
end
end
)
-- Sell vehicle location (if enabled)
if dealer.config.enableSellVehicle then
createLocation(
dealer.config.sellVehicle?.coords or dealer.config.sellVehicle,
dealer.config.sellVehicle?.size or 5,
not dealer.config.hideMarkers and dealer.config.markers or false,
function() Framework.Client.ShowTextUI(Config.SellVehiclePrompt) end,
function() Framework.Client.HideTextUI() end,
function()
if IsControlJustPressed(0, Config.SellVehicleKeyBind) then
TriggerEvent("jg-dealerships:client:sell-vehicle", dealer.name)
end
end
)
end
-- Blip
if not dealer.config.hideBlip then
local blipName = Locale.dealership .. ": " .. dealer.label
local blip = createBlip(
blipName,
dealer.config.openShowroom?.coords or dealer.config.openShowroom,
dealer.config.blip.id,
dealer.config.blip.color,
dealer.config.blip.scale
)
blips[#blips + 1] = blip
end
end
-- Management location
if dealer.type == "owned" and dealer.managementAccess then
createLocation(
dealer.config.openManagement?.coords or dealer.config.openManagement,
dealer.config.openManagement?.size or 5,
not dealer.config.hideMarkers and dealer.config.markers or false,
function() Framework.Client.ShowTextUI(Config.OpenManagementPrompt) end,
function() Framework.Client.HideTextUI() end,
function()
if IsControlJustPressed(0, Config.OpenManagementKeyBind) then
TriggerEvent("jg-dealerships:client:open-management", dealer.name)
end
end
)
end
end
end
end
RegisterNetEvent("jg-dealerships:client:update-blips-text-uis", function()
Wait(1000)
createDealershipZonesAndBlips()
SpawnAllDealershipDisplayVehicles()
end)
CreateThread(function()
Wait(1000)
createDealershipZonesAndBlips()
SpawnAllDealershipDisplayVehicles()
end)

View file

@ -0,0 +1,88 @@
---Purchase a vehicle
---@param dealershipId string
---@param model string|integer
---@param colour string
---@param purchaseType "society"|"personal"
---@param paymentMethod "bank"|"cash"
---@param society? any if purchaseType == "society"
---@param societyType? any
---@param finance boolean
---@param directSaleUuid? string
---@return boolean success
local function purchaseVehicle(dealershipId, model, colour, purchaseType, paymentMethod, society, societyType, finance, directSaleUuid)
local dealership = Config.DealershipLocations[dealershipId]
local hash = ConvertModelToHash(model)
local vehicleType = GetVehicleTypeFromClass(GetVehicleClassFromName(hash))
local coords = FindVehicleSpawnCoords(dealership.purchaseSpawn)
ExitShowroom()
local success, netId, vehicleId, plate, price = lib.callback.await("jg-dealerships:server:purchase-vehicle", false, dealershipId, coords, purchaseType, society, societyType, model, colour, paymentMethod, finance, directSaleUuid)
local vehicle = netId and NetToVeh(netId) or nil --[[@as integer|false]]
if not success then return false end
-- TODO WIP: new spawning logic
if Config.SpawnVehiclesWithServerSetter and not vehicle then
print("^1[ERROR] There was a problem spawning in your vehicle")
return false
end
-- Server spawning disabled, create vehicle on client
if not vehicle and not Config.SpawnVehiclesWithServerSetter then
local warp = not Config.DoNotSpawnInsideVehicle
local properties = {
plate = plate,
colour = colour
}
vehicle = SpawnVehicleClient(vehicleId or 0, model, plate, coords, warp, properties, "purchase")
if not vehicle then return false end
netId = VehToNet(vehicle)
end
if not vehicle then return false end
-- TODO: refactor this maybe? it's also a vulnerable event for people that know what they are doing
local props = Framework.Client.GetVehicleProperties(vehicle)
TriggerServerEvent("jg-dealerships:server:update-purchased-vehicle-props", purchaseType, society, plate, props)
-- TODO END
TriggerEvent("jg-dealerships:client:purchase-vehicle:config", vehicle, plate, purchaseType, price, paymentMethod, finance)
TriggerServerEvent("jg-dealerships:server:purchase-vehicle:config", netId, plate, purchaseType, price, paymentMethod, finance)
-- If they are running jg-advancedgarages, register the vehicle is out & set vehicle in valid garage ID
if GetResourceState("jg-advancedgarages") == "started" then
TriggerServerEvent("jg-advancedgarages:server:register-vehicle-outside", plate, netId)
TriggerServerEvent("jg-advancedgarages:server:dealerships-send-to-default-garage", vehicleType, plate)
end
DoScreenFadeIn(500)
return true
end
RegisterNUICallback("purchase-vehicle", function(data, cb)
local dealershipId = data.dealership
local model = data.vehicle
local vehicleColor = data.color
local purchaseType = data.purchaseType
local paymentMethod = data.paymentMethod
local finance = data.finance
local society = data.society
local societyType = data.societyType
local directSaleUuid = data.directSaleUuid
DoScreenFadeOut(500)
Wait(500)
local res = purchaseVehicle(dealershipId, model, vehicleColor, purchaseType, paymentMethod, society, societyType, finance, directSaleUuid)
if not res then
DoScreenFadeIn(0)
return cb({error = true})
end
cb(true)
end)

View file

@ -0,0 +1,43 @@
--
-- Events
--
---Fired when the vehicle is purchased
---@param vehicle integer
---@param plate string
---@param purchaseType "personal"|"society"
---@param amount number
---@param paymentMethod "bank"|"cash"
---@param financed boolean
RegisterNetEvent("jg-dealerships:client:purchase-vehicle:config", function(vehicle, plate, purchaseType, amount, paymentMethod, financed)
end)
---Fired when vehicle is test driven
---@param vehicle integer
---@param plate string
RegisterNetEvent("jg-dealerships:client:start-test-drive:config", function(vehicle, plate)
end)
---Fired when a vehicle is sold; this also contains the delete vehicle function
---@param vehicle integer
---@param plate string
RegisterNetEvent("jg-dealerships:client:sell-vehicle:config", function(vehicle, plate)
--
-- Add code here to run before the vehicle is deleted
--
JGDeleteVehicle(vehicle) -- this runs Kimi's AdvancedParking export already!
end)
--
-- Hooks
--
---Runs before the showroom opens; return false to prevent showroom from opening
---@param dealershipId string
---@return boolean allowed
function ShowroomPreCheck(dealershipId)
return true
end

View file

@ -0,0 +1,65 @@
--
-- Events
--
---Fired when a vehicle is purchased
---@param vehNetId integer
---@param plate string
---@param purchaseType "personal"|"society"
---@param amount number
---@param paymentMethod "bank"|"cash"
---@param financed boolean
RegisterNetEvent("jg-dealerships:server:purchase-vehicle:config", function(vehNetId, plate, purchaseType, amount, paymentMethod, financed)
local src = source
local vehicle = NetworkGetEntityFromNetworkId(vehNetId)
end)
---Fired when vehicle finance has paid in full
---@param playerId integer
---@param plate string
RegisterNetEvent("jg-dealerships:server:vehicle-finance-complete", function(playerId, plate)
end)
---Fired when vehicle finance loan has been defaulted on
---@param playerId integer
---@param plate string
---@param amountOwed number
RegisterNetEvent("jg-dealerships:server:vehicle-finance-defaulted", function(playerId, plate, amountOwed)
end)
--
-- Hooks
--
---Add custom checks before the vehicle can be sold - return false to prevent purchase
---@param dealershipId string
---@param plate string
---@param model string
---@param price number
---@return boolean allowed
function SellVehiclePreCheck(dealershipId, plate, model, price)
return true
end
---Add custom checks here before a sale can go ahead - return false to prevent purchase
---@param playerId integer
---@param dealershipId string
---@param plate string
---@param model string|integer
---@param purchaseType "personal"|"society"
---@param amountToPay number
---@param paymentMethod "bank"|"cash"
---@param society string
---@param societyType "job"|"gang"
---@param financed boolean
---@param noOfPayments? number
---@param downPayment? number
---@param isDirectSale? boolean
---@param sellerPlayerId? integer
---@return boolean allowed
function PurchaseVehiclePreCheck(playerId, dealershipId, plate, model, purchaseType, amountToPay, paymentMethod, society, societyType, financed, noOfPayments, downPayment, isDirectSale, sellerPlayerId)
return true
end

View file

@ -0,0 +1,307 @@
-----------------------------------------------------------------------------------
-- WAIT! Before editing this file manually, try our new easy configuration tool! --
-- https://configurator.jgscripts.com/dealerships --
-----------------------------------------------------------------------------------
Config = {}
-- Localisation
Config.Locale = "de"
Config.NumberAndDateFormat = "en-US"
Config.Currency = "USD"
Config.SpeedUnit = "mph" -- or "kph"
-- Framework & Integrations
Config.Framework = "auto" -- or "QBCore", "Qbox", "ESX"
Config.FuelSystem = "lc_fuel" -- or "LegacyFuel", "ps-fuel", "lj-fuel", "ox_fuel", "cdn-fuel", "hyon_gas_station", "okokGasStation", "nd_fuel", "myFuel", "ti_fuel", "Renewed-Fuel", "rcore_fuel", "qs-fuelstations", "none"
Config.VehicleKeys = "none" -- or "qb-vehiclekeys", "MrNewbVehicleKeys", "jaksam-vehicles-keys", "qs-vehiclekeys", "mk_vehiclekeys", "wasabi_carlock", "cd_garage", "okokGarage", "t1ger_keys", "Renewed", "tgiann-hotwire", "none"
Config.Notifications = "ox_lib" -- or "default", "okokNotify", "ox_lib", "ps-ui"
Config.DrawText = "jg-textui" -- or "jg-textui", "qb-DrawText", "okokTextUI", "ox_lib", "ps-ui"
-- Text UI prompts
Config.OpenShowroomPrompt = "[E] Open Showroom"
Config.OpenShowroomKeyBind = 38
Config.ViewInShowroomPrompt = "[E] View in Showroom"
Config.ViewInShowroomKeyBind = 38
Config.OpenManagementPrompt = "[E] Dealership Management"
Config.OpenManagementKeyBind = 38
Config.SellVehiclePrompt = "[E] Sell Vehicle"
Config.SellVehicleKeyBind = 38
-- If you don't know what this means, don't touch this
-- If you know what this means, I do recommend enabling it but be aware you may experience reliability issues on more populated servers
-- Having significant issues? I beg you to just set it back to false before opening a ticket with us
-- Want to read my rant about server spawned vehicles? https://docs.jgscripts.com/advanced-garages/misc/why-are-you-not-using-createvehicleserversetter-by-default
Config.SpawnVehiclesWithServerSetter = false
-- Finance (to disable finance, you have to do it on a per-location basis with Config.DealershipLocations below)
Config.FinancePayments = 12
Config.FinanceDownPayment = 0.1 -- 0.1 means 10%
Config.FinanceInterest = 0.1 -- 0.1 means 10%
Config.FinancePaymentInterval = 12 -- in hours
Config.FinancePaymentFailedHoursUntilRepo = 1 -- in hours
Config.MaxFinancedVehiclesPerPlayer = 5
-- Little vehicle preview images in the garage UI - learn more/add custom images: https://docs.jgscripts.com/advanced-garages/vehicle-images
Config.ShowVehicleImages = true
-- Vehicle purchases
Config.PlateFormat = "1AA111AA" -- https://docs.jgscripts.com/dealerships/plate-format
Config.HideVehicleStats = false
-- Test drives
Config.TestDrivePlate = "TEST1111" -- This is a plate seed so it'll be random every time (read: https://docs.jgscripts.com/dealerships/plate-format)
Config.TestDriveTimeSeconds = 120
Config.TestDriveNotInBucket = false -- Set to true for everyone to see the test driven vehicle (player is instanced by default)
-- Display vehicles (showroom)
Config.DisplayVehiclesPlate = "DEALER"
Config.DisplayVehiclesHidePurchasePrompt = false
-- Dealership stock purchases
Config.DealerPurchasePrice = 0.8 -- 0.8 = Dealers pay 80% of vehicle price
Config.VehicleOrderTime = 1 -- in mins
Config.ManagerCanChangePriceOfVehicles = true -- Managers can change the price of vehicles in the dealership
-- Vehicle colour options (for purchases & display vehicles)
Config.UseRGBColors = true -- this will use the index instead of hex, see https://pastebin.com/pwHci0xK (hex will still be used in the ui)
Config.VehicleColourOptions = {
{label = "Red", hex = "#e81416", index = 27},
{label = "Orange", hex = "#ff7518", index = 38},
{label = "Yellow", hex = "#ffbf00", index = 88},
{label = "Green", hex = "#79c314", index = 92},
{label = "Blue", hex = "#487de7", index = 64},
{label = "Purple", hex = "#70369d", index = 145},
{label = "Black", hex = "#000000", index = 0},
{label = "White", hex = "#ffffff", index = 111},
}
Config.Categories = {
planes = "Planes",
sportsclassics = "Sports Classics",
sedans = "Sedans",
compacts = "Compacts",
motorcycles = "Motorcycles",
super = "Super",
offroad = "Offroad",
helicopters = "Helicopters",
coupes = "Coupes",
muscle = "Muscle",
boats = "Boats",
vans = "Vans",
sports = "Sports",
suvs = "SUVs",
commercial = "Commercial",
cycles = "Cycles",
industrial = "Industrial"
}
Config.DealershipLocations = {
["pdm"] = {
type = "owned", -- or "owned", "self-service"
openShowroom = {
coords = vector3(-55.99, -1096.59, 26.42),
size = 5
},
openManagement = {
coords = vector3(-30.43, -1106.84, 26.42),
size = 5
},
sellVehicle = {
coords = vector3(-27.89, -1082.1, 26.64),
size = 5
},
purchaseSpawn = vector4(-13.68, -1092.31, 26.67, 159.82),
testDriveSpawn = vector4(-49.77, -1110.83, 26.44, 75.94),
camera = {
name = "Car",
coords = vector4(-146.6166, -596.6301, 166.0, 270.0),
positions = {5.0, 8.0, 12.0, 8.0}
},
categories = {"sedans", "compacts", "motorcycles", "offroad", "coupes", "muscle", "suvs", "sportsclassics"},
enableTestDrive = true,
hideBlip = false,
blip = {
id = 326,
color = 2,
scale = 0.6
},
enableSellVehicle = true, -- Allow players to sell vehicles back to dealer
sellVehiclePercent = 0.6, -- 60% of current sale price
enableFinance = true,
hideMarkers = false,
markers = { id = 21, size = { x = 0.3, y = 0.3, z = 0.3 }, color = { r = 255, g = 255, b = 255, a = 120 }, bobUpAndDown = 0, faceCamera = 0, rotate = 1, drawOnEnts = 0 },
showroomJobWhitelist = {},
showroomGangWhitelist = {},
societyPurchaseJobWhitelist = {},
societyPurchaseGangWhitelist = {},
disableShowroomPurchase = false,
job = "cardealer", -- Owned dealerships only
directSaleDistance = 50,
},
["luxury"] = {
type = "self-service", -- or "owned", "self-service"
openShowroom = {
coords = vector3(-1257.4, -369.12, 36.98),
size = 5
},
openManagement = {
coords = vector3(-1249.04, -346.96, 37.34),
size = 5
},
sellVehicle = {
coords = vector3(-1233.46, -346.81, 37.33),
size = 5
},
purchaseSpawn = vector4(-1233.46, -346.81, 37.33, 23.36),
testDriveSpawn = vector4(-1233.46, -346.81, 37.33, 23.36),
camera = {
name = "Car",
coords = vector4(-146.6166, -596.6301, 166.0, 270.0),
positions = {5.0, 8.0, 12.0, 8.0}
},
categories = {"super", "sports"},
enableSellVehicle = true, -- Allow players to sell vehicles back to dealer
sellVehiclePercent = 0.6, -- 60% of current sale price
enableTestDrive = true,
enableFinance = true,
hideBlip = false,
blip = {
id = 523,
color = 2,
scale = 0.6
},
hideMarkers = false,
markers = { id = 21, size = { x = 0.3, y = 0.3, z = 0.3 }, color = { r = 255, g = 255, b = 255, a = 120 }, bobUpAndDown = 0, faceCamera = 0, rotate = 1, drawOnEnts = 0 },
showroomJobWhitelist = {},
showroomGangWhitelist = {},
societyPurchaseJobWhitelist = {},
societyPurchaseGangWhitelist = {},
},
["boats"] = {
type = "self-service", -- or "owned", "self-service"
openShowroom = {
coords = vector3(-739.55, -1333.75, 1.6),
size = 5
},
openManagement = {
coords = vector3(-731.37, -1310.35, 5.0),
size = 5
},
sellVehicle = {
coords = vector3(-714.42, -1340.01, -0.18),
size = 5
},
purchaseSpawn = vector4(-714.42, -1340.01, -0.18, 139.38),
testDriveSpawn = vector4(-714.42, -1340.01, -0.18, 139.38),
camera = {
name = "Sea",
coords = vector4(-808.28, -1491.19, -0.47, 113.53),
positions = {7.5, 12.0, 15.0, 12.0}
},
categories = {"boats"},
enableSellVehicle = true, -- Allow players to sell vehicles back to dealer
sellVehiclePercent = 0.6, -- 60% of current sale price
enableTestDrive = false,
hideBlip = false,
blip = {
id = 410,
color = 2,
scale = 0.6
},
hideMarkers = false,
markers = { id = 21, size = { x = 0.3, y = 0.3, z = 0.3 }, color = { r = 255, g = 255, b = 255, a = 120 }, bobUpAndDown = 0, faceCamera = 0, rotate = 1, drawOnEnts = 0 },
showroomJobWhitelist = {},
showroomGangWhitelist = {},
societyPurchaseJobWhitelist = {},
societyPurchaseGangWhitelist = {},
},
["air"] = {
type = "self-service", -- or "owned", "self-service"
openShowroom = {
coords = vector3(-1623.0, -3151.56, 13.99),
size = 5
},
openManagement = {
coords = vector3(-1637.78, -3177.94, 13.99),
size = 5
},
sellVehicle = {
coords = vector3(-1654.9, -3147.58, 13.99),
size = 5
},
purchaseSpawn = vector4(-1654.9, -3147.58, 13.99, 324.78),
testDriveSpawn = vector4(-1654.9, -3147.58, 13.99, 324.78),
camera = {
name = "Air",
coords = vector4(-1267.0, -3013.14, -48.5, 310.96),
positions = {12.0, 15.0, 20.0, 15.0}
},
categories = {"planes", "helicopters"},
enableSellVehicle = true, -- Allow players to sell vehicles back to dealer
sellVehiclePercent = 0.6, -- 60% of current sale price
enableTestDrive = false,
hideBlip = false,
blip = {
id = 423,
color = 2,
scale = 0.6
},
hideMarkers = false,
markers = { id = 21, size = { x = 0.3, y = 0.3, z = 0.3 }, color = { r = 255, g = 255, b = 255, a = 120 }, bobUpAndDown = 0, faceCamera = 0, rotate = 1, drawOnEnts = 0 },
showroomJobWhitelist = {},
showroomGangWhitelist = {},
societyPurchaseJobWhitelist = {},
societyPurchaseGangWhitelist = {},
},
["truck"] = {
type = "self-service", -- or "owned", "self-service"
openShowroom = {
coords = vector3(1214.37, -3204.53, 6.03),
size = 5
},
openManagement = {
coords = vector3(1184.45, -3179.27, 7.1),
size = 5
},
sellVehicle = {
coords = vector3(1196.75, -3205.31, 6.0),
size = 5
},
purchaseSpawn = vector4(1196.75, -3205.31, 6.0, 91.12),
testDriveSpawn = vector4(1196.75, -3205.31, 6.0, 91.12),
camera = {
name = "Truck",
coords = vector4(-1267.0, -3013.14, -48.5, 310.96),
positions = {7.5, 12.0, 15.0, 12.0}
},
categories = {"vans", "commercial", "industrial"},
enableSellVehicle = true, -- Allow players to sell vehicles back to dealer
sellVehiclePercent = 0.6, -- 60% of current sale price
enableTestDrive = true,
enableFinance = true,
hideBlip = false,
blip = {
id = 477,
color = 2,
scale = 0.6
},
hideMarkers = false,
markers = { id = 21, size = { x = 0.3, y = 0.3, z = 0.3 }, color = { r = 255, g = 255, b = 255, a = 120 }, bobUpAndDown = 0, faceCamera = 0, rotate = 1, drawOnEnts = 0 },
showroomJobWhitelist = {},
showroomGangWhitelist = {},
societyPurchaseJobWhitelist = {},
societyPurchaseGangWhitelist = {},
},
}
-- Commands
Config.MyFinanceCommand = "myfinance"
Config.DirectSaleCommand = "directsale"
Config.DealerAdminCommand = "dealeradmin"
-- Nerd options
Config.RemoveGeneratorsAroundDealership = 60.0
Config.AutoRunSQL = true
Config.ReturnToPreviousRoutingBucket = false
Config.HideWatermark = false
Config.Debug = false

View file

@ -0,0 +1,415 @@
---@param text string
function Framework.Client.ShowTextUI(text)
SetTimeout(1, function()
if (Config.DrawText == "auto" and GetResourceState("jg-textui") == "started") or Config.DrawText == "jg-textui" then
exports["jg-textui"]:DrawText(text)
elseif (Config.DrawText == "auto" and GetResourceState("ox_lib") == "started") or Config.DrawText == "ox_lib" then
exports["ox_lib"]:showTextUI(text, {
position = "left-center"
})
elseif (Config.DrawText == "auto" and GetResourceState("okokTextUI") == "started") or Config.DrawText == "okokTextUI" then
exports["okokTextUI"]:Open(text, "lightblue", "left")
elseif (Config.DrawText == "auto" and GetResourceState("ps-ui") == "started") or Config.DrawText == "ps-ui" then
exports["ps-ui"]:DisplayText(text, "primary")
elseif Config.Framework == "QBCore" then
exports["qb-core"]:DrawText(text)
else
error("You do not have a TextUI system set up!")
end
end)
end
function Framework.Client.HideTextUI()
if (Config.DrawText == "auto" and GetResourceState("jg-textui") == "started") or Config.DrawText == "jg-textui" then
exports["jg-textui"]:HideText()
elseif (Config.DrawText == "auto" and GetResourceState("ox_lib") == "started") or Config.DrawText == "ox_lib" then
exports["ox_lib"]:hideTextUI()
elseif (Config.DrawText == "auto" and GetResourceState("okokTextUI") == "started") or Config.DrawText == "okokTextUI" then
exports["okokTextUI"]:Close()
elseif (Config.DrawText == "auto" and GetResourceState("ps-ui") == "started") or Config.DrawText == "ps-ui" then
exports["ps-ui"]:HideText()
elseif Config.Framework == "QBCore" then
exports["qb-core"]:HideText()
else
error("You do not have a TextUI system set up!")
end
end
---@param msg string
---@param type? "success" | "warning" | "error"
---@param time? number
function Framework.Client.Notify(msg, type, time)
type = type or "success"
time = time or 5000
if (Config.Notifications == "auto" and GetResourceState("okokNotify") == "started") or Config.Notifications == "okokNotify" then
exports["okokNotify"]:Alert("Dealerships", msg, time, type)
elseif (Config.Notifications == "auto" and GetResourceState("ps-ui") == "started") or Config.Notifications == "ps-ui" then
exports["ps-ui"]:Notify(msg, type, time)
elseif (Config.Notifications == "auto" and GetResourceState("ox_lib") == "started") or Config.Notifications == "ox_lib" then
exports["ox_lib"]:notify({
title = "Dealerships",
description = msg,
type = type
})
else
if Config.Framework == "QBCore" then
return QBCore.Functions.Notify(msg, type, time)
elseif Config.Framework == "Qbox" then
exports.qbx_core:Notify(msg, type, time)
elseif Config.Framework == "ESX" then
return ESX.ShowNotification(msg, type)
end
end
end
RegisterNetEvent("jg-dealerships:client:notify", function(...)
Framework.Client.Notify(...)
end)
function Framework.Client.ToggleHud(toggle)
DisplayHud(toggle)
DisplayRadar(toggle)
end
--
-- Vehicle Functions
--
---@param vehicle integer
---@return table|false props
function Framework.Client.GetVehicleProperties(vehicle)
if GetResourceState("jg-mechanic") == "started" then
return exports["jg-mechanic"]:getVehicleProperties(vehicle)
else
if Config.Framework == "QBCore" then
return QBCore.Functions.GetVehicleProperties(vehicle)
elseif Config.Framework == "Qbox" then
return lib.getVehicleProperties(vehicle) or false
elseif Config.Framework == "ESX" then
return ESX.Game.GetVehicleProperties(vehicle)
end
end
return false
end
---@param vehicle integer
---@param props table
function Framework.Client.SetVehicleProperties(vehicle, props)
if GetResourceState("jg-mechanic") == "started" then
return exports["jg-mechanic"]:setVehicleProperties(vehicle, props)
else
if Config.Framework == "QBCore" then
return QBCore.Functions.SetVehicleProperties(vehicle, props)
elseif Config.Framework == "Qbox" then
return lib.setVehicleProperties(vehicle, props)
elseif Config.Framework == "ESX" then
return ESX.Game.SetVehicleProperties(vehicle, props)
end
end
end
---@param vehicle integer
---@return number fuelLevel
function Framework.Client.VehicleGetFuel(vehicle)
if not DoesEntityExist(vehicle) then return 0 end
if (Config.FuelSystem == "LegacyFuel" or Config.FuelSystem == "ps-fuel" or Config.FuelSystem == "lj-fuel" or Config.FuelSystem == "cdn-fuel" or Config.FuelSystem == "hyon_gas_station" or Config.FuelSystem == "okokGasStation" or Config.FuelSystem == "nd_fuel" or Config.FuelSystem == "myFuel" or Config.FuelSystem == "rcore_fuel" or Config.Fuelsystem == "qs-fuelstations") then
return exports[Config.FuelSystem]:GetFuel(vehicle)
elseif Config.FuelSystem == "ti_fuel" then
local level, type = exports["ti_fuel"]:getFuel(vehicle)
TriggerServerEvent("jg-dealerships:server:save-ti-fuel-type", Framework.Client.GetPlate(vehicle), type)
return level
elseif Config.FuelSystem == "ox_fuel" or Config.FuelSystem == "Renewed-Fuel" then
return GetVehicleFuelLevel(vehicle)
elseif Config.FuelSystem == "rcore_fuel" then
return exports.rcore_fuel:GetVehicleFuelPercentage(vehicle)
else
return 65 -- or set up custom fuel system here...
end
end
---@param vehicle integer
---@param fuel number
function Framework.Client.VehicleSetFuel(vehicle, fuel)
if not DoesEntityExist(vehicle) then return false end
if (Config.FuelSystem == "LegacyFuel" or Config.FuelSystem == "ps-fuel" or Config.FuelSystem == "lj-fuel" or Config.FuelSystem == "cdn-fuel" or Config.FuelSystem == "hyon_gas_station" or Config.FuelSystem == "okokGasStation" or Config.FuelSystem == "nd_fuel" or Config.FuelSystem == "myFuel" or Config.FuelSystem == "Renewed-Fuel" or Config.FuelSystem == "rcore_fuel" or Config.FuelSystem == "qs-fuelstations") then
exports[Config.FuelSystem]:SetFuel(vehicle, fuel)
elseif Config.FuelSystem == "ti_fuel" then
local fuelType = lib.callback.await("jg-dealerships:server:get-ti-fuel-type", false, Framework.Client.GetPlate(vehicle))
exports["ti_fuel"]:setFuel(vehicle, fuel, fuelType or nil)
elseif Config.FuelSystem == "ox_fuel" then
Entity(vehicle).state.fuel = fuel
elseif Config.FuelSystem == "rcore_fuel" then
exports.rcore_fuel:SetVehicleFuel(vehicle, fuel)
else
-- Setup custom fuel system here
end
end
---@param plate string
---@param vehicleEntity integer
---@param origin "testDrive"|"purchase"
function Framework.Client.VehicleGiveKeys(plate, vehicleEntity, origin)
if not DoesEntityExist(vehicleEntity) then return false end
if Config.VehicleKeys == "qb-vehiclekeys" then
TriggerEvent("vehiclekeys:client:SetOwner", plate)
elseif Config.VehicleKeys == "jaksam-vehicles-keys" then
TriggerServerEvent("vehicles_keys:selfGiveVehicleKeys", plate)
elseif Config.VehicleKeys == "mk_vehiclekeys" then
exports["mk_vehiclekeys"]:AddKey(vehicleEntity)
elseif Config.VehicleKeys == "qs-vehiclekeys" then
local model = GetDisplayNameFromVehicleModel(GetEntityModel(vehicleEntity))
exports["qs-vehiclekeys"]:GiveKeys(plate, model)
elseif Config.VehicleKeys == "wasabi_carlock" then
exports.wasabi_carlock:GiveKey(plate)
elseif Config.VehicleKeys == "cd_garage" then
TriggerEvent("cd_garage:AddKeys", plate)
elseif Config.VehicleKeys == "okokGarage" then
TriggerServerEvent("okokGarage:GiveKeys", plate)
elseif Config.VehicleKeys == "t1ger_keys" then
TriggerServerEvent("t1ger_keys:updateOwnedKeys", plate, true)
elseif Config.VehicleKeys == "MrNewbVehicleKeys" then
exports.MrNewbVehicleKeys:GiveKeys(vehicleEntity)
elseif Config.VehicleKeys == "Renewed" then
exports["Renewed-Vehiclekeys"]:addKey(plate)
elseif Config.VehicleKeys == "mx_carkeys" then
if origin == "testDrive" then
exports["mx_carkeys"]:createTempKey(vehicleEntity, plate, 2)
else
exports["mx_carkeys"]:buyVehicle(vehicleEntity, plate, 2)
end
elseif Config.VehicleKeys == "tgiann-hotwire" then
if origin == "testDrive" then
exports["tgiann-hotwire"]:SetNonRemoveableIgnition(vehicleEntity, true)
else
exports["tgiann-hotwire"]:GiveKeyPlate(plate, true)
end
else
-- Setup custom key system here...
end
end
---@param plate string
---@param vehicleEntity integer
---@param origin "vehicleSale"|"testDrive"
function Framework.Client.VehicleRemoveKeys(plate, vehicleEntity, origin)
if not DoesEntityExist(vehicleEntity) then return false end
if Config.VehicleKeys == "qs-vehiclekeys" then
local model = GetDisplayNameFromVehicleModel(GetEntityModel(vehicleEntity))
exports["qs-vehiclekeys"]:RemoveKeys(plate, model)
elseif Config.VehicleKeys == "wasabi_carlock" then
exports.wasabi_carlock:RemoveKey(plate)
elseif Config.VehicleKeys == "t1ger_keys" then
TriggerServerEvent("t1ger_keys:updateOwnedKeys", plate, false)
elseif Config.VehicleKeys == "MrNewbVehicleKeys" then
exports.MrNewbVehicleKeys:RemoveKeys(vehicleEntity)
elseif Config.VehicleKeys == "Renewed" then
exports["Renewed-Vehiclekeys"]:removeKey(plate)
elseif Config.VehicleKeys == "mx_carkeys" then
exports["mx_carkeys"]:removeVehicleKey(vehicleEntity)
else
-- Setup custom key system here...
end
end
---@param vehicle integer
---@return string|false plate
function Framework.Client.GetPlate(vehicle)
local plate = GetVehicleNumberPlateText(vehicle)
if not plate or plate == nil or plate == "" then return false end
if GetResourceState("brazzers-fakeplates") == "started" then
local originalPlate = lib.callback.await("jg-dealerships:server:brazzers-get-plate-from-fakeplate", false, plate)
if originalPlate then plate = originalPlate end
end
local trPlate = string.gsub(plate, "^%s*(.-)%s*$", "%1")
return trPlate
end
---@param vehicle integer
---@return string|number|false model
function Framework.Client.GetModelColumn(vehicle)
if Config.Framework == "QBCore" or Config.Framework == "Qbox" then
return vehicle.vehicle or tonumber(vehicle.hash) or false
elseif Config.Framework == "ESX" then
if not vehicle or not vehicle.vehicle then return false end
if type(vehicle.vehicle) == "string" then
if not json.decode(vehicle.vehicle) then return false end
return json.decode(vehicle.vehicle).model
else
return vehicle.vehicle.model
end
end
return false
end
-- Get a nice vehicle label from either QBCore shared or GTA natives
---@param model string | number
function Framework.Client.GetVehicleLabel(model)
if type(model) == "string" then
if Config.Framework == "QBCore" and QBCore.Shared.Vehicles then
local vehShared = QBCore.Shared.Vehicles[model]
if vehShared then
return vehShared.brand .. " " .. vehShared.name
end
end
if Config.Framework == "Qbox" and exports.qbx_core:GetVehiclesByName() then
local vehShared = exports.qbx_core:GetVehiclesByName()[model]
if vehShared then
return vehShared.brand .. " " .. vehShared.name
end
end
end
local hash = type(model) == "string" and joaat(model) or model
local makeName = GetMakeNameFromVehicleModel(hash)
local modelName = GetDisplayNameFromVehicleModel(hash)
local label = GetLabelText(makeName) .. " " .. GetLabelText(modelName)
if makeName == "CARNOTFOUND" or modelName == "CARNOTFOUND" then
label = tostring(model)
else
if GetLabelText(modelName) == "NULL" and GetLabelText(makeName) == "NULL" then
label = (makeName or "") .. " " .. (modelName or "")
elseif GetLabelText(makeName) == "NULL" then
label = GetLabelText(modelName)
end
end
return label
end
---Returns vehicle stats in a table format
---@param model string model (archetype) name
function Framework.Client.GetVehicleStats(model)
local vehicle = joaat(model) -- convert to hash
local class = GetVehicleClassFromName(vehicle)
local mult, pmult, tmult = 1, 1000, 800
if class == 14 or class == 15 or class == 16 then
mult, pmult, tmult = 0.1, 10, 8
end
local brake = GetVehicleModelMaxBraking(vehicle) * mult
local handling = ((GetVehicleModelMaxBraking(vehicle) + GetVehicleModelMaxBrakingMaxMods(vehicle)) * GetVehicleModelMaxTraction(vehicle)) * mult
local topSpeed = math.ceil(GetVehicleModelEstimatedMaxSpeed(vehicle) * 2.2369)
if Config.SpeedUnit == "kph" then topSpeed = math.ceil(GetVehicleModelEstimatedMaxSpeed(vehicle) * 3.6) end
local power = math.ceil(GetVehicleModelAcceleration(vehicle) * pmult)
local torque = math.ceil(GetVehicleModelAcceleration(vehicle) * tmult)
-- If you are really unhappy with the values being returned from the game, you could write something
-- like the following to overwrite the values to custom ones, by writing something like:
--
-- if model == "adder" then
-- return {
-- brake = 1.0,
-- handling = 7.0,
-- topSpeed = 150,
-- power = 900,
-- torque = 800
-- }
-- end
return {
brake = brake,
handling = handling,
topSpeed = topSpeed,
power = power,
torque = torque
}
end
--
-- Player Functions
--
function Framework.Client.GetPlayerData()
if Config.Framework == "QBCore" then
return QBCore.Functions.GetPlayerData()
elseif Config.Framework == "Qbox" then
return exports.qbx_core:GetPlayerData()
elseif Config.Framework == "ESX" then
return ESX.GetPlayerData()
end
end
function Framework.Client.GetPlayerIdentifier()
if Config.Framework == "QBCore" or Config.Framework == "Qbox" then
return Globals.PlayerData.citizenid
elseif Config.Framework == "ESX" then
return Globals.PlayerData.identifier
end
end
---@param type "cash" | "bank" | "money" | string
function Framework.Client.GetBalance(type)
if type == "custom" then
-- Add your own custom balance system here
elseif Config.Framework == "QBCore" then
return QBCore.Functions.GetPlayerData().money[type]
elseif Config.Framework == "Qbox" then
return exports.qbx_core:GetPlayerData().money[type]
elseif Config.Framework == "ESX" then
if type == "cash" then type = "money" end
for i, acc in pairs(ESX.GetPlayerData().accounts) do
if acc.name == type then
return acc.money
end
end
return 0
end
end
---@param society string
---@param type "job"|"gang"
---@return number balance
function Framework.Client.GetSocietyBalance(society, type)
local balance = lib.callback.await("jg-dealerships:server:get-society-balance", false, society, type)
return balance
end
function Framework.Client.GetPlayerJob()
local player = Framework.Client.GetPlayerData()
if not player or not player.job then return {} end
if Config.Framework == "QBCore" or Config.Framework == "Qbox" then
return {
name = player.job.name,
label = player.job.label,
grade = player.job.grade.level
}
elseif Config.Framework == "ESX" then
return {
name = player.job.name,
label = player.job.label,
grade = player.job.grade
}
end
end
function Framework.Client.GetPlayerGang()
if Config.Framework == "QBCore" or Config.Framework == "Qbox" then
local player = Framework.Client.GetPlayerData()
if not player or not player.gang then return {} end
return {
name = player.gang.name,
label = player.gang.label,
grade = player.gang.grade.level
}
elseif Config.Framework == "ESX" then
error("ESX does not natively support gangs.");
end
end

View file

@ -0,0 +1,21 @@
if (Config.Framework == "auto" and GetResourceState("es_extended") == "started") or Config.Framework == "ESX" then
-- Player data
Globals.PlayerData = ESX.GetPlayerData()
RegisterNetEvent("esx:playerLoaded")
AddEventHandler("esx:playerLoaded", function(xPlayer)
Globals.PlayerData = xPlayer
TriggerEvent("jg-dealerships:client:update-blips-text-uis")
CreateThread(function()
Wait(1000)
lib.callback.await("jg-dealerships:server:exit-showroom", false)
end)
end)
RegisterNetEvent("esx:setJob")
AddEventHandler("esx:setJob", function(job)
Globals.PlayerData.job = job
TriggerEvent("jg-dealerships:client:update-blips-text-uis")
end)
end

View file

@ -0,0 +1,35 @@
QBCore, ESX = nil, nil
Framework = {
Client = {},
Server = {}
}
if (Config.Framework == "auto" and GetResourceState("qbx_core") == "started") or Config.Framework == "Qbox" then
Config.Framework = "Qbox"
Framework.VehiclesTable = "player_vehicles"
Framework.VehProps = "mods"
Framework.PlayerId = "citizenid"
Framework.PlayersTable = "players"
Framework.PlayersTableId = "citizenid"
elseif (Config.Framework == "auto" and GetResourceState("qb-core") == "started") or Config.Framework == "QBCore" then
QBCore = exports['qb-core']:GetCoreObject()
Config.Framework = "QBCore"
Framework.VehiclesTable = "player_vehicles"
Framework.VehProps = "mods"
Framework.PlayerId = "citizenid"
Framework.PlayersTable = "players"
Framework.PlayersTableId = "citizenid"
elseif (Config.Framework == "auto" and GetResourceState("es_extended") == "started") or Config.Framework == "ESX" then
ESX = exports["es_extended"]:getSharedObject()
Config.Framework = "ESX"
Framework.VehiclesTable = "owned_vehicles"
Framework.VehProps = "vehicle"
Framework.PlayerId = "owner"
Framework.PlayersTable = "users"
Framework.PlayersTableId = "identifier"
else
error("You need to set the Config.Framework to either \"QBCore\" or \"ESX\" or \"Qbox\"!")
end

View file

@ -0,0 +1,32 @@
if (Config.Framework == "auto" and GetResourceState("qb-core") == "started") or Config.Framework == "QBCore" then
-- Player data
Globals.PlayerData = QBCore.Functions.GetPlayerData()
RegisterNetEvent("QBCore:Client:OnPlayerLoaded")
AddEventHandler("QBCore:Client:OnPlayerLoaded", function()
Globals.PlayerData = QBCore.Functions.GetPlayerData()
TriggerEvent("jg-dealerships:client:update-blips-text-uis")
CreateThread(function()
Wait(1000)
lib.callback.await("jg-dealerships:server:exit-showroom", false)
end)
end)
RegisterNetEvent("QBCore:Client:OnJobUpdate")
AddEventHandler("QBCore:Client:OnJobUpdate", function(job)
Globals.PlayerData.job = job
TriggerEvent("jg-dealerships:client:update-blips-text-uis")
end)
RegisterNetEvent("QBCore:Client:OnGangUpdate")
AddEventHandler("QBCore:Client:OnGangUpdate", function(gang)
Globals.PlayerData.gang = gang
TriggerEvent("jg-dealerships:client:update-blips-text-uis")
end)
-- For jacksam's job creator
RegisterNetEvent("jobs_creator:injectJobs", function(jobs)
QBCore.Jobs = jobs
end)
end

View file

@ -0,0 +1,27 @@
if (Config.Framework == "auto" and GetResourceState("qbx_core") == "started") or Config.Framework == "Qbox" then
-- Player data
Globals.PlayerData = exports.qbx_core:GetPlayerData()
RegisterNetEvent("QBCore:Client:OnPlayerLoaded")
AddEventHandler("QBCore:Client:OnPlayerLoaded", function()
Globals.PlayerData = exports.qbx_core:GetPlayerData()
TriggerEvent("jg-dealerships:client:update-blips-text-uis")
CreateThread(function()
Wait(1000)
lib.callback.await("jg-dealerships:server:exit-showroom", false)
end)
end)
RegisterNetEvent("QBCore:Client:OnJobUpdate")
AddEventHandler("QBCore:Client:OnJobUpdate", function(job)
Globals.PlayerData.job = job
TriggerEvent("jg-dealerships:client:update-blips-text-uis")
end)
RegisterNetEvent("QBCore:Client:OnGangUpdate")
AddEventHandler("QBCore:Client:OnGangUpdate", function(gang)
Globals.PlayerData.gang = gang
TriggerEvent("jg-dealerships:client:update-blips-text-uis")
end)
end

View file

@ -0,0 +1,499 @@
---@param src integer
---@param msg string
---@param type "success" | "warning" | "error"
function Framework.Server.Notify(src, msg, type)
TriggerClientEvent("jg-dealerships:client:notify", src, msg, type, 5000)
end
---@param src integer
---@returns boolean
function Framework.Server.IsAdmin(src)
return IsPlayerAceAllowed(tostring(src), "command") or false
end
--
-- Society
--
local usingNewQBBanking = GetResourceState("qb-banking") == "started" and tonumber(string.sub(GetResourceMetadata("qb-banking", "version", 0), 1, 3)) >= 2
---@param society string
---@param societyType "job"|"gang"
---@return number balance
function Framework.Server.GetSocietyBalance(society, societyType)
if GetResourceState("okokBanking") == "started" then
return exports["okokBanking"]:GetAccount(society)
elseif GetResourceState("tgg-banking") == "started" then
return exports["tgg-banking"]:GetSocietyAccountMoney(society)
elseif GetResourceState("Renewed-Banking") == "started" then
return exports["Renewed-Banking"]:getAccountMoney(society)
elseif Config.Framework == "QBCore" then
if usingNewQBBanking then
return exports["qb-banking"]:GetAccountBalance(society)
else
if societyType == "job" then
return exports["qb-management"]:GetAccount(society)
elseif societyType == "gang" then
return exports["qb-management"]:GetGangAccount(society)
end
end
elseif Config.Framework == "ESX" then
local balance = promise.new()
TriggerEvent("esx_society:getSociety", society, function(data)
if not data then return balance:resolve(0) end
TriggerEvent("esx_addonaccount:getSharedAccount", data.account, function(account)
return balance:resolve(account.money)
end)
end)
return Citizen.Await(balance)
end
return 0
end
lib.callback.register("jg-dealerships:server:get-society-balance", function(_, society, type)
return Framework.Server.GetSocietyBalance(society, type)
end)
---@param societyName string
---@param societyType "job"|"gang"
---@param amount number
function Framework.Server.RemoveFromSocietyFund(societyName, societyType, amount)
if GetResourceState("okokBanking") == "started" then
exports["okokBanking"]:RemoveMoney(societyName, amount)
elseif GetResourceState("tgg-banking") == "started" then
exports["tgg-banking"]:RemoveSocietyMoney(societyName, amount)
elseif GetResourceState("Renewed-Banking") == "started" then
exports["Renewed-Banking"]:removeAccountMoney(societyName, amount)
elseif Config.Framework == "QBCore" then
if usingNewQBBanking then
exports["qb-banking"]:RemoveMoney(societyName, amount)
else
if societyType == "job" then
exports["qb-management"]:RemoveMoney(societyName, amount)
elseif societyType == "gang" then
exports["qb-management"]:RemoveGangMoney(societyName, amount)
end
end
elseif Config.Framework == "ESX" then
TriggerEvent("esx_society:getSociety", societyName, function(society)
TriggerEvent("esx_addonaccount:getSharedAccount", society.account, function(account)
account.removeMoney(amount)
end)
end)
end
end
---@param purchaseType "society"|"personal"
---@param society? string
---@param societyType? string
---@param model string|integer
---@param plate string
---@param financed? boolean
---@param financeData? table
---@return integer|nil vehicleId
function Framework.Server.SaveVehicleToGarage(src, purchaseType, society, societyType, model, plate, financed, financeData)
local vehicleId = nil
local props = json.encode({
model = ConvertModelToHash(model),
plate = plate
})
if Config.Framework == "QBCore" or Config.Framework == "Qbox" then
local playerData = Framework.Server.GetPlayer(src).PlayerData
local license = playerData.license
local citizenid = playerData.citizenid
if purchaseType == "society" then
vehicleId = MySQL.insert.await(
"INSERT INTO player_vehicles (license, citizenid, vehicle, hash, mods, plate, financed, finance_data, job_vehicle, job_vehicle_rank, gang_vehicle, gang_vehicle_rank) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",
{license, society, model, joaat(model), props, plate, financed, json.encode(financeData), societyType == "job" and 1 or 0, 0, societyType == "gang" and 1 or 0, 0}
)
else
vehicleId = MySQL.insert.await(
"INSERT INTO player_vehicles (license, citizenid, vehicle, hash, mods, plate, financed, finance_data) VALUES(?, ?, ?, ?, ?, ?, ?, ?)",
{license, citizenid, model, joaat(model), props, plate, financed, json.encode(financeData)}
)
end
elseif Config.Framework == "ESX" then
local identifier = Framework.Server.GetPlayerIdentifier(src)
DebugPrint("Saving vehicle to garage for "..identifier.. " type: "..purchaseType, "debug")
if purchaseType == "society" and societyType == "job" then
vehicleId = MySQL.insert.await(
"INSERT INTO owned_vehicles (owner, plate, vehicle, financed, finance_data, job_vehicle, job_vehicle_rank) VALUES(?, ?, ?, ?, ?, ?, ?)",
{society, plate, props, financed, json.encode(financeData), 1, 0}
)
else
vehicleId = MySQL.insert.await(
"INSERT INTO owned_vehicles (owner, plate, vehicle, financed, finance_data) VALUES(?, ?, ?, ?, ?)",
{identifier, plate, props, financed, json.encode(financeData)}
)
end
end
return vehicleId
end
---@param vehicle boolean|QueryResult|unknown|{ [number]: { [string]: unknown }|{ [string]: unknown }}
---@return string | number | false model
function Framework.Server.GetModelColumn(vehicle)
if Config.Framework == "QBCore" or Config.Framework == "Qbox" then
return vehicle.vehicle or tonumber(vehicle.hash) or false
elseif Config.Framework == "ESX" then
if not vehicle or not vehicle.vehicle then return false end
if type(vehicle.vehicle) == "string" then
if not json.decode(vehicle.vehicle) then return false end
return json.decode(vehicle.vehicle).model
else
return vehicle.vehicle.model
end
end
return false
end
---@param vehicle integer
---@return string | false plate
function Framework.Server.GetPlate(vehicle)
local plate = GetVehicleNumberPlateText(vehicle)
if not plate or plate == nil or plate == "" then return false end
if GetResourceState("brazzers-fakeplates") == "started" then
local originalPlate = MySQL.scalar.await("SELECT plate FROM player_vehicles WHERE fakeplate = ?", {plate})
if originalPlate then plate = originalPlate end
end
local trPlate = string.gsub(plate, "^%s*(.-)%s*$", "%1")
return trPlate
end
---Generate a plate based on a seed
---@param seed string
---@param checkIfExists? boolean Check if the plate exists in the DB
---@return string|false generatedPlate
function Framework.Server.VehicleGeneratePlate(seed, checkIfExists)
seed = seed or "1AA111AA"
local CHARSET_NUMBERS, CHARSET_LETTERS = "0123456789", "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
local attempts = 0
while attempts < 20 do
local i, plate = 0, ""
while i <= seed:len() do
local char = seed:sub(i, i)
if char == "A" then
local randLetterPos = math.random(1, #CHARSET_LETTERS)
local randLetter = CHARSET_LETTERS:sub(randLetterPos, randLetterPos)
plate = plate .. randLetter
elseif char == "1" then
local randNumberPos = math.random(1, #CHARSET_NUMBERS)
local randNumber = CHARSET_NUMBERS:sub(randNumberPos, randNumberPos)
plate = plate .. randNumber
elseif char == "^" then
i = i + 1
if i <= seed:len() then plate = plate .. seed:sub(i, i) end
else
plate = plate .. char
end
i = i + 1
end
plate = plate:upper()
if plate:len() > 8 then
error("^1[ERROR] You are generating a plate with more than 8 characters.")
return false
end
if not checkIfExists then
return plate
end
local result = MySQL.scalar.await("SELECT plate FROM " .. Framework.VehiclesTable .. " WHERE plate = ?", {plate})
if not result then return plate end
attempts = attempts + 1
end
return false
end
lib.callback.register("jg-dealerships:server:vehicle-generate-plate", function(_, ...)
return Framework.Server.VehicleGeneratePlate(...)
end)
exports("generatePlate", Framework.Server.VehicleGeneratePlate)
--
-- Player Functions
--
---@param src integer
function Framework.Server.GetPlayer(src)
if Config.Framework == "QBCore" then
return QBCore.Functions.GetPlayer(src)
elseif Config.Framework == "Qbox" then
return exports.qbx_core:GetPlayer(src)
elseif Config.Framework == "ESX" then
return ESX.GetPlayerFromId(src)
end
end
---@param src integer
function Framework.Server.GetPlayerInfo(src)
local player = Framework.Server.GetPlayer(src)
if not player then return false end
if Config.Framework == "QBCore" or Config.Framework == "Qbox" then
return {
name = player.PlayerData.charinfo.firstname .. " " .. player.PlayerData.charinfo.lastname
}
elseif Config.Framework == "ESX" then
return {
name = player.getName()
}
end
end
---@param identifier string
function Framework.Server.GetPlayerInfoFromIdentifier(identifier)
local player = MySQL.single.await("SELECT * FROM " .. Framework.PlayersTable .. " WHERE " .. Framework.PlayersTableId .. " = ?", {identifier})
if not player then return false end
if Config.Framework == "QBCore" or Config.Framework == "Qbox" then
local charinfo = json.decode(player.charinfo)
return {
name = charinfo.firstname .. " " .. charinfo.lastname
}
elseif Config.Framework == "ESX" then
return {
name = player.firstname .. " " .. player.lastname
}
end
end
---@param src integer
function Framework.Server.GetPlayerIdentifier(src)
local player = Framework.Server.GetPlayer(src)
if not player then return false end
if Config.Framework == "QBCore" or Config.Framework == "Qbox" then
return player.PlayerData.citizenid
elseif Config.Framework == "ESX" then
return player.getIdentifier()
end
end
---@param identifier string
---@return integer | false src
function Framework.Server.GetPlayerFromIdentifier(identifier)
if Config.Framework == "QBCore" then
local player = QBCore.Functions.GetPlayerByCitizenId(identifier)
if not player then return false end
return player.PlayerData.source
elseif Config.Framework == "Qbox" then
local player = exports.qbx_core:GetPlayerByCitizenId(identifier)
if not player then return false end
return player.PlayerData.source
elseif Config.Framework == "ESX" then
local xPlayer = ESX.GetPlayerFromIdentifier(identifier)
if not xPlayer then return false end
return xPlayer.source
end
return false
end
--
-- Player Money
--
---@param src integer
---@param type "cash" | "bank" | "money"
function Framework.Server.GetPlayerBalance(src, type)
local player = Framework.Server.GetPlayer(src)
if not player then return 0 end
if type == "custom" then
-- Add your own custom balance system here
elseif Config.Framework == "QBCore" or Config.Framework == "Qbox" then
return player.PlayerData.money[type]
elseif Config.Framework == "ESX" then
if type == "cash" then type = "money" end
for i, acc in pairs(player.getAccounts()) do
if acc.name == type then
return acc.money
end
end
return 0
end
end
---@param src integer
---@param amount number
---@param account "cash" | "bank" | "money"
function Framework.Server.PlayerAddMoney(src, amount, account)
local player = Framework.Server.GetPlayer(src)
account = account or "bank"
if Config.Framework == "QBCore" or Config.Framework == "Qbox" then
player.Functions.AddMoney(account, Round(amount, 0))
elseif Config.Framework == "ESX" then
if account == "cash" then account = "money" end
player.addAccountMoney(account, Round(amount, 0))
end
end
---@param src integer
---@param amount number
---@param account "cash" | "bank" | "money"
function Framework.Server.PlayerRemoveMoney(src, amount, account)
local player = Framework.Server.GetPlayer(src)
account = account or "bank"
if account == "custom" then
-- Add your own custom balance system here
elseif Config.Framework == "QBCore" or Config.Framework == "Qbox" then
player.Functions.RemoveMoney(account, Round(amount, 0))
elseif Config.Framework == "ESX" then
if account == "cash" then account = "money" end
player.removeAccountMoney(account, Round(amount, 0))
end
end
--
-- Player Job
--
---@param src integer
---@param job string
---@param role "sales" | "supervisor" | "manager" | number
function Framework.Server.PlayerSetJob(src, job, role)
local player = Framework.Server.GetPlayer(src)
-- Adjust this as necessary for your job setup
local rank = 1 -- sales
if role == "supervisor" then rank = 2 end
if role == "manager" then rank = 3 end
if Config.Framework == "QBCore" or Config.Framework == "Qbox" then
player.Functions.SetJob(job, rank)
elseif Config.Framework == "ESX" then
player.setJob(job, rank)
end
end
---@param identifier string
---@param job string
---@param role "sales" | "supervisor" | "manager" | number
function Framework.Server.PlayerSetJobOffline(identifier, job, role)
-- Adjust this as necessary for your job setup
local rank = 1 -- sales
if role == "supervisor" then rank = 2 end
if role == "manager" then rank = 3 end
if Config.Framework == "QBCore" or Config.Framework == "Qbox" then
local jobsList = {}
if Config.Framework == "QBCore" then jobsList = QBCore.Shared.Jobs
elseif Config.Framework == "Qbox" then jobsList = exports.qbx_core:GetJobs() end
if not jobsList[job] then return false end
local jobData = {
name = job,
label = jobsList[job].label,
onduty = jobsList[job].defaultDuty,
type = jobsList[job].type or "none",
grade = {
name = "No Grades",
level = 0,
},
payment = 30,
isboss = false
}
if jobsList[job].grades[tostring(rank)] then
local jobgrade = jobsList[job].grades[tostring(rank)]
jobData.grade = {}
jobData.grade.name = jobgrade.name
jobData.grade.level = rank
jobData.payment = jobgrade.payment or 30
jobData.isboss = jobgrade.isboss or false
end
MySQL.update.await("UPDATE players SET job = ? WHERE citizenid = ?", {json.encode(jobData), identifier})
elseif Config.Framework == "ESX" then
MySQL.update.await("UPDATE users SET job = ?, job_grade = ? WHERE identifier = ?", {job, rank, identifier})
end
end
function Framework.Server.GetPlayers()
local players = {}
if Config.Framework == "QBCore" then
players = QBCore.Functions.GetQBPlayers()
elseif Config.Framework == "Qbox" then
players = exports.qbx_core:GetQBPlayers()
elseif Config.Framework == "ESX" then
players = ESX.GetExtendedPlayers()
end
for id, player in pairs(players) do
if Config.Framework == "QBCore" or Config.Framework == "Qbox" then
players[id].player_id = player.PlayerData.source
elseif Config.Framework == "ESX" then
players[id].player_id = player.source
end
end
return players
end
function Framework.Server.GetJobs()
if Config.Framework == "QBCore" then
return QBCore.Shared.Jobs
elseif Config.Framework == "Qbox" then
return exports.qbx_core:GetJobs()
elseif Config.Framework == "ESX" then
return ESX.GetJobs()
end
end
--
-- ti_fuel
--
RegisterNetEvent("jg-dealerships:server:save-ti-fuel-type", function(plate, type)
MySQL.query.await("ALTER TABLE " .. Framework.VehiclesTable .. " ADD COLUMN IF NOT EXISTS `ti_fuel_type` VARCHAR(100) DEFAULT '';")
MySQL.update.await("UPDATE " .. Framework.VehiclesTable .. " SET ti_fuel_type = ? WHERE plate = ?", {type, plate});
end)
lib.callback.register("jg-dealerships:server:get-ti-fuel-type", function(src, plate)
MySQL.query.await("ALTER TABLE " .. Framework.VehiclesTable .. " ADD COLUMN IF NOT EXISTS `ti_fuel_type` VARCHAR(100) DEFAULT '';")
return MySQL.scalar.await("SELECT ti_fuel_type FROM " .. Framework.VehiclesTable .. " WHERE plate = ?", {plate}) or false
end)
--
-- Brazzers-FakePlates
--
if GetResourceState("brazzers-fakeplates") == "started" then
lib.callback.register("jg-dealerships:server:brazzers-get-plate-from-fakeplate", function(_, fakeplate)
local result = MySQL.scalar.await("SELECT plate FROM player_vehicles WHERE fakeplate = ?", {fakeplate})
if result then return result end
return false
end)
lib.callback.register("jg-dealerships:server:brazzers-get-fakeplate-from-plate", function(_, plate)
local result = MySQL.scalar.await("SELECT fakeplate FROM player_vehicles WHERE plate = ?", {plate})
if result then return result end
return false
end)
end

View file

@ -0,0 +1,57 @@
fx_version "cerulean"
game "gta5"
lua54 "yes"
description "For support or other queries: discord.gg/jgscripts"
version 'v1.5.1'
author "JG Scripts"
dependencies {
"oxmysql",
"ox_lib",
"/server:7290",
"/onesync",
}
shared_scripts {
"@ox_lib/init.lua",
"config/config.lua",
"locales/*.lua",
"shared/main.lua",
"framework/main.lua"
}
client_scripts {
"framework/**/cl-*.lua",
"client/cl-main.lua",
"client/*.lua",
"config/config-cl.lua"
}
server_scripts {
"@oxmysql/lib/MySQL.lua",
"server/sv-webhooks.lua",
"framework/**/sv-*.lua",
"server/*.lua",
"config/config-sv.lua"
}
ui_page "web/dist/index.html"
files {
"web/dist/index.html",
"web/dist/**/*"
}
escrow_ignore {
"shared/*",
"config/**/*",
"framework/**/*",
"locales/*",
"client/cl-locations.lua",
"server/sv-webhooks.lua",
"client/cl-purchase.lua",
"server/sv-purchase.lua"
}
dependency '/assetpacks'

View file

@ -0,0 +1,85 @@
ALTER TABLE `owned_vehicles` ADD COLUMN IF NOT EXISTS `financed` tinyint(1) NOT NULL DEFAULT 0;
ALTER TABLE `owned_vehicles` ADD COLUMN IF NOT EXISTS `finance_data` longtext DEFAULT NULL;
CREATE TABLE IF NOT EXISTS `dealership_data` (
`name` varchar(100) NOT NULL,
`label` varchar(255) NOT NULL,
`balance` float NOT NULL DEFAULT 0,
`owner_id` varchar(255) DEFAULT NULL,
`owner_name` varchar(255) DEFAULT NULL,
`employee_commission` int(11) DEFAULT '10',
PRIMARY KEY (`name`)
);
CREATE TABLE IF NOT EXISTS `dealership_vehicles` (
`spawn_code` varchar(100) NOT NULL,
`brand` varchar(255) DEFAULT NULL,
`model` varchar(255) DEFAULT NULL,
`hashkey` varchar(100) DEFAULT NULL,
`category` varchar(100) NOT NULL,
`price` float NOT NULL,
`created_at` datetime NOT NULL DEFAULT current_timestamp(),
PRIMARY KEY (`spawn_code`)
);
CREATE TABLE IF NOT EXISTS `dealership_dispveh` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`dealership` varchar(100) NOT NULL,
`vehicle` varchar(100) NOT NULL,
`color` varchar(100) NOT NULL,
`coords` varchar(255) NOT NULL,
PRIMARY KEY (`id`),
KEY `fk_dispveh_dealership` (`dealership`),
KEY `fk_dispveh_vehicle` (`vehicle`)
);
CREATE TABLE IF NOT EXISTS `dealership_orders` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`vehicle` varchar(100) NOT NULL,
`dealership` varchar(100) NOT NULL,
`quantity` int(11) NOT NULL DEFAULT 0,
`cost` float NOT NULL DEFAULT 0,
`delivery_time` int(11) NOT NULL,
`order_created` datetime NOT NULL DEFAULT current_timestamp(),
`fulfilled` tinyint(1) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
KEY `orders_vehicle_fk` (`vehicle`),
KEY `orders_dealership_fk` (`dealership`)
);
CREATE TABLE IF NOT EXISTS `dealership_sales` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`dealership` varchar(255) NOT NULL,
`vehicle` varchar(100) NOT NULL,
`plate` varchar(255) NOT NULL,
`player` varchar(255) NOT NULL,
`seller` varchar(255),
`purchase_type` varchar(50) NOT NULL,
`paid` float NOT NULL DEFAULT 0,
`owed` float NOT NULL DEFAULT 0,
`created_at` datetime NOT NULL DEFAULT current_timestamp(),
PRIMARY KEY (`id`),
KEY `fk_sales_vehicle` (`vehicle`),
KEY `fk_sales_dealership` (`dealership`),
KEY `fk_sales_player` (`player`),
KEY `fk_sales_plate` (`plate`)
);
CREATE TABLE IF NOT EXISTS `dealership_stock` (
`dealership` varchar(100) NOT NULL,
`vehicle` varchar(100) NOT NULL,
`stock` int(11) NOT NULL,
`price` float NOT NULL DEFAULT 0,
PRIMARY KEY (`dealership`, `vehicle`),
KEY `vehicle_fk` (`vehicle`)
);
CREATE TABLE IF NOT EXISTS `dealership_employees` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`identifier` varchar(255) NOT NULL,
`dealership` varchar(255) NOT NULL,
`role` varchar(100) NOT NULL,
`joined` datetime NOT NULL DEFAULT current_timestamp(),
PRIMARY KEY (`id`),
KEY `fk_employees_dealership` (`dealership`)
);

View file

@ -0,0 +1,85 @@
ALTER TABLE `player_vehicles` ADD COLUMN IF NOT EXISTS `financed` tinyint(1) NOT NULL DEFAULT 0;
ALTER TABLE `player_vehicles` ADD COLUMN IF NOT EXISTS `finance_data` longtext DEFAULT NULL;
CREATE TABLE IF NOT EXISTS `dealership_data` (
`name` varchar(100) NOT NULL,
`label` varchar(255) NOT NULL,
`balance` float NOT NULL DEFAULT 0,
`owner_id` varchar(255) DEFAULT NULL,
`owner_name` varchar(255) DEFAULT NULL,
`employee_commission` int(11) DEFAULT '10',
PRIMARY KEY (`name`)
);
CREATE TABLE IF NOT EXISTS `dealership_vehicles` (
`spawn_code` varchar(100) NOT NULL,
`brand` varchar(255) DEFAULT NULL,
`model` varchar(255) DEFAULT NULL,
`hashkey` varchar(100) DEFAULT NULL,
`category` varchar(100) NOT NULL,
`price` float NOT NULL,
`created_at` datetime NOT NULL DEFAULT current_timestamp(),
PRIMARY KEY (`spawn_code`)
);
CREATE TABLE IF NOT EXISTS `dealership_dispveh` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`dealership` varchar(100) NOT NULL,
`vehicle` varchar(100) NOT NULL,
`color` varchar(100) NOT NULL,
`coords` varchar(255) NOT NULL,
PRIMARY KEY (`id`),
KEY `fk_dispveh_dealership` (`dealership`),
KEY `fk_dispveh_vehicle` (`vehicle`)
);
CREATE TABLE IF NOT EXISTS `dealership_orders` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`vehicle` varchar(100) NOT NULL,
`dealership` varchar(100) NOT NULL,
`quantity` int(11) NOT NULL DEFAULT 0,
`cost` float NOT NULL DEFAULT 0,
`delivery_time` int(11) NOT NULL,
`order_created` datetime NOT NULL DEFAULT current_timestamp(),
`fulfilled` tinyint(1) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
KEY `orders_vehicle_fk` (`vehicle`),
KEY `orders_dealership_fk` (`dealership`)
);
CREATE TABLE IF NOT EXISTS `dealership_sales` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`dealership` varchar(255) NOT NULL,
`vehicle` varchar(100) NOT NULL,
`plate` varchar(255) NOT NULL,
`player` varchar(255) NOT NULL,
`seller` varchar(255),
`purchase_type` varchar(50) NOT NULL,
`paid` float NOT NULL DEFAULT 0,
`owed` float NOT NULL DEFAULT 0,
`created_at` datetime NOT NULL DEFAULT current_timestamp(),
PRIMARY KEY (`id`),
KEY `fk_sales_vehicle` (`vehicle`),
KEY `fk_sales_dealership` (`dealership`),
KEY `fk_sales_player` (`player`),
KEY `fk_sales_plate` (`plate`)
);
CREATE TABLE IF NOT EXISTS `dealership_stock` (
`dealership` varchar(100) NOT NULL,
`vehicle` varchar(100) NOT NULL,
`stock` int(11) NOT NULL,
`price` float NOT NULL DEFAULT 0,
PRIMARY KEY (`dealership`, `vehicle`),
KEY `vehicle_fk` (`vehicle`)
);
CREATE TABLE IF NOT EXISTS `dealership_employees` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`identifier` varchar(255) NOT NULL,
`dealership` varchar(255) NOT NULL,
`role` varchar(100) NOT NULL,
`joined` datetime NOT NULL DEFAULT current_timestamp(),
PRIMARY KEY (`id`),
KEY `fk_employees_dealership` (`dealership`)
);

View file

@ -0,0 +1,219 @@
Locales = Locales or {}
Locales['ar'] = {
-- UI
vehicle = "مركبة",
vehicles = "مركبات",
dealership = "وكالة",
dealerships = "وكالات",
vehiclesCount = "مركبة/مركبات",
dealersCount = "وكيل/وكلاء",
accountBalance = "رصيد الحساب",
bank = "حساب بنكي",
cash = "نقد",
amount = "المبلغ",
societyFund = "صندوق المجتمع",
paymentSource = "مصدر الدفع",
purchase = "شراء",
personalPurchase = "شراء شخصي",
societyPurchase = "شراء للمجتمع",
purchaseType = "نوع الشراء",
deposit = "إيداع",
withdraw = "سحب",
all = "الكل",
yes = "نعم",
no = "لا",
add = "إضافة",
edit = "تعديل",
id = "معرف",
created = "تم الإنشاء",
type = "النوع",
name = "الاسم",
owner = "المالك",
bankBalance = "رصيد البنك",
status = "الحالة",
back = "رجوع",
previous = "السابق",
next = "التالي",
admin = "مسؤول",
vehiclesAdmin = "إدارة المركبات",
dealershipsAdmin = "إدارة الوكالات",
search = "بحث",
noDealershipsFound = "لم يتم العثور على وكالات",
noVehicles = "لم يتم العثور على مركبات",
page = "صفحة",
of = "من",
every = "كل",
show = "عرض",
active = "نشط",
activeFinance = "تمويل نشط",
failed = "فشل الدفع",
removed = "تمت الإزالة",
setOwner = "تعيين المالك",
manage = "إدارة",
deleteData = "حذف البيانات",
deleteVehicle = "حذف المركبة",
delete = "حذف",
deleteConfirmation = "هل أنت متأكد؟",
deleteConfirmationDanger = "هل أنت متأكد؟ هذا الإجراء لا يمكن التراجع عنه.",
setDealershipOwner = "تعيين مالك الوكالة",
overwriteDealerPrices = "تجاوز أسعار الوكالة",
nearbyPlayers = "اللاعبين القريبين",
noPlayersNearby = "لا يوجد لاعبين قريبين",
selectPlayer = "اختر لاعب",
required = "مطلوب",
forExample = "على سبيل المثال",
spawnCode = "رمز الاستدعاء",
brand = "العلامة التجارية",
model = "الموديل",
category = "الفئة",
price = "السعر",
import = "استيراد",
importing = "جارٍ الاستيراد",
importBehaviour = "سلوك الاستيراد",
importVehicles = "استيراد المركبات",
importFrom = "استيراد من",
dashboard = "لوحة القيادة",
displayVehicle = "عرض المركبة",
displayVehicles = "عرض المركبات",
orders = "الطلبات",
sales = "المبيعات",
vehiclesOnDisplay = "المركبات المعروضة",
employees = "الموظفين",
settings = "الإعدادات",
switchVehicle = "تبديل المركبة",
remove = "إزالة",
noDisplayVehicles = "لا توجد مركبات معروضة",
selectVehicle = "اختر مركبة",
colour = "اللون",
placeVehicle = "وضع المركبة",
orderVehicle = "طلب مركبة",
cancelOrder = "إلغاء الطلب",
delivery = "التسليم",
delivered = "تم التسليم",
noOrders = "لم يتم العثور على طلبات",
quantity = "الكمية",
totalCost = "التكلفة الإجمالية",
totalSales = "إجمالي المبيعات",
noSales = "لم يتم العثور على مبيعات",
paid = "مدفوع",
owed = "مستحق",
dealershipName = "اسم الوكالة",
save = "حفظ التغييرات",
cancel = "إلغاء",
notEnoughMoney = "لا يوجد ما يكفي من المال",
placeOrder = "تقديم الطلب",
purchaseCost = "تكلفة الشراء",
salePrice = "سعر البيع",
inStock = "متوفر في المخزون",
outOfStock = "غير متوفر في المخزون",
placeVehiclePrompt = "اضغط %{value} لوضع المركبة. يمكنك إجراء تعديلات دقيقة بعد ذلك!",
remaining = "المتبقي",
prePurchaseRepoWarning = "إذا لم تتمكن من متابعة دفعات التمويل، سيتم استعادة مركبتك.",
repossessionWarning = "فشلت دفعتك الأخيرة - سيتم استعادة مركبتك ما لم تقم بالدفع الآن.",
recurringPayment = "دفعة متكررة",
remainingBalance = "الرصيد المتبقي",
remainingPayments = "الدفعات المتبقية",
paymentTakenEvery = "يتم أخذ الدفع كل",
hours = "ساعات",
seconds = "ثواني",
nextPayment = "الدفعة التالية",
makePayment = "قم بالدفع",
vehicleRepossessed = "سيتم استعادة المركبة",
payInFull = "الدفع بالكامل",
earlyPaymentConfirmation = "هل أنت متأكد أنك تريد الدفع المبكر بمبلغ",
financedVehicles = "المركبات الممولة",
noFinancedVehicles = "ليس لديك مركبات بتمويل نشط",
financeBreakdown = "تفاصيل التمويل",
initialPayment = "الدفعة الأولى",
payments = "الدفعات",
length = "المدة",
interest = "الفائدة",
totalPayable = "الإجمالي المستحق",
leaveShowroom = "مغادرة صالة العرض",
handling = "المناولة",
topSpeed = "السرعة القصوى",
power = "القوة",
torque = "العزم",
brake = "الفرامل",
financing = "التمويل",
financingAvailable = "التمويل متاح",
paymentsOf = "دفعات من",
clear = "مسح",
testDrive = "تجربة قيادة",
allCategories = "جميع الفئات",
sortByName = "ترتيب حسب: الاسم",
sortByAvailability = "ترتيب حسب: التوفر",
sortByCheapest = "ترتيب حسب: الأرخص",
sortByMostExpensive = "ترتيب حسب: الأغلى",
sortByNewest = "ترتيب حسب: الأحدث",
purchaseVehicle = "شراء مركبة",
purchaseFor = "شراء لـ",
selectSociety = "اختر مجتمع",
financeOverPayments = "تمويل على %{value} دفعات",
payToday = "ادفع اليوم",
financeThen = "ثم",
seeFullBreakdown = "عرض التفاصيل الكاملة",
testDriveExit = "يمكنك الخروج من مركبتك في أي وقت لإنهاء تجربة القيادة.",
-- NOTIFICATIONS
purchaseSuccess = "تهانينا على الشراء!",
depositSuccess = "تم الإيداع بنجاح",
withdrawSuccess = "تم السحب بنجاح",
errorNotEnoughMoney = "لا يوجد لديك ما يكفي من المال",
errorVehicleOutOfStock = "هذه المركبة غير متوفرة في المخزون",
errorCannotAffordVehicle = "لا يمكنك تحمل تكلفة هذه المركبة",
vehicleFinancePaymentMade = "تم دفع دفعة التمويل لمركبتك %{value}",
vehicleFinancePaidOff = "تهانينا، لقد دفعت بالكامل وتملك الآن مركبتك %{value}",
vehicleFinancePaymentFailed = "فشلت دفعة التمويل لمركبتك %{value}",
vehicleFinanceRepossessedSoon = "تحتاج إلى دفع لمركبتك %{value} أو سيتم استعادة مركبتك قريبًا",
vehicleFinanceRepossessed = "بسبب الفشل في الدفع، تم استعادة مركبتك برقم اللوحة %{value}",
dealershipNotEnoughFunds = "الوكالة لا تملك ما يكفي من الأموال",
dealershipVehiclesOrdered = "تم طلب المركبات بنجاح",
dealershipOrderCancelled = "تم إلغاء الطلب بنجاح",
errorVehicleWithSpawnCodeExists = "مركبة بهذا الرمز موجودة بالفعل",
errorExitVehicle = "تحتاج إلى الخروج من مركبتك أولاً",
-- NEW v1.1
purchaseRequest = "طلب شراء",
sendRequest = "إرسال الطلب",
dealer = "وكيل",
financed = "ممول",
signHere = "وقع هنا",
signFirstError = "يرجى التوقيع أولاً",
denyRequest = "رفض الطلب",
playerTooManyFinancedVehicles = "اللاعب لديه الكثير من المركبات الممولة",
employeePermissionsError = "ليس لديك الصلاحيات اللازمة للموظف",
managerRole = "مدير",
supervisorRole = "مشرف",
salesRole = "مبيعات",
ownerRole = "مالك",
employmentRequest = "طلب توظيف",
accept = "قبول",
jobOfferDescription = "تم عرض وظيفة لك في وكالة \"%{value}\". هل ترغب في القبول؟",
pending = "قيد الانتظار",
employeeHiredMsg = "تم قبول طلب التوظيف في الوكالة!",
employeeRejectedMsg = "تم رفض طلب التوظيف في الوكالة",
sellVehicle = "بيع مركبة",
vehicleTerms = "شروط المركبة",
financePayments = "دفعات التمويل",
commission = "العمولة",
role = "الدور",
firedNotification = "تم فصلك من وكالة \"%{value}\"",
dealershipTooFarAway = "أنت لست بالقرب من أي وكالات",
restoreDisplayVehicles = "استعادة صالة العرض",
customer = "عميل",
lessThanAMin = "أقل من دقيقة",
mins = "دقيقة/دقائق",
notInVehicle = "أنت لست جالسًا في مركبة",
notYourVehicleError = "هذه المركبة لا تخصك",
vehicleFinancedError = "لا يمكنك بيع هذه المركبة لأنها تحتوي على دفعات تمويل متبقية",
dealershipDoesntSellVehicle = "هذه الوكالة لا تستطيع شراء هذه المركبة",
dealershipWantsYourVehicle = "تهانينا! ترغب هذه الوكالة في شراء مركبتك.",
purchasePrice = "السعر المعروض: ",
spawnCodeInvalid = "رمز الاستدعاء غير صالح",
salesRep = "ممثل مبيعات",
directSaleAccepted = "تم قبول طلب البيع المباشر! تم دفع عمولتك.",
directSaleRejected = "تم رفض طلب البيع المباشر"
}

View file

@ -0,0 +1,220 @@
Locales = Locales or {}
Locales['cn'] = {
-- 界面
vehicle = "车辆",
vehicles = "车辆",
dealership = "汽车销售商",
dealerships = "汽车销售商",
vehiclesCount = "辆车",
dealersCount = "个销售商",
accountBalance = "账户余额",
bank = "银行账户",
cash = "现金",
amount = "金额",
societyFund = "社团资金",
paymentSource = "支付来源",
purchase = "购买",
personalPurchase = "个人购买",
societyPurchase = "社团购买",
purchaseType = "购买类型",
deposit = "存款",
withdraw = "取款",
all = "全部",
yes = "",
no = "",
add = "添加",
edit = "编辑",
id = "ID",
created = "创建时间",
type = "类型",
name = "名称",
owner = "拥有者",
bankBalance = "银行余额",
status = "状态",
back = "返回",
previous = "上一步",
next = "下一步",
admin = "管理员",
vehiclesAdmin = "车辆管理员",
dealershipsAdmin = "销售商管理员",
search = "搜索",
noDealershipsFound = "未找到销售商",
noVehicles = "未找到车辆",
page = "",
of = "",
every = "",
show = "显示",
active = "启用",
activeFinance = "启用融资",
failed = "支付失败",
removed = "已移除",
setOwner = "设置拥有者",
manage = "管理",
deleteData = "删除数据",
deleteVehicle = "删除车辆",
delete = "删除",
deleteConfirmation = "确定删除?",
deleteConfirmationDanger = "确定删除?此操作不可逆。",
setDealershipOwner = "设置销售商拥有者",
overwriteDealerPrices = "覆盖销售商价格",
nearbyPlayers = "附近玩家",
noPlayersNearby = "附近没有玩家",
selectPlayer = "选择玩家",
required = "必填",
forExample = "例如",
spawnCode = "生成代码",
brand = "品牌",
model = "型号",
category = "类别",
price = "价格",
import = "导入",
importing = "正在导入",
importBehaviour = "导入行为",
importVehicles = "导入车辆",
importFrom = "从...导入",
dashboard = "仪表盘",
displayVehicle = "展示车辆",
displayVehicles = "展示车辆",
orders = "订单",
sales = "销售",
vehiclesOnDisplay = "展厅展示车辆",
employees = "员工",
settings = "设置",
switchVehicle = "切换车辆",
remove = "移除",
noDisplayVehicles = "没有展示车辆",
selectVehicle = "选择车辆",
colour = "颜色",
placeVehicle = "放置车辆",
orderVehicle = "订购车辆",
cancelOrder = "取消订单",
delivery = "交付",
delivered = "已交付",
noOrders = "没有找到订单",
quantity = "数量",
totalCost = "总成本",
totalSales = "总销售额",
noSales = "没有找到销售记录",
paid = "已支付",
owed = "欠款",
dealershipName = "销售商名称",
save = "保存更改",
cancel = "取消",
notEnoughMoney = "余额不足",
placeOrder = "下订单",
purchaseCost = "购买成本",
salePrice = "销售价格",
inStock = "库存",
outOfStock = "售罄",
placeVehiclePrompt = "按 %{value} 放置车辆。您可以之后做更细致的调整!",
remaining = "剩余",
prePurchaseRepoWarning = "如果您未能按时付款,您的车辆将被回收。",
repossessionWarning = "您的最后一次付款失败——如果不立即付款,您的车辆将被回收。",
recurringPayment = "定期付款",
remainingBalance = "剩余余额",
remainingPayments = "剩余付款次数",
paymentTakenEvery = "",
hours = "小时",
seconds = "",
nextPayment = "下一次付款",
makePayment = "付款",
vehicleRepossessed = "车辆将被回收",
payInFull = "一次性付款",
earlyPaymentConfirmation = "确定要提前支付",
financedVehicles = "融资车辆",
noFinancedVehicles = "您没有融资车辆",
financeBreakdown = "融资明细",
initialPayment = "首付",
payments = "付款次数",
length = "期限",
interest = "利率",
totalPayable = "总需支付",
leaveShowroom = "离开展厅",
handling = "操控",
topSpeed = "最高速度",
power = "功率",
torque = "扭矩",
brake = "刹车",
financing = "融资",
financingAvailable = "提供融资",
paymentsOf = "每期付款",
clear = "清除",
testDrive = "试驾",
allCategories = "所有类别",
sortByName = "按名称排序",
sortByAvailability = "按可用性排序",
sortByCheapest = "按最便宜排序",
sortByMostExpensive = "按最贵排序",
sortByNewest = "按最新排序",
purchaseVehicle = "购买车辆",
purchaseFor = "为...购买",
selectSociety = "选择社团",
financeOverPayments = "分期付款 %{value} 次",
payToday = "今天付款",
financeThen = "然后",
seeFullBreakdown = "查看完整明细",
testDriveExit = "您可以随时离开车辆以结束试驾。",
-- 通知
purchaseSuccess = "恭喜您购买成功!",
depositSuccess = "存款成功",
withdrawSuccess = "取款成功",
errorNotEnoughMoney = "余额不足",
errorVehicleOutOfStock = "该车辆已售罄",
errorCannotAffordVehicle = "您无法购买此车辆",
vehicleFinancePaymentMade = "您的车辆 %{value} 已成功付款",
vehicleFinancePaidOff = "恭喜您已付清并拥有车辆 %{value}",
vehicleFinancePaymentFailed = "您的车辆 %{value} 付款失败",
vehicleFinanceRepossessedSoon = "您需要支付车辆 %{value} 欠款,否则将被回收",
vehicleFinanceRepossessed = "由于未支付款项,您的车辆(车牌 %{value})已被回收",
dealershipNotEnoughFunds = "销售商资金不足",
dealershipVehiclesOrdered = "车辆已成功订购",
dealershipOrderCancelled = "订单已成功取消",
errorVehicleWithSpawnCodeExists = "该生成代码对应的车辆已存在",
errorExitVehicle = "您需要先下车",
errorPlacementCollision = "您不能在这里放置车辆",
-- 新增 v1.1
purchaseRequest = "购买请求",
sendRequest = "发送请求",
dealer = "销售商",
financed = "已融资",
signHere = "请在此签名",
signFirstError = "请先签名",
denyRequest = "拒绝请求",
playerTooManyFinancedVehicles = "玩家拥有的融资车辆过多",
employeePermissionsError = "您没有足够的员工权限",
managerRole = "经理",
supervisorRole = "主管",
salesRole = "销售",
ownerRole = "拥有者",
employmentRequest = "招聘申请",
accept = "接受",
jobOfferDescription = "您已获得来自 \"%{value}\" 销售商的工作邀请。您愿意接受吗?",
pending = "待定",
employeeHiredMsg = "销售商已接受您的聘用请求!",
employeeRejectedMsg = "销售商已拒绝您的聘用请求",
sellVehicle = "出售车辆",
vehicleTerms = "车辆条款",
financePayments = "融资付款",
commission = "佣金",
role = "角色",
firedNotification = "您已被 \"%{value}\" 销售商解雇",
dealershipTooFarAway = "您距离任何销售商太远",
restoreDisplayVehicles = "恢复展厅",
customer = "客户",
lessThanAMin = "少于一分钟",
mins = "分钟",
notInVehicle = "您没有坐在车辆中",
notYourVehicleError = "这不是您的车辆",
vehicleFinancedError = "此车辆有未付清的融资款项,不能出售",
dealershipDoesntSellVehicle = "此销售商不出售该车辆",
dealershipWantsYourVehicle = "恭喜!此销售商愿意购买您的车辆。",
purchasePrice = "报价:",
spawnCodeInvalid = "生成代码无效",
salesRep = "销售代表",
directSaleAccepted = "直接销售请求已接受!您的佣金已支付。",
directSaleRejected = "直接销售请求已拒绝"
}

View file

@ -0,0 +1,219 @@
Locales = Locales or {}
Locales['cs'] = {
-- UI
vehicle = "Vozidlo",
vehicles = "Vozidla",
dealership = "Prodejna vozidel",
dealerships = "Prodejny vozidel",
vehiclesCount = "vozidlo(a)",
dealersCount = "Obchodníci",
accountBalance = "Zůstatek na účtu",
bank = "Bankovní účet",
cash = "Hotovost",
amount = "Množství",
societyFund = "Společenský fond",
paymentSource = "Způsob platby",
purchase = "Nákup",
personalPurchase = "Osobní nákup",
societyPurchase = "Nákup společnosti",
purchaseType = "Typ nákupu",
deposit = "Vklad",
withdraw = "Vybrat",
all = "Vše",
yes = "Ano",
no = "Ne",
add = "Přidat",
edit = "Upravit",
id = "ID",
created = "Vytvořil",
type = "Typ",
name = "Jméno",
owner = "Vlastník",
bankBalance = "Bankovní zůstatek",
status = "Stav",
back = "Zpět",
previous = "Předchozí",
next = "Další",
admin = "Admin",
vehiclesAdmin = "Správce vozidel",
dealershipsAdmin = "Správce prodejen",
search = "Hledání",
noDealershipsFound = "Nebyli nalezeni žádní prodejci",
noVehicles = "Nebyla nalezena žádná vozidla",
page = "Stránka",
of = "z",
every = "každý",
show = "Ukázat",
active = "Aktivní",
activeFinance = "Aktivní finance",
failed = "Platba se nezdařila",
removed = "Odstraněný",
setOwner = "Nastavit vlastníka",
manage = "Spravovat",
deleteData = "Smazání dat",
deleteVehicle = "Smazat vozidlo",
delete = "Vymazat",
deleteConfirmation = "Opravdu?",
deleteConfirmationDanger = "Opravdu? Tato akce je nevratná.",
setDealershipOwner = "Nastavit majitele prodejny",
overwriteDealerPrices = "Přepsání prodejních cen",
nearbyPlayers = "Hráči v okolí",
noPlayersNearby = "V okolí nejsou žádní hráči",
selectPlayer = "Vyberte hráče",
required = "Požadovaný",
forExample = "Například",
spawnCode = "Kód pro spawn",
brand = "Značka",
model = "Model",
category = "Kategorie",
price = "Cena",
import = "Dovoz",
importing = "Importování",
importBehaviour = "Chování při importu",
importVehicles = "Importovaná vozidla",
importFrom = "Dovoz z",
dashboard = "Hlavní",
displayVehicle = "Zobrazit vozidlo",
displayVehicles = "Zobrazit vozidla",
orders = "Objednávky",
sales = "Prodej",
vehiclesOnDisplay = "Vystavená vozidla",
employees = "Zaměstnanci",
settings = "Nastavení",
switchVehicle = "Přepnout vozidlo",
remove = "Odstranit",
noDisplayVehicles = "Žádná vystavená vozidla",
selectVehicle = "Vybrat vozidlo",
colour = "Barva",
placeVehicle = "Místo vozidla",
orderVehicle = "Objednat vozidlo",
cancelOrder = "Zrušit objednávku",
delivery = "Doručení",
delivered = "Doručil",
noOrders = "Nebyly nalezeny žádné objednávky",
quantity = "Množství",
totalCost = "Celkové náklady",
totalSales = "Celkové tržby",
noSales = "Nebyl nalezen žádný prodej",
paid = "Zaplaceno",
owed = "Dlužil",
dealershipName = "Název prodejny",
save = "Uložit změny",
cancel = "Zrušit",
notEnoughMoney = "Nedostatek peněz",
placeOrder = "Zadat objednávku",
purchaseCost = "Nákupní náklady",
salePrice = "Prodejní cena",
inStock = "Na skladě",
outOfStock = "Není skladem",
placeVehiclePrompt = "Stiskněte %{value} umístit vozidlo. Poté můžete provést menší úpravy!",
remaining = "Zbývající",
prePurchaseRepoWarning = "Pokud nebudete schopni splácet své finanční závazky, bude vám vozidlo zabaveno.",
repossessionWarning = "Vaše poslední platba se nezdařila - vaše vozidlo bude zabaveno, pokud nyní neprovedete platbu.",
recurringPayment = "Opakovaná platba",
remainingBalance = "Zbývající zůstatek",
remainingPayments = "Zbývající platby",
paymentTakenEvery = "Platba se provádí každé",
hours = "hodiny",
seconds = "sekundy",
nextPayment = "Příští platba",
makePayment = "Proveďte platbu",
vehicleRepossessed = "Vozidlo bude zabaveno",
payInFull = "Zaplaťte v plné výši",
earlyPaymentConfirmation = "Opravdu chcete provést předčasnou platbu",
financedVehicles = "Financovaná vozidla",
noFinancedVehicles = "Nemáte žádná vozidla s aktivním financováním",
financeBreakdown = "Finanční členění",
initialPayment = "Počáteční platba",
payments = "Platby",
length = "Délka",
interest = "Úrok",
totalPayable = "Celkem splatné",
leaveShowroom = "Opustit showroom",
handling = "Handling",
topSpeed = "Maximální rychlost",
power = "Síla",
torque = "Točivý moment",
brake = "Brzda",
financing = "Financování",
financingAvailable = "Dostupné financování",
paymentsOf = "platby",
clear = "Vymazat",
testDrive = "Testovací jízda",
allCategories = "Všechny kategorie",
sortByName = "Seřadit podle: Název",
sortByAvailability = "Seřadit podle: Dostupnost",
sortByCheapest = "Seřadit podle: Nejlevnější",
sortByMostExpensive = "Seřadit podle: Nejdražší",
sortByNewest = "Seřadit podle: Nejnovější",
purchaseVehicle = "Koupit vozidlo",
purchaseFor = "Nákup za",
selectSociety = "Vyberte společnost",
financeOverPayments = "Zbývající částka k zaplacení je %{value}",
payToday = "Zaplaťte ještě dnes",
financeThen = "Potom",
seeFullBreakdown = "Zobrazit úplný rozpis",
testDriveExit = "Zkušební jízdu můžete kdykoli opustit a zkušební jízdu ukončit.",
-- NOTIFICATIONS
purchaseSuccess = "Gratulujeme k nákupu!",
depositSuccess = "Vklad byl úspěšný",
withdrawSuccess = "Úspěšný výběr",
errorNotEnoughMoney = "Nemáte dost peněz",
errorVehicleOutOfStock = "Toto vozidlo není skladem",
errorCannotAffordVehicle = "Toto vozidlo si nemůžete dovolit",
vehicleFinancePaymentMade = "Finanční platba za vaše vozidlo %{value}",
vehicleFinancePaidOff = "Gratulujeme, vyplatili jste se a nyní vlastníte své vozidlo %{value}",
vehicleFinancePaymentFailed = "Finanční platba za vaše vozidlo se nezdařila %{value}",
vehicleFinanceRepossessedSoon = "Musíte provést platbu za své vozidlo %{value} nebo bude vaše vozidlo brzy zabaveno",
vehicleFinanceRepossessed = "Z důvodu nezaplacení bylo vaše vozidlo zabaveno i s poznávací značkou %{value}",
dealershipNotEnoughFunds = "Prodejce nemá dostatek finančních prostředků",
dealershipVehiclesOrdered = "Vozidlo (vozidla) bylo úspěšně objednáno",
dealershipOrderCancelled = "Objednávka byla úspěšně zrušena",
errorVehicleWithSpawnCodeExists = "Vozidlo s tímto spawn kódem již existuje",
errorExitVehicle = "Nejprve musíte opustit své vozidlo",
-- NEW v1.1
purchaseRequest = "Žádost o nákup",
sendRequest = "Odeslat žádost",
dealer = "Prodejce",
financed = "Financováno",
signHere = "Podepište se zde",
signFirstError = "Nejprve se podepište",
denyRequest = "Odmítnutí žádosti",
playerTooManyFinancedVehicles = "Hráč má příliš mnoho financovaných vozidel",
employeePermissionsError = "Nemáte potřebná oprávnění zaměstnance",
managerRole = "Manažer",
supervisorRole = "Supervizor",
salesRole = "Prodej",
ownerRole = "Majitel",
employmentRequest = "Žádost o zaměstnání",
accept = "Přijmout",
jobOfferDescription = "Byla vám nabídnuta práce u prodejce \"%{value}\". Chtěli byste ji přijmout?",
pending = "Čeká se na",
employeeHiredMsg = "Žádost o pronájem dealerství byla přijata!",
employeeRejectedMsg = "Žádost o pronájem dealerství byla zamítnuta",
sellVehicle = "Prodej vozidla",
vehicleTerms = "Podmínky pro vozidla",
financePayments = "Finanční platby",
commission = "Komise",
role = "Úloha",
firedNotification = "Byl jste propuštěn z \"%{value}\" dealerství",
dealershipTooFarAway = "Nejste v blízkosti žádného prodejce",
restoreDisplayVehicles = "Předváděcí místnost Restore",
customer = "Zákazník",
lessThanAMin = "Méně než minuta",
mins = "minuty",
notInVehicle = "Nesedíte ve vozidle",
notYourVehicleError = "Toto vozidlo vám nepatří",
vehicleFinancedError = "Toto vozidlo nemůžete prodat, protože na něm zůstávají finanční splátky",
dealershipDoesntSellVehicle = "Tento prodejce nemůže koupit toto vozidlo",
dealershipWantsYourVehicle = "Gratulujeme! Tento prodejce by rád zakoupil vaše vozidlo.",
purchasePrice = "Nabízená cena: ",
spawnCodeInvalid = "Spawn code invalid",
salesRep = "Sales Rep",
directSaleAccepted = "Direct sale request accepted! Your commission has been paid.",
directSaleRejected = "Direct sale request rejected"
}

View file

@ -0,0 +1,219 @@
Locales = Locales or {}
Locales['de'] = {
-- UI
vehicle = "Fahrzeug",
vehicles = "Fahrzeuge",
dealership = "Autohaus",
dealerships = "Autohäuser",
vehiclesCount = "Fahrzeuge Anzahl",
dealersCount = "Händler",
accountBalance = "Kontostand",
bank = "Bankkonto",
cash = "Bargeld",
amount = "Betrag",
societyFund = "Gewerbegeld",
paymentSource = "Zahlungsquelle",
purchase = "Kaufen",
personalPurchase = "Privater Kauf",
societyPurchase = "Gewerblicher Kauf",
purchaseType = "Kaufart",
deposit = "Einzahlen",
withdraw = "Auszahlen",
all = "Alle",
yes = "Ja",
no = "Nein",
add = "Hinzufügen",
edit = "Bearbeiten",
id = "ID",
created = "Erstellt",
type = "Typ",
name = "Name",
owner = "Besitzer",
bankBalance = "Kontostand",
status = "Status",
back = "Zurück",
previous = "Vorherige",
next = "Nächste",
admin = "Verwaltung",
vehiclesAdmin = "Fahrzeug Verwaltung",
dealershipsAdmin = "Autohaus Verwaltung",
search = "Suchen",
noDealershipsFound = "Keine Autohäuser gefunden",
noVehicles = "Keine Fahrzeuge",
page = "Seite",
of = "von",
every = "alle",
show = "Anzeigen",
active = "Aktiv",
activeFinance = "Aktive Finanzierung",
failed = "Fehlgeschlagen",
removed = "Entfernt",
setOwner = "Besitzer festlegen",
manage = "Verwalten",
deleteData = "Daten löschen",
deleteVehicle = "Fahrzeug entfernen",
delete = "Entfernen",
deleteConfirmation = "Sind Sie sich wirklich sicher?",
deleteConfirmationDanger = "Bestätigen, dies kann nicht rückgängig gemacht werden.",
setDealershipOwner = "Besitzer festlegen",
overwriteDealerPrices = "Händlerpreise Überschreiben",
nearbyPlayers = "Spieler in der Nähe",
noPlayersNearby = "Kein Spieler in der Nähe",
selectPlayer = "Einen Spieler auswählen",
required = "Erforderlich",
forExample = "Zum Beispiel",
spawnCode = "Spawnname",
brand = "Marke",
model = "Model",
category = "Kategorie",
price = "Preis",
import = "Importieren",
importing = "Importiere...",
importBehaviour = "Fahrzeug Daten",
importVehicles = "Fahrzeuge importieren",
importFrom = "Importieren von",
dashboard = "Dashboard",
displayVehicle = "Fahrzeug anzeigen",
displayVehicles = "Ausstellung",
orders = "Bestellungen",
sales = "Verkäufe",
vehiclesOnDisplay = "Fahrzeuge in der Ausstellung",
employees = "Mitarbeiter",
settings = "Einstellungen",
switchVehicle = "Fahrzeug wechseln",
remove = "Entfernen",
noDisplayVehicles = "Keine Ausstellungsfahrzeuge",
selectVehicle = "Fahrzeug auswählen",
colour = "Farbe",
placeVehicle = "Fahrzeug platzieren",
orderVehicle = "Fahrzeug/e bestellen",
cancelOrder = "Bestellung stornieren",
delivery = "Lieferung",
delivered = "Ausgeliefert",
noOrders = "keine Bestellungen",
quantity = "Menge",
totalCost = "Gesamtkosten",
totalSales = "Verkäufe",
noSales = "Keine Verkäufe",
paid = "Bezahlt",
owed = "Schulden",
dealershipName = "Händler Name",
save = "Speichern",
cancel = "Abbrechen",
notEnoughMoney = "Nicht genügend Geld",
placeOrder = "Bestellen",
purchaseCost = "Einkaufspreis",
salePrice = "Verkaufspreis",
inStock = "auf Lager",
outOfStock = "Ausverkauft",
placeVehiclePrompt = "Drücke %{value}, um das Fahrzeug zu platzieren. Du kannst später noch feinere Einstellungen vornehmen!",
remaining = "Verbleibend",
prePurchaseRepoWarning = "Wenn du deinen Zahlungen nicht nachkommst, wird dein Fahrzeug wieder entzogen.",
repossessionWarning = "Deine letzte Zahlung ist fehlgeschlagen: Wenn du nicht sofort eine Zahlung leistest, wird dein Fahrzeug beschlagnahmt.",
recurringPayment = "Wiederkehrende Zahlungen",
remainingBalance = "Verbleibender Betrag",
remainingPayments = "Erledigte Zahlungen",
paymentTakenEvery = "Die Zahlung wird fällig alle",
hours = "Stunden",
seconds = "Sekunden",
nextPayment = "Nächste Zahlung",
makePayment = "Vorrauszahlung leisten",
vehicleRepossessed = "Fahrzeug beschlagnahmt",
payInFull = "Vollständig bezahlen",
earlyPaymentConfirmation = "Möchtest du wirklich eine Vorrauszahlung in folgender Höhe tätigen",
financedVehicles = "Finanzierte Fahrzeuge",
noFinancedVehicles = "Du hast keine Fahrzeuge mit aktiver Finanzierung",
financeBreakdown = "Einzelheiten zur Finanzierung",
initialPayment = "Anzahlung",
payments = "Raten",
length = "Dauer",
interest = "Zinsen",
totalPayable = "Zu zahlende Summe",
leaveShowroom = "Verlassen",
handling = "Handling",
topSpeed = "vMax",
power = "Leistung",
torque = "Drehmoment",
brake = "Bremsen",
financing = "Finanzierung",
financingAvailable = "Finanzierung verfügbar",
paymentsOf = "Raten a",
clear = "Löschen",
testDrive = "Probefahrt",
allCategories = "Alle Kategorien",
sortByName = "Nach Namen sortieren",
sortByAvailability = "Nach Verfügbarkeit sortieren",
sortByCheapest = "Günstigste zuerst",
sortByMostExpensive = "Teuerste zuerst",
sortByNewest = "Neueste zuerst",
purchaseVehicle = "Fahrzeug kaufen",
purchaseFor = "Kauf durch",
selectSociety = "Wähle ein Unternehmen aus",
financeOverPayments = "Finanzierung durch %{value} Raten",
payToday = "Heute fälliger Betrag",
financeThen = "Danach",
seeFullBreakdown = "Einzelheiten zur Finanzierung",
testDriveExit = "Du kannst dein Fahrzeug jederzeit verlassen, um die Probefahrt zu beenden...",
-- NOTIFICATIONS
purchaseSuccess = "Herzlichen Glückwunsch zu deinem Kauf!",
depositSuccess = "Der Betrag wurde erfolgreich einbezahlt!",
withdrawSuccess = "Der Betrag wurde erfolgreich ausbezahlt!",
errorNotEnoughMoney = "Du hast nicht genügend Geld!",
errorVehicleOutOfStock = "Dieses Fahrzeug ist leider nicht auf Lager!",
errorCannotAffordVehicle = "Du kannst dir dieses Fahrzeug nicht leisten!",
vehicleFinancePaymentMade = "Vorrauszahlung geleistet für das Fahrzeug mit folgendem Kennzeichen: %{value}",
vehicleFinancePaidOff = "Herzlichen Glückwunsch, Du hast vollständig bezahlt und besitzen nun das Fahrzeug mit dem Kennzeichen: %{value}",
vehicleFinancePaymentFailed = "Fehlgeschlagene Finanzierungszahlung für dein Fahrzeug mit dem Kennzeichen: %{value}",
vehicleFinanceRepossessedSoon = "Du musst eine Zahlung für dein Fahrzeug %{value} leisten oder dein Fahrzeug wird bald wieder eingezogen.",
vehicleFinanceRepossessed = "Wegen Nichtzahlung wurde dein Fahrzeug mit dem Kennzeichen %{value} wieder eingezogen.",
dealershipNotEnoughFunds = "Der Händler hat nicht genug Geld.",
dealershipVehiclesOrdered = "Die Fahrzeuge wurden erfolgreich bestellt!",
dealershipOrderCancelled = "Auftrag erfolgreich storniert",
errorVehicleWithSpawnCodeExists = "Ein Fahrzeug mit diesem Nummernsch existiert bereits!",
errorExitVehicle = "Du musst zuerst aus deinem Fahrzeug aussteigen.",
-- NEW v1.1
purchaseRequest = "Anfrage zum Kauf",
sendRequest = "Anfrage senden",
dealer = "Händler",
financed = "Finanziert",
signHere = "Hier unterschreiben",
signFirstError = "Bitte erst unterschreiben",
denyRequest = "Antrag ablehnen",
playerTooManyFinancedVehicles = "Spieler hat zu viele finanzierte Fahrzeuge",
employeePermissionsError = "Sie haben nicht die erforderlichen Mitarbeiterrechte",
managerRole = "Leiter",
supervisorRole = "Datenschutzbeauftragter",
salesRole = "Vertrieb",
ownerRole = "Eigentümer",
employmentRequest = "Antrag auf Beschäftigung",
accept = "Akzeptieren",
jobOfferDescription = "Ihnen wurde eine Stelle im Autohaus \"%{value}\" angeboten. Möchten Sie annehmen?",
pending = "Anhängig",
employeeHiredMsg = "Der Einstellungsantrag des Händlers wurde angenommen!",
employeeRejectedMsg = "Antrag auf Einstellung eines Händlers wurde abgelehn",
sellVehicle = "Fahrzeug verkaufen",
vehicleTerms = "Fahrzeugbedingungen",
financePayments = "Finanzierung Zahlungen",
commission = "Kommission",
role = "Rolle",
firedNotification = "Sie wurden vom Händler \"%{value}\" entlassen",
dealershipTooFarAway = "Sie sind nicht in der Nähe eines Autohauses",
restoreDisplayVehicles = "Ausstellungsraum restaurieren",
customer = "Kunde",
lessThanAMin = "Weniger als eine Minute",
mins = "min(s)",
notInVehicle = "Sie befinden sich nicht in einem Fahrzeug",
notYourVehicleError = "Dieses Fahrzeug gehört Ihnen nicht",
vehicleFinancedError = "Sie können dieses Fahrzeug nicht verkaufen, weil es noch Finanzierungsraten hat",
dealershipDoesntSellVehicle = "Dieses Autohaus kann dieses Fahrzeug nicht kaufen",
dealershipWantsYourVehicle = "Herzlichen Glückwunsch! Dieses Autohaus möchte Ihr Fahrzeug kaufen.",
purchasePrice = "Angebotener Preis: ",
spawnCodeInvalid = "Spawn code invalid",
salesRep = "Sales Rep",
directSaleAccepted = "Direct sale request accepted! Your commission has been paid.",
directSaleRejected = "Direct sale request rejected"
}

View file

@ -0,0 +1,219 @@
Locales = Locales or {}
Locales['en'] = {
-- UI
vehicle = "Vehicle",
vehicles = "Vehicles",
dealership = "Dealership",
dealerships = "Dealerships",
vehiclesCount = "vehicle(s)",
dealersCount = "dealer(s)",
accountBalance = "Account Balance",
bank = "Bank Account",
cash = "Cash",
amount = "Amount",
societyFund = "Society Fund",
paymentSource = "Payment Source",
purchase = "Purchase",
personalPurchase = "Personal Purchase",
societyPurchase = "Society Purchase",
purchaseType = "Purchase Type",
deposit = "Deposit",
withdraw = "Withdraw",
all = "All",
yes = "Yes",
no = "No",
add = "Add",
edit = "Edit",
id = "ID",
created = "Created",
type = "Type",
name = "Name",
owner = "Owner",
bankBalance = "Bank Balance",
status = "Status",
back = "Back",
previous = "Previous",
next = "Next",
admin = "Admin",
vehiclesAdmin = "Vehicles Admin",
dealershipsAdmin = "Dealerships Admin",
search = "Search",
noDealershipsFound = "No dealerships found",
noVehicles = "No vehicles found",
page = "Page",
of = "of",
every = "every",
show = "Show",
active = "Active",
activeFinance = "Active Finance",
failed = "Payment Failed",
removed = "Removed",
setOwner = "Set Owner",
manage = "Manage",
deleteData = "Delete Data",
deleteVehicle = "Delete Vehicle",
delete = "Delete",
deleteConfirmation = "Are you sure?",
deleteConfirmationDanger = "Are you sure? This action is irreversable.",
setDealershipOwner = "Set Dealership Owner",
overwriteDealerPrices = "Overwrite dealership prices",
nearbyPlayers = "Nearby players",
noPlayersNearby = "No players nearby",
selectPlayer = "Select player",
required = "Required",
forExample = "For example",
spawnCode = "Spawn Code",
brand = "Brand",
model = "Model",
category = "Category",
price = "Price",
import = "Import",
importing = "Importing",
importBehaviour = "Import Behaviour",
importVehicles = "Import vehicles",
importFrom = "Import from",
dashboard = "Dashboard",
displayVehicle = "Display Vehicle",
displayVehicles = "Display Vehicles",
orders = "Orders",
sales = "Sales",
vehiclesOnDisplay = "Vehicles on display",
employees = "Employees",
settings = "Settings",
switchVehicle = "Switch Vehicle",
remove = "Remove",
noDisplayVehicles = "No display vehicles",
selectVehicle = "Select vehicle",
colour = "Colour",
placeVehicle = "Place Vehicle",
orderVehicle = "Order vehicle",
cancelOrder = "Cancel Order",
delivery = "Delivery",
delivered = "Delivered",
noOrders = "No orders found",
quantity = "Quantity",
totalCost = "Total cost",
totalSales = "Total sales",
noSales = "No sales found",
paid = "Paid",
owed = "Owed",
dealershipName = "Dealership Name",
save = "Save Changes",
cancel = "Cancel",
notEnoughMoney = "Not enough money",
placeOrder = "Place Order",
purchaseCost = "Purchase Cost",
salePrice = "Sale Price",
inStock = "In stock",
outOfStock = "Out of stock",
placeVehiclePrompt = "Press %{value} to place vehicle. You can make finer adjustments afterwards!",
remaining = "Remaining",
prePurchaseRepoWarning = "If you can't keep up with your finance payments, your vehicle will be repossessed.",
repossessionWarning = "Your last payment failed - your vehicle will be repossessed unless you make a payment now.",
recurringPayment = "Recurring payment",
remainingBalance = "Remaining balance",
remainingPayments = "Remaining payments",
paymentTakenEvery = "Payment taken every",
hours = "hours",
seconds = "seconds",
nextPayment = "Next payment",
makePayment = "Make payment",
vehicleRepossessed = "Vehicle will be repossessed",
payInFull = "Pay in full",
earlyPaymentConfirmation = "Are you sure you want to make an early payment of",
financedVehicles = "Financed Vehicles",
noFinancedVehicles = "You have no vehicles with active finance",
financeBreakdown = "Finance Breakdown",
initialPayment = "Initial payment",
payments = "Payments",
length = "Length",
interest = "Interest",
totalPayable = "Total payable",
leaveShowroom = "Leave Showroom",
handling = "Handling",
topSpeed = "Top Speed",
power = "Power",
torque = "Torque",
brake = "Brake",
financing = "Financing",
financingAvailable = "Financing available",
paymentsOf = "payments of",
clear = "Clear",
testDrive = "Test Drive",
allCategories = "All Categories",
sortByName = "Sort by: Name",
sortByAvailability = "Sort by: Availability",
sortByCheapest = "Sort by: Cheapest",
sortByMostExpensive = "Sort by: Most Expensive",
sortByNewest = "Sort by: Newest",
purchaseVehicle = "Purchase Vehicle",
purchaseFor = "Purchase for",
selectSociety = "Select a society",
financeOverPayments = "Finance over %{value} payments",
payToday = "Pay today",
financeThen = "Then",
seeFullBreakdown = "See full breakdown",
testDriveExit = "You can exit your vehicle at any point to end the test drive.",
-- NOTIFICATIONS
purchaseSuccess = "Congratulations on your purchase!",
depositSuccess = "Deposit successful",
withdrawSuccess = "Withdrawl successful",
errorNotEnoughMoney = "You don't have enough money",
errorVehicleOutOfStock = "This vehicle is out of stock",
errorCannotAffordVehicle = "You cannot afford this vehicle",
vehicleFinancePaymentMade = "Finance payment made for your vehicle %{value}",
vehicleFinancePaidOff = "Congratulations, you've paid off and now own your vehicle %{value}",
vehicleFinancePaymentFailed = "Finance payment failed for your vehicle %{value}",
vehicleFinanceRepossessedSoon = "You need to make a payment for your vehicle %{value} or your vehicle will be repossessed soon",
vehicleFinanceRepossessed = "Due to a failure to pay, your vehicle has been repossessed with the plate %{value}",
dealershipNotEnoughFunds = "Dealership doesn't have enough funds",
dealershipVehiclesOrdered = "Vehicle(s) have been successfully ordered",
dealershipOrderCancelled = "Order successfully cancelled",
errorVehicleWithSpawnCodeExists = "A vehicle with this spawn code already exists",
errorExitVehicle = "You need to exit your vehicle first",
-- NEW v1.1
purchaseRequest = "Purchase Request",
sendRequest = "Send Request",
dealer = "Dealer",
financed = "Financed",
signHere = "Sign here",
signFirstError = "Please sign first",
denyRequest = "Deny Request",
playerTooManyFinancedVehicles = "Player has too many financed vehicles",
employeePermissionsError = "You don't have the necessary employee permissions",
managerRole = "Manager",
supervisorRole = "Supervisor",
salesRole = "Sales",
ownerRole = "Owner",
employmentRequest = "Employment Request",
accept = "Accept",
jobOfferDescription = "You have been offered a job at the \"%{value}\" dealership. Would you like to accept?",
pending = "Pending",
employeeHiredMsg = "Dealership hire request was accepted!",
employeeRejectedMsg = "Dealership hire request was rejected",
sellVehicle = "Sell Vehicle",
vehicleTerms = "Vehicle terms",
financePayments = "Finance Payments",
commission = "Commission",
role = "Role",
firedNotification = "You have been fired from the \"%{value}\" dealership",
dealershipTooFarAway = "You aren't near any dealerships",
restoreDisplayVehicles = "Restore Showroom",
customer = "Customer",
lessThanAMin = "Less than a minute",
mins = "min(s)",
notInVehicle = "You are not sat in a vehicle",
notYourVehicleError = "This vehicle does not belong to you",
vehicleFinancedError = "You cannot sell this vehicle because it has finance payments remaining",
dealershipDoesntSellVehicle = "This dealership can't purchase this vehicle",
dealershipWantsYourVehicle = "Congratulations! This dealership would like to purchase your vehicle.",
purchasePrice = "Offered price: ",
spawnCodeInvalid = "Spawn code invalid",
salesRep = "Sales Rep",
directSaleAccepted = "Direct sale request accepted! Your commission has been paid.",
directSaleRejected = "Direct sale request rejected"
}

View file

@ -0,0 +1,219 @@
Locales = Locales or {}
Locales['es'] = {
-- UI
vehicle = "Vehículo",
vehicles = "Vehículos",
dealership = "Concesionario",
dealerships = "Concesionarios",
vehiclesCount = "Vehículo(s)",
dealersCount = "Concesionario(s)",
accountBalance = "Balance de Cuenta",
bank = "Cuenta de Banco",
cash = "Dinero",
amount = "Cantidad", --Before= Monto
societyFund = "Fondos de Sociedad",
paymentSource = "Tipo de Pago",
purchase = "Comprar",
personalPurchase = "Compra Personal",
societyPurchase = "Compra Sociedad",
purchaseType = "Tipo de Compra",
deposit = "Depositar",
withdraw = "Retirar",
all = "Todos",
yes = "Si",
no = "No",
add = "Añadir",
edit = "Editar",
id = "ID",
created = "Creado",
type = "Tipo",
name = "Nombre",
owner = "Dueño",
bankBalance = "Saldo Bancario", --Before = Balance Banco
status = "Estado", --Before = Esatus
back = "Regresar",
previous = "Atrás",
next = "Siguiente",
admin = "Administrar", --Before = Administar // But if that means Administrator then should be "Administrador"
vehiclesAdmin = "Administrar Vehículos",
dealershipsAdmin = "Administrar Concesionarios",
search = "Buscar",
noDealershipsFound = "No se encontraron concesionarios",
noVehicles = "No se encontraron vehículos",
page = "Página",
of = "de",
every = "cada",
show = "Mostrar", --Before = Mostar
active = "Activo",
activeFinance = "Financiaciones Activas", --Before = Finanzas Activas
failed = "Pago Fallido",
removed = "Removido",
setOwner = "Establecer Propietario", --Before = Poner Dueño
manage = "Gestionar",
deleteData = "Borrar Datos",
deleteVehicle = "Borrar Vehículo",
delete = "Borrar",
deleteConfirmation = "¿Estás seguro?",
deleteConfirmationDanger = "¿Estás seguro? Esta acción es irreversible.",
setDealershipOwner = "Establecer Propietario",
overwriteDealerPrices = "Sobrescribir Precios",
nearbyPlayers = "Jugadores Cercanos",
noPlayersNearby = "NO hay jugadores cercanos",
selectPlayer = "Seleccionar Jugador",
required = "Requerido",
forExample = "Por Ejemplo",
spawnCode = "Código",
brand = "Marca",
model = "Modelo",
category = "Categoría",
price = "Precio",
import = "Importar",
importing = "Importando",
importBehaviour = "Comportamiento de Importación",
importVehicles = "Importar Vehículos",
importFrom = "Importar de",
dashboard = "Panel",
displayVehicle = "Poner Vehículo en Exposición", --Before = Poner vehiculo en display
displayVehicles = "Vehículos en Exposición", --Before = Vehiculos en display
orders = "Pedidos", --Before = Ordenes
sales = "Ventas",
vehiclesOnDisplay = "Vehículos en Exposición", --Before = Vehiculos en display
employees = "Empleados",
settings = "Ajustes",
switchVehicle = "Cambiar Vehículo",
remove = "Remover",
noDisplayVehicles = "No Mostrar Vehículos", --Before = No display vehicles
selectVehicle = "Seleccionar Vehículo", --Before = Select vehicle
colour = "Color",
placeVehicle = "Poner Vehículo",
orderVehicle = "Ordenar Vehículos",
cancelOrder = "Cancelar Pedido", --Before = Cancelar Orden
delivery = "Entregando",
delivered = "Entregados",
noOrders = "Pedidos no Encontrados", --Before = Ordenes no encontradas
quantity = "Cantidad",
totalCost = "Precio Total", --Before = Costo Total
totalSales = "Ventas totales",
noSales = "No hay ventas encontradas", --Before = No ventas encontradas
paid = "Pagado",
owed = "Comprado",
dealershipName = "Nombre Concesionario",
save = "Guardar Cambios",
cancel = "Cancelar",
notEnoughMoney = "Dinero Insuficiente",
placeOrder = "Realizar Pedido",
purchaseCost = "Precio de Compra", --Before = Costo de la compra
salePrice = "Precio de Venta",
inStock = "En Stock",
outOfStock = "Agotado",
placeVehiclePrompt = "Presiona %{value} para colocar el vehículo. ¡Puedes hacer ajustes después!",
remaining = "Restante",
prePurchaseRepoWarning = "Si no puedes mantenerte al día con los pagos de financiaminento, tu vehículo será embargado.",
repossessionWarning = "Su último pago falló: tu vehículo será embargado a menos que realice un pago ahora.",
recurringPayment = "Pago Recurrente",
remainingBalance = "Balance Restante",
remainingPayments = "Pagos Restantes",
paymentTakenEvery = "Pago Tomado Cada",
hours = "horas",
seconds = "segundos",
nextPayment = "Siguiente Pago",
makePayment = "Hacer Pago",
vehicleRepossessed = "El vehículo será embargado",
payInFull = "Pagar Completo",
earlyPaymentConfirmation = "¿Estás segur@ de que quieres hacer un pago anticipado de",
financedVehicles = "Vehículos Financiados",
noFinancedVehicles = "No tienes vehículos con financiación activa",
financeBreakdown = "Detalles de Financiación", --Before= Detalles Financiamineto
initialPayment = "Pago Inicial",
payments = "Pagos",
length = "Tiempo",
interest = "Interés",
totalPayable = "Total a Pagar",
leaveShowroom = "Salir de la Sala de Exposición", --Before= Salir del Showroom
handling = "Manejo",
topSpeed = "Velocidad Máxima",
power = "Poder",
torque = "Torque",
brake = "Freno",
financing = "Financiación", --Before= Financiamiento
financingAvailable = "Financiación Disponible", --Before = Financiamiento disponible
paymentsOf = "pagos de",
clear = "Limpiar",
testDrive = "Prueba de Manejo",
allCategories = "Todas las Categorías",
sortByName = "Ordenar por: Nombre",
sortByAvailability = "Ordenar por: Disponibilidad",
sortByCheapest = "Ordenar por: Más Barato",
sortByMostExpensive = "Ordenar por: Más Caro",
sortByNewest = "Ordenar por: Más reciente",
purchaseVehicle = "Comprar Vehículo",
purchaseFor = "Compra Por",
selectSociety = "Selecciona una Sociedad",
financeOverPayments = "Financiar por %{value} pagos",
payToday = "Paga Hoy",
financeThen = "Después",
seeFullBreakdown = "Ver Desglose Completo",
testDriveExit = "Puedes salir del vehículo en cualquier momento para finalizar la prueba de manejo.",
-- NOTIFICATIONS
purchaseSuccess = "¡Felicitaciones Por Su Compra!",
depositSuccess = "Depósito Exitoso",
withdrawSuccess = "Retiro Exitoso",
errorNotEnoughMoney = "No tienes suficiente dinero",
errorVehicleOutOfStock = "Este vehículo está agotado",
errorCannotAffordVehicle = "No puedes comprar este vehículo",
vehicleFinancePaymentMade = "Financia el pago realizado por tu vehículo %{value}",
vehicleFinancePaidOff = "Felicitaciones, ha pagado y ahora es dueño de tu vehículo. %{value}",
vehicleFinancePaymentFailed = "Pago de financiación fallido para tu vehículo %{value}",
vehicleFinanceRepossessedSoon = "Necesitas hacer un pago por tu vehículo %{value} o tu vehículo será embargado pronto",
vehicleFinanceRepossessed = "Por falta de pago, tu vehículo ha sido embargado con la placa %{value}",
dealershipNotEnoughFunds = "El concesionario no tiene fondos suficientes",
dealershipVehiclesOrdered = "Vehículos pedidos con éxito",
dealershipOrderCancelled = "Pedido Cancelado",
errorVehicleWithSpawnCodeExists = "Ya existe un vehículo con este código de generación",
errorExitVehicle = "Primero debes salir del vehículo.",
-- NEW v1.1
purchaseRequest = "Solicitud de Compra",
sendRequest = "Enviar Solicitud",
dealer = "Distribuidor",
financed = "Financiado",
signHere = "Firme aquí",
signFirstError = "Firma Primero",
denyRequest = "Denegar Solicitud",
playerTooManyFinancedVehicles = "El jugador tiene demasiados vehículos financiados actualmente",
employeePermissionsError = "No tiene los permisos necesarios",
managerRole = "Director",
supervisorRole = "Supervisor",
salesRole = "Supervisora",
ownerRole = "Propietario",
employmentRequest = "Solicitud de Empleo",
accept = "Aceptar",
jobOfferDescription = "Le han ofrecido un puesto de trabajo en el concesionario \"%{value}\". ¿Te gustaría aceptar?",
pending = "Pendiente",
employeeHiredMsg = "La solicitud de alquiler del concesionario ha sido aceptada!",
employeeRejectedMsg = "La solicitud de alquiler del concesionario ha sido rechazada",
sellVehicle = "Vender Vehículo",
vehicleTerms = "Condiciones del Vehículo",
financePayments = "Pagos Financieros",
commission = "Comisión",
role = "Rol",
firedNotification = "Has sido despedido de \"%{value}\".",
dealershipTooFarAway = "No estás cerca de ningún concesionario",
restoreDisplayVehicles = "Restaurar Sala de Exposición",
customer = "Cliente",
lessThanAMin = "Menos de un Minuto",
mins = "minuto(s)",
notInVehicle = "No estás sentado en un vehículo",
notYourVehicleError = "Este vehículo no te pertenece",
vehicleFinancedError = "No puedes vender este vehículo porque tiene pagos de financiación pendientes",
dealershipDoesntSellVehicle = "Este concesionario no puede comprar este vehículo",
dealershipWantsYourVehicle = "Enhorabuena. Este concesionario desea comprar tu vehículo.",
purchasePrice = "Precio Ofertado: ",
spawnCodeInvalid = "Código de generación no válido",
salesRep = "Sales Rep",
directSaleAccepted = "Direct sale request accepted! Your commission has been paid.",
directSaleRejected = "Direct sale request rejected"
}

View file

@ -0,0 +1,221 @@
Locales = Locales or {}
Locales['fr'] = {
-- UI
vehicle = "Véhicule",
vehicles = "Véhicules",
dealership = "Concessionnaire",
dealerships = "Concessionnaires",
vehiclesCount = "véhicule(s)",
dealersCount = "Concessionnaire(s)",
accountBalance = "Solde du compte",
bank = "Compte bancaire",
cash = "Argent liquide",
amount = "Montant",
societyFund = "Fonds de la société",
paymentSource = "Source du paiement",
purchase = "Achat",
personalPurchase = "Achat personnel",
societyPurchase = "Achat de la société",
purchaseType = "Type d'achat",
deposit = "Dépôt",
withdraw = "Retirer",
all = "Tout",
yes = "Oui",
no = "Non",
add = "Ajouter",
edit = "Éditer",
id = "ID",
created = "Crée",
type = "Type",
name = "Nom",
owner = "Propriétaire",
bankBalance = "Solde bancaire",
status = "Statut",
back = "Retour",
previous = "Précédent",
next = "Suivant",
admin = "Administrateur",
vehiclesAdmin = "Administration des véhicules",
dealershipsAdmin = "Administration des concessionnaires",
search = "Recherche",
noDealershipsFound = "Aucun concessionnaire trouvé",
noVehicles = "Aucun véhicule trouvé",
page = "Page",
of = "de",
every = "tous",
show = "Afficher",
active = "Actif",
activeFinance = "Financement actif",
failed = "Échec du paiement",
removed = "Supprimé",
setOwner = "Choisir Propriétaire",
manage = "Gérer",
deleteData = "Supprimer les données",
deleteVehicle = "Supprimer un véhicule",
delete = "Supprimer",
deleteConfirmation = "Êtes-vous sûr?",
deleteConfirmationDanger = "En êtes-vous sûr? Cette action est irréversible.",
setDealershipOwner = "Choisir Propriétaire du Concessionnaire",
overwriteDealerPrices = "Remplacer les prix des concessionnaires",
nearbyPlayers = "Joueurs à proximité",
noPlayersNearby = "Pas de joueurs à proximité",
selectPlayer = "Sélectionner un joueur",
required = "Exigée",
forExample = "Par exemple",
spawnCode = "Spawn Code",
brand = "Marque",
model = "Modèle",
category = "Catégorie",
price = "Prix",
import = "Importation",
importing = "Importation",
importBehaviour = "Comportement d'importation",
importVehicles = "Véhicules importés",
importFrom = "Importer de",
dashboard = "Tableau de bord",
displayVehicle = "Véhicule d'affichage",
displayVehicles = "Véhicules d'exposition",
orders = "Commandes",
sales = "Vente",
vehiclesOnDisplay = "Véhicules exposés",
employees = "Salariés",
settings = "Paramètres",
switchVehicle = "Changement de véhicule",
remove = "Retirer",
noDisplayVehicles = "Pas de véhicules d'exposition",
selectVehicle = "Sélectionner un véhicule",
colour = "Couleur",
placeVehicle = "Placer le véhicule",
orderVehicle = "Commander un véhicule",
cancelOrder = "Annuler la commande",
delivery = "Livraison",
delivered = "Livré",
noOrders = "Aucune commande trouvée",
quantity = "Quantité",
totalCost = "Coût total",
totalSales = "Ventes totales",
noSales = "Aucune vente trouvée",
paid = "Payé",
owed = "",
dealershipName = "Nom du concessionnaire",
save = "Enregistrer les modifications",
cancel = "Annuler",
notEnoughMoney = "Pas assez d'argent",
placeOrder = "Passer une commande",
purchaseCost = "Prix D'achat",
salePrice = "Prix de vente",
inStock = "En stock",
outOfStock = "Rupture de stock",
placeVehiclePrompt = "Appuyer sur %{value} pour placer le véhicule. Vous pourrez faire des réglages plus fins par la suite!",
remaining = "Restant",
prePurchaseRepoWarning = "Si vous ne pouvez pas suivre vos paiements financiers, votre véhicule sera repris.",
repossessionWarning = "Votre dernier paiement a échoué : votre véhicule sera repris à moins que vous n'effectuiez un paiement maintenant!",
recurringPayment = "Paiement récurrent",
remainingBalance = "Solde restant",
remainingPayments = "Paiements restants",
paymentTakenEvery = "Paiement effectué chaque",
hours = "heures",
seconds = "secondes",
nextPayment = "Prochain paiement",
makePayment = "Effectuer le paiement",
vehicleRepossessed = "Le véhicule sera repris",
payInFull = "Payer intégralement",
earlyPaymentConfirmation = "Etes-vous sûr de vouloir effectuer un paiement anticipé de",
financedVehicles = "Véhicules financés",
noFinancedVehicles = "Vous n'avez aucun véhicule avec un financement actif",
financeBreakdown = "Répartition des finances",
initialPayment = "Paiement initialt",
payments = "Paiements",
length = "Longueur",
interest = "Intérêt",
totalPayable = "Total à payer",
leaveShowroom = "Quitter la salle d'exposition",
handling = "Conduite",
topSpeed = "Vitesse maximale",
power = "Puissance",
torque = "Torque",
brake = "Freinage",
financing = "Financement",
financingAvailable = "Financement disponible",
paymentsOf = "paiements de",
clear = "Nettoyer",
testDrive = "Essai routier",
allCategories = "Toutes les catégories",
sortByName = "Trier par : Nom",
sortByAvailability = "Trier par : Disponibilité",
sortByCheapest = "Trier par : le moins cher",
sortByMostExpensive = "Trier par : Les plus chers",
sortByNewest = "Trier par : Les plus récents",
purchaseVehicle = "Acheter un véhicule",
purchaseFor = "Acheter pour",
selectSociety = "Sélectionnez une société",
financeOverPayments = "Financement sur %{value} paiements",
payToday = "Payez aujourd'hui",
financeThen = "Alors",
seeFullBreakdown = "Voir la répartition complète",
testDriveExit = "Vous pouvez sortir de votre véhicule à tout moment pour terminer lessai routier.",
-- NOTIFICATIONS
purchaseSuccess = "Félicitations pour votre achat!",
depositSuccess = "Dépôt réussi",
withdrawSuccess = "Retrait réussi",
errorNotEnoughMoney = "Vous n'avez pas assez d'argent",
errorVehicleOutOfStock = "Ce véhicule est en rupture de stock",
errorCannotAffordVehicle = "Vous ne pouvez pas vous permettre ce véhicule",
vehicleFinancePaymentMade = "Paiement financier effectué pour votre véhicule %{value}",
vehicleFinancePaidOff = "Félicitations, vous avez payé et êtes désormais propriétaire de votre véhicule %{value}",
vehicleFinancePaymentFailed = "Échec du paiement du financement pour votre véhicule %{value}",
vehicleFinanceRepossessedSoon = "Vous devez effectuer un paiement pour votre véhicule %{value}, sinon votre véhicule sera bientôt repris",
vehicleFinanceRepossessed = "Suite à un défaut de paiement, votre véhicule a été repris avec la plaque %{value}",
dealershipNotEnoughFunds = "Le concessionnaire n'a pas assez de fonds",
dealershipVehiclesOrdered = "Le(s) véhicule(s) ont été commandés avec succès",
dealershipOrderCancelled = "Commande annulée avec succès",
errorVehicleWithSpawnCodeExists = "Un véhicule avec ce spawnCode existe déjà",
errorExitVehicle = "Vous devez d'abord sortir de votre véhicule",
-- NEW v1.1
purchaseRequest = "Demande d'achat",
sendRequest = "Envoyer la demande",
dealer = "Vendeur",
financed = "Financé",
signHere = "Signez ici",
signFirstError = "Veuillez d'abord signer",
denyRequest = "Refuser la demande",
playerTooManyFinancedVehicles = "Le joueur a trop de véhicules financés",
employeePermissionsError = "Vous ne disposez pas des autorisations d'employé nécessaires",
managerRole = "Directeur",
supervisorRole = "Superviseur",
salesRole = "Ventes",
ownerRole = "Propriétaire",
employmentRequest = "Offre d'emploi",
accept = "Accepter",
jobOfferDescription = "On vous a proposé un emploi chez le concessionnaire \"%{value}\". Souhaitez-vous accepter ?",
pending = "En attente",
employeeHiredMsg = "L'offre d'emploi du concessionnaire a été acceptée !",
employeeRejectedMsg = "La demande d'embauche d'un concessionnaire a été rejetée",
sellVehicle = "Vendre un véhicule",
vehicleTerms = "Conditions relatives aux véhicules",
financePayments = "Paiements financiers",
commission = "Commission",
role = "Rôle",
firedNotification = "Vous avez été licencié de la concession \"%{value}\"",
dealershipTooFarAway = "Vous n'êtes à proximité d'aucun concessionnaire",
restoreDisplayVehicles = "Restaurer la salle d'exposition",
customer = "Client",
lessThanAMin = "Moins d'une minute",
mins = "minute(s)",
notInVehicle = "Vous n'êtes pas assis dans un véhicule",
notYourVehicleError = "Ce véhicule ne vous appartient pas",
vehicleFinancedError = "Vous ne pouvez pas vendre ce véhicule car il lui reste des paiements financiers.",
dealershipDoesntSellVehicle = "Ce concessionnaire ne peut pas acheter ce véhicule",
dealershipWantsYourVehicle = "Félicitations! Ce concessionnaire souhaite acheter votre véhicule.",
purchasePrice = "Prix proposé :",
spawnCodeInvalid = "SpawnCode invalide",
salesRep = "Représentant des ventes",
directSaleAccepted = "Demande de vente directe acceptée ! Votre commission a été payée.",
directSaleRejected = "Demande de vente directe rejetée"
}
-- Translated by @Diamond_h4

View file

@ -0,0 +1,219 @@
Locales = Locales or {}
Locales['hu'] = {
-- UI
vehicle = "Jármü",
vehicles = "Jármüvek",
dealership = "Kereskedés",
dealerships = "Kereskedések",
vehiclesCount = "jármü(vek)",
dealersCount = "kereskedés(ek)",
accountBalance = "Számla egyenleg",
bank = "Bank egyenleg",
cash = "Készpénz",
amount = "Összeg",
societyFund = "Céges kassza",
paymentSource = "Fizetésimód",
purchase = "Vásárlás",
personalPurchase = "Vásárlás",
societyPurchase = "Céges vásárlás",
purchaseType = "Vásárlási mód",
deposit = "Befizetés",
withdraw = "Kifizetés",
all = "Mind",
yes = "Igen",
no = "Nem",
add = "Hozzáadás",
edit = "Módositás",
id = "ID",
created = "Létrehozva",
type = "Tipus",
name = "Név",
owner = "Tulajdonos",
bankBalance = "Banki egyenleg",
status = "Státusz",
back = "Vissza",
previous = "Elözö",
next = "Következö",
admin = "Admin",
vehiclesAdmin = "Jármü adminisztráció",
dealershipsAdmin = "Kereskedés adminisztráció",
search = "Keresés",
noDealershipsFound = "Kereskedés nem található",
noVehicles = "Jármü nem található",
page = "Oldal",
of = "of",
every = "minden",
show = "Show",
active = "Aktiv",
activeFinance = "Akti részletfizetés",
failed = "Sikertelen fizetés",
removed = "Eltávolitva",
setOwner = "Tulaj beállitása",
manage = "Management",
deleteData = "Adat törlése",
deleteVehicle = "Jármü törlése",
delete = "Törlés",
deleteConfirmation = "Biztos vagy benne?",
deleteConfirmationDanger = "Biztos vagy benne? Ez a müvelet nem visszavonható.",
setDealershipOwner = "Kereskedés tulajdonos beállitása",
overwriteDealerPrices = "Kereskedési árak megváltoztatása",
nearbyPlayers = "Játékosok a közeledben",
noPlayersNearby = "Nincs játékos a közeledben",
selectPlayer = "Játékos kiválasztása",
required = "Szükséges",
forExample = "Például",
spawnCode = "Lehivókód",
brand = "Márka",
model = "Modell",
category = "Kategória",
price = "Ár",
import = "Import",
importing = "Importálás",
importBehaviour = "Import fajtája",
importVehicles = "Jármü import",
importFrom = "Importálva innen:",
dashboard = "Kezelöfelület",
displayVehicle = "Jármü bemutatása",
displayVehicles = "Jármüvek bemutatása",
orders = "Rendelések",
sales = "Eladások",
vehiclesOnDisplay = "Bemutatott jármüvek",
employees = "Alkalmazottak",
settings = "Beállitások",
switchVehicle = "Jármü váltás",
remove = "Elvesz",
noDisplayVehicles = "Nincsenek bemutató jármüvek",
selectVehicle = "Jármü választás",
colour = "Szin",
placeVehicle = "Jármü elhelyezése",
orderVehicle = "Jármü rendelése",
cancelOrder = "Rendelés visszavonása",
delivery = "Szállitás",
delivered = "Kiszállitva",
noOrders = "Nincs rendelés",
quantity = "Mennyiség",
totalCost = "Teljes költség",
totalSales = "Összes eladás",
noSales = "Nincsenek eladások",
paid = "Fizetve",
owed = "Tartozott",
dealershipName = "Kereskedés neve",
save = "Változtatások mentése",
cancel = "Mégse",
notEnoughMoney = "Nincs elég pénzed",
placeOrder = "Rendelés leadása",
purchaseCost = "Költség",
salePrice = "Eladási ár",
inStock = "Készleten",
outOfStock = "Nincs készleten",
placeVehiclePrompt = "Nyomj %{value} gombot a jármü elhelyezéshez. Késöbb tudsz módosítani!",
remaining = "Maradt",
prePurchaseRepoWarning = "Ha nem törleszted a részletfizetést a jármü autómatikusan visszavételre kerül.",
repossessionWarning = "Nem tudtad fedezni az utolsó részletet, fizess most vagy a jármü visszavételre kerül.",
recurringPayment = "Részletfizetés",
remainingBalance = "Hátralévö összeg",
remainingPayments = "Hátralévö részlet",
paymentTakenEvery = "A részlet minden",
hours = "óra",
seconds = "másodperc",
nextPayment = "Következö részlet",
makePayment = "Részlet kifizetése",
vehicleRepossessed = "A jármü visszavételre kerül",
payInFull = "Kifizetés egyben",
earlyPaymentConfirmation = "Biztosan elöbb kifizeted a részletét",
financedVehicles = "Lizingelt jármüvek",
noFinancedVehicles = "Nincs jármüved aktiv részletfizetéssel",
financeBreakdown = "Lizing megszakitása",
initialPayment = "Elsö részlet",
payments = "Kifizetések",
length = "Futamidö",
interest = "Érdeklödés",
totalPayable = "Teljes összeg",
leaveShowroom = "Bemutató elhagyása",
handling = "Kezelhetöség",
topSpeed = "Végsebesség",
power = "Löerö",
torque = "Nyomaték",
brake = "Fékerö",
financing = "Részletfizetés",
financingAvailable = "Részletfizetés elérhetö",
paymentsOf = "költsége",
clear = "Töröl",
testDrive = "Teszt vezetés",
allCategories = "Összes kategória",
sortByName = "Rendezés: Név",
sortByAvailability = "Rendezés: Elérhetö",
sortByCheapest = "Rendezés: Legolcsóbb",
sortByMostExpensive = "Rendezés: Legdrágább",
sortByNewest = "Rendezés: Legújabb",
purchaseVehicle = "Jármü megvásárlása",
purchaseFor = "Vásárlás",
selectSociety = "Válassz ki egy céget",
financeOverPayments = "Vásárlás %{value} részletben",
payToday = "Most fizetek",
financeThen = "Késöbb",
seeFullBreakdown = "Teljes lebontás megtekintése",
testDriveExit = "Bármikor kiszállhatsz tesztvezetés közben.",
-- NOTIFICATIONS
purchaseSuccess = "Gratulálunk a vásárlásodhoz!",
depositSuccess = "Sikeres befizetés",
withdrawSuccess = "Sikeres kifizetés",
errorNotEnoughMoney = "Nincs elég pénzed",
errorVehicleOutOfStock = "Nincs készleten a jármü",
errorCannotAffordVehicle = "Nincs elég pénzed erre a jármüre",
vehicleFinancePaymentMade = "Részletfizetés választva a jármüre %{value}",
vehicleFinancePaidOff = "Gratulálunk! A %{value} minden részlete kilett fizetve!",
vehicleFinancePaymentFailed = "Sikertelen részlet beszedés %{value}",
vehicleFinanceRepossessedSoon = "Fizesd a %{value} részletét vagy vissza lesz véve a tulajdonodból!",
vehicleFinanceRepossessed = "Mivel nem fizetted a részletit igy vissza lett véve a %{value} rendszámú jármüved",
dealershipNotEnoughFunds = "Nincs elég pénze a kereskedésnek",
dealershipVehiclesOrdered = "Sikeresen megrendelted a jármüvet(jármüveket)",
dealershipOrderCancelled = "Sikeres rendelés visszavonás",
errorVehicleWithSpawnCodeExists = "Már van egy autó kinálatban ezzel a lehívó kóddal",
errorExitVehicle = "Szállj ki a jármüvedböl elöször",
-- NEW v1.1
purchaseRequest = "Vásárlási kérelem",
sendRequest = "Kérelem küldése",
dealer = "Kereskedő",
financed = "Finanszírozott",
signHere = "Itt írja alá",
signFirstError = "Kérjük, először írja alá",
denyRequest = "Kérelem elutasítása",
playerTooManyFinancedVehicles = "A játékosnak túl sok finanszírozott járműve van",
employeePermissionsError = "Nem rendelkezik a szükséges munkavállalói jogosultságokkal",
managerRole = "Menedzser",
supervisorRole = "Felügyelő",
salesRole = "Értékesítés",
ownerRole = "Tulajdonos",
employmentRequest = "Foglalkoztatási kérelem",
accept = "Elfogadom",
jobOfferDescription = "Önnek állást ajánlottak a \"%{érték}\" márkakereskedésben. Szeretné elfogadni?",
pending = "Függőben",
employeeHiredMsg = "A márkakereskedő bérleti kérelmét elfogadták!",
employeeRejectedMsg = "A márkakereskedő bérleti kérelmét elutasították",
sellVehicle = "Eladni jármű",
vehicleTerms = "Járművekre vonatkozó feltételek",
financePayments = "Pénzügyi kifizetések",
commission = "Bizottság",
role = "Szerepvállalás",
firedNotification = "Önt kirúgták a \"%{value}\" kereskedésből.",
dealershipTooFarAway = "Nem vagy közel egyetlen kereskedőhöz sem",
restoreDisplayVehicles = "Restore bemutatóterem",
customer = "Ügyfél",
lessThanAMin = "Kevesebb, mint egy perc",
mins = "perc(ek)",
notInVehicle = "Ön nem ül egy járműben",
notYourVehicleError = "Ez a jármű nem az Ön tulajdona",
vehicleFinancedError = "Ezt a járművet nem tudja eladni, mert még finanszírozási törlesztőrészletei vannak.",
dealershipDoesntSellVehicle = "Ez a kereskedés nem tudja megvásárolni ezt a járművet",
dealershipWantsYourVehicle = "Gratulálunk! Ez a kereskedés szeretné megvásárolni az Ön járművét.",
purchasePrice = "Kínált ár: ",
spawnCodeInvalid = "Spawn code invalid",
salesRep = "Sales Rep",
directSaleAccepted = "Direct sale request accepted! Your commission has been paid.",
directSaleRejected = "Direct sale request rejected"
}

View file

@ -0,0 +1,220 @@
Locales = Locales or {}
Locales['it'] = {
-- UI
vehicle = "Veicolo",
vehicles = "Veicoli",
dealership = "Concessionario",
dealerships = "Concessionari",
vehiclesCount = "veicolo/i",
dealersCount = "concessionario/i",
accountBalance = "Bilancio Conto",
bank = "Conto Bancario",
cash = "Contanti",
amount = "Quantità",
societyFund = "Fondo Società",
paymentSource = "Fonte Pagamento",
purchase = "Compra",
personalPurchase = "Compra Personale",
societyPurchase = "Compra Società",
purchaseType = "Tipo Acquisto",
deposit = "Deposita",
withdraw = "Preleva",
all = "Tutti",
yes = "Si",
no = "No",
add = "Aggiungi",
edit = "Modifica",
id = "ID",
created = "Creato",
type = "Tipo",
name = "Nome",
owner = "Proprietario",
bankBalance = "Bilancio Banca",
status = "Status",
back = "Indietro",
previous = "Precedente",
next = "Prossimo",
admin = "Admin",
vehiclesAdmin = "Veicoli Admin",
dealershipsAdmin = "Concessionari Admin",
search = "Cerca",
noDealershipsFound = "Nessuna concessionaria trovata",
noVehicles = "Nessun veicolo trovato",
page = "Pagina",
of = "di",
every = "ogni",
show = "Mostra",
active = "Attiva",
activeFinance = "Attiva Rateizzazione",
failed = "Pagamento Fallito",
removed = "Rimossa",
setOwner = "Imposta Proprietario",
manage = "Gestisci",
deleteData = "Elimina Dati",
deleteVehicle = "Elimina Veicolo",
delete = "Elimina",
deleteConfirmation = "Sei sicuro?",
deleteConfirmationDanger = "Sei sicuro? Questa azione è irreversibile.",
setDealershipOwner = "Imposta Proprietario Concessionario",
overwriteDealerPrices = "Sovrascrivi prezzi concessionario",
nearbyPlayers = "Player vicini",
noPlayersNearby = "Nessun player vicino",
selectPlayer = "Seleziona player",
required = "Richiesto",
forExample = "Per esempio",
spawnCode = "Codice Spawn",
brand = "Marchio",
model = "Modello",
category = "Categoria",
price = "Prezzo",
import = "Importa",
importing = "Importando",
importBehaviour = "Tipo Importazione",
importVehicles = "Importa veicoli",
importFrom = "Importa da",
dashboard = "Dashboard",
displayVehicle = "Mostra Veicolo",
displayVehicles = "Mostra Veicoli",
orders = "Ordini",
sales = "Vendite",
vehiclesOnDisplay = "Veicoli in mostra",
employees = "Impiegati",
settings = "Impostazioni",
switchVehicle = "Cambia Veicolo",
remove = "Rimuovi",
noDisplayVehicles = "Nessun veicolo in mostra",
selectVehicle = "Seleziona veicolo",
colour = "Colore",
placeVehicle = "Posiziona Veicolo",
orderVehicle = "Ordina veicolo",
cancelOrder = "Annulla Ordine",
delivery = "Consegna",
delivered = "Consegnato",
noOrders = "Nessun ordine trovato",
quantity = "Quantità",
totalCost = "Costo totale",
totalSales = "Totale vendite",
noSales = "Nessuna vendita trovata",
paid = "Pagato",
owed = "Dovuto",
dealershipName = "Nome Concessionario",
save = "Salva Cambiamenti",
cancel = "Annulla",
notEnoughMoney = "Non hai abbastanza soldi",
placeOrder = "Piazza Ordine",
purchaseCost = "Costo Acquisto",
salePrice = "Costo Vendita",
inStock = "In stock",
outOfStock = "Fuori stock",
placeVehiclePrompt = "Premi %{value} per posizionare il veicolo. Successivamente puoi apportare modifiche più precise!",
remaining = "Rimanenti",
prePurchaseRepoWarning = "Se non riesci a far fronte alle rate del finanziamento, il tuo veicolo verrà pignorato.",
repossessionWarning = "L'ultimo pagamento è fallito - se non effettui un pagamento ora, il tuo veicolo verrà pignorato.",
recurringPayment = "Pagamento ricorrente",
remainingBalance = "Bilancio rimanente",
remainingPayments = "Pagamenti rimanenti",
paymentTakenEvery = "Pagamento preso ogni",
hours = "ore",
seconds = "secondi",
nextPayment = "Prossimo pagamento",
makePayment = "Effettua pagamento",
vehicleRepossessed = "Il veicolo verrà pignorato",
payInFull = "Paga per intero",
earlyPaymentConfirmation = "Sei sicuro di voler effettuare un pagamento anticipato di",
financedVehicles = "Veicoli Rateizzati",
noFinancedVehicles = "Non hai veicoli con rateizzazione attiva",
financeBreakdown = "Ripartizione Finanziaria",
initialPayment = "Pagamento iniziale",
payments = "Pagamenti",
length = "Rate",
interest = "Interessi",
totalPayable = "Prezzo Totale",
leaveShowroom = "Lascia Showroom",
handling = "Manovrabilità",
topSpeed = "Velocità Max",
power = "Potenza",
torque = "Coppia",
brake = "Freno",
financing = "Rateizzazione",
financingAvailable = "Rateizzazione disponibile",
paymentsOf = "pagamenti di",
clear = "Resetta",
testDrive = "Test Drive",
allCategories = "Tutte Categorie",
sortByName = "Ordina per: Nome",
sortByAvailability = "Ordina per: Disponibilità",
sortByCheapest = "Ordina per: Più Economica",
sortByMostExpensive = "Ordina per: Più Costosa",
sortByNewest = "Ordina per: Più Nuova",
purchaseVehicle = "Acquista Veicolo",
purchaseFor = "Acquista per",
selectSociety = "Seleziona una società",
financeOverPayments = "Rateizza in %{value} pagamenti",
payToday = "Paga oggi",
financeThen = "Poi",
seeFullBreakdown = "Vedi ripartizione completa",
testDriveExit = "Puoi uscire dal veicolo in qualsiasi momento per terminare il test drive.",
-- NOTIFICATIONS
purchaseSuccess = "Congratulazioni per il tuo acquisto!",
depositSuccess = "Depositato con successo",
withdrawSuccess = "Prelevato con successo",
errorNotEnoughMoney = "Non hai abbastanza soldi",
errorVehicleOutOfStock = "Il veicolo non è in magazzino",
errorCannotAffordVehicle = "Non ti puoi permettere questo veicolo",
vehicleFinancePaymentMade = "Pagamento rata fatto per il tuo veicolo %{value}",
vehicleFinancePaidOff = "Congratulazioni, hai pagato e ora possiedi il tuo veicolo %{value}",
vehicleFinancePaymentFailed = "Pagamento rata fallito per il tuo veicolo %{value}",
vehicleFinanceRepossessedSoon = "Devi pagare la rata del veicolo %{value} o verrà presto pignorato",
vehicleFinanceRepossessed = "A causa del mancato pagamento, il tuo veicolo è stato pignorato con la targa %{value}",
dealershipNotEnoughFunds = "Concessionario non ha abbastanza fondi",
dealershipVehiclesOrdered = "Veicolo/i ordinato/i con successo",
dealershipOrderCancelled = "Ordine annullato con successo",
errorVehicleWithSpawnCodeExists = "Esiste già un veicolo con questo codice spawn",
errorExitVehicle = "Devi prima uscire dal veicolo",
errorPlacementCollision = "Non puoi piazzare il veicolo qui",
-- NEW v1.1
purchaseRequest = "Richiesta Acquisto",
sendRequest = "Invia Richiesta",
dealer = "Venditore",
financed = "Rateizzata",
signHere = "Firma qui",
signFirstError = "Prima firma",
denyRequest = "Rifiuta Richiesta",
playerTooManyFinancedVehicles = "Il giocatore ha troppi veicoli rateizzati",
employeePermissionsError = "Non hai i permessi impiegato necessari",
managerRole = "Manager",
supervisorRole = "Supervisore",
salesRole = "Vendite",
ownerRole = "Proprietario",
employmentRequest = "Richiesta di Impiego",
accept = "Accetta",
jobOfferDescription = "Ti è stato offerto un lavoro al Concessionario \"%{value}\". Vuoi accettarlo?",
pending = "In attesa",
employeeHiredMsg = "Richiesta di assunzione nel concessionario accettata!",
employeeRejectedMsg = "Richiesta di assunzione nel concessionario rifiutata",
sellVehicle = "Vendi Veicolo",
vehicleTerms = "Termini Veicolo",
financePayments = "Rateizza Pagamenti",
commission = "Commissione",
role = "Ruolo",
firedNotification = "Sei stato licenziato dal concessionario \"%{value}\"",
dealershipTooFarAway = "Non sei vicino a nessun concessionario",
restoreDisplayVehicles = "Ripristina Showroom",
customer = "Cliente",
lessThanAMin = "Meno di un minuto",
mins = "minuto/i",
notInVehicle = "Non sei seduto in un veicolo",
notYourVehicleError = "Questo veicolo non ti appartiene",
vehicleFinancedError = "Non puoi vendere questo veicolo perché ha rate in sospeso",
dealershipDoesntSellVehicle = "Questo concessionario non può acquistare questo veicolo",
dealershipWantsYourVehicle = "Congratulazioni! Questo concessionario vorrebbe acquistare il tuo veicolo.",
purchasePrice = "Prezzo offerto: ",
spawnCodeInvalid = "Codice spawn non valido",
salesRep = "Resp. Vendite",
directSaleAccepted = "Richiesta di vendita diretta accettata! La tua commissione è stata pagata.",
directSaleRejected = "Richiesta di vendita diretta rifiutata!"
}

View file

@ -0,0 +1,217 @@
Locales['ja'] = {
-- UI
vehicle = "車両",
vehicles = "車両",
dealership = "ディーラー",
dealerships = "ディーラー",
vehiclesCount = "台の車両",
dealersCount = "件のディーラー",
accountBalance = "口座残高",
bank = "銀行口座",
cash = "現金",
amount = "金額",
societyFund = "社会資金",
paymentSource = "支払元",
purchase = "購入",
personalPurchase = "個人購入",
societyPurchase = "社会購入",
purchaseType = "購入タイプ",
deposit = "入金",
withdraw = "出金",
all = "すべて",
yes = "はい",
no = "いいえ",
add = "追加",
edit = "編集",
id = "ID",
created = "作成日",
type = "タイプ",
name = "名前",
owner = "オーナー",
bankBalance = "銀行残高",
status = "ステータス",
back = "戻る",
previous = "前へ",
next = "次へ",
admin = "管理者",
vehiclesAdmin = "車両管理者",
dealershipsAdmin = "ディーラー管理者",
search = "検索",
noDealershipsFound = "ディーラーが見つかりません",
noVehicles = "車両が見つかりません",
page = "ページ",
of = "",
every = "",
show = "表示",
active = "アクティブ",
activeFinance = "アクティブな支払い",
failed = "支払い失敗",
removed = "削除されました",
setOwner = "オーナー設定",
manage = "管理",
deleteData = "データ削除",
deleteVehicle = "車両削除",
delete = "削除",
deleteConfirmation = "本当に削除してもよろしいですか?",
deleteConfirmationDanger = "本当に削除してもよろしいですか? この操作は元に戻せません。",
setDealershipOwner = "ディーラーオーナー設定",
overwriteDealerPrices = "ディーラー価格の上書き",
nearbyPlayers = "近くのプレイヤー",
noPlayersNearby = "近くにプレイヤーがいません",
selectPlayer = "プレイヤーを選択",
required = "必須",
forExample = "例として",
spawnCode = "スポーンコード(座標)",
brand = "ブランド",
model = "モデル",
category = "カテゴリー",
price = "価格",
import = "インポート",
importing = "インポート中",
importBehaviour = "インポート動作",
importVehicles = "車両をインポート",
importFrom = "インポート元",
dashboard = "ダッシュボード",
displayVehicle = "表示車両",
displayVehicles = "表示車両",
orders = "注文",
sales = "販売",
vehiclesOnDisplay = "展示車両",
employees = "従業員",
settings = "設定",
switchVehicle = "車両を変更",
remove = "削除",
noDisplayVehicles = "表示車両がありません",
selectVehicle = "車両を選択",
colour = "",
placeVehicle = "車両を配置",
orderVehicle = "車両を注文",
cancelOrder = "注文キャンセル",
delivery = "配送",
delivered = "配達済み",
noOrders = "注文がありません",
quantity = "数量",
totalCost = "総費用",
totalSales = "総販売",
noSales = "販売がありません",
paid = "支払い済み",
owed = "未払い",
dealershipName = "ディーラー名",
save = "変更を保存",
cancel = "キャンセル",
notEnoughMoney = "お金が足りません",
placeOrder = "注文を確定",
purchaseCost = "購入費用",
salePrice = "販売価格",
inStock = "在庫あり",
outOfStock = "在庫切れ",
placeVehiclePrompt = "車両を配置するには、%{value} を押してください。その後、細かい調整が可能です。",
remaining = "残り",
prePurchaseRepoWarning = "支払いができない場合、車両は即座に差し押さえられます。",
repossessionWarning = "最後の支払いが失敗しました - すぐに支払わないと車両が差し押さえられます。",
recurringPayment = "定期的な支払い",
remainingBalance = "残りの残高",
remainingPayments = "残りの支払い回数",
paymentTakenEvery = "毎回支払い",
hours = "時間",
seconds = "",
nextPayment = "次の支払い",
makePayment = "支払いを行う",
vehicleRepossessed = "車両は差し押さえられました",
payInFull = "全額支払う",
earlyPaymentConfirmation = "本当に早期支払いを行いますか?",
financedVehicles = "ファイナンス車両",
noFinancedVehicles = "ファイナンス中の車両はありません",
financeBreakdown = "ファイナンス詳細",
initialPayment = "初回支払い",
payments = "支払い回数",
length = "期間",
interest = "利息",
totalPayable = "総支払額",
leaveShowroom = "ショールームを出る",
handling = "ハンドリング",
topSpeed = "最高速度",
power = "馬力",
torque = "トルク",
brake = "ブレーキ",
financing = "ファイナンス中",
financingAvailable = "ファイナンス利用可能",
paymentsOf = "の支払い回数",
clear = "クリア",
testDrive = "試乗",
allCategories = "すべてのカテゴリー",
sortByName = "並び替え: 名前順",
sortByAvailability = "並び替え: 在庫順",
sortByCheapest = "並び替え: 安い順",
sortByMostExpensive = "並び替え: 高い順",
sortByNewest = "並び替え: 新しい順",
purchaseVehicle = "車両を購入",
purchaseFor = "購入金額",
selectSociety = "社会を選択",
financeOverPayments = "%{value}回の支払いでファイナンス",
payToday = "今日支払う",
financeThen = "その後",
seeFullBreakdown = "詳細を見る",
testDriveExit = "試乗を終了するには、車両から降りることができます。",
-- NOTIFICATIONS
purchaseSuccess = "購入おめでとうございます!",
depositSuccess = "入金成功",
withdrawSuccess = "出金成功",
errorNotEnoughMoney = "お金が足りません",
errorVehicleOutOfStock = "この車両は在庫切れです",
errorCannotAffordVehicle = "この車両は購入できません",
vehicleFinancePaymentMade = "車両のファイナンス支払いが完了しました %{value}",
vehicleFinancePaidOff = "おめでとうございます、車両 %{value} のファイナンスが完済され、所有権が移転されました",
vehicleFinancePaymentFailed = "車両のファイナンス支払いが失敗しました %{value}",
vehicleFinanceRepossessedSoon = "車両 %{value} の支払いが未済です。今すぐ支払わないと差し押さえされます。",
vehicleFinanceRepossessed = "支払い失敗により、車両 %{value} は差し押さえられました。",
dealershipNotEnoughFunds = "ディーラーに十分な資金がありません",
dealershipVehiclesOrdered = "車両が正常に注文されました",
dealershipOrderCancelled = "注文が正常にキャンセルされました",
errorVehicleWithSpawnCodeExists = "このスポーンコードの車両は既に存在します",
errorExitVehicle = "まず車両から降りてください",
-- NEW v1.1
purchaseRequest = "購入リクエスト",
sendRequest = "リクエスト送信",
dealer = "ディーラー",
financed = "ファイナンス済み",
signHere = "ここにサイン",
signFirstError = "最初にサインしてください",
denyRequest = "リクエスト拒否",
playerTooManyFinancedVehicles = "プレイヤーはファイナンス中の車両が多すぎます",
employeePermissionsError = "必要な従業員権限がありません",
managerRole = "マネージャー",
supervisorRole = "スーパーバイザー",
salesRole = "営業",
ownerRole = "オーナー",
employmentRequest = "雇用リクエスト",
accept = "承認",
jobOfferDescription = "\"%{value}\" ディーラーでの職を提供されています。受け入れますか?",
pending = "保留中",
employeeHiredMsg = "ディーラーの雇用リクエストが承認されました!",
employeeRejectedMsg = "ディーラーの雇用リクエストが拒否されました",
sellVehicle = "車両を売る",
vehicleTerms = "車両契約条件",
financePayments = "ファイナンス支払い",
commission = "手数料",
role = "役職",
firedNotification = "\"%{value}\" ディーラーから解雇されました",
dealershipTooFarAway = "ディーラーが遠すぎます",
restoreDisplayVehicles = "ショールームを復元",
customer = "顧客",
lessThanAMin = "1分未満",
mins = "",
notInVehicle = "車両に乗っていません",
notYourVehicleError = "この車両はあなたのものではありません",
vehicleFinancedError = "この車両はファイナンス支払いが残っているため、販売できません",
dealershipDoesntSellVehicle = "このディーラーはこの車両を購入できません",
dealershipWantsYourVehicle = "おめでとうございます! このディーラーはあなたの車両を購入したいと言っています。",
purchasePrice = "提示価格: ",
spawnCodeInvalid = "スポーンコード無効",
salesRep = "営業担当",
directSaleAccepted = "直販リクエストが承認されました! 手数料が支払われました。",
directSaleRejected = "直販リクエストが拒否されました"
}

View file

@ -0,0 +1,219 @@
Locales = Locales or {}
Locales['lt'] = {
-- UI
vehicle = "Tr.priemonė",
vehicles = "Tr.priemonės",
dealership = "Salonas",
dealerships = "Salonas",
vehiclesCount = "Tr.priemonė(s)",
dealersCount = "Tr.priemonių parduotuvė(s)",
accountBalance = "Paskyros Balansas",
bank = "Banko Sąskaita",
cash = "Grynieji",
amount = "Suma",
societyFund = "Bendrijos Fondas",
paymentSource = "Pajamų Šaltinis",
purchase = "Pirkti",
personalPurchase = "Asmeninis Pirkimas",
societyPurchase = "Bendrijos Pirkimas",
purchaseType = "Pirkimo Tipas",
deposit = "Įnešti",
withdraw = "Išgryninti",
all = "Visi",
yes = "Taip",
no = "Ne",
add = "Pridėti",
edit = "Keisti",
id = "ID",
created = "Sūkurtas",
type = "Tipas",
name = "Vardas",
owner = "Savininkas",
bankBalance = "Banko Likutis",
status = "Statusas",
back = "Atgal",
previous = "Ankstesnis",
next = "Kitas",
admin = "Admin",
vehiclesAdmin = "Tr.priemonės admin",
dealershipsAdmin = "Tr.priemonių parduotuvės admin",
search = "Ieškoti",
noDealershipsFound = "Tr.priemonių parduotuvės nerasta",
noVehicles = "Tr.priemonės nerastos",
page = "Puslapis",
of = "",
every = "Visi",
show = "Rodyti",
active = "Aktyvus",
activeFinance = "Jūsų aktyvus finansas",
failed = "Pavedimas nepavyko",
removed = "Pašalintas",
setOwner = "Paskirti savininką",
manage = "Tvarkyti",
deleteData = "Ištrinti duomenis",
deleteVehicle = "Ištrinti tr.priemonę",
delete = "Ištrinti",
deleteConfirmation = "Ar esate įsitikinęs?",
deleteConfirmationDanger = "Ar esate įsitikinęs? šio veiksmo atšaukti negalėsite.",
setDealershipOwner = "Paskirti tr.priemonių parduotuvės savininką",
overwriteDealerPrices = "Pakeisti tr.priemonių parduotuvės kainas",
nearbyPlayers = "Šalia esantys asmenys",
noPlayersNearby = "Šalia nieko nėra",
selectPlayer = "Pasirinkti Asmenį",
required = "Reikiamas",
forExample = "Pavyzdžiui",
spawnCode = "Kodas",
brand = "Markė",
model = "Modelis",
category = "Kategorija",
price = "Kaina",
import = "Įkelti",
importing = "Įkeliama",
importBehaviour = "Import Behaviour",
importVehicles = "Įkelti tr.priemones",
importFrom = "Įkelt iš",
dashboard = "Prietaisų Skydelis",
displayVehicle = "Rodyti tr.priemonę",
displayVehicles = "Rodyti tr.priemones",
orders = "Užsakymai",
sales = "Pardavimai",
vehiclesOnDisplay = "Eksponuojamos tr.priemonės",
employees = "Darbuotojai",
settings = "Nustatymai",
switchVehicle = "Pakeisti tr.priemonę",
remove = "Pašalinti",
noDisplayVehicles = "Nėra eksponuojamų tr.priemonių",
selectVehicle = "Pasirinkti tr. priemonę",
colour = "Spalva",
placeVehicle = "Pastatyti tr.priemonę",
orderVehicle = "Užsakyti tr.priemonę",
cancelOrder = "Atšaukti Užsakymą",
delivery = "Pristatymas",
delivered = "Pristatyta",
noOrders = "Užsakymu nerasta",
quantity = "Kiekis",
totalCost = "Visa kaina",
totalSales = "Visi pardavimai",
noSales = "Pardavimų nerasta",
paid = "Sumokėta",
owed = "Įsiskolinta",
dealershipName = "tr.priemonių Parduotuvės Pavadinimas",
save = "Išsaugoti Pakeitimus",
cancel = "Atšaukti",
notEnoughMoney = "Nepakankamas pinigų kiekis",
placeOrder = "Pateikti Užsakymą",
purchaseCost = "Pirkimo Kaina",
salePrice = "Pardavimo Kaina",
inStock = "Turimas kiekis",
outOfStock = "Išparduota",
placeVehiclePrompt = "Paspauskite %{value} ,kad pastatytumėte tr.priemonę. Pakeitimus galėsite daryti vėliau!",
remaining = "Likę",
prePurchaseRepoWarning = "Jei negalite atsiskaityti su finansiniais mokėjimais, jūsų transporto priemonė bus grąžinta.",
repossessionWarning = "Paskutinis mokėjimas nepavyko jūsų transporto priemonė bus grąžinta, nebent mokėsite dabar.",
recurringPayment = "Pasikartojantis mokėjimas",
remainingBalance = "Esamas likutis",
remainingPayments = "Likę mokėjimai",
paymentTakenEvery = "PMokėjimas imamas kas",
hours = "valandos",
seconds = "sekundės",
nextPayment = "Kitas mokėjimas",
makePayment = "Sumokėti",
vehicleRepossessed = "Transporto priemonė bus atimta",
payInFull = "Mokėti pilnai",
earlyPaymentConfirmation = "Ar tikrai norite atlikti išankstinį mokėjimą?",
financedVehicles = "Finansuojamos transporto priemonės",
noFinancedVehicles = "Jūs neturite tr.priemonių už kurias reikėtų mokėti",
financeBreakdown = "Finansų suskirstymas",
initialPayment = "Pradinis mokėjimas",
payments = "Mokėjimai",
length = "Ilgis",
interest = "Palūkanos",
totalPayable = "Iš viso mokėtina",
leaveShowroom = "Palikti",
handling = "Tvarkymas",
topSpeed = "Didžiausias greitis",
power = "Galia",
torque = "Sukimo momentas",
brake = "Stabdymas",
financing = "Finansavimas",
financingAvailable = "Galimas finansavimas",
paymentsOf = "mokėjimai iš",
clear = "Clear",
testDrive = "Bandomasis Važiavimas",
allCategories = "Visos Kategotijos",
sortByName = "Rušioti pagal: Pavadinimą",
sortByAvailability = "Rūšiuoti pagal: Prieinamumą",
sortByCheapest = "Rūšiuoti pagal: Pigiausias",
sortByMostExpensive = "Rūšiuoti pagal: Brangiausias",
sortByNewest = "Rūšiuoti pagal: Naujausias",
purchaseVehicle = "Pirkti tr.priemonę",
purchaseFor = "Pirkti už",
selectSociety = "Pasirinkite Bendriją",
financeOverPayments = "Finansuokite daugiau nei %{value} mokėjimų",
payToday = "Mokėkite šiandien",
financeThen = "Tada",
seeFullBreakdown = "Žiūrėti visą suskirstymą",
testDriveExit = "Galite bet kada išlipti iš transporto priemonės, kad baigtumėte bandomąjį važiavimą.",
-- NOTIFICATIONS
purchaseSuccess = "Sveikiname įsigijus pirkinį!",
depositSuccess = "Depozitas sėkmingas",
withdrawSuccess = "Išėmimas sėkmingas",
errorNotEnoughMoney = "Jūs neturite pakankamai pinigų",
errorVehicleOutOfStock = "Šios tr.priemonės nėra sandėlyje",
errorCannotAffordVehicle = "Jūs negalite sau leisti šios transporto priemonės",
vehicleFinancePaymentMade = "Pavedimas už tr.priemonę sėkmingas %{value}",
vehicleFinancePaidOff = "Sveikiname, jūs sumokėjote ir dabar turite nuosavą transporto priemonę %{value}",
vehicleFinancePaymentFailed = "Nepavyko nuskaičiuoti pinigų už tr.priemonę %{value}",
vehicleFinanceRepossessedSoon = "Turite sumokėti už savo tr.priemonę %{value} arba jūsų tr.priemonė netrukus bus grąžinta",
vehicleFinanceRepossessed = "Dėl nemokėjimo jūsų transporto priemonė buvo atimta su valstybiniu numeriu %{value}",
dealershipNotEnoughFunds = "Tr.priemonių parduotuvė neturi pakankamai lėšų",
dealershipVehiclesOrdered = "Transporto priemonė(s) sėkmingai užsakyta(os).",
dealershipOrderCancelled = "Užsakymas sėkmingai atšauktas",
errorVehicleWithSpawnCodeExists = "Transporto priemonė su šiuo kodu jau yra",
errorExitVehicle = "Pirmiausia turite išlipti iš transporto priemonės",
-- NEW v1.1
purchaseRequest = "Purchase Request",
sendRequest = "Send Request",
dealer = "Dealer",
financed = "Financed",
signHere = "Sign here",
signFirstError = "Please sign first",
denyRequest = "Deny Request",
playerTooManyFinancedVehicles = "Player has too many financed vehicles",
employeePermissionsError = "You don't have the necessary employee permissions",
managerRole = "Manager",
supervisorRole = "Supervisor",
salesRole = "Sales",
ownerRole = "Owner",
employmentRequest = "Employment Request",
accept = "Accept",
jobOfferDescription = "You have been offered a job at the \"%{value}\" dealership. Would you like to accept?",
pending = "Pending",
employeeHiredMsg = "Dealership hire request was accepted!",
employeeRejectedMsg = "Dealership hire request was rejected",
sellVehicle = "Sell Vehicle",
vehicleTerms = "Vehicle terms",
financePayments = "Finance Payments",
commission = "Commission",
role = "Role",
firedNotification = "You have been fired from the \"%{value}\" dealership",
dealershipTooFarAway = "You aren't near any dealerships",
restoreDisplayVehicles = "Restore Showroom",
customer = "Customer",
lessThanAMin = "Less than a minute",
mins = "min(s)",
notInVehicle = "You are not sat in a vehicle",
notYourVehicleError = "This vehicle does not belong to you",
vehicleFinancedError = "You cannot sell this vehicle because it has finance payments remaining",
dealershipDoesntSellVehicle = "This dealership can't purchase this vehicle",
dealershipWantsYourVehicle = "Congratulations! This dealership would like to purchase your vehicle.",
purchasePrice = "Offered price: ",
spawnCodeInvalid = "Spawn code invalid",
salesRep = "Sales Rep",
directSaleAccepted = "Direct sale request accepted! Your commission has been paid.",
directSaleRejected = "Direct sale request rejected"
}

View file

@ -0,0 +1,219 @@
Locales = Locales or {}
Locales['nl'] = {
-- UI
vehicle = "Voertuig",
vehicles = "Voertuigen",
dealership = "Autodealer",
dealerships = "Autodealers",
vehiclesCount = "Aantal voertuigen",
dealersCount = "Aantal dealers",
accountBalance = "Rekeningsaldo",
bank = "Bank",
cash = "Contant geld",
amount = "Bedrag",
societyFund = "Maatschappelijk fonds",
paymentSource = "Betaalbron",
purchase = "Aankoop",
personalPurchase = "Persoonlijke aankoop",
societyPurchase = "Maatschappelijke aankoop",
purchaseType = "Type aankoop",
deposit = "Storting",
withdraw = "Opname",
all = "Alle",
yes = "Ja",
no = "Nee",
add = "Toevoegen",
edit = "Bewerken",
id = "ID",
created = "Aangemaakt",
type = "Type",
name = "Naam",
owner = "Eigenaar",
bankBalance = "Banksaldo",
status = "Status",
back = "Terug",
previous = "Vorige",
next = "Volgende",
admin = "Beheerder",
vehiclesAdmin = "Voertuigbeheerder",
dealershipsAdmin = "Autodealer beheerder",
search = "Zoeken",
noDealershipsFound = "Geen autodealers gevonden",
noVehicles = "Geen voertuigen gevonden",
page = "Pagina",
of = "van",
every = "elke",
show = "Weergeven",
active = "Actief",
activeFinance = "Actieve financiering",
failed = "Betaling mislukt",
removed = "Verwijderd",
setOwner = "Eigenaar instellen",
manage = "Beheren",
deleteData = "Gegevens verwijderen",
deleteVehicle = "Voertuig verwijderen",
delete = "Verwijderen",
deleteConfirmation = "Weet je het zeker?",
deleteConfirmationDanger = "Weet je het zeker? Deze actie kan niet ongedaan worden gemaakt.",
setDealershipOwner = "Autodealer eigenaar instellen",
overwriteDealerPrices = "Dealerprijzen overschrijven",
nearbyPlayers = "Spelers in de buurt",
noPlayersNearby = "Geen spelers in de buurt",
selectPlayer = "Speler selecteren",
required = "Vereist",
forExample = "Bijvoorbeeld",
spawnCode = "Spawn-code",
brand = "Merk",
model = "Model",
category = "Categorie",
price = "Prijs",
import = "Importeren",
importing = "Importeren",
importBehaviour = "Importgedrag",
importVehicles = "Voertuigen importeren",
importFrom = "Importeren van",
dashboard = "Dashboard",
displayVehicle = "Voertuig weergeven",
displayVehicles = "Voertuigen weergeven",
orders = "Bestellingen",
sales = "Verkoop",
vehiclesOnDisplay = "Voertuigen op display",
employees = "Werknemers",
settings = "Instellingen",
switchVehicle = "Voertuig wisselen",
remove = "Verwijderen",
noDisplayVehicles = "Geen voertuigen op display",
selectVehicle = "Voertuig selecteren",
colour = "Kleur",
placeVehicle = "Voertuig plaatsen",
orderVehicle = "Voertuig bestellen",
cancelOrder = "Bestelling annuleren",
delivery = "Levering",
delivered = "Geleverd",
noOrders = "Geen bestellingen",
quantity = "Hoeveelheid",
totalCost = "Totale kosten",
totalSales = "Totale verkoop",
noSales = "Geen verkoop gevonden",
paid = "Betaald",
owed = "Verschuldigd",
dealershipName = "Naam autodealer",
save = "Wijzigingen opslaan",
cancel = "Annuleren",
notEnoughMoney = "Niet genoeg geld",
placeOrder = "Bestelling plaatsen",
purchaseCost = "Aankoopprijs",
salePrice = "Verkoopprijs",
inStock = "Op voorraad",
outOfStock = "Niet op voorraad",
placeVehiclePrompt = "Druk op %{value} om het voertuig te plaatsen. Daarna kun je verdere aanpassingen maken!",
remaining = "Resterend",
prePurchaseRepoWarning = "Als je je kredietbetalingen niet volgt, wordt je voertuig in beslag genomen.",
repossessionWarning = "Je laatste betaling is mislukt - als je nu niet betaalt, wordt je voertuig binnenkort in beslag genomen.",
recurringPayment = "Terugkerende betaling",
remainingBalance = "Resterend saldo",
remainingPayments = "Resterende betalingen",
paymentTakenEvery = "Betaling genomen om de",
hours = "Uur",
seconds = "Seconden",
nextPayment = "Volgende betaling",
makePayment = "Betaling doen",
vehicleRepossessed = "Voertuig wordt in beslag genomen",
payInFull = "Volledig betalen",
earlyPaymentConfirmation = "Weet je zeker dat je eerder wilt betalen?",
financedVehicles = "Gefinancierde voertuigen",
noFinancedVehicles = "Je hebt geen actieve gefinancierde voertuigen",
financeBreakdown = "Financiële breakdown",
initialPayment = "Eerste betaling",
payments = "Betalingen",
length = "Lengte",
interest = "Rente",
totalPayable = "Totaal te betalen",
leaveShowroom = "Showroom verlaten",
handling = "Besturing",
topSpeed = "Topsnelheid",
power = "Vermogen",
torque = "Koppel",
brake = "Rem",
financing = "Financiering",
financingAvailable = "Financiering beschikbaar",
paymentsOf = "betalingen van",
clear = "Wis",
testDrive = "Proefrit",
allCategories = "Alle categorieën",
sortByName = "Sorteer op naam",
sortByAvailability = "Sorteer op beschikbaarheid",
sortByCheapest = "Sorteer op goedkoopste",
sortByMostExpensive = "Sorteer op duurste",
sortByNewest = "Sorteer op nieuwste",
purchaseVehicle = "Voertuig kopen",
purchaseFor = "Kopen voor",
selectSociety = "Selecteer een samenleving",
financeOverPayments = "%{value} betalingen over financiering",
payToday = "Vandaag betalen",
financeThen = "Dan",
seeFullBreakdown = "Bekijk de volledige breakdown",
testDriveExit = "Je kunt op elk moment uit je voertuig stappen om de proefrit te beëindigen.",
-- NOTIFICATIONS
purchaseSuccess = "Bedankt voor je aankoop!",
depositSuccess = "Storting succesvol",
withdrawSuccess = "Opname succesvol",
errorNotEnoughMoney = "Niet genoeg geld",
errorVehicleOutOfStock = "Dit voertuig is niet op voorraad",
errorCannotAffordVehicle = "Je kunt dit voertuig niet betalen",
vehicleFinancePaymentMade = "Betaling van %{value} voor je voertuig is gelukt",
vehicleFinancePaidOff = "Gefeliciteerd, je hebt je voertuig volledig afbetaald! %{value}",
vehicleFinancePaymentFailed = "Betaling van %{value} voor je voertuig is mislukt",
vehicleFinanceRepossessedSoon = "Je moet betalen voor je voertuig %{value}, anders wordt het binnenkort in beslag genomen",
vehicleFinanceRepossessed = "Vanwege niet-betaling is je voertuig met kenteken %{value} in beslag genomen.",
dealershipNotEnoughFunds = "De autodealer heeft niet genoeg fondsen",
dealershipVehiclesOrdered = "Voertuigen succesvol besteld bij de autodealer",
dealershipOrderCancelled = "Bestelling bij de autodealer succesvol geannuleerd",
errorVehicleWithSpawnCodeExists = "Er bestaat al een voertuig met deze spawn-code",
errorExitVehicle = "Je moet eerst uit je voertuig stappen",
-- NEW v1.1
purchaseRequest = "Aankoopverzoek",
sendRequest = "Verzoek versturen",
dealer = "Dealer",
financed = "Gefinancierd",
signHere = "Onderteken hier",
signFirstError = "Onderteken eerst alsjeblieft",
denyRequest = "Verzoek afwijzen",
playerTooManyFinancedVehicles = "Deze speler heeft te veel gefinancierde voertuigen",
employeePermissionsError = "Je hebt niet de vereiste rechten als werknemer",
managerRole = "Manager",
supervisorRole = "Supervisor",
salesRole = "Verkoop",
ownerRole = "Eigenaar",
employmentRequest = "Verzoek tot aanstelling",
accept = "Accepteren",
jobOfferDescription = "Je hebt een baanaanbieding ontvangen van \"%{value}\" autodealer. Wil je het accepteren?",
pending = "In behandeling",
employeeHiredMsg = "Je bent aangenomen bij de autodealer!",
employeeRejectedMsg = "Je verzoek tot aanstelling bij de autodealer is afgewezen",
sellVehicle = "Voertuig verkopen",
vehicleTerms = "Voorwaarden voertuig",
financePayments = "Financiële betalingen",
commission = "Commissie",
role = "Rol",
firedNotification = "Je bent ontslagen bij de autodealer \"%{value}\"",
dealershipTooFarAway = "Je bent te ver verwijderd van een autodealer",
restoreDisplayVehicles = "Toon voertuigen",
customer = "Klant",
lessThanAMin = "Minder dan een minuut",
mins = "minuten",
notInVehicle = "Je zit niet in een voertuig",
notYourVehicleError = "Dit voertuig is niet van jou",
vehicleFinancedError = "Je kunt dit voertuig niet verkopen omdat er nog resterende financieringsbetalingen zijn",
dealershipDoesntSellVehicle = "Deze autodealer verkoopt dit voertuig niet",
dealershipWantsYourVehicle = "Gefeliciteerd! Deze autodealer wil je voertuig kopen.",
purchasePrice = "Aangeboden prijs: ",
spawnCodeInvalid = "Spawn code invalid",
salesRep = "Sales Rep",
directSaleAccepted = "Direct sale request accepted! Your commission has been paid.",
directSaleRejected = "Direct sale request rejected"
}

View file

@ -0,0 +1,219 @@
Locales = Locales or {}
Locales['no'] = {
-- UI
vehicle = "Kjøretøy",
vehicles = "Kjøretøy",
dealership = "Forhandler",
dealerships = "Forhandlere",
vehiclesCount = "Kjøretøy",
dealersCount = "Forhandlere",
accountBalance = "Saldo",
bank = "Bankkonto",
cash = "Kontant",
amount = "Beløp",
societyFund = "Bedriftskonto",
paymentSource = "Betalingsmetode",
purchase = "Kjøp",
personalPurchase = "Personlig Kjøp",
societyPurchase = "Bedrifts Kjøp",
purchaseType = "Kjøpstype",
deposit = "Innskudd",
withdraw = "Uttak",
all = "Alle",
yes = "Ja",
no = "Nei",
add = "Legg til",
edit = "Endre",
id = "ID",
created = "Opprettet",
type = "Type",
name = "Navn",
owner = "Eier",
bankBalance = "Saldo",
status = "Status",
back = "Tilbake",
previous = "tidligere",
next = "Neste",
admin = "Admin Meny",
vehiclesAdmin = "Kjøretøy Admin",
dealershipsAdmin = "Forhandler Admin",
search = "Søk",
noDealershipsFound = "Ingen forhandlere funnet",
noVehicles = "Ingen kjøretøy funnet",
page = "Side",
of = "av",
every = "hver",
show = "Vis",
active = "Aktiv",
activeFinance = "Aktiv Finansiering",
failed = "Betaling Feilet",
removed = "Fjernet",
setOwner = "Velg Eier",
manage = "Administrere",
deleteData = "Fjern Data",
deleteVehicle = "Slett Kjøretøy",
delete = "Slett",
deleteConfirmation = "Er du sikker?",
deleteConfirmationDanger = "Er du sikker? Denne handlingen kan ikke reverseres.",
setDealershipOwner = "Velg Forhandler Eier",
overwriteDealerPrices = "Overkjør forhandlerpriser",
nearbyPlayers = "Personer i nærheten",
noPlayersNearby = "Ingen personer i nærheten",
selectPlayer = "Velg spiller",
required = "Påkrevd",
forExample = "For eksempel",
spawnCode = "Spawn Kode",
brand = "Merke",
model = "Modell",
category = "Kategori",
price = "Pris",
import = "Importer",
importing = "Importerer",
importBehaviour = "Import Metode",
importVehicles = "Importer kjøretøy",
importFrom = "Importer Fra",
dashboard = "Hovedmeny",
displayVehicle = "Still ut kjøretøy",
displayVehicles = "Still ut kjøretøy",
orders = "Ordre",
sales = "Salg",
vehiclesOnDisplay = "Kjøretøy på utstilling",
employees = "Ansatte",
settings = "Instillinger",
switchVehicle = "Bytt kjøretøy",
remove = "Fjern",
noDisplayVehicles = "Ingen kjøretøy på utstilling",
selectVehicle = "Velg kjøretøy",
colour = "Farge",
placeVehicle = "Plasser kjøretøy",
orderVehicle = "Bestill kjøretøy",
cancelOrder = "Kanseller bestilling",
delivery = "Leveranse",
delivered = "Levert",
noOrders = "Ingen ordre funnet",
quantity = "Antall",
totalCost = "Totale utgifter",
totalSales = "Totale salg",
noSales = "Ingen salg funnet",
paid = "Betalt",
owed = "Å betale",
dealershipName = "Forhandlernavn",
save = "Lagre endringer",
cancel = "Avbryt",
notEnoughMoney = "Ikke nok penger",
placeOrder = "Legg inn bestilling",
purchaseCost = "Kjøpskostnad",
salePrice = "Salgspris",
inStock = "På lager",
outOfStock = "Utsolgt",
placeVehiclePrompt = "Trykk %{value} for å plassere kjøretøy. Du kan fortsette å justere etterpå!",
remaining = "Gjenstående",
prePurchaseRepoWarning = "Hvis ikke du kan betale for finansieringen, vil kjøretøyet ditt bli tatt tilbake!.",
repossessionWarning = "Din siste betalingen mislyktes - kjøretøyet blir tatt tilbake om du ikke gjennomfør en betaling til finansieringen nå! .",
recurringPayment = "Gjentakende Avdrag",
remainingBalance = "Gjenstående Saldo ",
remainingPayments = "Gjenstående Avdrag",
paymentTakenEvery = "Betaling tas hver",
hours = "time(r)",
seconds = "sekunder",
nextPayment = "Den neste betalingen skjer om",
makePayment = "Betal et avdrag",
vehicleRepossessed = "Kjøretøyet vil bli tatt tilbake",
payInFull = "Fullfør nedbetaling",
earlyPaymentConfirmation = "Er du sikker på at du vil gjennomføre et avdrag?",
financedVehicles = "Finansierte Kjøretøy",
noFinancedVehicles = "Du har ingen kjøretøy med aktive nedbetalinger",
financeBreakdown = "Finansplan",
initialPayment = "Førstegangsbetaling",
payments = "Betalinger",
length = "Lengde",
interest = "Renter",
totalPayable = "Totalt å betale",
leaveShowroom = "Forlat utstillingsrom",
handling = "Kjøreegenskaper",
topSpeed = "Topp Hastighet",
power = "Effekt",
torque = "Moment",
brake = "Bremser",
financing = "Finansiering",
financingAvailable = "Finansiering tilgjengelig",
paymentsOf = "betalinger av",
clear = "Tøm",
testDrive = "Prøvekjøring",
allCategories = "Alle Kategorier",
sortByName = "Sorter etter: Navn",
sortByAvailability = "Sorter etter: Tilgjengelighet",
sortByCheapest = "Sorter etter: Billigst",
sortByMostExpensive = "Sorter etter: Dyrest",
sortByNewest = "Sorter etter: Nyest",
purchaseVehicle = "Kjøp Kjøretøy",
purchaseFor = "Kjøp for",
selectSociety = "Velg Firma",
financeOverPayments = "Finansiering over %{value} betalinger",
payToday = "Betal i dag",
financeThen = "Da",
seeFullBreakdown = "Se fullstendig oversikt",
testDriveExit = "Du kan forlate kjøretøyet til en hver tid for å avslutte prøveturen.",
-- NOTIFICATIONS
purchaseSuccess = "Gratulerer med nytt kjøretøy!",
depositSuccess = "Innskudd vellykket",
withdrawSuccess = "Uttak vellykket",
errorNotEnoughMoney = "Du har ikke nok penger",
errorVehicleOutOfStock = "Dette kjøretøyet er ikke på lager",
errorCannotAffordVehicle = "Du har ikke råd til dette kjøretøyet",
vehicleFinancePaymentMade = "Nedbetaling gjennomført %{value}",
vehicleFinancePaidOff = "Gratulerer, du har nå betalt ferdig kjøretøyet, og er nå fulleier %{value}",
vehicleFinancePaymentFailed = "Nedbetaling for kjøretøyet feilet %{value}",
vehicleFinanceRepossessedSoon = "Du må gjennomføre et innskudd for kjøretøyet ditt %{value} ellers vil kjøretøyet bli tatt tilbake",
vehicleFinanceRepossessed = "På grunn av manglende betaling, har kjøretøyet ditt blitt tatt tilbake til forhandler. Gjelder kjøretøy med skiltnummer %{value}",
dealershipNotEnoughFunds = "Forhandleren har ikke nok penger",
dealershipVehiclesOrdered = "Bestilling av kjøretøy gjennomført",
dealershipOrderCancelled = "Bestillingen ble kansellert",
errorVehicleWithSpawnCodeExists = "Et kjøretøy med denne spawn koden finnes allerede",
errorExitVehicle = "Du må forlate kjøretøyet først",
-- NEW v1.1
purchaseRequest = "Kjøpsforespørsel",
sendRequest = "Send forespørsel",
dealer = "Forhandler",
financed = "Finansiert",
signHere = "Signer her",
signFirstError = "Vennligst signer først",
denyRequest = "Nekte forespørsel",
playerTooManyFinancedVehicles = "Spilleren har for mange finansierte kjøretøyer",
employeePermissionsError = "Du har ikke nødvendige ansattes tillatelser",
managerRole = "Sjef",
supervisorRole = "Veileder",
salesRole = "Salg",
ownerRole = "Eieren",
employmentRequest = "Ansettelsesforespørsel",
accept = "Aksepterer",
jobOfferDescription = "Du har blitt tilbudt en jobb på \"%{value}\" forhandler.Vil du godta?",
pending = "Pending",
employeeHiredMsg = "Kjøretlyforhandler tilbud ble akseptert!",
employeeRejectedMsg = "Kjøretlyforhandler tilbud ble avvist",
sellVehicle = "Selg kjøretøy",
vehicleTerms = "Kjøretøyer",
financePayments = "Finansbetalinger",
commission = "Kommisjon",
role = "Rolle",
firedNotification = "Du har fått sparken fra \"%{value}\" forhandler",
dealershipTooFarAway = "Du er ikke i nærheten av noen forhandlere",
restoreDisplayVehicles = "Gjenopprett showroom",
customer = "Kunde",
lessThanAMin = "Mindre enn ett minutt",
mins = "min(s)",
notInVehicle = "Du sitter ikke i et kjøretøy",
notYourVehicleError = "Dette kjøretøyet tilhører ikke deg",
vehicleFinancedError = "Du kan ikke selge dette kjøretøyet fordi det har finansbetalinger utestående",
dealershipDoesntSellVehicle = "Dette forhandleren kan ikke kjøpe dette kjøretøyet",
dealershipWantsYourVehicle = "Gratulerer! Denne forhandleren vil gjerne kjøpe kjøretøyet ditt.",
purchasePrice = "Tilbudt pris: ",
spawnCodeInvalid = "Spawn code invalid",
salesRep = "Sales Rep",
directSaleAccepted = "Direct sale request accepted! Your commission has been paid.",
directSaleRejected = "Direct sale request rejected"
}

View file

@ -0,0 +1,219 @@
Locales = Locales or {}
Locales['pl'] = {
-- UI
vehicle = "Pojazd",
vehicles = "Pojazdy",
dealership = "Dealer samochodowy",
dealerships = "Dealerzy samochodowi",
vehiclesCount = "Liczba pojazdów",
dealersCount = "Liczba dealerów",
accountBalance = "Saldo konta",
bank = "Bank",
cash = "Gotówka",
amount = "Kwota",
societyFund = "Fundusz społeczny",
paymentSource = "Źródło płatności",
purchase = "Zakup",
personalPurchase = "Osobisty zakup",
societyPurchase = "Zakup społeczny",
purchaseType = "Typ zakupu",
deposit = "Depozyt",
withdraw = "Wypłata",
all = "Wszystko",
yes = "Tak",
no = "Nie",
add = "Dodaj",
edit = "Edytuj",
id = "ID",
created = "Utworzono",
type = "Typ",
name = "Nazwa",
owner = "Właściciel",
bankBalance = "Saldo bankowe",
status = "Status",
back = "Powrót",
previous = "Poprzedni",
next = "Następny",
admin = "Administrator",
vehiclesAdmin = "Administrator pojazdów",
dealershipsAdmin = "Administrator dealerów",
search = "Szukaj",
noDealershipsFound = "Nie znaleziono dealerów samochodowych",
noVehicles = "Brak pojazdów",
page = "Strona",
of = "z",
every = "każdy",
show = "Pokaż",
active = "Aktywny",
activeFinance = "Aktywna finansowanie",
failed = "Niepowodzenie",
removed = "Usunięty",
setOwner = "Ustaw właściciela",
manage = "Zarządzaj",
deleteData = "Usuń dane",
deleteVehicle = "Usuń pojazd",
delete = "Usuń",
deleteConfirmation = "Na pewno?",
deleteConfirmationDanger = "Czy na pewno? Tej operacji nie można cofnąć.",
setDealershipOwner = "Ustaw właściciela dealerowi",
overwriteDealerPrices = "Nadpisz ceny dealerów",
nearbyPlayers = "Gracze w pobliżu",
noPlayersNearby = "Brak graczy w pobliżu",
selectPlayer = "Wybierz gracza",
required = "Wymagane",
forExample = "Na przykład",
spawnCode = "Kod spawnu",
brand = "Marka",
model = "Model",
category = "Kategoria",
price = "Cena",
import = "Importuj",
importing = "Importowanie",
importBehaviour = "Zachowanie importu",
importVehicles = "Importuj pojazdy",
importFrom = "Importuj z",
dashboard = "Deska rozdzielcza",
displayVehicle = "Wyświetl pojazd",
displayVehicles = "Wyświetl pojazdy",
orders = "Zamówienia",
sales = "Sprzedaż",
vehiclesOnDisplay = "Pojazdy na wystawie",
employees = "Pracownicy",
settings = "Ustawienia",
switchVehicle = "Zmień pojazd",
remove = "Usuń",
noDisplayVehicles = "Brak pojazdów na wystawie",
selectVehicle = "Wybierz pojazd",
colour = "Kolor",
placeVehicle = "Umieść pojazd",
orderVehicle = "Zamów pojazd",
cancelOrder = "Anuluj zamówienie",
delivery = "Dostawa",
delivered = "Dostarczono",
noOrders = "Brak zamówień",
quantity = "Ilość",
totalCost = "Całkowity koszt",
totalSales = "Całkowita sprzedaż",
noSales = "Brak sprzedaży",
paid = "Zapłacono",
owed = "Dłużne",
dealershipName = "Nazwa dealera samochodowego",
save = "Zapisz zmiany",
cancel = "Anuluj",
notEnoughMoney = "Za mało środków",
placeOrder = "Złóż zamówienie",
purchaseCost = "Koszt zakupu",
salePrice = "Cena sprzedaży",
inStock = "Na stanie",
outOfStock = "Brak w magazynie",
placeVehiclePrompt = "Naciśnij %{value}, aby umieścić pojazd. Następnie możesz wprowadzić dalsze zmiany!",
remaining = "Pozostało",
prePurchaseRepoWarning = "Jeśli nie spłacisz rat kredytu, twój pojazd zostanie zarekwirowany.",
repossessionWarning = "Twoja ostatnia płatność nie powiodła się - jeśli teraz nie zapłacisz, twój pojazd zostanie niedługo zarekwirowany.",
recurringPayment = "Płatność cykliczna",
remainingBalance = "Pozostałe saldo",
remainingPayments = "Pozostałe płatności",
paymentTakenEvery = "Płatność pobierana co",
hours = "Godzin",
seconds = "Sekundy",
nextPayment = "Następna płatność",
makePayment = "Dokonaj płatności",
vehicleRepossessed = "Twój pojazd zostanie zarekwirowany",
payInFull = "Zapłać całość",
earlyPaymentConfirmation = "Czy na pewno chcesz zapłacić wcześniej?",
financedVehicles = "Pojazdy objęte finansowaniem",
noFinancedVehicles = "Nie masz żadnych aktywnych pojazdów objętych finansowaniem",
financeBreakdown = "Podział finansów",
initialPayment = "Pierwsza płatność",
payments = "Płatności",
length = "Długość",
interest = "Oprocentowanie",
totalPayable = "Całkowita kwota do zapłaty",
leaveShowroom = "Opuść salon",
handling = "Zarządzanie",
topSpeed = "Maksymalna prędkość",
power = "Moc",
torque = "Moment obrotowy",
brake = "Hamulec",
financing = "Finansowanie",
financingAvailable = "Dostępne finansowanie",
paymentsOf = "płatności po",
clear = "Wyczyść",
testDrive = "Jazda próbna",
allCategories = "Wszystkie kategorie",
sortByName = "Sortuj według nazwy",
sortByAvailability = "Sortuj według dostępności",
sortByCheapest = "Sortuj według najniższej ceny",
sortByMostExpensive = "Sortuj według najwyższej ceny",
sortByNewest = "Sortuj według najnowszych",
purchaseVehicle = "Kup pojazd",
purchaseFor = "Kup dla",
selectSociety = "Wybierz społeczność",
financeOverPayments = "%{value} płatności ponad finansowanie",
payToday = "Zapłać dzisiaj",
financeThen = "Następnie",
seeFullBreakdown = "Zobacz pełny podział",
testDriveExit = "Możesz w każdej chwili opuścić pojazd, aby zakończyć jazdę próbną.",
-- NOTIFICATIONS
purchaseSuccess = "Dziękujemy za zakup!",
depositSuccess = "Udany depozyt",
withdrawSuccess = "Udany przelew",
errorNotEnoughMoney = "Za mało środków",
errorVehicleOutOfStock = "Ten pojazd nie jest dostępny",
errorCannotAffordVehicle = "Nie stać cię na ten pojazd",
vehicleFinancePaymentMade = "Płatność %{value} za twój pojazd zakończona powodzeniem",
vehicleFinancePaidOff = "Gratulacje, spłaciłeś swojego pojazda! Pozostało %{value}",
vehicleFinancePaymentFailed = "Płatność %{value} za twój pojazd nie powiodła się",
vehicleFinanceRepossessedSoon = "Musisz zapłacić %{value} za twój pojazd, w przeciwnym razie wkrótce zostanie zarekwirowany",
vehicleFinanceRepossessed = "Z powodu niezapłacenia, twój pojazd o numerze rejestracyjnym %{value} został zarekwirowany.",
dealershipNotEnoughFunds = "Dealer samochodowy nie ma wystarczających funduszy",
dealershipVehiclesOrdered = "Pojazdy zostały pomyślnie zamówione u dealera samochodowego",
dealershipOrderCancelled = "Zamówienie u dealera samochodowego zostało pomyślnie anulowane",
errorVehicleWithSpawnCodeExists = "Pojazd o tym kodzie spawnu już istnieje",
errorExitVehicle = "Najpierw musisz opuścić pojazd",
-- NEW v1.1
purchaseRequest = "Prośba o zakup",
sendRequest = "Wyślij prośbę",
dealer = "Dealer",
financed = "Finansowane",
signHere = "Podpisz tutaj",
signFirstError = "Najpierw podpisz, proszę",
denyRequest = "Odrzuć prośbę",
playerTooManyFinancedVehicles = "Ten gracz ma zbyt wiele finansowanych pojazdów",
employeePermissionsError = "Nie masz wymaganych uprawnień jako pracownik",
managerRole = "Manager",
supervisorRole = "Przełożony",
salesRole = "Sprzedaż",
ownerRole = "Właściciel",
employmentRequest = "Prośba o zatrudnienie",
accept = "Akceptuj",
jobOfferDescription = "Otrzymałeś ofertę pracy od \"%{value}\" dealera samochodowego. Czy chcesz ją zaakceptować?",
pending = "Oczekuje",
employeeHiredMsg = "Zostałeś zatrudniony u dealera samochodowego!",
employeeRejectedMsg = "Twoja prośba o zatrudnienie u dealera samochodowego została odrzucona",
sellVehicle = "Sprzedaj pojazd",
vehicleTerms = "Warunki pojazdu",
financePayments = "Płatności finansowe",
commission = "Prowizja",
role = "Rola",
firedNotification = "Zostałeś zwolniony u dealera samochodowego \"%{value}\"",
dealershipTooFarAway = "Jesteś zbyt daleko od dealera samochodowego",
restoreDisplayVehicles = "Przywróć pojazdy",
customer = "Klient",
lessThanAMin = "Mniej niż minutę",
mins = "minut(y)",
notInVehicle = "Nie jesteś w pojeździe",
notYourVehicleError = "Ten pojazd nie należy do ciebie",
vehicleFinancedError = "Nie możesz sprzedać tego pojazdu, ponieważ pozostały jeszcze płatności finansowe",
dealershipDoesntSellVehicle = "Ten dealer samochodowy nie sprzedaje tego pojazdu",
dealershipWantsYourVehicle = "Gratulacje! Ten dealer samochodowy chce kupić twój pojazd.",
purchasePrice = "Zaproponowana cena: ",
spawnCodeInvalid = "Spawn code invalid",
salesRep = "Sales Rep",
directSaleAccepted = "Direct sale request accepted! Your commission has been paid.",
directSaleRejected = "Direct sale request rejected"
}

View file

@ -0,0 +1,219 @@
Locales = Locales or {}
Locales['pt'] = {
-- UI
vehicle = "Veículo",
vehicles = "Veículos",
dealership = "Concessionária",
dealerships = "Concessionárias",
vehiclesCount = "veículo(s)",
dealersCount = "concessionária(s)",
accountBalance = "Saldo da Conta",
bank = "Conta Bancária",
cash = "Dinheiro",
amount = "Valor",
societyFund = "Fundo da Sociedade",
paymentSource = "Origem do Pagamento",
purchase = "Compra",
personalPurchase = "Compra Pessoal",
societyPurchase = "Compra da Sociedade",
purchaseType = "Tipo de Compra",
deposit = "Depósito",
withdraw = "Retirar",
all = "Todos",
yes = "Sim",
no = "Não",
add = "Adicionar",
edit = "Editar",
id = "ID",
created = "Criado",
type = "Tipo",
name = "Nome",
owner = "Proprietário",
bankBalance = "Saldo Bancário",
status = "Status",
back = "Voltar",
previous = "Anterior",
next = "Próximo",
admin = "Admin",
vehiclesAdmin = "Administração de Veículos",
dealershipsAdmin = "Administração de Concessionárias",
search = "Buscar",
noDealershipsFound = "Nenhuma concessionária encontrada",
noVehicles = "Nenhum veículo encontrado",
page = "Página",
of = "de",
every = "todos",
show = "Mostrar",
active = "Ativo",
activeFinance = "Financiamento Ativo",
failed = "Pagamento Falhou",
removed = "Removido",
setOwner = "Definir Proprietário",
manage = "Gerenciar",
deleteData = "Excluir Dados",
deleteVehicle = "Excluir Veículo",
delete = "Excluir",
deleteConfirmation = "Você tem certeza?",
deleteConfirmationDanger = "Você tem certeza? Essa ação é irreversível.",
setDealershipOwner = "Definir Proprietário da Concessionária",
overwriteDealerPrices = "Sobrescrever preços da concessionária",
nearbyPlayers = "Jogadores Próximos",
noPlayersNearby = "Nenhum jogador próximo",
selectPlayer = "Selecionar jogador",
required = "Obrigatório",
forExample = "Por exemplo",
spawnCode = "Código de Spawn",
brand = "Marca",
model = "Modelo",
category = "Categoria",
price = "Preço",
import = "Importar",
importing = "Importando",
importBehaviour = "Comportamento de Importação",
importVehicles = "Importar veículos",
importFrom = "Importar de",
dashboard = "Painel de Controle",
displayVehicle = "Exibir Veículo",
displayVehicles = "Exibir Veículos",
orders = "Pedidos",
sales = "Vendas",
vehiclesOnDisplay = "Veículos em Exibição",
employees = "Funcionários",
settings = "Configurações",
switchVehicle = "Trocar Veículo",
remove = "Remover",
noDisplayVehicles = "Nenhum veículo em exibição",
selectVehicle = "Selecionar veículo",
colour = "Cor",
placeVehicle = "Colocar Veículo",
orderVehicle = "Pedir Veículo",
cancelOrder = "Cancelar Pedido",
delivery = "Entrega",
delivered = "Entregue",
noOrders = "Nenhum pedido encontrado",
quantity = "Quantidade",
totalCost = "Custo Total",
totalSales = "Total de Vendas",
noSales = "Nenhuma venda encontrada",
paid = "Pago",
owed = "Devido",
dealershipName = "Nome da Concessionária",
save = "Salvar Alterações",
cancel = "Cancelar",
notEnoughMoney = "Dinheiro insuficiente",
placeOrder = "Fazer Pedido",
purchaseCost = "Custo de Compra",
salePrice = "Preço de Venda",
inStock = "Em estoque",
outOfStock = "Sem estoque",
placeVehiclePrompt = "Pressione %{value} para colocar o veículo. Podes fazer ajustes finos posteriormente!",
remaining = "Restante",
prePurchaseRepoWarning = "Se não conseguires pagar as suas parcelas, o teu veículo será retomado.",
repossessionWarning = "O teu último pagamento falhou - o teu veículo será retomado, a menos que faças um pagamento agora.",
recurringPayment = "Pagamento Recorrente",
remainingBalance = "Saldo Restante",
remainingPayments = "Parcelas Restantes",
paymentTakenEvery = "Pagamento realizado a cada",
hours = "horas",
seconds = "segundos",
nextPayment = "Próximo pagamento",
makePayment = "Realizar pagamento",
vehicleRepossessed = "Veículo será retomado",
payInFull = "Pagar integralmente",
earlyPaymentConfirmation = "Tem certeza de que deseja fazer um pagamento antecipado de",
financedVehicles = "Veículos Financiados",
noFinancedVehicles = "Não possui veículos com financiamento ativo",
financeBreakdown = "Detalhes do Financiamento",
initialPayment = "Pagamento Inicial",
payments = "Parcelas",
length = "Duração",
interest = "Juros",
totalPayable = "Total a Pagar",
leaveShowroom = "Sair da Exibição",
handling = "Manuseio",
topSpeed = "Velocidade Máxima",
power = "Potência",
torque = "Torque",
brake = "Freio",
financing = "Financiamento",
financingAvailable = "Financiamento disponível",
paymentsOf = "parcelas de",
clear = "Limpar",
testDrive = "Test Drive",
allCategories = "Todas as Categorias",
sortByName = "Ordenar por: Nome",
sortByAvailability = "Ordenar por: Disponibilidade",
sortByCheapest = "Ordenar por: Mais Barato",
sortByMostExpensive = "Ordenar por: Mais Caro",
sortByNewest = "Ordenar por: Mais Recente",
purchaseVehicle = "Comprar Veículo",
purchaseFor = "Comprar para",
selectSociety = "Selecionar uma sociedade",
financeOverPayments = "Financiar em %{value} parcelas",
payToday = "Pagar hoje",
financeThen = "Depois",
seeFullBreakdown = "Ver detalhes completos",
testDriveExit = "Pode sair do veículo a qualquer momento para encerrar o teste drive.",
-- NOTIFICATIONS
purchaseSuccess = "Parabéns pela sua compra!",
depositSuccess = "Depósito realizado com sucesso",
withdrawSuccess = "Retirada realizada com sucesso",
errorNotEnoughMoney = "Você não tem dinheiro suficiente",
errorVehicleOutOfStock = "Este veículo está sem estoque",
errorCannotAffordVehicle = "Você não pode pagar por este veículo",
vehicleFinancePaymentMade = "Pagamento do financiamento realizado para o seu veículo %{value}",
vehicleFinancePaidOff = "Parabéns, você quitou e agora é dono do seu veículo %{value}",
vehicleFinancePaymentFailed = "Falha no pagamento do financiamento para o seu veículo %{value}",
vehicleFinanceRepossessedSoon = "Precisa fazer um pagamento para o teu veículo %{value} ou ele será retomado em breve",
vehicleFinanceRepossessed = "Devido à falta de pagamento, o teu veículo foi retomado com a placa %{value}",
dealershipNotEnoughFunds = "A concessionária não tem fundos suficientes",
dealershipVehiclesOrdered = "Veículo(s) foram pedidos com sucesso",
dealershipOrderCancelled = "Pedido cancelado com sucesso",
errorVehicleWithSpawnCodeExists = "Já existe um veículo com este código de spawn",
errorExitVehicle = "Precisa sair do veículo primeiro",
-- NEW v1.1
purchaseRequest = "Pedido de compra",
sendRequest = "Enviar pedido",
dealer = "Comerciante",
financed = "Financiado",
signHere = "Assinar aqui",
signFirstError = "Por favor, assine primeiro",
denyRequest = "Recusar pedido",
playerTooManyFinancedVehicles = "O jogador tem demasiados veículos financiados",
employeePermissionsError = "Não tem as permissões necessárias para os empregados",
managerRole = "Diretor",
supervisorRole = "Supervisor",
salesRole = "Vendas",
ownerRole = "Proprietário",
employmentRequest = "Pedido de emprego",
accept = "Aceitar",
jobOfferDescription = "Ofereceram-lhe um emprego no concessionário \"%{value}\". Gostarias de aceitar?",
pending = "Pendente",
employeeHiredMsg = "O pedido de aluguer do concessionário foi aceite!",
employeeRejectedMsg = "O pedido de aluguer do concessionário foi rejeitado",
sellVehicle = "Vender veículo",
vehicleTerms = "Condições do veículo",
financePayments = "Pagamentos financeiros",
commission = "Comissão",
role = "Papel",
firedNotification = "Foi despedido do concessionário \"%{value}\"",
dealershipTooFarAway = "Não está perto de nenhum concessionário",
restoreDisplayVehicles = "Salão de exposição Restore",
customer = "Cliente",
lessThanAMin = "Menos de um minuto",
mins = "mínimo(s)",
notInVehicle = "Não está sentado num veículo",
notYourVehicleError = "Este veículo não lhe pertence",
vehicleFinancedError = "Não pode vender este veículo porque ainda tem prestações de financiamento",
dealershipDoesntSellVehicle = "Este concessionário não pode comprar este veículo",
dealershipWantsYourVehicle = "Parabéns! Este concessionário gostaria de comprar o seu veículo.",
purchasePrice = "Preço de oferta: ",
spawnCodeInvalid = "Spawn code invalid",
salesRep = "Sales Rep",
directSaleAccepted = "Direct sale request accepted! Your commission has been paid.",
directSaleRejected = "Direct sale request rejected"
}

View file

@ -0,0 +1,219 @@
Locales = Locales or {}
Locales['sv'] = {
-- UI
vehicle = "Fordon",
vehicles = "Fordon",
dealership = "Bilfirma",
dealerships = "Bilfirmor",
vehiclesCount = "Fordon",
dealersCount = "Bilfirmor",
accountBalance = "Konto Saldo",
bank = "Bankkonto",
cash = "Kontant",
amount = "Summa",
societyFund = "Företagskonto",
paymentSource = "Betalningsmetod",
purchase = "Köp",
personalPurchase = "Personligtköp",
societyPurchase = "Företagsköp",
purchaseType = "Köp typ",
deposit = "Sätt in",
withdraw = "Ta ut",
all = "Alla",
yes = "Ja",
no = "Nej",
add = "Lägg till",
edit = "Ändra",
id = "ID",
created = "Skapad",
type = "Typ",
name = "Namn",
owner = "Ägare",
bankBalance = "Banksaldo",
status = "Status",
back = "Tillbaka",
previous = "Förgående",
next = "Nästa",
admin = "Admin",
vehiclesAdmin = "Fordons Admin",
dealershipsAdmin = "Firma Admin",
search = "Sök",
noDealershipsFound = "Inga firmor hittades",
noVehicles = "Inga fordon hittades",
page = "Sida",
of = "av",
every = "varje",
show = "Visa",
active = "Aktiv",
activeFinance = "Aktiv Delbetalning",
failed = "Betalnings misslyckades",
removed = "Borttagen",
setOwner = "Sätt ägare",
manage = "Ändra",
deleteData = "Tabort Data",
deleteVehicle = "Tabort Fordon",
delete = "Tabort",
deleteConfirmation = "Är du säker?",
deleteConfirmationDanger = "Är du säker? Denna är oreversebalt.",
setDealershipOwner = "Sätt firma ägare",
overwriteDealerPrices = "Överskriv firma priser",
nearbyPlayers = "Närliggande spelare",
noPlayersNearby = "Inga spelare i närheten",
selectPlayer = "Välj spelare",
required = "Obligatorisk",
forExample = "För exempel",
spawnCode = "Spawnnamn",
brand = "Märke",
model = "Modell",
category = "Kategori",
price = "Pris",
import = "Import",
importing = "Importerar",
importBehaviour = "Importera behaviour",
importVehicles = "Importera Fordon",
importFrom = "Importera från",
dashboard = "Översikt",
displayVehicle = "Uppvisa Fordon",
displayVehicles = "Uppvisade Fordon",
orders = "Beställningar",
sales = "Försäljningar",
vehiclesOnDisplay = "Uppvisade Fordon",
employees = "Anställda",
settings = "Inställningar",
switchVehicle = "Byt Fordon",
remove = "Ta bort",
noDisplayVehicles = "Inga uppvisade fordon",
selectVehicle = "Välj fordon",
colour = "Färg",
placeVehicle = "Placera Fordon",
orderVehicle = "Beställ Fordon",
cancelOrder = "Avbryt Order",
delivery = "Leverans",
delivered = "Levererad",
noOrders = "Inga beställningar hittades",
quantity = "Mängd",
totalCost = "Totala kostnad",
totalSales = "Totala försäljningar",
noSales = "Inga försäljningar hittades",
paid = "Betalad",
owed = "Delbetalad",
dealershipName = "Bilfirma Namn",
save = "Spara Ändringar",
cancel = "Avbryt",
notEnoughMoney = "Du har inte råd",
placeOrder = "Placera Beställning",
purchaseCost = "Kostnad",
salePrice = "Försäljnings Pris",
inStock = "I lager",
outOfStock = "Slut i lager",
placeVehiclePrompt = "Tryck %{value} för att placera fordon. Du kan finjustera efteråt!",
remaining = "Kvartstående",
prePurchaseRepoWarning = "Om du inte hinner betala fordonet i tid så kommer det att återtas.",
repossessionWarning = "Din senaste betalning misslyckades - Ditt fordon kommer att återhämtas om du inte gör en betalning nu.",
recurringPayment = "Återkommande Betalning",
remainingBalance = "Kvarstående Balans",
remainingPayments = "Kvartsående Betalningar",
paymentTakenEvery = "Betalning hämtas varje",
hours = "timmar",
seconds = "sekunder",
nextPayment = "Nästa betalning",
makePayment = "Utför betalning",
vehicleRepossessed = "Ditt fordon kommer återtas",
payInFull = "Betala av helt",
earlyPaymentConfirmation = "Är du säker på att du vill göra en förbetalning på",
financedVehicles = "Delbetalade Fordon",
noFinancedVehicles = "Du har inga delbetalde fordon",
financeBreakdown = "Finans Översikt",
initialPayment = "Första betalning",
payments = "Betalningar",
length = "Längd",
interest = "Ränta",
totalPayable = "Totals Betalbart",
leaveShowroom = "Lämna bilkatalog",
handling = "Handling",
topSpeed = "Topp Hastighet",
power = "Kraft",
torque = "Vridmoment",
brake = "Broms",
financing = "Delbetalning",
financingAvailable = "Delbetalning Tillgängligt",
paymentsOf = "betalningar på",
clear = "Rensa",
testDrive = "Testkör",
allCategories = "Alla Kategorier",
sortByName = "Sortera: Namn",
sortByAvailability = "Sortera: Lager",
sortByCheapest = "Sortera: Billigast",
sortByMostExpensive = "Sortera: Dyrast",
sortByNewest = "Sortera: Nyast",
purchaseVehicle = "Köp Fordon",
purchaseFor = "Köp för",
selectSociety = "Välj företag",
financeOverPayments = "Delbetala över %{value} betalningar",
payToday = "Betala idag",
financeThen = "Sedan",
seeFullBreakdown = "Se hela översikten",
testDriveExit = "Du kan kliva ut ur fordonet när som för att avbryta testkörningen",
-- NOTIFICATIONS
purchaseSuccess = "Grattis på ditt fordon!",
depositSuccess = "Instättning lyckades",
withdrawSuccess = "Uttag lyckades",
errorNotEnoughMoney = "Du har inte råd",
errorVehicleOutOfStock = "Detta fordon är slut i lager",
errorCannotAffordVehicle = "Du har inte råd med detta fordon",
vehicleFinancePaymentMade = "Betalning gjordes för ditt fordon %{value}",
vehicleFinancePaidOff = "Grattis, du har betalat av och äger nu %{value}",
vehicleFinancePaymentFailed = "Delbetalning misslyckades för %{value}",
vehicleFinanceRepossessedSoon = "Du måste göra en betalning för %{value} annars kommer ditt fordon återtas inom kort",
vehicleFinanceRepossessed = "Pågrund av en misslyckad betalning, så har ditt fordon med regplåt %{value} återhämtats.",
dealershipNotEnoughFunds = "Firman har inte råd",
dealershipVehiclesOrdered = "Fordon(en) har beställts",
dealershipOrderCancelled = "Beställning avbröts",
errorVehicleWithSpawnCodeExists = "Ett fordon med detta spawnnamn finns redan",
errorExitVehicle = "Du måste lämna ditt fordon först",
-- NEW v1.1
purchaseRequest = "Betalnings förfrågan",
sendRequest = "Skicka förfrågan",
dealer = "Bilfirma",
financed = "Delbetalad",
signHere = "Singnera här",
signFirstError = "Vänligen signera först",
denyRequest = "Neka Förfrågan",
playerTooManyFinancedVehicles = "Spelaren har för många delbetalade fordon",
employeePermissionsError = "Du har inte rätt behörigheter för att utföra detta",
managerRole = "Chef",
supervisorRole = "Handledare",
salesRole = "Försäljare",
ownerRole = "Ägare",
employmentRequest = "Anställnings Förfrågan",
accept = "Acceptera",
jobOfferDescription = "Du har blivit erbjuden ett jobb på \"%{value}\". Vill du godkänna detta jobb?",
pending = "Väntar",
employeeHiredMsg = "Anställnings förfrågan accepterades!",
employeeRejectedMsg = "Anställnings förfrågan nekades",
sellVehicle = "Sälj Fordon",
vehicleTerms = "Fordons vilkor",
financePayments = "Mängd Delbetalningar",
commission = "Provision",
role = "Roll",
firedNotification = "Du har blivit avskedad från \"%{value}\"",
dealershipTooFarAway = "Du är inte i närheten av en bilfirma",
restoreDisplayVehicles = "Återställ Uppvisade Fordon",
customer = "Kund",
lessThanAMin = "Mindre än en minut",
mins = "minut(er)",
notInVehicle = "Du sitter inte i ett fordon",
notYourVehicleError = "Detta fordon tillhör inte dig",
vehicleFinancedError = "Du kan inte sälja detta fordon för det är inte avbetalat än",
dealershipDoesntSellVehicle = "Bilfirman kan inte köpa detta fordon",
dealershipWantsYourVehicle = "Grattis! Bilfirman hade velat köpa ditt fordon!.",
purchasePrice = "Erbjudet pris: ",
spawnCodeInvalid = "Spawnnamn Ogiltigt",
salesRep = "Försäljare",
directSaleAccepted = "Försäljningen accepterades, du har fått din provision!",
directSaleRejected = "Försäljningen misslyckades"
}

View file

@ -0,0 +1,219 @@
Locales = Locales or {}
Locales['tr'] = {
-- UI
vehicle = "Araç",
vehicles = "Araçlar",
dealership = "Galeri",
dealerships = "Galeriler",
vehiclesCount = "Araçlar",
dealersCount = "Galeriler",
accountBalance = "Hesap Bakiyesi",
bank = "Banka",
cash = "Nakit",
amount = "Miktar",
societyFund = "Toplum Fonu",
paymentSource = "Ödeme Türü",
purchase = "Satın al",
personalPurchase = "Kişisel satın al",
societyPurchase = "Toplum satın al",
purchaseType = "Satın Alma Türü",
deposit = "Depozito",
withdraw = "Geri çek",
all = "Hepsi",
yes = "Evet",
no = "Hayır",
add = "Ekle",
edit = "Düzenle",
id = "ID",
created = "Oluşturuldu",
type = "Tip",
name = "İsim",
owner = "Mal sahibi",
bankBalance = "Banka hesap bakiyesi",
status = "Durum",
back = "Geri",
previous = "Önceki",
next = "Sonraki",
admin = "Yönetici",
vehiclesAdmin = "Araç Yöneticisi",
dealershipsAdmin = "Galeri Yöneticisi",
search = "Ara",
noDealershipsFound = "Galeri bulunamadı",
noVehicles = "Araç bulunamadı",
page = "Sayfa",
of = "ile ilgili",
every = "her bir",
show = "Göster",
active = "Aktif",
activeFinance = "Kredi Aktif",
failed = "Ödeme başarısız",
removed = "Kaldırıldı",
setOwner = "Sahibini Ayarla",
manage = "Ayarlar",
deleteData = "Verileri Sil",
deleteVehicle = "Aracı Sil",
delete = "Sil",
deleteConfirmation = "Emin misin?",
deleteConfirmationDanger = "Emin misin? Bu işlem geri alınamaz.",
setDealershipOwner = "Galeri Sahibini Ayarla",
overwriteDealerPrices = "Galeri fiyatlarının üzerine yaz",
nearbyPlayers = "Yakındaki oyuncular",
noPlayersNearby = "Yakınlarda oyuncu yok",
selectPlayer = "Kişi seç",
required = "Gerekli",
forExample = "Örneğin",
spawnCode = "ınlama Kodu",
brand = "Marka",
model = "Model",
category = "Katagori",
price = "Fiyat",
import = "İçe aktar",
importing = "İthalat",
importBehaviour = "Davranışı İçe Aktar",
importVehicles = "Araçları içe aktarın",
importFrom = "için aktar",
dashboard = "Gösterge Paneli",
displayVehicle = "Araç Görüntüle",
displayVehicles = "Araç Görüntüle",
orders = "Emirler",
sales = "Satış",
vehiclesOnDisplay = "Sergilenen araçlar",
employees = "Çalışanlar",
settings = "Ayarlar",
switchVehicle = "Araç Değiştir",
remove = "Kaldır",
noDisplayVehicles = "Gösterilen araç yok",
selectVehicle = "Araç seçin",
colour = "Renk",
placeVehicle = "Araç Yerleştir",
orderVehicle = "Araç Siparişi",
cancelOrder = "Siparişi iptal et",
delivery = "Teslimat",
delivered = "Teslim edilenler",
noOrders = "Sipariş Bulunamadı",
quantity = "Miktar",
totalCost = "Toplam tutar",
totalSales = "Total sales",
noSales = "Satış bulunamadı",
paid = "Nakit Ödeme",
owed = "Kredi Çek",
dealershipName = "Galeri Adı",
save = "Değişiklikleri Kaydet",
cancel = "Vazgeç",
notEnoughMoney = "Yetersiz para",
placeOrder = "Sipariş Ver",
purchaseCost = "Satın alma maliyeti",
salePrice = "Satış ücreti",
inStock = "Stokta var",
outOfStock = "Stoklar tükendi",
placeVehiclePrompt = "Aracı yerleştirmek için %{value} tuşuna basın. Sonrasında daha ince ayarlamalar yapabilirsiniz!",
remaining = "Geriye kalan",
prePurchaseRepoWarning = "Kredi ödemelerinizi takip edemezseniz, aracınıza el konulacaktır..",
repossessionWarning = "Son ödemeniz başarısız oldu - şimdi ödeme yapmazsanız aracınıza el konulacak.",
recurringPayment = "Yinelenen ödeme",
remainingBalance = "Kalan bakiye",
remainingPayments = "Kalan ödemeler",
paymentTakenEvery = "Ödeme alındı",
hours = "Saat",
seconds = "Saniye",
nextPayment = "Sonraki ödeme",
makePayment = "Ödeme yap",
vehicleRepossessed = "Araç geri alınacaktır",
payInFull = "Hepsini öde",
earlyPaymentConfirmation = "Erken ödeme yapmak istediğinizden emin misiniz?",
financedVehicles = "Kredili Araçlar",
noFinancedVehicles = "Aktif Krediye sahip aracınız yok",
financeBreakdown = "Kredi Dağılımı",
initialPayment = "İlk ödeme",
payments = "Ödemeler",
length = "Uzunluk",
interest = "Faiz",
totalPayable = "Toplam Ödenecek Tutar",
leaveShowroom = "Showroom'dan Ayrıl",
handling = "kullanım",
topSpeed = "En yüksek hız",
power = "Güç",
torque = "Tork",
brake = "Fren",
financing = "Finansman",
financingAvailable = "Finansman Mevcut",
paymentsOf = "ödemeleri",
clear = "Temizle",
testDrive = "Test Sürüşü",
allCategories = "Tüm Kategoriler",
sortByName = "İsme göre sırala",
sortByAvailability = "satışa göre sırala",
sortByCheapest = "En ucuza göre sırala",
sortByMostExpensive = "En pahalıya göre sırala",
sortByNewest = "Yeniye göre sırala",
purchaseVehicle = "Araç Satın Al",
purchaseFor = "için satın al",
selectSociety = "Bir topluluk seçin",
financeOverPayments = "%{value} ödeme üzerinden finansman",
payToday = "Bugün öde",
financeThen = "Daha sonra",
seeFullBreakdown = "Tam dökümü görün",
testDriveExit = "Test sürüşünü erken sonlandırmak için istediğiniz zaman aracınızdan çıkabilirsiniz..",
-- NOTIFICATIONS
purchaseSuccess = "Satın aldığınız için teşekkürler!",
depositSuccess = "Para yatırma işlemi başarılı",
withdrawSuccess = "Para çekme başarılı",
errorNotEnoughMoney = "Yeterli paran yok",
errorVehicleOutOfStock = "Bu araç stokta yok",
errorCannotAffordVehicle = "Bu araca paranız yetmez",
vehicleFinancePaymentMade = "Aracınız için yapılan kredi ödemesi %{value}",
vehicleFinancePaidOff = "Tebrikler, parasını ödediniz ve şimdi aracınızın sahibi oldunuz %{value}",
vehicleFinancePaymentFailed = "%{value} aracınız için kredi ödemesi başarısız oldu",
vehicleFinanceRepossessedSoon = "%{value} aracınız için kredi ödemesi yapmanız gerekiyor, aksi takdirde aracınıza yakında el konulacak",
vehicleFinanceRepossessed = "Ödeme yapılmaması nedeniyle, %{value} plakalı aracınıza el konuldu.",
dealershipNotEnoughFunds = "Bayinin yeterli fonu yok",
dealershipVehiclesOrdered = "Araçlar başarıyla sipariş edildi",
dealershipOrderCancelled = "Sipariş başarıyla iptal edildi",
errorVehicleWithSpawnCodeExists = "Bu ışınlanma koduna sahip bir araç zaten var",
errorExitVehicle = "Önce aracınızdan çıkmanız gerekiyor",
-- NEW v1.1
purchaseRequest = "Satın Alma Talebi",
sendRequest = "İstek Gönder",
dealer = "Bayi",
financed = "Finanse Edildi",
signHere = "Burayı imzalayın",
signFirstError = "Lütfen önce imzalayın",
denyRequest = "Talebi Reddet",
playerTooManyFinancedVehicles = "Oyuncunun çok fazla finanse edilmiş aracı var",
employeePermissionsError = "Gerekli çalışan izinlerine sahip değilsiniz",
managerRole = "Müdür",
supervisorRole = "Süpervizör",
salesRole = "Satış",
ownerRole = "Sahibi",
employmentRequest = "İstihdam Talebi",
accept = "Kabul et",
jobOfferDescription = "Size \"%{değer}\" bayisinden bir iş teklifi geldi. Kabul etmek ister misiniz?",
pending = "Beklemede",
employeeHiredMsg = "Bayilik kiralama talebi kabul edildi!",
employeeRejectedMsg = "Bayilik kiralama talebi reddedildi",
sellVehicle = "Araç Satışı",
vehicleTerms = "Araç şartları",
financePayments = "Finans Ödemeleri",
commission = "Komisyon",
role = "Rol",
firedNotification = "\"%{değer}\" bayiliğinden kovuldunuz",
dealershipTooFarAway = "Hiçbir bayiye yakın değilsiniz",
restoreDisplayVehicles = "Gösteri Merkezi",
customer = "Müşteri",
lessThanAMin = "Bir dakikadan az",
mins = "dakika(lar)",
notInVehicle = "Bir aracın içinde oturmuyorsunuz",
notYourVehicleError = "Bu araç size ait değil",
vehicleFinancedError = "Bu aracı satamazsınız çünkü kalan finansman ödemeleri var",
dealershipDoesntSellVehicle = "Bu bayi bu aracı satın alamaz",
dealershipWantsYourVehicle = "Tebrikler! Bu bayi aracınızı satın almak istiyor.",
purchasePrice = "Teklif edilen fiyat: ",
spawnCodeInvalid = "Spawn code invalid",
salesRep = "Sales Rep",
directSaleAccepted = "Direct sale request accepted! Your commission has been paid.",
directSaleRejected = "Direct sale request rejected"
}

View file

@ -0,0 +1,144 @@
Locales = Locales or {}
Locales['vi'] = {
yes = "",
no = "Không",
garage = "Bãi đậu xe",
jobGarage = "Bãi đậu xe công việc",
gangGarage = "Gang Garage",
player = "Người chơi",
impound = "Bị giam",
inGarage = "Trong gara",
notInGarage = "Bên ngoài",
car = "Xe",
air = "Máy bay",
sea = "Thuyền",
fuel = "Xăng",
engine = "Động cơ",
body = "Thân vỏ",
day = "ngày",
days = "ngày",
hour = "giờ",
hours = "giờ",
-- User Interface
noVehicles = "Không có xe nào trong gara này",
vehicles = "Xe",
vehiclePlate = "Biển số xe",
vehicleNotInGarage = "Xe không ở trong gara",
vehicleTakeOut = "Lấy xe",
vehicleReturnAndTakeOut = "Thanh toán và lấy xe",
vehicleReturnToOwnersGarage = "Gửi về garage",
transferToGarageOrPlayer = "Chuyển xe về garage hoặc người chơi khác",
transferToGarage = "Chuyển xe đến Garage",
transferToPlayer = "Chuyển xe đến người chơi",
vehicleTransfer = "Chuyển xe",
noAvailableGarages = "Không có gara",
currentGarage = "Gara hiện tại",
noPlayersOnline = "Không có người chơi online",
createPrivateGarage = "Tạo gara cá nhân",
pgAlertHeadsUp = "Đứng lên!",
pgAlertText = "Gara sẽ được tạo ra và xe được lấy ra sẽ xuất hiện ngay vị trí mà bạn đang đứng.",
garageName = "Tên Gara",
impoundInformation = "Thông tin giam xe",
impoundedBy = "Giam bởi",
impoundedReason = "Lý do",
impoundPlayerCanCollect = "Bạn có thể lấy xe của mình từ bãi giam xe.",
impoundCollectionContact = "Vui lòng liên hệ %{value} hoặc Police để chuộc lại xe của bạn.",
impoundNoVehicles = "Bạn không có Xe nào bị giam giữ",
impoundAvailable = "Được phép lấy vào lúc ",
impoundRetrievableByOwner = "Chủ xe có thể tự lấy xe ra",
impoundNoReason = "Lý do trống",
impoundVehicle = "Tạm giữ xe",
impoundReasonField = "Lý do",
impoundTime = "Thời gian giam",
impoundAvailableImmediately = "Không có",
impoundCost = "Giá",
changeVehiclePlate = "Đổi biển số xe",
newPlate = "Biển số mới",
search = "Tìm kiếm theo tên hoặc biển số xe",
--NEW--
noPrivateGarages = "Không có nhà để xe riêng",
editPrivateGarage = "Chỉnh sửa nhà để xe riêng",
owners = "Chủ sở hữu",
location = "Vị trí",
next = "Kế tiếp",
previous = "Trở về",
page = "Trang",
of = "của",
show = "Hiển thị",
save = "Lưu",
edit = "Sửa",
delete = "Xoá",
garageDeleteConfirm = "Bạn có chắc chắn muốn xóa gara này không?",
privGarageSearch = "Tìm bằng tên",
garageUpdatedSuccess = "Garage đã cập nhật thành công!",
getCurrentCoords = "Lấy toạ độ",
identifier = "CMND",
name = "Tên",
noPlayers = "Không có người chơi nào được thêm vào",
addPlayer = "Thêm người chơi",
loadingVehicle = "Đang tải dữ liệu xe...",
-- Notifications
insertVehicleTypeError = "Bạn chỉ có thể để %{value} vào trong gara này!",
insertVehiclePublicError = "Bạn không thể cất xe tổ chức vào trong gara công cộng!",
vehicleParkedSuccess = "Cất xe vào gara thành công",
vehicleNotOwnedError = "Bạn không phải là chủ sở hữu của chiếc xe này!",
vehicleNotOwnedByPlayerError = "Xe này không thuộc sở hữu của người chơi nào!",
notEnoughMoneyError = "Bạn không đủ tiền trong ngân hàng!",
vehicleNotYoursError = "Xe này không thuộc về bạn!",
notJobOrGangVehicle = "Đây không phải là xe của %{value}",
invalidGangError = "Tên gang không hợp lệ!",
invalidJobError = "Tên job không hợp lệ!",
notInsideVehicleError = "Bạn không ngồi trên xe",
vehicleAddedToGangGarageSuccess = "Xe này đã được thêm vào %{value}!",
vehicleAddedToJobGarageSuccess = "Xe này đã được thêm vào %{value}!",
moveCloserToVehicleError = "Bạn cần di chuyển đến gần xe hơn!",
noVehiclesNearbyError = "Không có chiếc xe nào gần bạn!",
commandPermissionsError = "Bạn không thể sử dụng lệnh này!",
actionNotAllowedError = "Bạn không được phép làm điều này!",
garageNameExistsError = "Tên gara này đã tồn tại!",
vehiclePlateExistsError = "Biển số xe này đã tồn tại",
playerNotOnlineError = "Người chơi này không online",
vehicleTransferSuccess = "Xe được chuyển đến %{value}",
vehicleTransferSuccessGeneral = "Xe của bạn đã được chuyển thành công!",
vehicleReceived = "Bạn đã nhận được một chiếc xe với biển số %{value}",
vehicleImpoundSuccess = "Tạm giữ xe thành công!",
vehicleImpoundRemoveSuccess = "Xe đã được chuộc thành công",
vehicleImpoundReturnedToOwnerSuccess = "Xe này đã được chuyển về gara chủ sở hữu",
garageCreatedSuccess = "Tạo gara thành công!",
vehiclePlateUpdateSuccess = "Biển số xe được đổi thành: %{value}",
vehicleDeletedSuccess = "Xe này đã được xoá khỏi database %{value}",
playerIsDead = "Bạn không thể làm điều này trong khi bạn đã chết",
-- Commands
cmdSetGangVehicle = "Thêm Xe hiện tại vào một Gang",
cmdRemoveGangVehicle = "Đặt xe gang thành xe cá nhân",
cmdSetJobVehicle = "Thêm xe hiện tại vào một nghề nào đó",
cmdRemoveJobVehicle = "Đặt xe nghề thành xe cá nhân",
cmdArgGangName = "Tên Gang",
cmdArgJobName = "Tên Job",
cmgArgMinGangRank = "Rank tối thiểu",
cmgArgMinJobRank = "Rank tối thiểu",
cmdArgPlayerId = "ID của chủ sở hữu mới",
cmdImpoundVehicle = "Giam xe",
cmdChangePlate = "Đổi biển số (Admin only)",
cmdDeleteVeh = "Xoá xe khỏi dữ liệu máy chủ VĨNH VIỄN (Admin only)",
cmdCreatePrivGarage = "Tạo garage riêng cho người chơi",
vehicleSetup = "Cài đặt phương tiện",
extras = "Extras",
extra = "Extra",
liveries = "Liveries",
livery = "Livery",
noLiveries = "Không có liveries này",
noExtras = "Không có extras này",
none = "Không có",
spawnCodeInvalid = "Spawn code invalid",
salesRep = "Sales Rep",
directSaleAccepted = "Direct sale request accepted! Your commission has been paid.",
directSaleRejected = "Direct sale request rejected"
}

View file

@ -0,0 +1,182 @@
---@param dealershipId string
---@param coords vector4
---@param purchaseType "personal"|"society"
---@param society string
---@param societyType "job"|"gang"
---@param model string
---@param colour string
---@param paymentMethod "bank"|"cash"
---@param financed boolean
---@param directSaleUuid? string
---@return boolean, integer?, integer?, string?, number?
local function purchaseVehicle(src, dealershipId, coords, purchaseType, society, societyType, model, colour, paymentMethod, financed, directSaleUuid)
local dealership = Config.DealershipLocations[dealershipId]
local pendingSale, sellerPlayer, sellerPlayerName = nil, nil, nil
-- If directSaleUuid was provided, fetch info
if directSaleUuid then
pendingSale = PendingDirectSales[directSaleUuid]
if not pendingSale then return false end
-- Is the intended recipient accepting?
if src ~= pendingSale.playerId then return false end
if pendingSale.dealerPlayerId then
sellerPlayer = Framework.Server.GetPlayerIdentifier(pendingSale.dealerPlayerId)
sellerPlayerName = Framework.Server.GetPlayerInfo(pendingSale.dealerPlayerId)
sellerPlayerName = sellerPlayerName and sellerPlayerName.name or nil
end
financed = pendingSale.finance -- In case this was somehow changed by in transit by manually firing the purchase-vehicle event
end
-- Financed but the dealership location doesn't allow that?
if not dealership.enableFinance and financed then return false end
-- Check if valid payment method
local isValidPaymentMethod = lib.table.contains(dealership.paymentOptions or {"cash", "bank"}, paymentMethod)
if not isValidPaymentMethod and paymentMethod ~= "societyFund" then
Framework.Server.Notify(src, "INVALID_PAYMENT_METHOD", "error")
DebugPrint(("%s attempted to purchase a vehicle with an invalid payment method: %s"):format(tostring(src), paymentMethod), "warning")
return false
end
local plate = Framework.Server.VehicleGeneratePlate(Config.PlateFormat, true)
if not plate then
Framework.Server.Notify(src, "COULD_NOT_GENERATE_PLATE", "error")
return false
end
-- Get vehicle data
local vehicleData = MySQL.single.await("SELECT * FROM dealership_stock WHERE vehicle = ? AND dealership = ?", {model, dealershipId})
if not vehicleData then
DebugPrint("Vehicle not found in dealership(" .. dealershipId .. ") stock: " .. model, "warning")
return false
end
-- Check stock level
local vehicleStock = vehicleData.stock
if dealership.type == "owned" and vehicleStock < 1 then
Framework.Server.Notify(src, Locale.errorVehicleOutOfStock, "error")
return false
end
local player = Framework.Server.GetPlayerIdentifier(src)
local financeData = nil
local amountToPay = Round(vehicleData.price)
local accountBalance = Framework.Server.GetPlayerBalance(src, paymentMethod)
local paymentType, paid, owed = "full", amountToPay, 0
local downPayment, noOfPayments = Config.FinanceDownPayment, Config.FinancePayments
if purchaseType == "society" and paymentMethod == "societyFund" then
accountBalance = Framework.Server.GetSocietyBalance(society, societyType)
end
if financed and purchaseType == "personal" then
amountToPay = Round(vehicleData.price * (1 + Config.FinanceInterest) * downPayment) -- down payment
if pendingSale then
downPayment, noOfPayments = pendingSale.downPayment, pendingSale.noOfPayments
amountToPay = Round(vehicleData.price * (1 + Config.FinanceInterest) * downPayment)
end
financeData = {
total = Round(vehicleData.price * (1 + Config.FinanceInterest)),
paid = amountToPay,
recurring_payment = Round((vehicleData.price * (1 + Config.FinanceInterest) * (1 - downPayment)) / noOfPayments),
payments_complete = 0,
total_payments = noOfPayments,
payment_interval = Config.FinancePaymentInterval,
payment_failed = false,
seconds_to_next_payment = Config.FinancePaymentInterval * 3600,
seconds_to_repo = 0,
dealership_id = dealershipId,
vehicle = model
}
local vehiclesOnFinance = MySQL.scalar.await("SELECT COUNT(*) as total FROM " .. Framework.VehiclesTable .. " WHERE financed = 1 AND " .. Framework.PlayerId .. " = ?", {player})
if vehiclesOnFinance >= (Config.MaxFinancedVehiclesPerPlayer or 999999) then
Framework.Server.Notify(src, "TOO_MANY_FINANCED_VEHICLES", "error")
return false
end
paymentType = "finance"
owed = financeData.total - financeData.paid
end
if amountToPay > accountBalance then
Framework.Server.Notify(src, Locale.errorCannotAffordVehicle, "error")
return false
end
-- Pre check func in config-sv.lua
if not PurchaseVehiclePreCheck(src, dealershipId, plate, model, purchaseType, amountToPay, paymentMethod, society, societyType, financed, noOfPayments, downPayment, (not not directSaleUuid), pendingSale?.dealerPlayerId) then
DebugPrint(("PurchaseVehiclePreCheck failed for player %s"):format(tostring(src)), "debug")
return false
end
-- Remove money
if purchaseType == "society" and paymentMethod == "societyFund" then
Framework.Server.RemoveFromSocietyFund(society, societyType, amountToPay)
else
Framework.Server.PlayerRemoveMoney(src, amountToPay, paymentMethod)
end
if dealership.type == "owned" then
MySQL.update.await("UPDATE dealership_stock SET stock = stock - 1 WHERE vehicle = ? AND dealership = ?", {model, dealershipId})
MySQL.update.await("UPDATE dealership_data SET balance = balance + ? WHERE name = ?", {amountToPay, dealershipId})
UpdateDealershipShowroomCache(dealershipId)
end
MySQL.insert.await("INSERT INTO dealership_sales (dealership, vehicle, plate, player, seller, purchase_type, paid, owed) VALUES(?, ?, ?, ?, ?, ?, ?, ?)", {dealershipId, model, plate, player, sellerPlayer, paymentType, paid, owed})
-- Save vehicle to garage
local vehicleId = Framework.Server.SaveVehicleToGarage(src, purchaseType, society, societyType, model, plate, financed, financeData)
-- Spawn vehicle on server (if configured)
local netId = nil
if Config.SpawnVehiclesWithServerSetter then
local warp = not Config.DoNotSpawnInsideVehicle
local properties = {
plate = plate,
colour = colour
}
netId = SpawnVehicleServer(src, vehicleId or 0, model, plate, coords, warp, properties, "purchase")
if not netId or netId == 0 then
Framework.Server.Notify(src, "Could not spawn vehicle with Config.SpawnVehiclesWithServerSetter", "error")
DebugPrint("Could not spawn vehicle with Config.SpawnVehiclesWithServerSetter", "warning")
return false
end
end
-- Send webhook
SendWebhook(src, Webhooks.Purchase, "New Vehicle Purchase", "success", {
{ key = "Vehicle", value = model },
{ key = "Plate", value = plate },
{ key = "Financed", value = financed and "Yes" or "No" },
{ key = "Amount Paid", value = amountToPay },
{ key = "Payment method", value = paymentMethod },
{ key = "Dealership", value = dealershipId },
{ key = "Seller Name", value = sellerPlayerName or "-" }
})
Framework.Server.Notify(src, Locale.purchaseSuccess, "success")
return true, netId, vehicleId, plate, amountToPay
end
lib.callback.register("jg-dealerships:server:purchase-vehicle", function(...)
return purchaseVehicle(...)
end)
RegisterNetEvent("jg-dealerships:server:update-purchased-vehicle-props", function(purchaseType, society, plate, props)
local src = source
local identifier = purchaseType == "society" and society or Framework.Server.GetPlayerIdentifier(src)
MySQL.update.await("UPDATE " .. Framework.VehiclesTable .. " SET " .. Framework.VehProps .. " = ? WHERE plate = ? AND " .. Framework.PlayerId .. " = ?", {
json.encode(props), plate, identifier
})
end)

View file

@ -0,0 +1,68 @@
--
-- Discord Webhooks
--
Webhooks = {}
Webhooks.TestDrive = ""
Webhooks.Purchase = ""
Webhooks.Finance = ""
Webhooks.Dealership = ""
Webhooks.Admin = ""
--[[
EXAMPLE WEBHOOK CALL
sendWebhook(src, Webhooks.Admin, "Webhook Title", "success", {
{ key = "Data fields", value = "Data value" },
{ key = "Data fields 2", value = "Data value 2" }
})
]]--
function SendWebhook(playerId, webhookUrl, title, type, data)
if not webhookUrl then return end
local player = Framework.Server.GetPlayerInfo(playerId)
if not player then return false end
local color = 0xff6700
if type == "success" then color = 0x2ecc71 end
if type == "danger" then color = 0xe74c3c end
local fields = {
{
name = "Player",
value = string.format("%s (id: %s)", player.name, tostring(playerId)),
inline = false
}
}
for _, row in pairs(data) do
fields[#fields + 1] = {
name = row.key,
value = tostring(row.value),
inline = true
}
end
local body = {
username = "JG Dealerships Webhook",
avatar_url = "https://forum.cfx.re/user_avatar/forum.cfx.re/jgscripts/288/3621910_2.png",
content = "",
embeds = {
{
type = "rich",
title = title,
description = "",
color = color,
fields = fields
}
}
}
PerformHttpRequest(
webhookUrl,
function(err, text, header) end,
"POST",
json.encode(body),
{["Content-Type"] = "application/json"}
)
end

View file

@ -0,0 +1,112 @@
Globals = {}
Functions = {}
Locale = Locales[Config.Locale or "en"]
exports("locale", function() return Locale end)
exports("config", function() return Config end)
---@param text string
---@param debugtype? "warning"|"debug"
function DebugPrint(text, debugtype, ...)
if not Config.Debug then return end
local prefix = "^2[DEBUG]^7"
if debugtype == "warning" then prefix = "^3[WARNING]^7" end
local args = {...}
local output = ""
for i = 1, #args do
if type(args[i]) == "table" then
output = output .. json.encode(args[i])
elseif type(args[i]) ~= "string" then
output = output .. tostring(args[i])
else
output = output .. args[i]
end
if i ~= #args then output = output .. " " end
end
print(prefix, text, output)
end
---@param vehicle integer
function JGDeleteVehicle(vehicle)
if not DoesEntityExist(vehicle) then return end
if GetResourceState("AdvancedParking") == "started" then
exports["AdvancedParking"]:DeleteVehicle(vehicle, false)
else
DeleteEntity(vehicle)
end
end
---@param vehicle integer
---@param plate string
function SetVehiclePlateText(vehicle, plate)
if GetResourceState("AdvancedParking") == "started" then
exports["AdvancedParking"]:UpdatePlate(vehicle, plate)
else
SetVehicleNumberPlateText(vehicle, plate)
end
end
---@param model string | number
---@return number hash
function ConvertModelToHash(model)
return type(model) == "string" and joaat(model) or model --[[@as number]]
end
---@param plate string
function IsValidGTAPlate(plate)
-- Check if the plate matches the pattern and is not longer than 8 characters
-- %w matches alphanumeric characters, %s matches space characters
-- The pattern checks for a string starting with 0 or more alphanumeric or space characters
if #plate <= 8 and plate:match("^[%w%s]*$") then return true end
return false
end
---@param table table
function TableKeys(table)
local keys = {}
for k, _ in pairs(table) do
keys[#keys+1] = k
end
return keys
end
-- Round a number to so-many decimal of places,
-- Which can be negative, e.g. -1 places rounds to 10's
---@param num integer
---@param dp? integer
---@return number
function Round(num, dp)
dp = dp or 0
local mult = 10^(dp or 0)
return math.floor(num * mult + 0.5) / mult
end
---@param list table
---@param item string|number
---@return boolean
function IsItemInList(list, item)
if #list == 0 then
return true
end
for _, value in ipairs(list) do
if value == item then
return true
end
end
return false
end
---@param s string
---@return string
function Trim(s)
return (s:gsub("^%s*(.-)%s*$", "%1"))
end

View file

@ -0,0 +1,6 @@
This is where you can add custom vehicle thumbnails. But first:
1. You must have this feature enabled in config.lua `Config.ShowVehicleImages = true`
2. All images must be a png and a small file size. Ideally a 16:9 aspect ratio too
Learn more: https://docs.jgscripts.com/dealerships/vehicle-images

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

View file

@ -0,0 +1,14 @@
<!DOCTYPE html>
<html lang="en" data-bs-theme="dark">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>jg-dealerships-web</title>
<script type="module" crossorigin src="/web/dist/assets/index-90aa1eef.js"></script>
<link rel="stylesheet" href="/web/dist/assets/index-a42dd07c.css">
</head>
<body>
<div id="root"></div>
</body>
</html>

Binary file not shown.

View file

@ -0,0 +1 @@
.DS_Store

View file

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2023 JG Scripts
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View file

@ -0,0 +1,13 @@
# jg-textui
Show text UI:
```lua
exports['jg-textui']:DrawText(text)
```
Hide text UI:
```lua
exports['jg-textui']:HideText()
```

View file

@ -0,0 +1,16 @@
function DrawText(text)
SendNUIMessage({
type = 'show',
text = text
})
end
exports('DrawText', DrawText)
function HideText()
SendNUIMessage({
type = 'hide'
})
end
exports('HideText', HideText)

View file

@ -0,0 +1,18 @@
fx_version "cerulean"
game "gta5"
description "Simple text UI library"
version "1.0"
author "JG Scripts"
client_script "client.lua"
ui_page "web/index.html"
files {"web/*"}
escrow_ignore {"**/*"}
lua54 "yes"
dependency '/assetpacks'

View file

@ -0,0 +1,13 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>jg-textui-web</title>
<link rel="stylesheet" href="main.css" />
</head>
<body>
<div class="text-ui">This is some text</div>
<script src="main.js"></script>
</body>
</html>

View file

@ -0,0 +1,38 @@
@import url("https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:ital,wght@0,300;0,400;0,500;0,600;0,700;1,400&display=swap");
* {
margin: 0;
padding: 0;
}
body {
font-family: "Plus Jakarta Sans", sans-serif;
background: none;
}
.text-ui {
background: #212529;
border: 1px solid #42484e;
padding: 8px 10px;
border-radius: 7px;
color: white;
position: absolute;
left: -100%;
top: 50%;
transform: translateY(-50%);
transition: 0.5s ease-in-out;
user-select: none;
}
.text-ui kbd {
padding: 1px 8px;
background: #ccc;
color: #212529;
font-weight: bold;
border-radius: 5px;
border-bottom: 3px solid #777;
display: inline-block;
vertical-align: middle;
margin-right: 3px;
font-size: 17px;
}

View file

@ -0,0 +1,19 @@
(function () {
const textUI = document.querySelector(".text-ui");
window.addEventListener("message", (evt) => {
const { data } = evt;
if (!data) return false;
if (data.type === "show") {
// If the string contains a key in square brackets (like [E]), then style it differently!
let str = data.text.replaceAll(/\[(.*?)\]/g, "<kbd>$1</kbd>");
textUI.style.left = "20px";
textUI.innerHTML = str;
} else if (data.type === "hide") {
textUI.style.left = "-100%";
}
});
})();