{
    "me": {
        "id": "Eng",
        "native": "English",
        "eng": "English"
    },
    "regionalLinks": {
        "discord": "https://comigo.games/discord",
        "telegram": "https://t.me/ctjsen"
    },
    "common": {
        "add": "Add",
        "addBehavior": "Add a Behavior",
        "apply": "Apply",
        "cancel": "Cancel",
        "cannotBeEmpty": "This cannot be empty",
        "clear": "Clear",
        "close": "Close",
        "confirmDelete": "Are you sure you want to delete {0}? It cannot be undone.",
        "andNMore": ", and {0} more",
        "contribute": "Contribute",
        "copy": "Copy",
        "copyName": "Copy the name",
        "copyNamesList": "Copy the names as a list",
        "copyNamesArray": "Copy the names as array elements",
        "couldNotLoadFromClipboard": "Could not load data from clipboard",
        "create": "Create",
        "cut": "Cut",
        "delete": "Delete",
        "discard": "Discard",
        "docsShort": "Docs",
        "docsLong": "Documentation",
        "donate": "Donate",
        "done": "Done!",
        "download": "Download",
        "duplicate": "Duplicate",
        "edit": "Edit",
        "exit": "Exit",
        "experimentalFeature": "This is an experimental feature.",
        "filter": "Filter:",
        "goBack": "Go back",
        "loading": "Loading…",
        "name": "Name:",
        "next": "Next",
        "no": "No",
        "none": "None",
        "nothingToShowFiller": "There is nothing to show here!",
        "ok": "Ok",
        "open": "Open",
        "paste": "Paste",
        "pastedFromClipboard": "Pasted from clipboard",
        "previous": "Previous",
        "rename": "Rename",
        "required": "Required",
        "save": "Save",
        "selectDialogue": "Select…",
        "select": "Select",
        "search": "Search:",
        "settings": "Settings",
        "sort": "Sort:",
        "sortByDate": "Sort by date",
        "sortByName": "Sort by name",
        "sortByType": "Sort by type",
        "wrongFormat": "Wrong file format",
        "yes": "Yes",
        "zoom": "Zoom",
        "zoomIn": "Zoom in",
        "zoomOut": "Zoom out",
        "undo": "Undo",
        "redo": "Redo",
        "fieldTypes": {
            "checkbox": "Checkbox",
            "code": "Codebox",
            "color": "Color",
            "group": "Group of fields",
            "h1": "Header of 1st level",
            "h2": "Header of 2nd level",
            "h3": "Header of 3rd level",
            "h4": "Header of 4th level",
            "number": "Number",
            "point2D": "2D point",
            "radio": "Radio buttons",
            "slider": "Slider",
            "sliderAndNumber": "Slider with an input",
            "table": "Table",
            "text": "Short text",
            "textfield": "Textbox"
        },
        "newName": "New name:",
        "saveProject": "Save project",
        "openProject": "Open project…",
        "savedMessage": "Your project was succesfully saved.",
        "reallyExitConfirm": "Are you sure you want to exit? All unsaved changes will be lost.",
        "notFoundOrUnknown": "Unknown file. Make sure the file really exists",
        "reimportSourceMissing": "Can't reimport: the source file is now missing.",
        "nameTaken": "This name is already taken",
        "dropToImport": "Drop here to import",
        "reimport": "Reimport",
        "addToNotes": "Add to notes",
        "noRooms": "You need at least one room to compile your app.",
        "tileLayer": "tile layer",
        "ctSite": "ct.js homepage",
        "openAssetGallery": "Gallery",
        "createStyleFromIt": "Create a style from it",
        "alignModes": {
            "left": "Left",
            "right": "Right",
            "top": "Top",
            "bottom": "Bottom",
            "center": "Center",
            "topLeft": "Top left",
            "topCenter": "Top center",
            "topRight": "Top right",
            "bottomLeft": "Bottom left",
            "bottomCenter": "Bottom center",
            "bottomRight": "Bottom right",
            "fill": "Fill",
            "Scale": "Scale"
        },
        "assetTypes": {
            "behavior": [
                "behavior",
                "behaviors",
                "behaviors"
            ],
            "enum": [
                "enumeration",
                "enumerations",
                "enumerations"
            ],
            "script": [
                "script",
                "scripts",
                "scripts"
            ],
            "style": [
                "style",
                "styles",
                "styles"
            ],
            "sound": [
                "sound",
                "sounds",
                "sounds"
            ],
            "skeleton": [
                "skeletal sprite",
                "skeletal sprites",
                "skeletal sprites"
            ],
            "tandem": [
                "emitter tandem",
                "emitter tandems",
                "emitter tandems"
            ],
            "texture": [
                "texture",
                "textures",
                "textures"
            ],
            "template": [
                "template",
                "templates",
                "templates"
            ],
            "room": [
                "room",
                "rooms",
                "rooms"
            ],
            "typeface": [
                "typeface",
                "typefaces",
                "typefaces"
            ]
        }
    },
    "assetConfirm": {
        "confirmHeading": "Select action",
        "confirmParagraph": "The $1 asset has unapplied changes. What would you like to do with it?"
    },
    "assetInput": {
        "changeAsset": "Press to change the asset",
        "jumpToAsset": "Jump to this asset",
        "selectAssetHeader": "Select an asset"
    },
    "assetViewer": {
        "root": "Root",
        "toggleFolderTree": "Toggle folder tree visibility",
        "addNewFolder": "New Folder",
        "newFolderName": "New folder",
        "unwrapFolder": "Unwrap the folder",
        "confirmDeleteFolder": "Are you sure you want to delete this folder? All its contents will be deleted as well.",
        "confirmUnwrapFolder": "Are you sure you want to unwrap this folder? All its contents will be placed in the current folder.",
        "exportBehavior": "Export this behavior",
        "exportTandem": "Export this emitter tandem"
    },
    "behaviorEditor": {
        "customFields": "Custom Fields",
        "customFieldsDescription": "Custom fields can be used to add additional inputs to assets' editors. These fields will be available in the properties panel, and be available as properties of the \"this\" object. For example, if you create a field with a name \"sausage\", you can read it in events as \"this.sausage\"."
    },
    "builtinAssetGallery": {
        "galleryTip": "This is a free, built-in gallery of various textures and sounds. All the assets are CC0 or WTFPL, or are released under special terms for use in ct.js. In any way, you can use these assets however you like, in commercial and other projects.",
        "assetGalleryHeader": "Assets",
        "importIntoProject": "Import into the current project",
        "importAll": "Import all",
        "byAuthorPrefix": "by",
        "cannotImportExplanation": "The name that this asset would take is taken by some other asset. You may need to rename existing assets; or maybe you've already imported this asset?",
        "nameOccupied": "Name occupied",
        "cannotImportNameOccupied": "Cannot import $1 as such name is already occupied.",
        "visitSource": "Open the store page of this asset pack",
        "visitAuthorsItch": "Visit author's itch.io page",
        "visitAuthorsTwitter": "Visit author's Twitter page",
        "tipAuthor": "Tip the author for their hard work :D"
    },
    "catnip": {
        "trashZoneHint": "Drop blocks here to quickly delete them",
        "properties": "Properties",
        "propertiesHint": "Properties are stored in the copy or room and can be accessed later, including from other copies.",
        "variables": "Variables",
        "variablesHint": "Variables are temporary and exist only for this event's run. They're good for storing results of quick calculations.",
        "globalVariables": "Global variables",
        "globalVariablesHint": "Global variables are accessible from anywhere in your project. They're not saved between runs; for that, use \"Save to storage\" and \"Load from storage\" blocks.",
        "createNewProperty": "New property",
        "createNewVariable": "New variable",
        "createNewGlobalVariable": "New global variable",
        "newPropertyPrompt": "Input the name for the new property:",
        "newVariablePrompt": "Input the name for the new variable. The name must not contain whitespace or any special letters, and must start with a letter.",
        "newGlobalVariablePrompt": "Input the name for the new global variable. The name must not contain whitespace or any special letters, and must start with a letter.",
        "invalidVarNameError": "Invalid variable name. The name must not contain whitespace or any special letters, and must start with a letter.",
        "renamePropertyPrompt": "Input the new name for this property:",
        "renameVariablePrompt": "Input the new name for this variable:",
        "renamingAcrossProject": "Replacing variable name in other assets…",
        "errorBlock": "Missing block from library",
        "errorBlockDeleteHint": "Right-click to delete it.",
        "asyncHint": "This block runs asynchronously, meaning that it will execute later and won't block the rest of the script. Use block areas inside this one to run commands on its completion, but do note that things can change while this block runs: for example, the copy that runs this block may be deleted (depending on your gameplay logic) and thus will become unusable when this block finishes.",
        "optionsAdvanced": "Advanced",
        "addCustomOption": "Add a custom property",
        "changeBlockTo": "Change to \"$1\"",
        "goToActions": "Open Actions settings",
        "copyDocHtml": "Copy as HTML for docs",
        "copySelection": "Copy selected blocks",
        "duplicateBlock": "Duplicate this block",
        "requiredField": "This field is required and is missing a value.",
        "unnamedGroup": "Unnamed group",
        "placeholders": {
            "putBlocksHere": "Put your blocks here",
            "doNothing": "Do nothing"
        },
        "coreLibs": {
            "appearance": "Appearance",
            "arrays": "Arrays",
            "backgrounds": "Backgrounds",
            "behaviors": "Behaviors",
            "camera": "Camera",
            "console": "Console",
            "emitter tandems": "Emitters",
            "logic": "Logic",
            "math": "Math",
            "misc": "Miscellaneous",
            "movement": "Movement",
            "objects": "Objects",
            "rooms": "Rooms",
            "settings": "Settings",
            "sounds": "Sounds",
            "strings": "Strings",
            "templates": "Templates",
            "utilities": "Utilities",
            "actions": "Actions",
            "timers": "Timers"
        },
        "blockNames": {
            "kill copy": "Destroy this copy",
            "move copy": "Move this copy",
            "set speed": "Set speed to",
            "set gravity": "Set gravity to",
            "set gravityDir": "Set gravity direction to",
            "set hspeed": "Set horizontal speed to",
            "set vspeed": "Set vertical speed to",
            "set direction": "Set direction to",
            "get speed": "speed",
            "get gravity": "gravity",
            "get gravityDir": "gravity direction",
            "get hspeed": "horizontal speed",
            "get vspeed": "vertical speed",
            "get direction": "direction",
            "y of copy": "y of a copy",
            "x of copy": "x of a copy",
            "x prev": "previous x",
            "y prev": "previous y",
            "get width": "width",
            "get height": "height",
            "set width": "Set width to",
            "set height": "Set height to",
            "set property variable": "Set property/variable",
            "increment": "Increment",
            "decrement": "Decrement",
            "increase": "Increase",
            "decrease": "Decrease",
            "this write": "Write",
            "current room write": "Write to the current room",
            "write property to object": "Write to the object",
            "this read": "read",
            "room read": "current room's property",
            "object read": "object's property",
            "object delete": "Delete property in an object",
            "new array": "new array",
            "new object": "Create a new object",
            "new empty object": "new empy object",
            "convert to string": "to string",
            "const string": "String (a constant value)",
            "convert to number": "to number",
            "convert to boolean": "to boolean",
            "note": "Note",
            "plainJs": "Execute JavaScript",
            "color": "color",
            "variable": "Variable",
            "property": "Property",
            "behavior property": "Behavior's property",
            "content type entries": "Content type entries",
            "if else branch": "If-else branch",
            "if branch": "If branch",
            "while loop cycle": "While loop",
            "repeat": "Repeat N times",
            "for each": "For each element of array",
            "break loop": "Stop this loop",
            "NOT logic operator": "NOT logic operator",
            "AND logic operator": "AND logic operator",
            "OR logic operator": "OR logic operator",
            "AND AND logic operator": "double AND logic operator",
            "OR OR logic operator": "double OR logic operator",
            "is": "Is (equal to)",
            "is not": "Is not (not equal to)",
            "set texture": "Set texture to",
            "set scale": "Set scale to",
            "set scale xy": "Set scale to",
            "set angle": "Set texture rotation to",
            "set skew": "Set skew to",
            "skew x": "skew by x",
            "skew y": "skew by y",
            "set alpha": "Set opacity to",
            "set visible": "Set visibility to",
            "scale x": "scale by x",
            "scale y": "scale by y",
            "get angle": "texture rotation",
            "get alpha": "opacity",
            "set tint": "Set tint to",
            "get tint": "tint",
            "play animation": "Play animation",
            "stop animation": "Stop animation",
            "goto frame play": "Go to a frame and play the animation",
            "goto frame stop": "Go to a frame and stop the animation",
            "goto frame": "Go to a frame",
            "get animation speed": "animation speed",
            "set animation speed": "Set animation speed to",
            "this": "this",
            "concatenate strings": "Concatenate strings",
            "concatenate strings triple": "Concatenate strings (triple)",
            "action value": "action value",
            "is action pressed": "action is pressed",
            "is action down": "action is down",
            "is action released": "action was released",
            "templates Templates copy into room": "Copy a template into room",
            "templates Templates copy": "Copy a template",
            "templates Templates each": "For each copy",
            "templates Templates with copy": "With copy",
            "templates Templates with template": "With all copies of a template",
            "templates templates exists": "template's copies exist",
            "rooms Rooms add bg": "Add background",
            "rooms Rooms clear": "Clear the current room",
            "rooms Rooms remove": "Remove a room",
            "rooms Rooms switch": "Switch to",
            "rooms Rooms restart": "Restart the current room",
            "rooms Rooms append": "Append a room",
            "rooms Rooms prepend": "Prepend a room",
            "rooms Rooms merge": "Merge into current room",
            "rooms rooms current": "current room",
            "rooms rooms list": "rooms list",
            "rooms rooms starting": "starting room",
            "behaviors Behaviors add": "Add a behavior to",
            "behaviors Behaviors remove": "Remove a behavior from",
            "behaviors behaviors has": "has behavior",
            "sounds Sounds play": "Play a sound",
            "sounds Sounds play at": "Play a 3D sound",
            "sounds Sounds stop": "Stop sound",
            "sounds Sounds pause": "Pause sound",
            "sounds Sounds resume": "Resume sound",
            "sounds Sounds global volume": "Set global volume",
            "sounds Sounds fade": "Fade a sound",
            "sounds Sounds add filter": "Add a filter to a sound",
            "sounds Sounds add distortion": "Add a distortion filter",
            "sounds Sounds add equalizer": "Add an equalizer filter",
            "sounds Sounds add mono filter": "Add a mono filter",
            "sounds Sounds add reverb": "Add a reverb filter",
            "sounds Sounds add stereo filter": "Add a stereo filter",
            "sounds Sounds add panner filter": "Add a 3D panner filter",
            "sounds Sounds add telephone": "Add a telephone filter",
            "sounds Sounds remove filter": "Remove a filter from a sound",
            "sounds Sounds speed all": "Set global sound speed",
            "sounds sounds load": "Load a sound",
            "sounds sounds exists": "sound exists",
            "sounds sounds playing": "is sound playing",
            "sounds sounds toggle mute all": "all sounds muted",
            "sounds sounds toggle pause all": "all sounds paused",
            "styles styles get": "get a style",
            "backgrounds Backgrounds add": "Add a background",
            "backgrounds backgrounds list": "list of backgrounds",
            "emitter tandems Emitters fire": "Fire an emitter at location",
            "emitter tandems Emitters append": "Append an emitter",
            "emitter tandems Emitters follow": "Create an emitter and follow",
            "emitter tandems Emitters stop": "Stop and destroy the emitter",
            "emitter tandems Emitters pause": "Pause the emitter",
            "emitter tandems Emitters resume": "Resume the emitter",
            "emitter tandems Emitters clear": "Clear the emitter's particles",
            "utilities U reshape nine patch": "Reshape a nine-slice panel",
            "utilities u time": "time",
            "utilities u time ui": "ui time",
            "utilities u get environment": "environment",
            "utilities u get os": "current os",
            "utilities u ldx": "x length of a vector",
            "utilities u ldy": "y length of a vector",
            "utilities u direction": "direction",
            "utilities u distance": "distance between",
            "utilities u pdn": "2-point direction",
            "utilities u pdc": "2-point distance",
            "utilities u deg to rad": "degrees to radians",
            "utilities u rad to deg": "radians to degrees",
            "utilities u rotate": "rotate a vector",
            "utilities u rotate rad": "rotate a vector in radians",
            "utilities u delta dir": "direction difference",
            "utilities u clamp": "clamp",
            "utilities u lerp": "interpolate",
            "utilities u unlerp": "un-interpolate",
            "utilities u map": "remap a value",
            "utilities u get rect shape": "get rectangular shape",
            "utilities u prect": "is point in rectangle",
            "utilities u pcircle": "is point in circle",
            "utilities u ui to css coord": "convert ui coord to css pixels",
            "utilities u game to css coord": "convert game coord to css pixels",
            "utilities u ui to css scalar": "convert scalar from ui to css length",
            "utilities u game to css scalar": "convert game length to css scalar",
            "utilities u game to ui coord": "convert game coord to ui pixels",
            "utilities u ui to game coord": "convert ui coord to game pixels",
            "utilities U wait": "Delay, in milliseconds",
            "utilities U wait ui": "UI delay, in milliseconds",
            "utilities u numbered string": "numbered string",
            "utilities u get string number": "get string number",
            "settings settings high density": "hight dpi",
            "settings settings target fps": "target fps",
            "settings settings view mode": "view mode",
            "settings settings fullscreen": "fullscreen",
            "settings settings pixelart": "pixelart mode",
            "settings settings prevent default": "prevent browser events",
            "set x": "Set x to",
            "set y": "Set y to",
            "get x": "x",
            "get y": "y",
            "follow this": "Follow this copy",
            "follow": "Follow",
            "set zoom": "Set zoom to",
            "get zoom": "zoom",
            "set targetX": "Set camera's target x to",
            "set targetY": "Set camera's target y to",
            "set shiftX": "Set camera's horizontal shift",
            "set shiftY": "Set camera's vertical shift",
            "set drift": "Set camera's drift",
            "set rotation": "Set rotation",
            "set followX": "Enable following by x",
            "set followY": "Enable following by y",
            "set borderX": "Set horizontal borders for following to",
            "set borderY": "Set vertical borders for following to",
            "set shake": "Set screen shake power to",
            "set shakeDecay": "Set screen shake decay speed to",
            "set shakeFrequency": "Set screen shake frequency to",
            "set shakeX": "Set horizontal shake multiplier to",
            "set shakeY": "Set vertical shake multiplier to",
            "set shakeMax": "Set maximum shake power to",
            "set minX": "Set left boundary to",
            "set maxX": "Set right boundary to",
            "set minY": "Set top boundary to",
            "set maxY": "Set right boundary to",
            "get targetX": "target x",
            "get targetY": "target y",
            "get computedX": "current x",
            "get computedY": "current y",
            "get shiftX": "horizontal shift",
            "get shiftY": "vertical shift",
            "get drift": "drift power",
            "get left": "left side",
            "get right": "right side",
            "get top": "top side",
            "get bottom": "bottom side",
            "get rotation": "rotation",
            "get followX": "follow horizontally",
            "get followY": "follow vertically",
            "get borderX": "follow horizontal borders",
            "get borderY": "follow vertical borders",
            "get shake": "screen shake power",
            "get shakeDecay": "screen shake decay speed",
            "get shakeFrequency": "screen shake frequency",
            "get shakeX": "horizontal shake multiplier",
            "get shakeY": "vertical shake multiplier",
            "get shakeMax": "maximum shake power",
            "get minX": "left boundary",
            "get maxX": "right boundary",
            "get minY": "top boundary",
            "get maxY": "bottom boundary",
            "console log": "Log to console",
            "console warn": "Send a warning to the console",
            "console error": "Send an error to the console",
            "set depth": "Set depth to",
            "get depth": "depth",
            "script options": "Script options",
            "run script": "Run a script",
            "hasSubstring": "has substring",
            "substringPosition": "substring position",
            "stringLength": "string length",
            "replace substring": "replace substring",
            "replace all substrings": "replace all substrings",
            "trim whitespace": "trim whitespace",
            "regex passes": "regex passes",
            "replace by regex": "replace by regex",
            "replace all by regex": "replace all substrings by regex",
            "split by a substring": "split by a substring",
            "split": "split a string into an array",
            "slice a string": "slice a string",
            "to uppercase": "to uppercase",
            "to lowercase": "to lowercase",
            "array unshift": "Add an element at start",
            "array push": "Add an element at end",
            "add element at position": "Add an element at position",
            "array pop": "Remove the last array element",
            "array shift": "Remove the first array element",
            "remove element from array": "Remove the element from array",
            "remove at position": "Remove an element at position",
            "filter array": "Filter array",
            "map array": "Map elements of array",
            "set text": "Set text",
            "set disabled": "Set disabled state",
            "get text": "get text",
            "get disabled": "get disabled",
            "define function": "Define a function",
            "return": "Return the result",
            "execute function": "Run a function",
            "get function option": "get an option",
            "set timer 1": "Set 1st timer",
            "set timer 2": "Set 2nd timer",
            "set timer 3": "Set 3rd timer",
            "set timer 4": "Set 4th timer",
            "set timer 5": "Set 5th timer",
            "set timer 6": "Set 6th timer",
            "get timer 1": "Get 1st timer's value",
            "get timer 2": "Get 2nd timer's value",
            "get timer 3": "Get 3rd timer's value",
            "get timer 4": "Get 4th timer's value",
            "get timer 5": "Get 5th timer's value",
            "get timer 6": "Get 6th timer's value",
            "set game speed": "Set game speed",
            "get game speed": "Get game speed",
            "deserialize object": "Deserialize object",
            "serialize object": "serialize object",
            "save to storage": "Save to storage in key",
            "delete from storage": "Delete from storage the key",
            "load from storage": "load from storage from key",
            "is key in storage": "is key in storage",
            "owning room": "copy's owning room",
            "math abs": "absolute",
            "math sign": "sign of",
            "math floor": "floor",
            "math ceil": "ceil",
            "math round": "round",
            "math sqrt": "square root",
            "math sin": "sin",
            "math cos": "cos",
            "math tan": "tan",
            "math asin": "asin",
            "math acos": "acos",
            "math atan": "atan",
            "math atan2": "atan2",
            "math pow": "power",
            "math log": "log",
            "math min": "minimum of",
            "math max": "maximum of"
        },
        "blockDisplayNames": {
            "write": "Write",
            "if else branch": "If",
            "while loop cycle": "While",
            "repeat": "Repeat",
            "for each": "For each",
            "NOT logic operator": "not",
            "set": "Set",
            "x of": "x of",
            "y of": "y of",
            "options": "options",
            "lengthOf": "length of",
            "split": "split",
            "join": "join",
            "add element": "Add an element",
            "remove element": "Remove element",
            "set timer 1 to": "Set 1st timer to",
            "set timer 2 to": "Set 2nd timer to",
            "set timer 3 to": "Set 3rd timer to",
            "set timer 4 to": "Set 4th timer to",
            "set timer 5 to": "Set 5th timer to",
            "set timer 6 to": "Set 6th timer to",
            "timer": "timer",
            "read": "read",
            "set game speed to": "Set game speed to",
            "game speed": "game speed"
        },
        "blockLabels": {
            "value": "value",
            "property": "property",
            "changeBy": "by",
            "is not": "is not",
            "is": "is",
            "else": "Else",
            "timesCount": "times",
            "toWrite": "to",
            "fromRead": "from",
            "atPosition": "at",
            "inInside": "in",
            "contains": "contains",
            "forDuring": "for",
            "replace": "replace",
            "replaceAll": "replace all",
            "replaceByRegex": "replace by regex",
            "replaceAllByRegex": "replace all by regex",
            "fromDestination": "from",
            "fromSource": "from",
            "toDestination": "to",
            "store index in": "store index in",
            "store in": "store in",
            "store result in": "store the result in",
            "of array": "of array",
            "of current room": "of the current room",
            "to current room": "to the current room",
            "AND": "and",
            "OR": "or",
            "and": "and",
            "then": "Then",
            "catch": "On error",
            "and play animation": "and play the animation",
            "and stop animation": "and stop the animation",
            "scale": "scale",
            "position": "position",
            "at position": "at position",
            "with results in": "with results stored in",
            "store new array in": "store new array in",
            "and elements": "and elements",
            "secondsUnits": "second(s)"
        },
        "blockOptions": {
            "soundVolume": "Volume",
            "loop": "Loop",
            "isRoomUi": "Is this room a UI layer?",
            "speed": "Speed",
            "start at": "Start at",
            "soundSingleInstance": "Stop other sound instances"
        },
        "blockDocumentation": {
            "serialize object": "This block serializes an object into a string that can be later safely saved or transferred. This method does not support dates, functions, and structures that form cyclic references. Objects serialized with this block should be deserialized with the \"Deserialize object\" block.",
            "constant string": "You can use this block to force creating a string: for example, when you want to write a number in a string or convert \\n to a linebreak when putting this value into wildcard slots."
        }
    },
    "colorPicker": {
        "current": "New",
        "globalPalette": "Global Palette",
        "altClick": "Alt-click to delete",
        "old": "Old",
        "projectPalette": "Project's Palette"
    },
    "createAsset": {
        "newAsset": "New Asset",
        "placeholderTexture": "Placeholder texture",
        "assetGallery": "Built-in asset gallery",
        "behaviorTemplate": "Behavior for templates",
        "behaviorRoom": "Behavior for rooms",
        "importFromFile": "Import from file",
        "behaviorMissingCatmods": "Your project is missing these catmods: $1. Enable them first.",
        "formatError": "The opened file has a malformed format or, perhaps, was made for an incompatible version of ct.js."
    },
    "curveEditor": {
        "curveLineHint": "Click the curve to add a point",
        "dragPointHint": "Drag to move the point, right-click to delete it",
        "pointTime": "Time:",
        "pointValue": "Value:"
    },
    "debuggerToolbar": {
        "pause": "Pause",
        "resume": "Resume the game",
        "restartGame": "Restart the game",
        "restartRoom": "Restart the room",
        "switchRoom": "Go to room…",
        "toggleDevTools": "Toggle dev. tools",
        "screenshot": "Take a screenshot",
        "enterFullscreen": "Enter fullscreen",
        "exitFullscreen": "Exit fullscreen",
        "links": "Links and QR-codes",
        "openExternal": "Open in browser",
        "close": "Close"
    },
    "docsShortcut": {
        "openDocs": "Open the documentation"
    },
    "docsPanel": {
        "documentation": "Documentation",
        "reference": "Reference"
    },
    "enumEditor": {
        "addVariant": "Add a variant",
        "enumUseCases": "This enumeration will be available across all your code and can act as a data type in content schemas and behaviors' fields."
    },
    "exportPanel": {
        "hide": "Hide",
        "working": "Working…",
        "debug": "Debug version",
        "export": "Export",
        "exportPanel": "Export the Project",
        "log": "Message Log",
        "goodToGo": "Good to go! 👍",
        "windowsCrossBuildWarning": "To build for Windows from Linux/MacOS, you need Wine installed in your system. Install instructions are all different for various platforms, so you better google it yourself :)",
        "cannotBuildForMacOnWin": "Unfortunately, Windows can only produce broken Mac packages. Try using a Linux machine; for example, in a virtual one. It is 100% free!",
        "projectTitleRequired": "You must add a title to your project in the Project tab → Authoring → Name.",
        "appIdRequired": "You must set a unique appId in the Project tab → Authoring → App ID to distribute this app.",
        "noAndroidSdkFound": "No Android SDK was found (ANDROID_SDK_ROOT environment variable is not set). You can get Android SDK by installing Android Studio:",
        "envVarNotice": "You may still need to set this environment variable manually and restart your device.",
        "downloadAndroidStudio": "Download Android Studio",
        "nodeJsNotFound": "Node.js was not found in your system.",
        "nodeJsDownloadPage": "Download Node.js",
        "nodeJsIcons": "Node.js is optional but is required to patch Windows executables to add metadata and icons. If you don't install node.js, your game won't have a proper icon on Windows.",
        "requiresInternetNotice": "This operation requires Internet connection to setup each project.",
        "noJdkFound": "No JDK 17 was found (JAVA_HOME environment variable is not set or doesn't point to JDK 17). You can get JDK 17 here:",
        "downloadJDK": "Download JDK 17",
        "firstRunNotice": "The first run for each platform will be slow as ct.js will download and save additional libraries needed for packing. It will take some time, but next times will be almost instant."
    },
    "exporterError": {
        "exporterErrorHeader": "An error occured while exporting your project",
        "errorSource": "In a $1 called $2",
        "clueSolutions": {
            "syntax": "This is a syntax error in your code. Go to the asset and fix it — the code editor will highlight the problematic place.",
            "eventConfiguration": "One of the events is misconfigured, having empty fields. Go to the asset and edit its event's parameters.",
            "eventMissing": "There is an event in your asset that uses a missing module. Check if you have installed all the required modules, and, if you have recently disabled catmods, try turning them on again.",
            "emptySound": "One of your sounds does not have any sound files attached. Import a sound file to it or remove this empty sound.",
            "emptyEmitter": "One of your particle systems is missing a texture in its emitter. You will need to either set a texture to it or remove the emitter.",
            "windowsFileLock": "This is a Windows-specific problem with a locked file. Make sure you've closed all external browsers that launched the game, then try exporting again. If it doesn't help, restart ct.js.",
            "noTemplateTexture": "One of your templates is missing a texture. You need to set a texture to it.",
            "blockArgumentMissing": "An argument in a catnip code is not set or was referring to a now removed asset. Go to the asset and set a value to the block mentioned above.",
            "blockDeclarationMissing": "A block in your catnip code uses a missing catmod. If you have recently disabled catmods, try turning them back on, or remove the problematic blocks."
        },
        "stacktrace": "Call stack",
        "jumpToProblem": "Jump to the problem",
        "saveAndQuit": "Save and quit"
    },
    "extensionsEditor": {
        "noEntries": "No entries yet.",
        "addRow": "Add a row",
        "actions": "Actions",
        "values": "Values",
        "moveDown": "Move down",
        "moveUp": "Move up",
        "deleteRow": "Delete row"
    },
    "folderEditor": {
        "title": "Folder Settings",
        "icon": "Icon:",
        "color": "Color:"
    },
    "globalSearch": {
        "buttonTitle": "Search assets",
        "nothingFound": "Nothing found.",
        "searchHint": "Search for any asset by its name. Recent assets will also go here.",
        "recent": "recently opened"
    },
    "intro": {
        "loading": "Please wait: kittens are gathering speed of light!",
        "newUserHeader": "Welcome to ct.js!",
        "welcomeHeaders": [
            "Welcome back, Tumblr sexyman!",
            "Welcome back, Neo!",
            "Isn't it our epic coder? Welcome back!",
            "Nice to see you again!",
            "Welcome back, Superstar!",
            "You're finally awake. Welcome back!",
            "General Kenobi!",
            "🖖",
            "Greetings, traveller!",
            "Ohayo, sempai uwu",
            "Hallo :D hallo :D hallo :D",
            "Nice to see you, lumberfoot.",
            "✉️ Raid: Hackerman pirates",
            "Welcome to Summoner's Rift!",
            "Welcome to test chamber 20"
        ],
        "newProject": {
            "header": "Create new",
            "projectName": "Name:",
            "language": "Coding language:",
            "saveFolder": "Project's folder:",
            "input": "(latin letters, underscore, and digits only)",
            "selectProjectFolder": "Select a folder in which to store your project",
            "nameError": "Wrong project name",
            "languageError": "You must specify a programming language"
        },
        "ctDistributions": {
            "released": "Release branch",
            "nightly": "Nightly build 🌚",
            "dev": "Running from sources 🤓"
        },
        "gamesFromCommunity": "Games from the Community",
        "submitYourOwn": "Submit Your Own",
        "learningResources": "Learning Resources",
        "authorBy": "by $1",
        "recovery": {
            "message": "<h2 class=\"nmt\">Recovery</h2><p>ct.js has found a recovery file. Possibly, your project was not saved correctly or ct.js was shut down in case of some emergency. Here is when these files were lastly modified:</p><p>Your chosen file: {0} {1}<br/>Recovery file: {2} {3}</p><p>What file should ct.js open?</p>",
            "loadTarget": "Target File",
            "loadRecovery": "Recovery",
            "newer": "<b>(newer)</b>",
            "older": "(older)"
        },
        "loadingProject": "Loading the project…",
        "loadingProjectError": "Cannot open this project because of the following error: ",
        "homepage": "Homepage",
        "latestVersion": "Version $1 is available",
        "forgetProject": "Forget this project",
        "cloneProject": "Clone this project into a new location",
        "browse": "Browse",
        "latest": "Latest projects",
        "nothingToShowFiller": "There is nothing to show here! Try Examples or create your own project below.",
        "examples": "Examples",
        "templates": "Templates",
        "templatesInfo": "You can kickstart your game development by using one of these templates. They contain placeholder graphics only but have working mechanics. Selecting a project will open a save directory selector for your new project.",
        "unableToWriteToFolders": "Ct.js could not find an appropriate place for projects! Make sure you store ct.js app inside a folder you have access to write to.",
        "twitter": "Twitter channel",
        "telegram": "Telegram group chat",
        "discord": "Discord community",
        "github": "Ct.js at Github",
        "itch": "Ct.js' store page on itch.io",
        "vkontakte": "Vkontakte public community",
        "patreon": "Support ct.js on Patreon!",
        "boosty": "Support ct.js on Boosty!",
        "sponsoredBy": "Proudly sponsored by $1!",
        "supportedBy": "Supported by $1",
        "createOrBrowseJunction": "or"
    },
    "onboarding": {
        "hoorayHeader": "Wow! You've just created a project!",
        "nowWhatParagraph": "Now, what should we do?",
        "openSpaceShooterTutorial": "Learn how to make a space shooter",
        "openPlatformerTutorial": "Learn how to make a platformer",
        "openJettyCatTutorial": "Learn how to make a Jetty Cat",
        "doNothing": "Skip this screen and make a great game!",
        "showOnboardingCheckbox": "Show this screen when creating a new project"
    },
    "languageSelector": {
        "chooseLanguageHeader": "Choose your coding language",
        "chooseLanguageExplanation": "This is the language you will write events with to describe your gameplay logic. Previously, all the projects used JavaScript+TypeScript. Note that you can only convert CoffeeScript or Catnip projects to JavaScript, but not the other way around, so choose carefully!",
        "coffeeScriptDescription": "A good language for beginners with a simple syntax. Pick this language if you don't have prior experience with programming with code, or if you love Python.",
        "pickCoffeeScript": "I choose CoffeeScript!",
        "jsAndTs": "JavaScript (and TypeScript)",
        "jsTsDescription": "The language of the web. Its syntax is more complex but it has in-editor error highlighting and code suggestions. Choose it if you worked with JS, C# or Java code before.",
        "pickJsTs": "I choose JavaScript!",
        "acceptAndSpecifyDirectory": "Accept and pick project folder",
        "catnip": "Catnip",
        "catnipDescription": "A visual scripting language made for ct.js. You can put blocks with drag-and-drop and with keyboard. A good choice if you have little to zero experience with coding.",
        "pickCatnip": "I choose Catnip!"
    },
    "settings": {
        "actions": {
            "heading": "Actions and input methods",
            "actions": "Actions",
            "addAction": "Add an action",
            "addMethod": "Add an input method",
            "deleteAction": "Delete this action",
            "deleteMethod": "Delete this method",
            "inputActionNamePlaceholder": "Action name",
            "methodModuleMissing": "The required module for this method is missing",
            "methods": "Input methods",
            "multiplier": "Multiplier",
            "noActionsYet": "Actions allow developers to listen to numerous input methods at once and dynamically change them, all with one uniform API. Read more by clicking on the docs icon above.",
            "makeFromScratch": "Make from scratch",
            "presets": "Presets",
            "presetXYMovement": "Generic XY movement",
            "presetTouchAndMouse": "Mouse & Touch",
            "presetCustom": "Import your own",
            "exportActionPreset": "Export as a preset",
            "importErrorMissingModules": "Cannot import action preset as your ct.js installation lacks following modules: $1.",
            "importErrorNotCtJsPreset": "This file doesn't look like ct.js' actions preset."
        },
        "main": {
            "heading": "Main settings",
            "miscHeading": "Other settings",
            "backups": "Number of backup files to keep:"
        },
        "authoring": {
            "heading": "Authoring",
            "author": "Developer:",
            "site": "Homepage:",
            "title": "Name:",
            "version": "Version:",
            "versionPostfix": "Postfix:",
            "appId": "App ID",
            "appIdExplanation": "This is mainly used in mobile builds. It is a unique string that identifies your game. It usually follows the format zone.developer.projectName, and, say, rocks.ctjs.catsteroids is a good example for that."
        },
        "branding": {
            "heading": "Branding",
            "accent": "Accent:",
            "accentNotice": "Sets the color of the preloader, as well as of some other places if used as a mobile app.",
            "icon": "Game's icon:",
            "iconNotice": "It should be a square, one-frame texture that is at least 256x256px large.",
            "splashScreen": "Splash screen:",
            "splashScreenNotice": "This image will be used in mobile builds. It should be at least 1920x1920px large, and will be resized and cropped for portrait and landscape screen orientation, so make sure everything important is in the center square.",
            "forceSmoothIcons": "Use smooth icons regardless of rendering settings",
            "forceSmoothSplashScreen": "Use smooth splash screen images regardless of rendering settings",
            "invertPreloaderScheme": "Invert preloader's color scheme",
            "alternativeCtjsLogo": "Use alternative ct.js logo",
            "alternativeCtjsNotice": "Replaces \"Made with ct.js\" on the splash screen with a regular ct.js logo. Helpful when your distributor is a prick.",
            "hideLoadingLogo": "Hide \"Made with ct.js\" graphics on the loading screen",
            "customLoadingText": "Custom loading text",
            "customLoadingTextHint": "You can put a whitespace (not an empty string) if you want to hide the loading text."
        },
        "content": {
            "heading": "Content type editor",
            "addContentType": "Add a type",
            "missingTypeName": "Unnamed content type",
            "unnamedContentTypeHint": "This content type is unnamed. It will not be usable in-game unless you add the name.",
            "typeName": "Content type name",
            "typeNameHint": "The name of your content type as it will be used in code. Examples: GearItems, EnemySkills, Cities.",
            "typeReadableName": "Readable name",
            "typeReadableNameHint": "The readable name of your content type, which is shown here and in content editors.",
            "icon": "Icon",
            "typeSpecification": "Content schema",
            "fieldName": "Name",
            "fieldNameHint": "The name of the field as it will be used in code. For example: power, hp, spawnType.",
            "fieldReadableName": "Readable name",
            "fieldReadableNameHint": "The readable version of the name, which is used in the content editor.",
            "fixedLength": "Fixed length",
            "fieldType": "Type",
            "fieldStructure": "Structure",
            "structureTypes": {
                "atomic": "Single value",
                "array": "Array",
                "map": "Map"
            },
            "key": "Key",
            "value": "Value",
            "mappedType": "Mapped type",
            "deleteContentType": "Delete this content type",
            "confirmDeletionMessage": "Are you sure you want to delete this content type? It is irreversible and will also delete all the entries of this content type.",
            "gotoEntries": "Go to entries",
            "entries": "Entries"
        },
        "modules": {
            "heading": "Catmods"
        },
        "rendering": {
            "heading": "Render Options",
            "framerate": "Framerate:",
            "highDensity": "Support high pixel density (e.g. on retina screens)",
            "maxFPS": "Max framerate:",
            "hideCursor": "Hide system cursor",
            "usePixiLegacy": "Add a legacy, canvas-based renderer to support older browsers and graphics cards (adds ~20kb up to your game)",
            "viewportMode": "Viewport mode",
            "viewportModes": {
                "asIs": "Not managed",
                "fastScale": "Fast scaling",
                "fastScaleInteger": "Fast scaling by integers",
                "expand": "Expand",
                "scaleFit": "Quality scaling with letterboxes",
                "scaleFill": "Quality scaling without letterboxing"
            },
            "viewportModesDescriptions": {
                "asIs": "disables any viewport management; the rendered canvas will be placed as is in the top-left corner.",
                "fastScale": "the viewport will proportionally fill the screen without changing the resolution.",
                "fastScaleInteger": "the viewport will be positioned at the middle of the screen, and will be scaled by whole numbers (x2, x3, x4 and so on).",
                "expand": "the viewport will fill the whole screen. The camera will expand to accommodate the new area.",
                "scaleFit": "the viewport will proportionally fill the screen, leaving letterboxes around the base viewport. The resolution is changed to match the screen.",
                "scaleFill": "the viewport fills the screen, expanding the camera to avoid letterboxing. The resolution is changed to match the screen."
            },
            "useTransparent": "Use a transparent PIXI background",
            "desktopBuilds": "Desktop builds",
            "launchMode": "Launch mode:",
            "launchModes": {
                "maximized": "Maximized",
                "fullscreen": "Fullscreen",
                "windowed": "Windowed"
            },
            "mobileBuilds": "Mobile builds",
            "screenOrientation": "Screen orientation:",
            "screenOrientations": {
                "unspecified": "Any",
                "landscape": "Landscape",
                "portrait": "Portrait"
            },
            "pixelatedRender": "Disable image smoothing here and in exported project (preserve crisp pixels)"
        },
        "scripts": {
            "heading": "Custom scripts",
            "addNew": "Add a New Script",
            "deleteScript": "Delete the script",
            "moveDown": "Move down",
            "moveUp": "Move up",
            "newScriptComment": "Use scripts to define frequent functions and import small libraries",
            "scriptsHint": "Scripts created here will be injected in the root of your game and thus will always run at the start of the game. Only JavaScript and TypeScript are supported. Variables and types defined here will be available everywhere in your project."
        },
        "export": {
            "heading": "Export settings",
            "errorReporting": "Error reporting",
            "showErrors": "Display errors in the game window (strongly recommended)",
            "showErrorsHint": "Ct.js will show uncaught errors in a custom window from which players can copy error messages and navigate the report link you specify in the next field. This will help your players report such errors without using devtools.",
            "errorsLink": "Link to report errors: (Github issues, contact form, forum, etc.)",
            "functionWrap": "Wrap all the code in a function. (Makes debugging harder, but isolates the game's code from outer context. Do not enable while developing the game.)",
            "codeModifier": "Code transformations",
            "obfuscateWarning": "This option will make your code run 15-80% slower, but will make your code extremely hard to revert back to the original.",
            "codeModifierAndWrapNote": "Note that these settings only work for exported projects (Export for web and Export for desktop commands) as they noticeably slow packaging and make debugging harder. You can force them, though, in the Main menu → Settings → Force production tasks for debug exports.",
            "codeModifiers": {
                "none": "None",
                "minify": "Minify",
                "obfuscate": "Obfuscate"
            },
            "assetTree": "Asset tree",
            "assetTreeNote": "You can export the asset tree to explore it in game runtime as res.tree, but it also displays your project structure and adds a bit of weight to the exported project.",
            "exportAssetTree": "Export the asset tree",
            "exportAssetTypes": "Export these asset types only:",
            "autocloseDesktop": "Exit the app when a user presses the \"Close\" button."
        },
        "catmodsSettings": "Catmods' settings",
        "contentTypes": "Content Types"
    },
    "modules": {
        "author": "Author of this catmod",
        "dependencies": "Dependencies:",
        "help": "Reference",
        "info": "Info",
        "license": "License",
        "logs": "Changelog",
        "methods": "Methods",
        "optionalDependencies": "Optional dependencies:",
        "parameters": "Parameters",
        "logs2": "Changelog",
        "settings": "Settings",
        "importModules": "Import Modules",
        "enabledModules": "Enabled modules",
        "availableModules": "Available modules",
        "filter": "Filter",
        "preview": "(preview)",
        "previewTooltip": "This module has not yet been released and is for preview purposes.",
        "deprecatedTooltip": "This module is deprecated and will be removed in a future version.",
        "categories": {
            "customization": "Customization",
            "utilities": "Utilities",
            "media": "Multimedia",
            "misc": "Other",
            "desktop": "Desktop builds",
            "motionPlanning": "Motion planning",
            "inputs": "Input methods",
            "fx": "FX",
            "mobile": "Mobile devices",
            "integrations": "Integrations",
            "tweaks": "Tweaks",
            "networking": "Networking"
        }
    },
    "newAssetPrompt": {
        "heading": "Create new asset",
        "selectNewName": "The name of the new asset:"
    },
    "texture": {
        "create": "Create",
        "import": "Import",
        "skeletons": "Skeletal Animation",
        "textures": "Textures",
        "createTemplate": "Create a template from it",
        "importFromClipboard": "Import from clipboard",
        "generatePlaceholder": "Generate a placeholder"
    },
    "textureGenerator": {
        "name": "Texture's name:",
        "width": "Width:",
        "height": "Height:",
        "color": "Background color:",
        "label": "Label:",
        "optional": "(optional)",
        "createAndClose": "Create and close",
        "createAndContinue": "Create and add another",
        "scalingAtX4": "Scaling by x4 for a small texture",
        "generationSuccessMessage": "Successfully added $1 texture to your project.",
        "form": "Form",
        "formRectangular": "Rectangular",
        "formRound": "Round",
        "formDiamond": "Diamond",
        "filler": "Filler:",
        "fillerNone": "None",
        "fillerCross": "Cross",
        "fillerArrow": "Arrow",
        "fillerLabel": "Text label"
    },
    "sounds": {
        "record": "Record"
    },
    "soundRecorder": {
        "recorderHeading": "Recorder",
        "record": "Start recording",
        "stopRecording": "Stop recorder",
        "discardRecording": "Discard the recording",
        "finishRecording": "Finish recording",
        "cannotRecordSound": "Cannot start recorder: check your audio configuration and the recording device.",
        "troubleshootingWindows": "On Windows, also go to Settings -> Privacy -> Microphone and check that apps are allowed to access your microphone."
    },
    "styles": {
        "create": "Create",
        "styles": "Text Styles"
    },
    "fonts": {
        "fonts": "Fonts",
        "import": "Import TTF",
        "italic": "Italic"
    },
    "particleEmitters": {
        "emittersHeading": "Particle emitters",
        "emitterHeading": "Emitter",
        "from": "From:",
        "to": "To:",
        "textureHeading": "Texture",
        "selectTexture": "Select…",
        "textureMethod": "Use multiple frames as:",
        "textureMethods": {
            "random": "Random",
            "animated": "Animation"
        },
        "animatedFramerate": "Framerate:",
        "importBuiltin": "Import default…",
        "easingHeader": "Easing",
        "easing": {
            "none": "Stepped",
            "linear": "Linear",
            "smooth": "Smooth"
        },
        "colorAndOpacityHeading": "Color and Opacity",
        "stepped": "Stepped",
        "steppedColor": "Stepped color",
        "steppedAlpha": "Stepped opacity",
        "blendMode": "Blend mode:",
        "regular": "Regular",
        "darken": "Darken",
        "lighten": "Lighten",
        "burn": "Burn",
        "scalingHeading": "Scaling",
        "scale": "Scale:",
        "minimumSize": "Minimum size:",
        "minimumSizeHint": "Setting it to lower values will randomize the size of each particle. The lower the values, the stronger the effect.",
        "velocityHeading": "Velocity",
        "movementType": "Movement type:",
        "movementTypes": {
            "linear": "Linear",
            "accelerated": "With gravity"
        },
        "velocity": "Velocity:",
        "minimumSpeed": "Minimum speed:",
        "minimumSpeedHint": "Setting it to lower values will randomize the speed of each particle; the lower the value, the slower the particle may be.",
        "maxSpeed": "Max speed:",
        "gravityHeading": "Gravity",
        "gravityNotice": "Note that if it differs from (0;0), velocity interpolation will be disabled, meaning that only the first node of the velocity graph will have the effect.",
        "directionHeading": "Direction",
        "startingDirection": "Starting direction",
        "rotateTexture": "Rotate the texture along the movement direction",
        "rotationHeading": "Rotation",
        "rotationMethod": "Texture rotation:",
        "rotationMethods": {
            "static": "Fixed",
            "dynamic": "Dynamic"
        },
        "rotationSpeed": "Rotation speed",
        "rotationAcceleration": "Rotation acceleration:",
        "spawningHeading": "Spawning",
        "burstSpacing": "Spacing between rays, in degrees:",
        "burstStart": "Starting direction, in degrees:",
        "timeBetweenBursts": "Time between bursts:",
        "spawnAtOnce": "Spawn at once:",
        "chanceToSpawn": "Chance to spawn a particle:",
        "maxParticles": "Max particles:",
        "lifetime": "Particle lifetime, sec.",
        "emitterLifetime": "Emitter lifetime, sec.:",
        "prewarmDelay": "Prewarm / delay, sec.:",
        "prewarmDelayNotice": "Negative values will prepare the particles of the emitter before showing it, which is useful for long effects like dust particles or mist that should already be visible on room start; positive values will delay the simulation.",
        "shapeAndPositioningHeading": "Shape and Positioning",
        "spawnType": "Shape type:",
        "spawnShapes": {
            "rectangle": "Rectangle",
            "torus": "Circular",
            "star": "Star"
        },
        "width": "Width:",
        "height": "Height:",
        "radius": "Radius:",
        "starPoints": "Points:",
        "startAngle": "Rotate, deg.:",
        "showShapeVisualizer": "Show shape visualizer",
        "relativeEmitterPosition": "Position relative to other emitters",
        "addEmitter": "Add another emitter",
        "reset": "Reset preview",
        "changeBg": "Change background",
        "inspectorComplete": "Complete!",
        "alreadyHasAnImportingTexture": "You already have a texture named $1. Either delete it or rename it; though you must be importing the same texture you've added before :)",
        "changeGrid": "Set grid size",
        "newGridSize": "New grid size:",
        "setPreviewTexture": "Set preview texture"
    },
    "rooms": {
        "create": "Add new",
        "makeStarting": "Set as the starting room"
    },
    "notepad": {
        "local": "Project's notepad",
        "global": "Global notepad",
        "backToHome": "Back to docs' homepage",
        "modulesPages": "Modules' docs",
        "helpPages": "Learn",
        "docsAndNotes": "Docs & Notes"
    },
    "patreon": {
        "aboutPatrons": "Patrons are people who show their support to ComigoGames at Boosty, in form of recurring donations, similarly to subscriptions on Patreon.",
        "thankAllPatrons": "Thanks to all ComigoGames patrons, current and former ones, as your support keeps Comigo moving forward and making even better apps! :)",
        "patronsHeader": "Our patrons",
        "sponsors": "Sponsors",
        "noSponsorsYet": "There're no sponsors yet. You can be the first!",
        "sponsorsDescription": "Sponsors are displayed as such on ct.js site and other pages, like on ct.js game jams.",
        "businessCats": "Business cats",
        "businessCatsDescription": "Business cats get access to a special support channel on Discord server and receive support for ct.js and gamedev as a whole, too.",
        "cats": "Cats",
        "catsDescription": "Cats are people that want to support ct.js with more than just \"thanks\". They get listed in ct.js (here!) and everywhere CoMiGo remembers to add them.",
        "becomeAPatron": "Become a patron",
        "aboutFillers": [
            "is cool all around 😎",
            "is nice to chat with 🤗",
            "has yet to become a star 💫",
            "is just a prodigy ⭐️",
            "is a good friend 🤝",
            "is reliable 🙏",
            "has a golden heart 🧡",
            "is a magician 🔮",
            "is here to help! 💪",
            "is a superhero 🦸‍",
            "has yet to show 🦹‍",
            "is an unsolved mystery 🔍",
            "is epic! ✨",
            "is probably a robot 🤖",
            "is like a blazing fire! 🔥",
            "brings light and hope 🌞",
            "is elegant and beautiful 🎩"
        ]
    },
    "textureInput": {
        "jumpToTexture": "Jump to the texture",
        "changeTexture": "Change texture"
    },
    "writableFolderPrompt": {
        "headerSelectFolderForData": "Select a folder for ct.js data",
        "paragraphCouldNotPickDirectory": "Oh noes! Ct.js could not find a folder for your projects, package builds, and for debugging. Ct.js usually finds one automatically, but this time all the folders it was looking for are read-only!",
        "paragraphDirectoryDirections": "This can be fixed, though. Click the button below and select a folder at which to store data. If you are unsure, create a \"ct.js\" directory in your Documents folder.",
        "selectFolder": "Select folder…"
    },
    "writableFolderSelector": {
        "folderDoesNotExist": "It seems that this folder does not exist… How did you do that?",
        "notADirectory": "This doesn't seem to be a directory! How did you do that?",
        "folderNotWritable": "You don't have access to write to this folder. Pick another one.",
        "complete": "Folder was set, all is good ✅"
    },
    "mainMenu": {
        "troubleshooting": {
            "heading": "Troubleshooting",
            "toggleDevTools": "Toggle Dev Tools",
            "copySystemInfo": "Copy system information",
            "systemInfoWait": "Wait a bit, I'm gathering the data…",
            "systemInfoDone": "Done!",
            "disableAcceleration": "Disable graphics acceleration (needs restart)",
            "disableBuiltInDebugger": "Disable built-in debugger",
            "postAnIssue": "Post an issue on Github…",
            "disableVulkan": "Disable Vulkan support",
            "disableVulkanSDHint": "Fixes \"no WebGL support\" issues on SteamDeck and some other Linux systems. Requires a restart to take effect.",
            "restartMessage": "Please restart the app to apply the changes."
        },
        "deploy": {
            "heading": "Deploy",
            "exportDesktop": "Export for desktop…",
            "successZipExport": "Successfully exported to {0}.",
            "zipExport": "Export for web",
            "exportAndroid": "Export for Android…"
        },
        "latestProjects": {
            "recentProjects": "Recent projects"
        },
        "settings": {
            "heading": "Settings",
            "theme": "Theme",
            "themes": {
                "Day": "Day",
                "Night": "Night",
                "SpringStream": "Spring Stream",
                "LucasDracula": "Lucas Dracula",
                "Horizon": "Horizon",
                "HCBlack": "High-contrast Black",
                "RosePine": "Rosé Pine",
                "RosePineMoon": "Rosé Pine Moon",
                "RosePineDawn": "Rosé Pine Dawn",
                "GoldenEye": "Golden Eye",
                "AlmaSakura": "Alma Sakura",
                "Synthwave": "Synthwave '84",
                "OneDarkPro": "One Dark Pro"
            },
            "prideMode": "Pride mode",
            "language": "Language",
            "translateToYourLanguage": "Translate ct.js!",
            "codeFontDefault": "Default (Iosevka Light)",
            "codeFontOldSchool": "Old school",
            "codeFontSystem": "System",
            "codeFontCustom": "Custom…",
            "newFont": "New font:",
            "codeFont": "Font for code",
            "codeLigatures": "Ligatures",
            "codeDense": "Dense layout",
            "specialFont": "Special UI font",
            "specialFontDefault": "Default",
            "changeDebuggerLayout": "Change debugger's layout",
            "debuggerLayout": "Debugger's layout",
            "debuggerLayouts": {
                "split": "split layout",
                "multiwindow": "multiple windows",
                "automatic": "automatic"
            },
            "autoapplyOnLaunch": "Apply assets on game launch",
            "altTemplateLayout": "Alternative layout for template editor",
            "scrollableCatnipLibrary": "Scrollable block library for Catnip",
            "disableSounds": "Disable UI sounds",
            "changeDataFolder": "Set data folder location",
            "forceProductionForDebug": "Force production tasks for debug exports"
        },
        "project": {
            "heading": "Project",
            "save": "Save project",
            "openIncludeFolder": "Open \"include\" folder",
            "openProject": "Open a project…",
            "openExample": "Open an example project…",
            "startScreen": "Return to the starting screen",
            "startNewWindow": "Open new project window",
            "successZipProject": "Successfully zipped the project to {0}.",
            "zipProject": "Pack project to .zip",
            "convertToJs": "Convert project to JavaScript",
            "confirmationConvertToJs": "This will automatically convert ALL the events in the project to JavaScript. This action is irreversible. (Though it will rollback if it finds an error in your scripts.) Are you sure you want to convert this CoffeeScript project to JavaScript?"
        },
        "meta": {
            "heading": "Meta",
            "license": "License",
            "visitDiscordForGamedevSupport": "Discord server",
            "openIconList": "Open the list of icons",
            "openStylebook": "Open CSS stylebook",
            "twitter": "Twitter channel",
            "vkontakte": "Vkontakte public community",
            "ctjsForum": "Join ct.js forum"
        }
    },
    "appView": {
        "ctIDE": "ct.IDE",
        "launch": "Launch",
        "launchHotkeys": "(F5; Alt+F5 to run in your default browser)",
        "min": "Windowed",
        "patrons": "Patrons",
        "restart": "Restart",
        "project": "Project",
        "assets": "Assets",
        "applyAssetsQuestion": "Apply assets before launching?",
        "applyAssetsExplanation": "Some assets were not applied and their changes won't be reflected in the exported project. Do you want to apply them now?",
        "unsavedAssets": "Unsaved assets:",
        "runWithoutApplying": "Launch anyway",
        "applyAndRun": "Apply and run",
        "cantAddEditor": "Cannot add another editor. Please close some tabs with room, style, or tandem editors.",
        "loadingPreviouslyOpened": "Loading previously opened assets…",
        "tour": {
            "header": "Ct.js overview",
            "aboutTour": "Welcome to ct.js! This little tour will show you the main controls in this editor, so you know how to configure ct.js and create new assets.",
            "helpPanel": "First of all, note this sneaky button. It is very important for learning ct.js!",
            "helpPanelTabs": "This panel stores all the official docs and tutorials for ct.js and its modules, and also has two notepads for your records.<p>Global notepad is shared between projects and is saved on your device. Project's notepad is stored inside your project.",
            "projectResources": "Now, every project has assets of several types. Every asset type belongs to its own tab. Let's check out the most important tabs.",
            "tabTextures": "Textures are images that can be used for your interactive objects (which are called Copies), backgrounds, and special effects. Textures don't do anything on their own but are definitely a needed asset type.",
            "tabTexturesImport": "You can import textures from your file system…",
            "tabTexturesGallery": "…or import ready-made textures from the built-in library.",
            "tabTexturesClipboard": "This button pastes copied images from clipboard. It is quite handy while working with image editors!",
            "tabTexturesPlaceholders": "You can also generate simple placeholder graphics with this tool.",
            "tabTemplates": "Templates are used to create copies — interactive objects that you place in your levels. Any interactive object in ct.js is created from one of your templates. They use your textures, and you define gameplay logic by creating events in them. Once you've created a template, you can run its own in-deep tour in the template editor.",
            "tabRooms": "Another most important tab is for rooms. Rooms can also be called as levels or scenes in which you place your copies. Rooms can also have their own events and backgrounds.",
            "tabSounds": "Sounds, I guess, is the most obvious tab.",
            "tabSoundsImport": "You can create new sounds with this button…",
            "tabSoundsGallery": "…import them from the built-in sound library…",
            "tabSoundsRecord": "…or even record them with your microphone!",
            "tabInterlude": "There are also two tabs for more advanced assets.",
            "tabUI": "UI tab manages fonts and text styles. Bundling your fonts with the game is important for it to look consistently across devices. Text styles have a visual editor for making style presets. They also produce code for creation of such labels in-game.",
            "tabFX": "The FX tab has an editor for particle systems — special graphical effects for explosions, magic, smoke, rain, all this kind of stuff.",
            "tabProject": "That's it for the assets! But besides these, your project also has a bunch of settings for rendering, branding, packaging and whatnot.",
            "tabProjectModules": "Ct.js is modular, and your projects may need additional modules that can be installed here.",
            "tabProjectModuleDocs": "All the docs for enabled modules can be found here.",
            "tabMainMenu": "Ct.js itself has plenty of options, which are stored in its main menu.",
            "tabMainMenuSettings": "You can change the language and how ct.js looks in the Settings section.",
            "tabMainMenuMeta": "If you'll need help later, you will be able to find all the official hubs in the Meta panel.",
            "helpPanelReminder": "Also don't forget about the built-in docs! We do recommend completing official tutorials before starting your own projects.",
            "buttonStartTutorial": "Open tutorials"
        }
    },
    "roomBackgrounds": {
        "add": "Add a Background",
        "depth": "Depth:",
        "movement": "Movement speed:",
        "parallax": "Parallax:",
        "repeat": "Repeat:",
        "scale": "Scaling:",
        "shift": "Shift:",
        "notBackgroundTextureWarning": "This texture is not marked as a background. It will have gaps when exported.",
        "fixBackground": "Fix it.",
        "dismissWarning": "Dismiss."
    },
    "roomTiles": {
        "moveTileLayer": "Move to a new depth",
        "show": "Show the layer",
        "hide": "Hide the layer",
        "findTileset": "Find a Tileset",
        "addTileLayer": "Add a tile layer",
        "addTileLayerFirst": "Firstly add a tile layer in the left panel!",
        "cacheLayer": "Cache this layer",
        "cacheLayerWarning": "Caching greatly speeds up rendering of tile layers. You should disable this option only if you need to change this tile layer dynamically during the game."
    },
    "roomView": {
        "name": "Name:",
        "viewportHeading": "Viewport",
        "width": "View width:",
        "height": "View height:",
        "followTemplate": "Follow a template:",
        "followCodeHint": "Learn how to further tweak this feature with code",
        "isUi": "Is this room a UI layer?",
        "simulate": "Simulate",
        "grid": "Grid",
        "toggleDiagonalGrid": "Diagonal grid",
        "changeGridSize": "Change cell size",
        "events": "Events",
        "gridOff": "Disable grid",
        "xrayMode": "X-ray mode",
        "colorizeTileLayers": "Colorize tile layers",
        "copies": "Copies",
        "backgrounds": "Backgrounds",
        "backgroundColor": "Background color:",
        "tiles": "Tiles",
        "properties": "Properties",
        "add": "Add",
        "none": "Nothing",
        "done": "Done",
        "hotkeysNotice": "Ctrl = Delete, Alt = No grid, Shift = Multiple",
        "hotkeysNoticeMovement": "Ctrl = Delete, Shift = Select",
        "shift": "Shift everything",
        "step": "On Step",
        "create": "On Create",
        "leave": "On Leave",
        "draw": "Draw",
        "deleteCopies": "Delete copies",
        "shiftCopies": "Shift copies",
        "sortHorizontally": "Sort horizontally",
        "sortVertically": "Sort vertically",
        "sendToBack": "Send to back",
        "sendToFront": "Send to front",
        "selectAndMove": "Select and Move",
        "customProperties": "Custom Properties",
        "findTileset": "Find a tileset",
        "resetView": "Reset view",
        "emptyTextFiller": "<Empty>",
        "copyProperties": {
            "position": "Position",
            "rotation": "Rotation",
            "scale": "Scale",
            "opacity": "Opacity",
            "tint": "Tint",
            "multipleValues": "(Multiple)"
        },
        "copyCustomProperties": {
            "addProperty": "Add Property",
            "property": "Property",
            "value": "Value",
            "nameOccupied": "This property is used by ct.js! You should come up with a different name."
        },
        "uiTools": {
            "noSelectionNotice": "Select a copy to align it or change its text label.",
            "textSettings": "Text settings",
            "customText": "Text",
            "customTextSize": "Font size",
            "wordWrapWidth": "Wrap at this width",
            "textAlignment": "Align by",
            "alignmentSettings": "Auto-align",
            "enableAutoAlignment": "Enable auto-alignment",
            "autoAlignHint": "When turned on, this element will automatically align itself relative to the boundaries of the specified portion of a room, defined as a \"frame\". It is useful when using Expand and Quality Scaling without Letterboxing rendering modes, as the camera changes proportions in those viewport modes.",
            "frame": "Frame position, in %:",
            "framePadding": "Frame padding, in pixels:",
            "innerFrameMarker": "Inner frame",
            "outerFrameMarker": "Outer frame",
            "constrains": "Constrains:",
            "constrainsTooltips": {
                "left": "Lock the size of the gap to the left side of the frame",
                "right": "Lock the size of the gap to the right side of the frame",
                "top": "Lock the size of the gap to the top side of the frame",
                "bottom": "Lock the size of the gap to the bottom side of the frame",
                "centerVertical": "Place vertically relative to the center of the frame",
                "centerHorizontal": "Place horizontally relative to the center of the frame"
            },
            "bindings": "Bindings",
            "bindingsHelp": "You can write JavaScript expressions here that will be evaluated each frame and will update the corresponding properties of the copy.",
            "bindingNames": {
                "text": "Text:",
                "disabled": "Disable:",
                "visible": "Visibility:",
                "tex": "Texture:",
                "tint": "Tint:",
                "count": "Sprite count:"
            },
            "bindingTypes": {
                "string": "String value",
                "boolean": "Boolean value (true or false)",
                "number": "Number"
            }
        },
        "restrictCamera": "Keep camera in a rectangle",
        "minimumX": "Min X",
        "minimumY": "Min Y",
        "maximumX": "Max X",
        "maximumY": "Max Y",
        "gridSize": "Grid size:",
        "toCenter": "To center",
        "shiftLabel": "Shift by:",
        "newDepth": "New depth:",
        "deleteCopy": "Delete copy {0}",
        "changeCopyScale": "Change scale",
        "shiftCopy": "Set coordinates",
        "deleteTile": "Delete a tile",
        "deleteTiles": "Delete tiles",
        "moveTilesToLayer": "Move to layer",
        "shiftTiles": "Shift tiles",
        "changeCopyRotation": "Rotate",
        "tools": {
            "select": "Select tool",
            "addCopies": "Add copies",
            "addTiles": "Add tiles",
            "manageBackgrounds": "Manage backgrounds",
            "uiTools": "UI tools",
            "roomProperties": "Room properties",
            "copiesList": "List of copies",
            "tilesList": "List of tiles"
        }
    },
    "styleView": {
        "active": "Active",
        "alignment": "Alignment:",
        "apply": "Apply",
        "fill": "Fill",
        "font": "Font",
        "italic": "Italic",
        "lineHeight": "Line height:",
        "shadow": "Shadow",
        "stroke": "Stroke",
        "textWrap": "Word wrap",
        "textWrapWidth": "Max width:",
        "useCustomFont": "Use custom font…",
        "code": "Code",
        "copyCode": "Copy",
        "fillColor": "Color:",
        "fillColor1": "Color 1:",
        "fillColor2": "Color 2:",
        "fillGrad": "Gradient",
        "fillGradType": "Gradient type:",
        "fillHorizontal": "Horizontal",
        "fillSolid": "Diffuse",
        "fillType": "Fill type:",
        "fillVertical": "Vertical",
        "fontWeight": "Weight:",
        "shadowBlur": "Blur:",
        "shadowColor": "Shadow color:",
        "shadowShift": "Shift:",
        "strokeColor": "Stroke color:",
        "strokeWeight": "Line weight:",
        "testText": "Test text 0123 +",
        "fallbackFontFamily": "Fallback font family:",
        "fontSize": "Font size:",
        "notSupportedForBitmap": "Note that these settings are not supported for bitmap fonts"
    },
    "textureView": {
        "slicing": "Slicing",
        "viewSettings": "View settings",
        "exportSettings": "Export settings",
        "center": "Rotation axis",
        "axisExplanation": "Defines which place is counted as (0;0) position of a copy and affects how it positions itself relative to a grid, and around which point it rotates.",
        "cols": "Columns:",
        "done": "Apply",
        "fill": "Fill",
        "form": "Collision shape",
        "frames": "Frame count:",
        "isometrify": "Isometrify: Move the axis to the middle bottom point, fill the whole sprite with a collision mask",
        "name": "Name:",
        "radius": "Radius:",
        "rectangle": "Rectangle",
        "round": "Circle",
        "rows": "Rows:",
        "speed": "Framerate:",
        "tiled": "This is a tiled background",
        "updateFromClipboard": "Update from clipboard",
        "corrupted": "File is corrupted or missing! Closing now.",
        "showFrameIndices": "Show frame indices",
        "blankTexture": "Export as blank texture",
        "blankTextureNotice": "Exports the image as a transparent rectangle, thus being invisible in-game. Useful for making placeholders for ct.js editor while keeping bundle size slim.",
        "width": "Width:",
        "height": "Height:",
        "strip": "Line Strip / Polygon",
        "removePoint": "Remove the point",
        "closeShape": "Close the shape",
        "addPoint": "Add a point",
        "moveCenter": "Move axis",
        "movePoint": "Move this point",
        "symmetryTool": "Symmetry tool",
        "padding": "Padding:",
        "paddingNotice": "This affects how a texture is exported: it adds duplicate pixels on edges and prevents bleeding artifacts on tiled and scaled textures. The default value is usually enough, but, if you shrink textures strongly, the bleeding may re-appear. Increment this value if this texture has artifacts while in-game.",
        "previewAnimationNotice": "This is a preview. Use this.animationSpeed property to change it for real copies.",
        "pasteCollisionMask": "Paste a collision mask",
        "copyCollisionMask": "Copy the collision mask",
        "bgColor": "Change bg color",
        "setCenter": "Image's center",
        "replaceTexture": "Replace…",
        "showMask": "Show mask",
        "marginX": "Margin X:",
        "marginY": "Margin Y:",
        "offX": "Offset X:",
        "offY": "Offset Y:"
    },
    "scriptView": {
        "runAutomatically": "Execute at game start",
        "language": "Language:",
        "convertToJavaScript": "Convert to JavaScript",
        "confirmSwitchToCatnip": "Switching to Catnip will remove all the code in this script. Are you sure you want to continue?",
        "confirmSwitchFromCatnip": "Switching from Catnip will remove all the code in this script. If you want to preserve the code, convert the script to JavaScript first. Are you sure you want to continue and clear the code?"
    },
    "soundView": {
        "variants": "Variants",
        "addVariant": "Add from file…",
        "preload": "Load on game start",
        "volume": "Volume",
        "pitch": "Pitch",
        "distortion": "Distortion",
        "effects": "Effects",
        "reverb": "Reverb",
        "reverbDuration": "Duration",
        "reverbDecay": "Decay",
        "reverseReverb": "Reverse",
        "equalizer": "Equalizer",
        "hertz": "Hz",
        "positionalAudio": "3D audio",
        "falloff": "Falloff:",
        "refDistance": "Falloff start:",
        "positionalAudioHint": "This affects only the sounds.playAt method. The falloff sets how quickly a sound fades away, with 0 being no falloff and large values meaning near-instant fall to silence. Falloff start describes the distance after which a sound starts to fade away, with 1 being half the screen."
    },
    "fontView": {
        "italic": "Is italic?",
        "generateBitmapFont": "Also generate a bitmap font",
        "bitmapFont": "Bitmap font",
        "bitmapFontSize": "Font size:",
        "bitmapFontLineHeight": "Line height:",
        "resultingBitmapFontName": "Resource name",
        "charset": "Charset:",
        "addFont": "Add a font…",
        "charsets": {
            "punctuation": "Digits and punctuation (you usually do need this)",
            "basicLatin": "Basic Latin",
            "latinExtended": "Latin extended",
            "cyrillic": "Cyrillic",
            "greekCoptic": "Greek and Coptic",
            "custom": "Custom",
            "allInFont": "Draw everything the font supports"
        },
        "customCharsetHint": "Type all the letters you want to include, both in upper and lower case.",
        "fontWeight": "Font weight:",
        "typefaceName": "Typeface name:",
        "pixelPerfect": "Pixel-perfect precision",
        "pixelPerfectTooltip": "This should be turned on for pixelart fonts. Enabling this will improve drawing precision of 1-pixel-wide lines, but will reduce the max texture size for each font's characters to be 4k by 4k. (Which is still a lot for pixel fonts.) Besides that, remember that room and style editors will use a different method of drawing fonts anyways and pixel fonts will appear blurry in them — this is normal."
    },
    "licensePanel": {
        "ctjsLicense": "Ct.js License (MIT)",
        "faq": "Frequently asked questions (non-normative section)",
        "whoOwnsGamesQ": "Who owns games created in ct.js?",
        "whoOwnsGamesA": "You and only you. Ct.js does not own anything you create in any way.",
        "sellingGamesQ": "Can I sell games made in ct.js?",
        "sellingGamesA": "Yes, you can sell your games and other projects, gather donations, and use your games in any other commercial applications.",
        "possibleFeesQ": "Do I need to pay for ct.js? Will ct.js become paid someday?",
        "possibleFeesA": "No, ct.js is free and will always be so. It doesn't have any hidden fees like Unity or Unreal Engine that require you paying after you earn a specific amount of money. Ct.js is open-source, and even if there will be any paid versions, the product you have now will always be accessible free of charge. You can send a donation or become a patron, though! It will help us pay bills and make ct.js better!",
        "useInStudioQ": "Can I use ct.js in a studio or schools?",
        "useInStudioA": "Sure, why not? Ct.js is open for personal, commercial, educational use, and whatnot. Just don't break the law, ok?",
        "attributionQ": "Do I need to attribute ct.js or its developers? Can I disable its logo on the loading screen?",
        "attributionA": "You can disable the ct.js logo, as the code of your game already has the necessary attributions.",
        "attributionAAssets": "Some of the examples and demos may contain material that needs attribution, but that is already included in them.",
        "theLicense": "The license (legal document)"
    },
    "scriptables": {
        "addEvent": "Add an event",
        "removeEvent": "Remove the event",
        "removeEventConfirm": "Are you sure you want to remove this event? This can't be undone!",
        "changeArguments": "Change arguments",
        "eventAlreadyExists": "The same event already exists!",
        "localEventVars": "Local variables",
        "createEventHint": "Create your first event in the left column, and define your logic here",
        "jumpToProblem": "Jump to the Problem",
        "staticEventWarning": "This event makes this behavior static. You will not be able to add or remove it dynamically in-game with the Behaviors API, but otherwise it will be perfectly usable.",
        "restrictedEventWarning": "This event will work only on templates with the following base classes: $1. This event won't work when applied to templates of other base classes.",
        "baseClassWarning": "This event doesn't work with the current base class.",
        "typedefs": "Additional type definitions:",
        "typedefsHint": "You can describe additional properties in this asset so they are definitely typed. Example:\n\nname: string;\nhp: number;\nmana: number;\ninventory: any[];\n\nThis is completely optional.",
        "coreEventsCategories": {
            "lifecycle": "Lifecycle",
            "actions": "Actions",
            "pointer": "Pointer events",
            "misc": "Miscellaneous",
            "animation": "Animation",
            "input": "Input",
            "timers": "Timers",
            "app": "Application"
        },
        "coreEvents": {
            "OnCreate": "Creation",
            "OnRoomStart": "Room start",
            "OnStep": "Frame start",
            "OnDraw": "Frame end",
            "OnDestroy": "Destruction",
            "OnRoomEnd": "Room end",
            "OnBehaviorAdded": "Behavior added",
            "OnBehaviorRemoved": "Behavior removed",
            "OnPointerClick": "Click",
            "OnPointerSecondaryClick": "Secondary click",
            "OnPointerEnter": "Pointer enter",
            "OnPointerLeave": "Pointer leave",
            "OnPointerDown": "Pointer down",
            "OnPointerUp": "Pointer up",
            "OnPointerUpOutside": "Pointer up (outside)",
            "OnPointerWheel": "Wheel scroll",
            "OnActionPress": "Action press",
            "OnActionRelease": "Action release",
            "OnActionDown": "Action down",
            "OnFrameChange": "Frame change",
            "OnAnimationLoop": "Animation loop",
            "OnAnimationComplete": "Animation completed",
            "Timer": "Timer $1",
            "OnAppFocus": "App is active",
            "OnAppBlur": "App is in background",
            "OnTextChange": "On text change",
            "OnTextInput": "On text input"
        },
        "coreParameterizedNames": {
            "OnActionPress": "On %%action%% press",
            "OnActionRelease": "On %%action%% release",
            "OnActionDown": "On %%action%% down",
            "Timer1": "1 • %%name%% (Timer)",
            "Timer2": "2 • %%name%% (Timer)",
            "Timer3": "3 • %%name%% (Timer)",
            "Timer4": "4 • %%name%% (Timer)",
            "Timer5": "5 • %%name%% (Timer)",
            "Timer6": "6 • %%name%% (Timer)"
        },
        "coreEventsArguments": {
            "action": "Action",
            "name": "Name",
            "isUi": "UI event"
        },
        "coreEventsLocals": {
            "OnActionDown_value": "Current action's value",
            "OnActionPress_value": "Current action's value",
            "OnTextChange_value": "New text value",
            "OnTextInput_value": "New text value"
        },
        "coreEventsDescriptions": {
            "OnCreate": "Triggers when your copy is created.",
            "OnRoomStart": "Triggers when this room is created, either by switching to it or by adding it as a layer.",
            "OnStep": "Happens at the beginning of every frame.",
            "OnDraw": "Happens at the end of every frame. Good for animation updates.",
            "OnDestroy": "Happens between \"frame start\" and \"frame end\" when this copy gets destroyed.",
            "OnBehaviorAdded": "This gets called when a behavior is dynamically added to this copy. This event won't work with static behaviors; for those, use the Creation event instead.",
            "OnBehaviorRemoved": "This gets called when you remove this behavior from a copy dynamically. This event won't work with static behaviors; for those, use the Descruction event instead.",
            "OnRoomEnd": "Triggers when you switch to another room, or when this room is removed after it was added as a layer.",
            "OnActionPress": "Happens when an action's input becomes active — by pressing, clicking, flicking a joystick, etc.",
            "OnActionRelease": "Happens when an action's input becomes inactive — by releasing buttons, resting joysticks, etc.",
            "OnActionDown": "Runs every frame if an action's input is active.",
            "OnAnimationLoop": "Fires every time an animation restarts.",
            "OnAnimationComplete": "Fires once a non-looping animation finishes.",
            "Timer": "Set the duration for this timer in seconds with this.timer$1 = 3;",
            "OnAppFocus": "Triggers when a user goes back to your application.",
            "OnAppBlur": "Triggers when a user switches from your game to something else — by switching tabs, switching to another window, or minimizing the game.",
            "OnTextChange": "Fires when a user finishes editing this field by clicking outside of it or by pressing Enter key.",
            "OnTextInput": "Fires each time a user changes the value of this field."
        }
    },
    "templates": {
        "create": "Create"
    },
    "templateView": {
        "change": "Change texture",
        "hoverTexture": "Texture on hover",
        "pressedTexture": "Texture when pressed",
        "disabledTexture": "Texture when disabled",
        "defaultText": "Default text:",
        "textStyle": "Text style",
        "learnAboutTypes": "Learn about coding templates",
        "name": "Name:",
        "appearance": "Appearance",
        "visible": "Visible",
        "depth": "Depth:",
        "opacity": "Opacity:",
        "blendMode": "Blend mode:",
        "animationFPS": "Animation FPS:",
        "playAnimationOnStart": "Play animation on start",
        "loopAnimation": "Loop animation",
        "useBitmapText": "Use bitmap fonts",
        "errorBitmapNotConfigured": "The style you selected is not linked to a typeface that uses a bitmap font. Go to the style, link it to a typeface, and make sure that this typeface is configured to export a bitmap, and apply the changes.",
        "blendModes": {
            "normal": "Normal",
            "add": "Add (burn)",
            "multiply": "Multiply (darken)",
            "screen": "Screen (lighten)"
        },
        "fieldType": "Field type:",
        "fieldTypes": {
            "text": "Text",
            "number": "Number",
            "email": "E-mail",
            "password": "Password"
        },
        "useCustomSelectionColor": "Use a custom color for selected text",
        "maxLength": "Max length:",
        "baseClass": {
            "AnimatedSprite": "Animated sprite",
            "Text": "Text",
            "BitmapText": "Bitmap text",
            "NineSlicePlane": "Panel",
            "Container": "Container",
            "Button": "Button",
            "RepeatingTexture": "Repeating texture",
            "SpritedCounter": "Sprited Counter",
            "TextBox": "Text box",
            "ScrollBox": "Scrollbox",
            "Select": "Select menu",
            "ItemList": "Item list"
        },
        "nineSliceTop": "Top slice, in pixels",
        "nineSliceRight": "Right slice, in pixels",
        "nineSliceBottom": "Bottom slice, in pixels",
        "nineSliceLeft": "Left slice, in pixels",
        "layoutItemsHeading": "Items layout",
        "horizontalPadding": "Horizontal padding, in pixels",
        "verticalPadding": "Vertical padding, in pixels",
        "horizontalSpacing": "Horizontal item spacing, in pixels",
        "verticalSpacing": "Vertical item spacing, in pixels",
        "alignItems": "Align items:",
        "autoUpdateNineSlice": "Automatically update collision shape",
        "autoUpdateNineSliceHint": "If a panel changes its size, it will automatically update its collision shape. You usually don't need that for purely cosmetic elements, or the ones that never change their size after creation. You can still update its collision shape at any time with u.reshapeNinePatch(this) call.",
        "panelHeading": "Texture slicing settings",
        "scrollSpeedX": "Scroll speed by X:",
        "scrollSpeedY": "Scroll speed by Y:",
        "isUi": "Use UI time",
        "pixelPerfectScroll": "Pixel-perfect scroll",
        "defaultCount": "Default sprite count:"
    }
}
