Language Files
Config.locales["en"] = {
game = {
custom_tattoo = "Custom Tattoo",
unknown = "Unknown",
imported_design = "Imported Design",
design_started = "Design Started",
design_started_desc = "Player %s has started designing on your character.",
design_finished = "Design Finished",
design_finished_desc = "Player %s has finished designing on your character.",
laser_removal_started = "Laser Removal Started",
laser_removal_started_desc = "Player %s has started laser removal on your character.",
laser_removal_finished = "Laser Removal Finished",
laser_removal_finished_desc = "Player %s has finished laser removal on your character.",
invalid_data = "Invalid data.",
citizenid_not_found = "CitizenId not found.",
invalid_amount = "Invalid amount.",
no_withdraw_permission = "You do not have permission to withdraw money.",
no_store = "Store not found.",
insufficient_kasa_funds = "Insufficient store safe funds.",
log_withdrew_amount = "Withdrew $%d from the safe",
log_kasa_action = "Safe Action",
log_kasa_withdrew_desc = "Authorized employee %s withdrew $%d from studio #%d vault.",
upgrades_disabled = "Upgrades are disabled.",
only_owner_can_upgrade = "Only the shop owner can purchase upgrades.",
shop_not_found = "Shop not found.",
invalid_upgrade = "Invalid upgrade.",
upgrade_already_purchased = "This upgrade has already been purchased.",
insufficient_kasa_funds_required = "Insufficient safe funds ($%d required).",
log_upgrade_purchased = "Purchased upgrade: %s ($%d)",
log_upgrade_action = "Upgrade Action",
log_upgrade_purchased_desc = "Authorized employee %s purchased upgrade '%s' for studio #%d for $%d.",
no_shop_access = "You do not have access to this shop.",
log_deposited_amount = "Deposited $%d into the safe",
log_kasa_deposited_desc = "Player %s deposited $%d into studio #%d vault.",
money_deduction_failed = "Failed to deduct money.",
player_num = "Player #%s",
no_pending_changes = "No pending changes to save.",
studio_kasa_not_found = "Studio safe not found.",
not_enough_money = "You do not have enough money ($%d required).",
log_self_applied = "Self-applied: %d tattoos, %d removals, cost $%d",
log_all_changes_saved = "All changes successfully saved.",
log_tattoo_save_title = "Tattoo Save",
log_tattoo_save_self_desc = "Player %s updated their own tattoos. Cost spent: $%d",
customer_not_found = "Customer not found.",
invalid_price_amount = "Invalid price amount.",
invalid_studio = "Invalid studio.",
customer_not_nearby = "Customer is not nearby.",
no_shop_action_permission = "You do not have permission to perform actions in this shop.",
customer_insufficient_funds = "Customer has insufficient funds.",
payment_does_not_cover_expenses = "The entered payment amount does not cover expenses and there are insufficient funds in the safe.",
customer_citizenid_not_found = "Could not retrieve customer citizenid.",
customer_payment_failed = "Failed to charge customer.",
log_final_save = "Final save: %d tattoos, %d removals, charged $%d, cost $%d",
log_tattoo_save_customer_desc = "Artist %s saved tattoos for customer %s (CID: %s). Charged: $%d, Cost: $%d",
process_already_active = "An action is already in progress.",
tattoo_not_found = "Tattoo not found.",
removal_session = "Removal Session",
log_self = "Himself/Herself",
log_tattoo_removal_title = "Tattoo Removal Session",
log_tattoo_removal_desc = "Artist %s performed a tattoo removal session on customer %s. (Tattoo: %s)",
system_disabled = "System is disabled.",
must_enter_code = "You must enter a code.",
invalid_expired_code = "Invalid or expired code.",
log_code_generation_title = "Code Generation",
log_code_generation_desc = "Player %s generated a tattoo share code: %s",
previous_build_processing = "Previous build is still processing.",
rented_shop = "You have rented the shop.",
purchased_shop = "You have purchased the shop.",
rent_extended = "Rental period has been extended.",
employee_added = "Employee has been added.",
employee_fired = "Employee has been fired.",
upgrade_purchased = "Upgrade purchased.",
role_updated = "Role has been updated.",
permissions_updated = "Permissions have been updated.",
withdrawn_amount = "Withdrew $%d from the safe.",
deposited_amount = "Deposited $%d into the safe.",
selected_player_not_near = "Selected player is not nearby.",
payment_received = "Payment received: $%d",
studio_open_failed = "Could not open the studio.",
customer_dropped = "Customer disconnected, menu closed and a design backup was created.",
partner_closed = "Session terminated by the other participant.",
session_closed = "Session terminated.",
open_studio = "%s Open Studio",
shop_management = "%s Shop Management",
server_error = "Server error.",
invalid_snapshot = "Invalid snapshot.",
customer_not_near = "Customer is not nearby.",
chair_occupied = "This tattoo chair is currently occupied!",
no_shop_permission = "You do not have permission to paint tattoos in this shop.",
customer_rejected = "Customer rejected the request.",
customer_rejected_process = "Customer rejected the process.",
customer_timeout = "Customer timed out.",
no_command_permission = "You do not have permission to use this command!",
customer_approved = "Customer approved, all changes saved.",
tattoos_saved = "Tattoo operations successfully saved.",
appearance_not_compatible = "This feature requires the %s resource to be running!",
invalid_player_model = "This character model is not suitable for tattoos.",
invalid_character_model = "Your character model is not suitable for tattoos.",
not_in_studio_zone = "You are not inside a studio zone.",
no_customers_nearby = "There are no customers nearby.",
-- Auto-aligned translations
pending_tattoos_apply = "Apply Pending Tattoos (%s)",
pending_removals_save = "Save Pending Removals (%s)",
num_tattoos = "%s Tattoos",
num_tattoos_set = "Tattoo Set (%s Tattoos)",
log_design_started_title = "Design Started",
log_design_started_desc = "%s started tattoo design on player %s.",
resource_start_failed_convar = "Failed to start tattoo build resource: %s",
no_management_permission = "You do not have management permissions for this shop.",
shops_not_purchasable = "Tattoo shops are not purchasable.",
shop_already_has_owner = "This shop already has an owner.",
log_shop_rented = "Shop rented for $%d (Duration: %d Days)",
log_shop_purchased = "Shop purchased for $%d",
log_shop_action = "Shop Action",
log_shop_action_desc = "%s has %s shop #%d for $%s.",
rented = "rented",
purchased = "purchased",
invalid_transaction = "Invalid transaction.",
not_shop_owner = "You are not the shop owner.",
log_rent_extended = "Extended rent by %d Days for $%d",
log_shop_rent_extended_desc = "%s extended rent for shop #%d by %d days for $%s.",
no_hire_permission = "You do not have permission to hire employees.",
no_target_player = "No target player specified.",
target_no_citizenid = "Could not retrieve citizen ID for the target.",
cannot_hire_owner = "You cannot hire the owner of the shop.",
log_hired = "Hired as %s",
manager = "Manager",
employee = "Employee",
log_employee_action = "Employee Action",
log_employee_hired_desc = "%s hired %s (CID: %s) as %s in shop #%d.",
hired_notification = "You have been hired as an employee in %s.",
no_fire_permission = "You do not have permission to fire employees.",
fired = "fired",
log_employee_fired_desc = "%s fired %s (CID: %s) from shop #%d.",
fired_notification = "You have been fired from your job at %s.",
only_owner_can_set_role = "Only the shop owner can update employee roles.",
no_target_specified = "No target specified.",
employee_not_found = "Employee not found.",
log_role_updated = "Role updated to %s",
log_role_updated_desc = "%s updated %s's (CID: %s) role to %s in shop #%d.",
no_permission = "You do not have permission to do this.",
perm_hire = "Hiring / Firing",
perm_withdraw = "Withdraw Cash",
perm_change_price = "Price Management",
none = "None",
log_permissions_updated = "Permissions updated",
},
ui = {
freehand_hint = "Freehand",
fonts_hint = "Fonts",
catalog_hint = "Catalog",
session = "Session",
close = "Close",
save = "Save",
delete = "Delete",
cancel = "Cancel",
confirm = "Confirm",
loading = "Loading...",
success = "Success",
error = "Error",
yes = "Yes",
no = "No",
back = "Back",
next = "Next",
-- ToolPanel / Brush settings
tools = "Tools",
brush = "Brush",
eraser = "Eraser",
laser = "Laser",
color = "Color",
size = "Size",
opacity = "Opacity",
symmetry = "Symmetry",
symmetry_desc = "Symmetric Drawing Mode",
clear_all = "Clear All",
undo = "Undo",
redo = "Redo",
text_tool = "Text Tool",
image_tool = "Upload Image",
font = "Font",
text_placeholder = "Enter tattoo text...",
image_placeholder = "Enter image URL...",
apply_tattoo = "Apply Tattoo",
apply_to_ped = "Apply to Character",
preparing_tattoo = "Preparing your tattoo...",
tattoo_applied_to_ped = "Tattoo Applied to Character",
tattoo_applied_to_ped_desc = "Click the button below to start a new design. The tattoos on your character will remain saved.",
start_new_work = "Start New Work",
tutorial = "Tutorial",
how_to_use = "How to Use?",
tutorial_default_desc = "You can review how to use this feature through the preview above.",
got_it_close = "Got it, Close",
tut_opening_title = "Welcome to the Tattoo Studio",
tut_removal_title = "Laser Tattoo Removal Operation",
tut_drawing_title = "Free Drawing Tool",
tut_image_title = "Image Upload Tool",
tut_text_title = "Text Writing Tool",
tut_opening_desc = "You can use the interface to design your own tattoos, manage existing tattoos, and apply them to different zones of your body.",
tut_removal_desc = "To remove the selected tattoo, you must complete the laser sessions. Click on the tattoo to start fading it.",
tut_drawing_desc = "Using the brush tools, you can draw freely on your body, creating artistic work with custom color and size settings.",
tut_image_desc = "By pasting an image URL from the internet, you can add this image as a tattoo to your desired location on your body.",
tut_text_desc = "By writing your desired text and selecting font and color settings, you can place custom lettering as tattoos on your character's body.",
-- Zones
head = "Head",
torso = "Torso",
left_arm = "Left Arm",
right_arm = "Right Arm",
left_leg = "Left Leg",
right_leg = "Right Leg",
-- SavedTattoosPanel / Catalogs
saved_tattoos = "Saved Tattoos",
catalog = "Catalog",
my_tattoos = "My Tattoos",
no_tattoos = "No tattoos found.",
finalize_changes = "Save All Changes",
total_price = "Total Price",
discard_changes = "Discard Changes",
drawing = "Drawing",
photo = "Photo",
tattoo = "Tattoo",
tattoo_set_num = "Tattoo Set #{index}",
share_code = "Share Code",
share_code_desc = "You can give this code to your friend to allow them to copy this design exactly.",
copied = "Copied!",
copy_code = "Copy Code",
invalid_code = "Invalid code.",
import_tattoo = "Import Tattoo Design",
import_tattoo_desc = "Enter the 6-digit sharing code to apply the design immediately to your character.",
import_placeholder = "e.g. AK4Y99",
import_submit = "FETCH AND APPLY DESIGN",
config_code = "Config Code",
config_code_desc = "You can copy the following codes into your illenium-appearance Config.Tattoos list:",
copy_all = "Copy All",
generator_coming_soon = "Automatic code generator for this skin script will be added soon.",
share_code_error = "Could not generate sharing code.",
already_removed_error = "You have already removed this tattoo in this session. You must close and reopen the menu to remove it again.",
admin_tattoos = "Admin Tattoos",
no_admin_tattoos = "No tattoos created by admin yet.",
pieces_count = "{count} Pieces",
show_on_ped = "Show on Character",
hide = "Hide",
piece_num = "Piece {num}",
delete_tattoo = "Delete Tattoo",
delete_tattoo_confirm = "Are you sure you want to delete the tattoo named \"{name}\"? This action cannot be undone and all file system contents will be cleared.",
yes_delete = "Yes, Delete",
expenses = "EXPENSES",
total = "TOTAL",
no_expenses = "No operations performed yet.",
single_session = "Single Session",
hide_expenses = "HIDE EXPENSES",
show_expenses = "SHOW EXPENSES",
enter_code = "ENTER CODE",
no_saved_tattoos_desc = "No saved tattoos yet. Apply your first tattoo to see it listed here.",
create_share_code = "Create Share Code",
delete_now = "Delete Now",
laser_delete = "Laser Remove",
admin_delete = "Admin Delete (Now)",
-- PlayerPicker
select_player = "Select Player",
["self"] = "Self",
nearby_players = "Nearby Players",
no_players_nearby = "No players found nearby.",
-- SessionOffer
session_offer = "Tattoo Offer",
session_offer_desc = "{artist} is offering you a tattoo session.",
session_offer_price = "Session Price: ${price}",
accept = "Accept",
decline = "Decline",
tattoo_confirm = "Tattoo Confirmation",
tattoo_removal_offer = "Tattoo Removal Offer",
tattoo_session_offer = "Tattoo Session Offer",
tattoo_confirm_desc = "The tattoo artist wants to save the following changes. Do you approve?",
tattoo_removal_desc = "A tattoo artist has offered a laser tattoo removal operation.",
tattoo_session_desc = "A tattoo artist wants to start a new design session.",
operations = "Operations",
no_operations = "No operations to save.",
amount_to_pay = "AMOUNT TO PAY",
tattoo_num = "Tattoo #{num}",
self_tattoo = "Self Tattoo",
self_tattoo_desc = "Apply tattoo to yourself",
-- ShopManagement
safe = "Safe / Register",
employees = "Employees",
hire_employee = "Hire Employee",
fire = "Fire",
upgrades = "Upgrades",
logs = "Logs / History",
rent_price = "Rent Price: ${price}",
purchase_price = "Purchase Price: ${price}",
purchase = "Purchase",
rent = "Rent",
role = "Role",
permissions = "Permissions",
amount = "Amount",
-- Laser removal minigame
laser_tattoo_removal = "Laser Tattoo Removal",
laser_removal_desc = "Click on the tattoo to start fading it with laser",
session_num_count = "SESSION: {current} / {total}",
current_session_progress = "CURRENT SESSION PROGRESS",
complete_session = "COMPLETE SESSION",
discard_and_cancel = "Discard and Cancel",
-- Shop Management
act_tattoo_apply = "Tattoo Applied",
act_tattoo_apply_self = "Applied to Self",
act_tattoo_remove = "Tattoo Removed",
act_withdraw = "Withdrew Money",
act_deposit = "Deposited Money",
act_price_change = "Price Updated",
act_hire = "Hired Employee",
act_fire = "Fired Employee",
act_role_update = "Role/Rank",
act_purchase = "Shop Purchased",
act_rent_extend = "Rent Extended",
owner = "Owner",
manager = "Manager",
employee = "Employee",
no_employees = "No employees hired yet.",
hire_new_employee = "Hire New Employee",
active = "Active",
log_records_count = "{count} records",
all = "All",
no_logs = "No log entries found.",
studio_upgrades = "STUDIO UPGRADES",
purchase_upgrade = "Purchase Upgrade (${price})",
no_upgrades_available = "No upgrades available.",
general = "General",
kasa_safe = "Safe",
no_owner_desc = "This shop has no owner yet.",
no_owner_sub = "You must buy or rent the shop first to access the management panel.",
rent_shop = "Rent Shop (${price})",
buy_shop = "Buy Shop (${price})",
shop_owner = "Shop Owner",
purchase_price_label = "Purchase Price",
employee_count = "Employee Count",
tattoo_price_fixed = "Tattoo Price (Fixed)",
config_fixed_desc = "This price is configured in config.lua and cannot be changed.",
tattoo_removal_price_session = "Tattoo Removal Price (per Session)",
config_fixed_removal_desc = "This price is configured in config.lua.",
rent_expires_at = "Rent Expires At",
extend_rent = "Extend Rent (${price})",
rent_duration_days_add = "+{days} Days will be added.",
safe_balance = "Safe Balance",
withdraw_money = "Withdraw Money",
deposit_money = "Deposit Money",
amount_to_withdraw = "Amount to withdraw",
amount_to_deposit = "Amount to deposit",
withdraw = "Withdraw",
deposit = "Deposit",
permissions_edit_title = "Edit Permissions: {name}",
perm_hire_fire = "Hiring / Firing",
perm_withdraw = "Withdrawing Money",
save_permissions = "Save Permissions",
select = "Select",
yetkiler = "Permissions",
isten_cikar = "Fire Employee",
img_upload = "Image Upload",
img_upload_desc = "Custom tattoo loading via PNG and URL.",
text_write = "Text Writing",
text_write_desc = "Text-based tattoos with different fonts.",
-- ToolPanel
wait_a_moment = "Wait a moment",
file_picker_cooldown_msg = "Please wait {seconds} seconds before opening the file picker again.",
file_picker_opening = "Opening {type} selector",
fivem_fullscreen_warning = "If FiveM is in fullscreen, the file picker might open in the background. Check with Alt+Tab. If the window doesn't open at all, you may need to restart the game.",
action_in_progress = "Action In Progress",
action_in_progress_desc = "Please confirm or cancel the current image or text before changing modes.",
locked_feature = "Locked Feature",
img_upload_locked_desc = "Image upload is not yet active in this studio. It must be purchased from shop management.",
text_write_locked_desc = "Text writing is not yet active in this studio. It must be purchased from shop management.",
preset_sets_locked_desc = "Preset sets are not yet active in this studio. It must be purchased from shop management.",
mode = "Mode",
text = "Text",
character_female = "Character (Female)",
underwear_view = "Underwear View",
model_reference_active = "Model reference active",
model_reference_hidden = "Model reference hidden",
inactive = "Inactive",
reset_all = "Reset All",
tattoo_image = "Tattoo Image",
select_new_png = "Select new PNG",
upload_png = "Upload PNG",
remove_image = "Remove image",
image_url_placeholder = "https://... image URL",
upload_from_url = "Upload from URL",
image_help_1 = "Left-click on the character; the image will automatically snap to the relevant zone.",
image_help_2 = "Scroll the mouse wheel while dragging to precisely adjust the angle.",
angle = "Angle",
placed_images_count = "Placed Images ({count})",
no_images_placed = "No images placed yet.",
edit = "Edit",
saved_sets_count = "Saved Sets ({count})",
no_sets_saved_desc = "No sets saved yet. After making a design, you can save it as a set below.",
apply = "Apply",
text_content = "Text Content",
enter_tattoo_text = "Enter tattoo text...",
select_font = "Select Font",
color_1 = "Color 1",
color_2 = "Color 2",
gradient_toggle = "Gradient: {state}",
outline_toggle = "Outline: {state}",
outline_color = "Outline Color",
outline_width = "Outline Width",
letter_spacing = "Letter Spacing",
placed_texts_count = "Placed Texts ({count})",
no_texts_placed = "No texts placed yet.",
eraser_active = "Eraser active",
symmetry_active = "Symmetry active",
needle_size = "Needle Size",
hardness = "Hardness",
flow = "Flow",
stencil = "Stencil",
upload_stencil = "Upload Stencil",
stencil_url_placeholder = "https://... stencil URL",
locked = "Locked",
lock = "Lock",
remove = "Remove",
stencil_angle = "Stencil Angle",
stencil_opacity = "Stencil Opacity",
close_test_pad = "Close Test Pad",
test_pad = "Test Pad",
image_load_error = "Failed to load image. Is the URL valid and CORS enabled?",
-- ZoneDock
zone_head = "Head",
zone_torso = "Torso",
zone_left_arm = "Left Arm",
zone_right_arm = "Right Arm",
zone_left_leg = "Left Leg",
zone_right_leg = "Right Leg",
camera_angles = "Camera Angles",
whole_character = "Whole Character",
camera_controls = "Camera Controls",
rotate = "Rotate",
left_click = "Left",
right_click = "Right",
pan = "Pan",
up_down = "Up / Down",
zoom = "Zoom",
shift_straight = "Shift",
straight_line = "Straight Line",
needle_diameter_indicator = "Show/hide needle diameter on cursor",
needle_diameter = "Needle Diameter",
brush_test_pad = "Brush Test Pad",
clear_pad = "Clear Pad",
test_brush_desc = "Test your brush here; it won't affect the character model.",
-- App.jsx new translations
approved = "Approved",
customer_accepted_removal = "The customer has accepted the session, you can start removal.",
apply_at_least_one_tattoo = "Apply at least one tattoo with Apply to Character first.",
server_rejected = "The server rejected the operation.",
tattoo_deleted_success = "Tattoo completely removed.",
unknown_error = "Unknown error.",
info = "Info",
imported_tattoos_readonly = "Imported tattoos cannot be modified.",
no_design_to_save = "No Design to Save",
make_design_first = "You must first make a design and click 'Apply to Character'.",
enter_set_name = "Please enter a set name.",
set_saved_success = "Set saved successfully.",
invalid_set = "This set is invalid or contains no tattoos.",
set_deleted = "Set Deleted",
set_deleted_success = "Design set successfully deleted.",
operation_cancelled = "Operation Cancelled",
changes_discarded_success = "Applied set and changes cleared successfully.",
design_imported_success = "Design imported and added to expenses.",
server_rejected_import = "The server rejected the import request.",
warning = "Warning",
no_tattoos_to_import = "No tattoos found to import.",
failed_parse_design = "Could not parse design data.",
no_design_to_apply = "No Design to Apply",
load_or_draw_first = "Please upload an image or draw first.",
design_prepared = "Design Prepared",
design_prepared_desc = "Design uploaded to system. It will be applied to the character after payment.",
apply_failed = "Applying failed",
request_sent = "Request Sent",
customer_removal_sent = "Removal session confirmation sent to customer.",
save_tattoo_as_set = "Save Tattoo as Set",
save_to_system = "Save to System",
cancel_operation = "Cancel Operation",
complete_operation = "Complete Operation",
expenses_breakdown = "Expenses Breakdown",
no_expenses_added = "No expenses added yet.",
total_amount = "TOTAL AMOUNT",
send_for_approval = "Send for Approval",
set_tattoo_name = "Set Tattoo Name",
admin_label_desc = "Enter the name of this tattoo to appear in the menu. This name will also be shown in the customer's expense list.",
label = "LABEL",
label_placeholder = "e.g. Back Tiger",
continue = "Continue",
save_as_set = "Save as Set",
save_set_desc = "Save this design (with all its parts) as a set. You can then apply it with a single click from the 'Preset Sets' menu.",
set_name = "SET NAME",
set_name_placeholder = "e.g. Sleeve Design #1",
reset_design = "Reset Design",
reset_design_desc = "Your current changes will be reset and the preset set will be applied. Do you approve?",
confirm_and_apply = "Confirm and Apply",
delete_set = "Delete Set",
delete_set_desc = "Are you sure you want to permanently delete this design set? This action cannot be undone.",
game_camera_active_esc = "Game camera active Β· ESC to return to studio control",
unsaved_changes = "Unsaved Changes",
unsaved_changes_desc = "You have unsaved tattoo designs. Would you like to save these changes and continue before exiting?",
yes_save_and_continue = "Yes, Save and Continue",
no_discard_and_exit = "No, Discard Changes and Exit",
go_back = "Go Back",
position_image_desc = "Position the image, then confirm or cancel",
unfinished_design = "Unfinished Design",
unfinished_design_desc = "You have an unfinished tattoo design for this player. Where would you like to continue from?",
from_where_i_left = "Continue from snapshot",
discard_and_start_new = "Discard and Start New",
saved = "Saved",
changes_saved_success = "All changes have been successfully saved to the database.",
customer_rejected = "The customer rejected the operation.",
session_completed = "Session Completed",
tattoo_faded_more = "The tattoo has faded a bit more.",
use_game_camera = "Use Game Camera",
return_to_studio_control = "Return to Studio Control",
hide_backdrop = "Hide Backdrop",
show_backdrop = "Show Backdrop",
confirm_label = "Confirm",
view_controls = "View Controls",
-- Auto-aligned translations
shop_management = "Shop Management",
unknown = "Unknown",
preset_sets = "Preset Sets",
preset_sets_desc = "Ready design sets via catalog.",
-- YTD Build Progress Translations
preparing_textures = "Preparing textures and metadata...",
zone_prepared = "{zoneKey} prepared...",
sending_to_server = "Sending to FiveM server...",
resource_created = "Resource created successfully.",
building_binary_ytd = "Building binary .ytd with Python texfury...",
downloading_zip = "Downloading ZIP...",
server_build_running = "Server build is running (texfury + patch)...",
no_drawings_to_export = "No drawings/tattoos to export.",
ytd_texture_failed = "Failed to generate YTD textures.",
ytd_builder_failed = "YTD builder failed.",
}
}
Last updated