Compare commits
19 Commits
983cba6843
...
0.6.1
Author | SHA1 | Date | |
---|---|---|---|
d510fec57b | |||
c5214dd477 | |||
a2391aeb22 | |||
2207c80951 | |||
bf578d7cb9 | |||
0bc57c368f | |||
b64f85aaa2 | |||
93fa2f2d7e | |||
d72216de8b | |||
df5133a91a | |||
88b959a118 | |||
310bf91fbd | |||
699f47f98d | |||
24e881b138 | |||
2eef1b5c4e | |||
c18ceb50d4 | |||
27ca1a7292 | |||
dc59176eac | |||
aec7470ff8 |
1
.gitignore
vendored
1
.gitignore
vendored
@@ -68,3 +68,4 @@ crashlytics-build.properties
|
||||
/UserSettings
|
||||
/*.zip
|
||||
*.lnk
|
||||
/HybridCLRData
|
||||
|
@@ -24,6 +24,7 @@ namespace Cryville.Crtr {
|
||||
Components.Add("polysec", typeof(PolygonSGO));
|
||||
Components.Add("rect", typeof(SpriteRect));
|
||||
Components.Add("scale3", typeof(SpriteScale3));
|
||||
Components.Add("sec", typeof(SectionalGameObject));
|
||||
Components.Add("sprite", typeof(SpriteBase));
|
||||
Components.Add("text", typeof(SpriteText));
|
||||
|
||||
|
@@ -22,14 +22,14 @@ body {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.tgbtn-active {
|
||||
background-color: lightblue;
|
||||
}
|
||||
|
||||
.tgbtn:hover {
|
||||
background-color: lightgray;
|
||||
}
|
||||
|
||||
.tgbtn-active, .tgbtn-active:hover {
|
||||
background-color: lightblue;
|
||||
}
|
||||
|
||||
#toolbar .tgbtn {
|
||||
min-width: 64px;
|
||||
height: 100%;
|
||||
@@ -45,29 +45,50 @@ body {
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
.t-list {
|
||||
.t-list-container {
|
||||
position: absolute;
|
||||
max-width: 100vw;
|
||||
max-height: 100vh;
|
||||
overflow: auto;
|
||||
background-color: floralwhite;
|
||||
box-sizing: border-box;
|
||||
border: solid 1px gray;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
.t-list-composed {
|
||||
max-width: 100vw;
|
||||
max-height: 100vh;
|
||||
}
|
||||
|
||||
.t-list {
|
||||
padding: 2px;
|
||||
margin: 0;
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
.t-li {
|
||||
list-style: none;
|
||||
padding: 0 4px;
|
||||
margin: 1px;
|
||||
cursor: pointer;
|
||||
break-before: avoid;
|
||||
}
|
||||
|
||||
.t-li:hover {
|
||||
background-color: lightblue;
|
||||
}
|
||||
|
||||
.t-li-cat {
|
||||
padding: 0 4px;
|
||||
margin: 1px;
|
||||
border-bottom: solid 1px dimgray;
|
||||
color: dimgray;
|
||||
font-size: small;
|
||||
}
|
||||
|
||||
.t-li-cat-2 {
|
||||
border-bottom-style: dashed;
|
||||
font-size: x-small;
|
||||
}
|
||||
|
||||
input {
|
||||
border: none;
|
||||
font-family: sans-serif;
|
||||
@@ -116,17 +137,6 @@ input {
|
||||
margin: 0 2px;
|
||||
}
|
||||
|
||||
.btn:only-child {
|
||||
height: 16px;
|
||||
}
|
||||
|
||||
.btn.t-inline:only-child {
|
||||
width: 16px;
|
||||
}
|
||||
|
||||
.t-statement > .btn {
|
||||
}
|
||||
|
||||
.t-node:hover > .btn {
|
||||
transition: 0.25s;
|
||||
height: 16px;
|
||||
@@ -140,6 +150,14 @@ input {
|
||||
border: solid 1px green;
|
||||
}
|
||||
|
||||
.btn-add:only-child {
|
||||
height: 16px;
|
||||
}
|
||||
|
||||
.btn-add.t-inline:only-child {
|
||||
width: 16px;
|
||||
}
|
||||
|
||||
.mode-hide-add .btn-add {
|
||||
display: none;
|
||||
}
|
||||
@@ -158,16 +176,40 @@ input {
|
||||
|
||||
.t-exp {
|
||||
border-top: solid 1px gray;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
.t-exp.t-inline {
|
||||
padding: 2px 4px;
|
||||
margin: 0 2px;
|
||||
padding: 2px 1px;
|
||||
}
|
||||
|
||||
.t-exp .t-inline {
|
||||
margin: 0 0 2px 0;
|
||||
}
|
||||
|
||||
.mode-hide-delete .t-exp .t-inline {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.mode-hide-delete .t-exp.t-inline {
|
||||
padding-bottom: 0;
|
||||
}
|
||||
|
||||
.t-exp > .t-statement {
|
||||
margin: 0;
|
||||
border-left: solid 1px orangered;
|
||||
padding: 0 2px;
|
||||
}
|
||||
|
||||
.t-exp:hover {
|
||||
border-top: solid 3px gray;
|
||||
}
|
||||
|
||||
.t-exp > .btn-add:not(:only-child) {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.t-input {
|
||||
display: inline-block;
|
||||
border: solid 1px magenta;
|
||||
@@ -226,7 +268,8 @@ input {
|
||||
border-left-width: 5px;
|
||||
}
|
||||
|
||||
.mode-sort .t-statement.t-inline {
|
||||
.mode-sort .t-statement.t-inline,
|
||||
.mode-sort .t-exp > .t-statement {
|
||||
border-color: lightgray;
|
||||
}
|
||||
|
||||
@@ -257,22 +300,26 @@ input {
|
||||
background-color: black;
|
||||
color: white;
|
||||
}
|
||||
.t-list {
|
||||
.t-list-container {
|
||||
background-color: darkslategray;
|
||||
}
|
||||
.t-li:hover {
|
||||
background-color: darkblue;
|
||||
}
|
||||
.t-li-cat {
|
||||
border-bottom-color: lightgray;
|
||||
color: lightgray;
|
||||
}
|
||||
input {
|
||||
background-color: black;
|
||||
color: white;
|
||||
}
|
||||
.tgbtn-active {
|
||||
background-color: darkslateblue;
|
||||
}
|
||||
.tgbtn:hover {
|
||||
background-color: gray;
|
||||
}
|
||||
.tgbtn-active, .tgbtn-active:hover {
|
||||
background-color: darkslateblue;
|
||||
}
|
||||
.t-internal {
|
||||
background-color: dimgray;
|
||||
}
|
||||
|
@@ -11,24 +11,26 @@ var cel;
|
||||
var clist;
|
||||
|
||||
var blocklists = {
|
||||
"block.element": ["statement.obj", "statement.select"],
|
||||
"block.filter": ["statement.filter.type", "statement.filter.exp"],
|
||||
"block.object": ["statement.comp", "statement.prop", "statement.filter"],
|
||||
"block.element": ["statement.select", "statement.obj", "statement.comp", "statement.prop"],
|
||||
"block.root": ["statement.select", "statement.define"],
|
||||
"block.select": ["statement.select.type", "statement.select.exp"],
|
||||
"block.select": ["statement.select.type", "statement.select.exp", "statement.select.anchor", "statement.select.atanchor"],
|
||||
"block.exp.op.sep.vec": ["statement.exp.number"],
|
||||
"block.exp.op.sep.arr": ["statement.exp.string"],
|
||||
};
|
||||
|
||||
var ilid = 0;
|
||||
var inputlists = {
|
||||
"input.comp": ["image", "polysec", "rect", "scale3", "text"],
|
||||
"input.comp": ["anim", "image", "polysec", "rect", "scale3", "text"],
|
||||
"input.prop": [
|
||||
"pos", "rot", "scale",
|
||||
"image.fit", "image.frame", "image.opacity",
|
||||
"polysec.body", "polysec.head", "polysec.shape", "polysec.tail", "polysec.transparent",
|
||||
"rect.color",
|
||||
"anim.delay", "anim.direction", "anim.duration", "anim.name", "anim.iteration",
|
||||
"image.fit", "image.frame", "image.frames", "image.index", "image.shader",
|
||||
"mesh.color", "mesh.opacity", "mesh.zindex",
|
||||
"polysec.body", "polysec.head", "polysec.shape", "polysec.tail",
|
||||
"scale3.border",
|
||||
"sprite.bound", "sprite.pivot", "sprite.scale", "sprite.transparent", "sprite.ui", "sprite.zindex",
|
||||
"text.frames", "text.opacity", "text.size", "text.spacing", "text.value",
|
||||
"sec.part", "sec.partial",
|
||||
"sprite.bound", "sprite.pivot", "sprite.scale", "sprite.ui",
|
||||
"text.frames", "text.size", "text.spacing", "text.value",
|
||||
],
|
||||
"input.type": ["chart", "group", "track", "note"],
|
||||
};
|
||||
@@ -36,15 +38,103 @@ var inputlists = {
|
||||
var statementlists = {
|
||||
"statement.comp": ["input.comp"],
|
||||
"statement.define": ["input.ident", "exp"],
|
||||
"statement.filter": ["block.filter", "block.object"],
|
||||
"statement.filter.exp": ["exp"],
|
||||
"statement.filter.type": ["input.type"],
|
||||
"statement.obj": ["block.object"],
|
||||
"statement.exp.cast.vector2number": ["exp.vector"],
|
||||
"statement.exp.const.w": [],
|
||||
"statement.exp.const.h": [],
|
||||
"statement.exp.const.inf": [],
|
||||
"statement.exp.const.null": [],
|
||||
"statement.exp.const.true": [],
|
||||
"statement.exp.const.false": [],
|
||||
"statement.exp.literal.ident": ["input.ident"],
|
||||
"statement.exp.literal.identforced": ["input.ident"],
|
||||
"statement.exp.literal.number": ["input.number"],
|
||||
"statement.exp.literal.string": ["input.string"],
|
||||
"statement.exp.op.add": ["exp.number", "exp.number"],
|
||||
"statement.exp.op.sub": ["exp.number", "exp.number"],
|
||||
"statement.exp.op.mul": ["exp.number", "exp.number"],
|
||||
"statement.exp.op.div": ["exp.number", "exp.number"],
|
||||
"statement.exp.op.mod": ["exp.number", "exp.number"],
|
||||
"statement.exp.op.add1": ["exp.number"],
|
||||
"statement.exp.op.sub1": ["exp.number"],
|
||||
"statement.exp.op.not": ["exp.number"],
|
||||
"statement.exp.op.at": ["exp.number_or_vector", "exp.number"],
|
||||
"statement.exp.op.lt": ["exp.number", "exp.number"],
|
||||
"statement.exp.op.eq": ["exp.number", "exp.number"],
|
||||
"statement.exp.op.gt": ["exp.number", "exp.number"],
|
||||
"statement.exp.op.and": ["exp", "exp"],
|
||||
"statement.exp.op.or": ["exp", "exp"],
|
||||
"statement.exp.op.sep.vec": ["block.exp.op.sep.vec"],
|
||||
"statement.exp.op.sep.arr": ["block.exp.op.sep.arr"],
|
||||
"statement.exp.func.frame_seq": ["exp.string", "exp.number", "exp.number"],
|
||||
"statement.exp.func.int": ["exp.number"],
|
||||
"statement.exp.func.clamp": ["exp.number", "exp.number", "exp.number"],
|
||||
"statement.exp.func.min": ["exp.number", "exp.number"],
|
||||
"statement.exp.func.max": ["exp.number", "exp.number"],
|
||||
"statement.exp.func.abs": ["exp.number"],
|
||||
"statement.exp.func.interval": ["exp.number", "exp.number", "exp.number"],
|
||||
"statement.exp.func.is": ["exp", "exp"],
|
||||
"statement.exp.func.cubic_bezier": ["exp.number", "exp.number", "exp.number", "exp.number", "exp.number"],
|
||||
"statement.exp.func.ease": ["exp.number"],
|
||||
"statement.exp.func.ease_in": ["exp.number"],
|
||||
"statement.exp.func.ease_out": ["exp.number"],
|
||||
"statement.exp.func.ease_in_out": ["exp.number"],
|
||||
"statement.exp.func.attack_timing": ["exp.number", "exp.number"],
|
||||
"statement.exp.func.enter_timing": ["exp.number"],
|
||||
"statement.exp.func.release_timing": ["exp.number", "exp.number"],
|
||||
"statement.exp.func.leave_timing": ["exp.number"],
|
||||
"statement.exp.func.contact_timing": ["exp.number", "exp.number"],
|
||||
"statement.exp.func.screen_edge": ["exp.number"],
|
||||
"statement.exp.func.anim": ["exp.number_or_vector", "exp.number_or_vector", "exp.number"],
|
||||
"statement.exp.number": ["exp.number"],
|
||||
"statement.exp.string": ["exp.string"],
|
||||
"statement.obj": ["block.element"],
|
||||
"statement.prop": ["input.prop", "exp"],
|
||||
"statement.select": ["block.select", "block.element"],
|
||||
"statement.select.exp": ["exp"],
|
||||
"statement.select.anchor": ["input.identanchor"],
|
||||
"statement.select.atanchor": ["input.identanchor"],
|
||||
"statement.select.exp": ["exp.number"],
|
||||
"statement.select.type": ["input.type"],
|
||||
}
|
||||
};
|
||||
|
||||
var explists = {
|
||||
"exp": ["#exp.number", "#exp.vector", "#exp.string", "#exp.array", "#exp.identifier", "#exp.any"],
|
||||
"exp.number_or_vector": ["#exp.number", "#exp.vector", "#exp.any"],
|
||||
"exp.any": [
|
||||
"statement.exp.literal.ident", "statement.exp.literal.identforced",
|
||||
"statement.exp.op.and", "statement.exp.op.or"
|
||||
],
|
||||
"exp.array": [
|
||||
"statement.exp.op.sep.arr",
|
||||
"statement.exp.func.frame_seq",
|
||||
"#exp.any"
|
||||
],
|
||||
"exp.identifier": [
|
||||
"statement.exp.const.null",
|
||||
"#exp.any"
|
||||
],
|
||||
"exp.number": [
|
||||
"statement.exp.literal.number", "statement.exp.cast.vector2number",
|
||||
"-exp.const", "statement.exp.const.w", "statement.exp.const.h", "statement.exp.const.inf", "statement.exp.const.true", "statement.exp.const.false",
|
||||
"-exp.op", "statement.exp.op.add", "statement.exp.op.sub", "statement.exp.op.mul", "statement.exp.op.div", "statement.exp.op.mod",
|
||||
"-", "statement.exp.op.add1", "statement.exp.op.sub1", "statement.exp.op.not",
|
||||
"-", "statement.exp.op.at", "statement.exp.op.lt", "statement.exp.op.eq", "statement.exp.op.gt",
|
||||
"-exp.func", "statement.exp.func.interval", "statement.exp.func.is",
|
||||
"-exp.func.ctx", "statement.exp.func.int", "statement.exp.func.clamp", "statement.exp.func.min", "statement.exp.func.max", "statement.exp.func.abs",
|
||||
"-exp.func.anim", "statement.exp.func.cubic_bezier", "statement.exp.func.ease", "statement.exp.func.ease_in", "statement.exp.func.ease_out", "statement.exp.func.ease_in_out",
|
||||
"-exp.func.judge", "statement.exp.func.attack_timing", "statement.exp.func.enter_timing", "statement.exp.func.release_timing", "statement.exp.func.leave_timing", "statement.exp.func.contact_timing",
|
||||
"#exp.any"
|
||||
],
|
||||
"exp.string": [
|
||||
"statement.exp.literal.string",
|
||||
"#exp.any"
|
||||
],
|
||||
"exp.vector": [
|
||||
"statement.exp.op.sep.vec",
|
||||
"statement.exp.func.screen_edge",
|
||||
"statement.exp.func.anim",
|
||||
"#exp.any"
|
||||
],
|
||||
};
|
||||
|
||||
window.onload = function () {
|
||||
lang = navigator.language.replace("-", "_");
|
||||
@@ -56,12 +146,12 @@ window.onload = function () {
|
||||
app.find("tbr").replaceWith(function () {
|
||||
return msg($(this).text());
|
||||
});
|
||||
addAddButton(tree).on("click", function (event) {
|
||||
addAddButton(tree).on("click", function () {
|
||||
if (clist) clist.remove();
|
||||
});
|
||||
tv.on("mousemove", null, null, onMouseMove);
|
||||
|
||||
$(".tgbtn").on("click", function (event) {
|
||||
$(".tgbtn").on("click", function () {
|
||||
var btn = $(this);
|
||||
btn.toggleClass("tgbtn-active");
|
||||
onToggleButtonClick(btn.attr("id"), btn.hasClass("tgbtn-active"));
|
||||
@@ -95,7 +185,7 @@ function onAddButtonClick(event) {
|
||||
|
||||
function onAddExpButtonClick(event) {
|
||||
cel = el = event.data;
|
||||
generateAddExpList(event);
|
||||
generateAddExpList(event, el.attr("key"));
|
||||
}
|
||||
|
||||
function onAddButtonLiteralClick(event) {
|
||||
@@ -123,14 +213,16 @@ var tblist = {
|
||||
"tb-hide-add": "mode-hide-add",
|
||||
"tb-hide-delete": "mode-hide-delete",
|
||||
"tb-sort": "mode-sort",
|
||||
}
|
||||
};
|
||||
function onToggleButtonClick(id, state) {
|
||||
var cls = tblist[id];
|
||||
if (state) tv.addClass(cls);
|
||||
else tv.removeClass(cls);
|
||||
if (cls == "mode-sort") {
|
||||
var il = tv.find(".t-input");
|
||||
var sl = tv.find(".t-statement").not(".t-inline");
|
||||
var sl = tv.find(".t-statement").not(".t-inline").not(function () {
|
||||
return $(this).parent().is(".t-exp");
|
||||
});
|
||||
if (state) {
|
||||
il.each(function (i) {
|
||||
$(il[i]).children("input").attr("disabled", "");
|
||||
@@ -216,30 +308,49 @@ function generateAddList(event, items) {
|
||||
popup(event, ul);
|
||||
}
|
||||
|
||||
function generateAddExpList(event, items) {
|
||||
function generateAddExpList(event, item) {
|
||||
event.stopPropagation();
|
||||
if (clist) clist.remove();
|
||||
var ul = $("<ul></ul>").addClass("t-list t-exp-list");
|
||||
for (var i in items) {
|
||||
var item = items[i];
|
||||
ul.append($("<li></li>").addClass("t-li").attr("key", item).text(msg("list." + item)).on("click", null, item, onAddItemClick));
|
||||
}
|
||||
(function addExpRecursive(it, depth) {
|
||||
if (depth > 0) {
|
||||
ul.append($("<li></li>").addClass("t-li-cat t-li-cat-" + depth.toString()).text(msg("list.category." + it)));
|
||||
}
|
||||
var items = explists[it];
|
||||
for (var i in items) {
|
||||
var item = items[i];
|
||||
if (item[0] == "#") {
|
||||
if (depth == 0) addExpRecursive(item.substring(1), 1);
|
||||
}
|
||||
else if (item == "-")
|
||||
ul.append($("<li></li>").addClass("t-li-br"));
|
||||
else if (item[0] == "-")
|
||||
ul.append($("<li></li>").addClass("t-li-cat t-li-cat-" + (depth + 1).toString()).text(msg("list.category." + item.substring(1))));
|
||||
else
|
||||
ul.append($("<li></li>").addClass("t-li").attr("key", item).text(msg("list." + item)).on("click", null, item, onAddItemClick));
|
||||
}
|
||||
})(item, 0);
|
||||
popup(event, ul);
|
||||
}
|
||||
|
||||
function popup(event, ul) {
|
||||
clist = ul;
|
||||
app.append(ul);
|
||||
clist = $("<div></div>").addClass("t-list-container").append(ul);
|
||||
app.append(clist);
|
||||
ul.css("column-count", Math.max(1, Math.min(
|
||||
Math.floor(0.6 * window.innerWidth / clist.outerWidth()),
|
||||
Math.ceil((clist.outerHeight() + 256) / window.innerHeight)
|
||||
)));
|
||||
var left = event.pageX;
|
||||
if (left + ul.outerWidth() > window.innerWidth)
|
||||
left = Math.max(0, left - ul.outerWidth());
|
||||
if (left + clist.outerWidth() > window.innerWidth)
|
||||
left = Math.max(0, left - clist.outerWidth());
|
||||
var top = event.pageY;
|
||||
if (top + ul.outerHeight() > window.innerHeight)
|
||||
top = Math.max(0, top - ul.outerHeight());
|
||||
ul.css({
|
||||
if (top + clist.outerHeight() > window.innerHeight)
|
||||
top = Math.max(0, top - clist.outerHeight());
|
||||
clist.css({
|
||||
"left": left,
|
||||
"top": top
|
||||
});
|
||||
clist.addClass("t-list-composed");
|
||||
}
|
||||
|
||||
function generateInputList(el, key) {
|
||||
@@ -349,10 +460,11 @@ function createExp(key) {
|
||||
}
|
||||
|
||||
function createInput(key, target) {
|
||||
var el = $("<input />").attr({
|
||||
"type": "text",
|
||||
"placeholder": msg(key + ".default")
|
||||
});
|
||||
var el = $("<input />").attr("placeholder", msg(key + ".default"));
|
||||
switch (key) {
|
||||
case "input.number": el.attr("type", "number"); break;
|
||||
default: el.attr("type", "text"); break;
|
||||
}
|
||||
var r = $("<span></span>").attr({
|
||||
"key": key,
|
||||
"target": target.index()
|
||||
|
@@ -1,12 +1,13 @@
|
||||
<!DOCTYPE HTML>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<title>Skin Editor - Cosmo Resona</title>
|
||||
<link type="text/css" rel="stylesheet" href="app.css"/>
|
||||
<script type="text/javascript" src="jquery-3.6.0.min.js"></script>
|
||||
<script type="text/javascript" src="stretchy.min.js"></script>
|
||||
<script type="text/javascript" src="array_util.js"></script>
|
||||
<script type="text/javascript" src="app.js"></script>
|
||||
<script type="text/javascript" src="messages/en_US.js"></script>
|
||||
<script type="text/javascript" src="messages/en_US.js" charset="UTF-8"></script>
|
||||
<script type="text/javascript" src="messages/zh_CN.js" charset="UTF-8"></script>
|
||||
</head>
|
||||
<body>
|
||||
|
@@ -1,71 +1,183 @@
|
||||
messages["en_US"] = {
|
||||
"block.filter": "If {}",
|
||||
"block.select": "Select {}",
|
||||
"input.comp.default": "component",
|
||||
"input.comp.image": "image sprite",
|
||||
"input.comp.polysec": "polygon sectional mesh",
|
||||
"input.comp.rect": "colored rectangle",
|
||||
"input.comp.scale3": "scale3 sprite",
|
||||
"input.comp.text": "text",
|
||||
"input.ident.default": "variable",
|
||||
"input.prop.default": "property",
|
||||
"input.prop.image.fit": "image sprite: scale mode",
|
||||
"input.prop.image.frame": "image sprite: image name",
|
||||
"input.prop.image.opacity": "image sprite: opacity",
|
||||
"input.prop.polysec.body": "polygon sectional mesh: body image name",
|
||||
"input.prop.polysec.head": "polygon sectional mesh: head image name",
|
||||
"input.prop.polysec.shape": "polygon sectional mesh: section shape",
|
||||
"input.prop.polysec.tail": "polygon sectional mesh: tail image name",
|
||||
"input.prop.polysec.transparent": "polygon sectional mesh: transparent mode",
|
||||
"input.prop.pos": "position",
|
||||
"input.prop.rect.color": "colored rectangle: color",
|
||||
"input.prop.rot": "rotation",
|
||||
"input.prop.scale": "scale",
|
||||
"input.prop.scale3.border": "scale3 sprite: unstretched area ratios",
|
||||
"input.prop.sprite.bound": "sprite: secondary anchor position",
|
||||
"input.prop.sprite.pivot": "sprite: anchor",
|
||||
"input.prop.sprite.scale": "sprite: scale",
|
||||
"input.prop.sprite.transparent": "sprite: transparent mode",
|
||||
"input.prop.sprite.ui": "sprite: ui mode",
|
||||
"input.prop.sprite.zindex": "sprite: layer order",
|
||||
"input.prop.text.frames": "text: image mapping",
|
||||
"input.prop.text.opacity": "text: opacity",
|
||||
"input.prop.text.size": "text: font size",
|
||||
"input.prop.text.spacing": "text: character spacing",
|
||||
"input.prop.text.value": "text: content",
|
||||
"input.type.chart": "chart",
|
||||
"input.type.default": "element",
|
||||
"input.type.group": "track group",
|
||||
"input.type.note": "note",
|
||||
"input.type.track": "track",
|
||||
"list.statement.comp": "Attach a component",
|
||||
"list.statement.define": "Define a variable",
|
||||
"list.statement.filter": "Filter element",
|
||||
"list.statement.filter.exp": "Filter expression",
|
||||
"list.statement.filter.type": "Filter element type",
|
||||
"list.statement.obj": "Create a container",
|
||||
"list.statement.prop": "Set property",
|
||||
"list.statement.select": "Select elements",
|
||||
"list.statement.select.exp": "Filter expression",
|
||||
"list.statement.select.type": "Filter element type",
|
||||
"literal.block.filter": "If {statement.filter.exp} {statement.filter.type}",
|
||||
"literal.block.select": "For each {statement.select.type?element} {statement.select.exp}",
|
||||
"literal.statement.filter.exp": "{0}",
|
||||
"literal.statement.filter.type": "it is a {0}",
|
||||
"literal.statement.select.exp": "that {0}",
|
||||
"literal.statement.select.type": "{0}",
|
||||
"statement.comp": "with a {0}",
|
||||
"statement.define": "Define {0} = {1}",
|
||||
"statement.filter": "{0} {1}",
|
||||
"statement.filter.exp": "it matches the expression {0}",
|
||||
"statement.filter.type": "it is a {0}",
|
||||
"statement.obj": "Create a container {0}",
|
||||
"statement.prop": "Set its {0} to {1}",
|
||||
"statement.select": "{0} {1}",
|
||||
"statement.select.exp": "it matches the expression {0}",
|
||||
"statement.select.type": "{0}",
|
||||
"tool.debug": "Debug",
|
||||
"tool.hideadd": "Hide Add",
|
||||
"tool.hidedelete": "Hide Delete",
|
||||
"tool.sort": "Sort",
|
||||
"input.comp.anim": "animation",
|
||||
"input.comp.default": "component",
|
||||
"input.comp.image": "image sprite",
|
||||
"input.comp.polysec": "polygon sectional mesh",
|
||||
"input.comp.rect": "colored rectangle sprite",
|
||||
"input.comp.scale3": "scale3 image sprite",
|
||||
"input.comp.text": "text sprite",
|
||||
"input.ident.default": "variable",
|
||||
"input.identanchor.default": "anchor",
|
||||
"input.number.default": "123",
|
||||
"input.prop.anim.delay": "animation: start delay",
|
||||
"input.prop.anim.direction": "animation: playback direction",
|
||||
"input.prop.anim.duration": "animation: duration",
|
||||
"input.prop.anim.name": "animation: name",
|
||||
"input.prop.anim.iteration": "animation: iteration count",
|
||||
"input.prop.default": "property",
|
||||
"input.prop.image.fit": "image sprite: scale mode",
|
||||
"input.prop.image.frame": "image sprite: frame name",
|
||||
"input.prop.image.frames": "image sprite: list of frame names",
|
||||
"input.prop.image.index": "image sprite: frame index",
|
||||
"input.prop.image.shader": "image sprite: shader",
|
||||
"input.prop.mesh.color": "mesh: color",
|
||||
"input.prop.mesh.opacity": "mesh: opacity",
|
||||
"input.prop.mesh.zindex": "mesh: layer order",
|
||||
"input.prop.polysec.body": "polygon sectional mesh: body frame name",
|
||||
"input.prop.polysec.head": "polygon sectional mesh: head frame name",
|
||||
"input.prop.polysec.shape": "polygon sectional mesh: section shape",
|
||||
"input.prop.polysec.tail": "polygon sectional mesh: tail frame name",
|
||||
"input.prop.pos": "position",
|
||||
"input.prop.rot": "rotation",
|
||||
"input.prop.scale": "scale",
|
||||
"input.prop.scale3.border": "scale3 image sprite: unstretched area ratios",
|
||||
"input.prop.sec.part": "sectional mesh: current part",
|
||||
"input.prop.sec.partial": "sectional mesh: partial mode",
|
||||
"input.prop.sprite.bound": "sprite: secondary anchor position",
|
||||
"input.prop.sprite.pivot": "sprite: anchor",
|
||||
"input.prop.sprite.scale": "sprite: scale",
|
||||
"input.prop.sprite.ui": "sprite: ui mode",
|
||||
"input.prop.text.frames": "text sprite: frame mapping",
|
||||
"input.prop.text.size": "text sprite: font size",
|
||||
"input.prop.text.spacing": "text sprite: character spacing",
|
||||
"input.prop.text.value": "text sprite: content",
|
||||
"input.string.default": "string",
|
||||
"input.type.chart": "chart",
|
||||
"input.type.default": "element",
|
||||
"input.type.group": "track group",
|
||||
"input.type.note": "note",
|
||||
"input.type.track": "track",
|
||||
"list.category.exp.any": "Any",
|
||||
"list.category.exp.array": "Array",
|
||||
"list.category.exp.const": "Constants",
|
||||
"list.category.exp.func": "Functions",
|
||||
"list.category.exp.func.anim": "Animation Functions",
|
||||
"list.category.exp.func.ctx": "Contextual Functions",
|
||||
"list.category.exp.func.judge": "Judge Functions",
|
||||
"list.category.exp.identifier": "Identifier",
|
||||
"list.category.exp.number": "Number",
|
||||
"list.category.exp.op": "Operators",
|
||||
"list.category.exp.string": "String",
|
||||
"list.category.exp.vector": "Vector",
|
||||
"list.statement.comp": "Attach component",
|
||||
"list.statement.define": "Define static variable",
|
||||
"list.statement.exp.cast.vector2number": "From vector",
|
||||
"list.statement.exp.const.false": "False",
|
||||
"list.statement.exp.const.h": "Screen height",
|
||||
"list.statement.exp.const.inf": "Infinity",
|
||||
"list.statement.exp.const.null": "Null",
|
||||
"list.statement.exp.const.true": "True",
|
||||
"list.statement.exp.const.w": "Screen width",
|
||||
"list.statement.exp.func.abs": "Absolute value",
|
||||
"list.statement.exp.func.anim": "Animate value",
|
||||
"list.statement.exp.func.attack_timing": "Attack in timing",
|
||||
"list.statement.exp.func.clamp": "Clamp",
|
||||
"list.statement.exp.func.contact_timing": "Contact timing",
|
||||
"list.statement.exp.func.cubic_bezier": "Cubic Bézier curve",
|
||||
"list.statement.exp.func.ease": "Ease",
|
||||
"list.statement.exp.func.ease_in": "Ease in",
|
||||
"list.statement.exp.func.ease_in_out": "Ease in out",
|
||||
"list.statement.exp.func.ease_out": "Ease out",
|
||||
"list.statement.exp.func.enter_timing": "Enter timing",
|
||||
"list.statement.exp.func.frame_seq": "Frame sequence",
|
||||
"list.statement.exp.func.int": "Round down",
|
||||
"list.statement.exp.func.interval": "Interval",
|
||||
"list.statement.exp.func.is": "Is equivalent",
|
||||
"list.statement.exp.func.leave_timing": "Leave timing",
|
||||
"list.statement.exp.func.max": "Maximum",
|
||||
"list.statement.exp.func.min": "Minimum",
|
||||
"list.statement.exp.func.release_timing": "Release in timing",
|
||||
"list.statement.exp.func.screen_edge": "Screen edge",
|
||||
"list.statement.exp.literal.ident": "Variable",
|
||||
"list.statement.exp.literal.identforced": "Variable (forced)",
|
||||
"list.statement.exp.literal.number": "Number",
|
||||
"list.statement.exp.literal.string": "String",
|
||||
"list.statement.exp.number": "Add element",
|
||||
"list.statement.exp.string": "Add element",
|
||||
"list.statement.exp.op.add": "a + b",
|
||||
"list.statement.exp.op.add1": "+n",
|
||||
"list.statement.exp.op.and": "p and q",
|
||||
"list.statement.exp.op.at": "n-th element",
|
||||
"list.statement.exp.op.div": "a ÷ b",
|
||||
"list.statement.exp.op.eq": "a = b",
|
||||
"list.statement.exp.op.gt": "a > b",
|
||||
"list.statement.exp.op.lt": "a < b",
|
||||
"list.statement.exp.op.mod": "a % b",
|
||||
"list.statement.exp.op.mul": "a × b",
|
||||
"list.statement.exp.op.not": "Not",
|
||||
"list.statement.exp.op.or": "p or q",
|
||||
"list.statement.exp.op.sep.arr": "Array",
|
||||
"list.statement.exp.op.sep.vec": "Vector",
|
||||
"list.statement.exp.op.sub": "a - b",
|
||||
"list.statement.exp.op.sub1": "-n",
|
||||
"list.statement.obj": "Create container",
|
||||
"list.statement.prop": "Set property",
|
||||
"list.statement.select": "Select elements",
|
||||
"list.statement.select.anchor": "Select anchor",
|
||||
"list.statement.select.atanchor": "Select at anchor",
|
||||
"list.statement.select.exp": "Filter expression",
|
||||
"list.statement.select.type": "Filter element type",
|
||||
"statement.comp": "with a {0}",
|
||||
"statement.define": "Define static {0} = {1}",
|
||||
"statement.exp.cast.vector2number": "vector {0}",
|
||||
"statement.exp.const.false": "false",
|
||||
"statement.exp.const.h": "screen height",
|
||||
"statement.exp.const.inf": "infinity",
|
||||
"statement.exp.const.null": "null",
|
||||
"statement.exp.const.true": "true",
|
||||
"statement.exp.const.w": "screen width",
|
||||
"statement.exp.func.abs": "absolute value of {0}",
|
||||
"statement.exp.func.anim": "animate value from {0} to {1} with {2}",
|
||||
"statement.exp.func.attack_timing": "attack in timing ({0}, {1})",
|
||||
"statement.exp.func.clamp": "clamp {1} between {0} and {2}",
|
||||
"statement.exp.func.contact_timing": "contact timing ({0}, {1})",
|
||||
"statement.exp.func.cubic_bezier": "cubic Bézier curve defined by the control points ({0}, {1}) and ({2}, {3}) with {4}",
|
||||
"statement.exp.func.ease": "ease with {0}",
|
||||
"statement.exp.func.ease_in": "ease in with {0}",
|
||||
"statement.exp.func.ease_in_out": "ease in out with {0}",
|
||||
"statement.exp.func.ease_out": "ease out with {0}",
|
||||
"statement.exp.func.enter_timing": "enter timing ({0}, +∞)",
|
||||
"statement.exp.func.frame_seq": "frame sequence with prefix {0} from {1} to {2}",
|
||||
"statement.exp.func.int": "round down {0}",
|
||||
"statement.exp.func.interval": "interval between {0} and {1}",
|
||||
"statement.exp.func.is": "{0} is equivalent to {1}",
|
||||
"statement.exp.func.leave_timing": "leave timing (-∞, {0})",
|
||||
"statement.exp.func.max": "maximum of {0} and {1}",
|
||||
"statement.exp.func.min": "minimum of {0} and {1}",
|
||||
"statement.exp.func.release_timing": "release in timing ({0}, {1})",
|
||||
"statement.exp.func.screen_edge": "the screen edge #{0}",
|
||||
"statement.exp.literal.ident": "{0}",
|
||||
"statement.exp.literal.identforced": "{0} (forced)",
|
||||
"statement.exp.literal.number": "{0}",
|
||||
"statement.exp.literal.string": "{0}",
|
||||
"statement.exp.number": "{0}",
|
||||
"statement.exp.number_or_vector": "{0}",
|
||||
"statement.exp.string": "{0}",
|
||||
"statement.exp.op.add": "{0} + {1}",
|
||||
"statement.exp.op.add1": "+{0}",
|
||||
"statement.exp.op.and": "{0} and {1}",
|
||||
"statement.exp.op.at": "the {1}th item of {0}",
|
||||
"statement.exp.op.div": "{0} ÷ {1}",
|
||||
"statement.exp.op.eq": "{0} = {1}",
|
||||
"statement.exp.op.gt": "{0} > {1}",
|
||||
"statement.exp.op.lt": "{0} < {1}",
|
||||
"statement.exp.op.mod": "{0} % {1}",
|
||||
"statement.exp.op.mul": "{0} × {1}",
|
||||
"statement.exp.op.not": "not {0}",
|
||||
"statement.exp.op.or": "{0} or {1}",
|
||||
"statement.exp.op.sep.arr": "Array {0}",
|
||||
"statement.exp.op.sep.vec": "Vector {0}",
|
||||
"statement.exp.op.sub": "{0} - {1}",
|
||||
"statement.exp.op.sub1": "-{0}",
|
||||
"statement.obj": "Create a container {0}",
|
||||
"statement.prop": "Set its {0} to {1}",
|
||||
"statement.select": "Select {0} {1}",
|
||||
"statement.select.anchor": "Select its anchor {0}",
|
||||
"statement.select.atanchor": "Select at its anchor {0}",
|
||||
"statement.select.exp": "If it matches the expression {0}",
|
||||
"statement.select.type": "If it is a {0}",
|
||||
"tool.debug": "Debug",
|
||||
"tool.hideadd": "Hide Add",
|
||||
"tool.hidedelete": "Hide Delete",
|
||||
"tool.sort": "Sort",
|
||||
};
|
@@ -1,69 +1,181 @@
|
||||
messages["zh_CN"] = {
|
||||
"block.filter": "如果 {}",
|
||||
"block.select": "选择 {}",
|
||||
"input.comp.anim": "动画",
|
||||
"input.comp.default": "组件",
|
||||
"input.comp.image": "图片",
|
||||
"input.comp.image": "图片图形",
|
||||
"input.comp.polysec": "多边形截面网格",
|
||||
"input.comp.rect": "纯色矩形",
|
||||
"input.comp.scale3": "三段拉伸图片",
|
||||
"input.comp.text": "文字",
|
||||
"input.comp.rect": "纯色矩形图形",
|
||||
"input.comp.scale3": "三段拉伸图片图形",
|
||||
"input.comp.text": "文字图形",
|
||||
"input.ident.default": "变量",
|
||||
"input.identanchor.default": "锚点",
|
||||
"input.number.default": "123",
|
||||
"input.prop.anim.delay": "动画:起始延迟",
|
||||
"input.prop.anim.direction": "动画:播放方向",
|
||||
"input.prop.anim.duration": "动画:时长",
|
||||
"input.prop.anim.name": "动画:名称",
|
||||
"input.prop.anim.iteration": "动画:重复次数",
|
||||
"input.prop.default": "属性",
|
||||
"input.prop.image.fit": "图片:缩放模式",
|
||||
"input.prop.image.frame": "图片:图片名",
|
||||
"input.prop.image.opacity": "图片:不透明度",
|
||||
"input.prop.image.fit": "图片图形:缩放模式",
|
||||
"input.prop.image.frame": "图片图形:帧名称",
|
||||
"input.prop.image.frames": "图片图形:帧名称列表",
|
||||
"input.prop.image.index": "图片图形:帧索引",
|
||||
"input.prop.image.shader": "图片图形:着色器",
|
||||
"input.prop.mesh.color": "网格:颜色",
|
||||
"input.prop.mesh.opacity": "网格:不透明度",
|
||||
"input.prop.mesh.zindex": "网格:叠加次序",
|
||||
"input.prop.polysec.body": "多边形截面网格:中部图片名",
|
||||
"input.prop.polysec.head": "多边形截面网格:头部图片名",
|
||||
"input.prop.polysec.shape": "多边形截面网格:截面形状",
|
||||
"input.prop.polysec.tail": "多边形截面网格:尾部图片名",
|
||||
"input.prop.polysec.transparent": "多边形截面网格:透明模式",
|
||||
"input.prop.pos": "位置",
|
||||
"input.prop.rect.color": "纯色矩形:颜色",
|
||||
"input.prop.rot": "旋转",
|
||||
"input.prop.scale": "缩放",
|
||||
"input.prop.scale3.border": "三段拉伸图片:非拉伸区域占比",
|
||||
"input.prop.sprite.bound": "图像:副锚点位置",
|
||||
"input.prop.sprite.pivot": "图像:锚点",
|
||||
"input.prop.sprite.scale": "图像:缩放",
|
||||
"input.prop.sprite.transparent": "图像:透明模式",
|
||||
"input.prop.sprite.ui": "图像:界面模式",
|
||||
"input.prop.sprite.zindex": "图像:叠加次序",
|
||||
"input.prop.text.frames": "文字:图片映射",
|
||||
"input.prop.text.opacity": "文字:不透明度",
|
||||
"input.prop.text.size": "文字:字体大小",
|
||||
"input.prop.text.spacing": "文字:字符间距",
|
||||
"input.prop.text.value": "文字:内容",
|
||||
"input.prop.scale3.border": "三段拉伸图片图形:非拉伸区域占比",
|
||||
"input.prop.sec.part": "截面网格:当前分段",
|
||||
"input.prop.sec.partial": "截面网格:分段模式",
|
||||
"input.prop.sprite.bound": "图形:副锚点位置",
|
||||
"input.prop.sprite.pivot": "图形:锚点",
|
||||
"input.prop.sprite.scale": "图形:缩放",
|
||||
"input.prop.sprite.ui": "图形:界面模式",
|
||||
"input.prop.text.frames": "文字图形:图片映射",
|
||||
"input.prop.text.size": "文字图形:字体大小",
|
||||
"input.prop.text.spacing": "文字图形:字符间距",
|
||||
"input.prop.text.value": "文字图形:内容",
|
||||
"input.string.default": "字符串",
|
||||
"input.type.chart": "谱面",
|
||||
"input.type.default": "元素",
|
||||
"input.type.group": "轨道组",
|
||||
"input.type.note": "按键",
|
||||
"input.type.track": "轨道",
|
||||
"list.category.exp.any": "任意",
|
||||
"list.category.exp.array": "数组",
|
||||
"list.category.exp.const": "常量",
|
||||
"list.category.exp.func": "函数",
|
||||
"list.category.exp.func.anim": "动画函数",
|
||||
"list.category.exp.func.ctx": "环境函数",
|
||||
"list.category.exp.func.judge": "判定函数",
|
||||
"list.category.exp.identifier": "变量",
|
||||
"list.category.exp.number": "数字",
|
||||
"list.category.exp.op": "运算符",
|
||||
"list.category.exp.string": "字符串",
|
||||
"list.category.exp.vector": "向量",
|
||||
"list.statement.comp": "附加组件",
|
||||
"list.statement.define": "定义变量",
|
||||
"list.statement.filter": "条件分歧",
|
||||
"list.statement.filter.exp": "判断表达式",
|
||||
"list.statement.filter.type": "判断元素类型",
|
||||
"list.statement.define": "定义静态变量",
|
||||
"list.statement.exp.cast.vector2number": "从向量",
|
||||
"list.statement.exp.const.false": "假",
|
||||
"list.statement.exp.const.h": "屏幕高度",
|
||||
"list.statement.exp.const.inf": "无穷大",
|
||||
"list.statement.exp.const.null": "空变量",
|
||||
"list.statement.exp.const.true": "真",
|
||||
"list.statement.exp.const.w": "屏幕宽度",
|
||||
"list.statement.exp.func.abs": "绝对值",
|
||||
"list.statement.exp.func.anim": "动画值",
|
||||
"list.statement.exp.func.attack_timing": "在时间区间中按下",
|
||||
"list.statement.exp.func.clamp": "限制值",
|
||||
"list.statement.exp.func.contact_timing": "接触时间区间",
|
||||
"list.statement.exp.func.cubic_bezier": "三次贝塞尔曲线",
|
||||
"list.statement.exp.func.ease": "缓动",
|
||||
"list.statement.exp.func.ease_in": "缓入",
|
||||
"list.statement.exp.func.ease_in_out": "缓入缓出",
|
||||
"list.statement.exp.func.ease_out": "缓出",
|
||||
"list.statement.exp.func.enter_timing": "进入时间区间",
|
||||
"list.statement.exp.func.frame_seq": "帧序列",
|
||||
"list.statement.exp.func.int": "向下取整",
|
||||
"list.statement.exp.func.interval": "区间",
|
||||
"list.statement.exp.func.is": "等价",
|
||||
"list.statement.exp.func.leave_timing": "离开时间区间",
|
||||
"list.statement.exp.func.max": "最大值",
|
||||
"list.statement.exp.func.min": "最小值",
|
||||
"list.statement.exp.func.release_timing": "在时间区间中松开",
|
||||
"list.statement.exp.func.screen_edge": "屏幕边缘",
|
||||
"list.statement.exp.literal.ident": "变量",
|
||||
"list.statement.exp.literal.identforced": "变量(强制)",
|
||||
"list.statement.exp.literal.number": "数字",
|
||||
"list.statement.exp.literal.string": "字符串",
|
||||
"list.statement.exp.number": "添加元素",
|
||||
"list.statement.exp.string": "添加元素",
|
||||
"list.statement.exp.op.add": "a + b",
|
||||
"list.statement.exp.op.add1": "+n",
|
||||
"list.statement.exp.op.and": "p 且 q",
|
||||
"list.statement.exp.op.at": "索引元素",
|
||||
"list.statement.exp.op.div": "a ÷ b",
|
||||
"list.statement.exp.op.eq": "a = b",
|
||||
"list.statement.exp.op.gt": "a > b",
|
||||
"list.statement.exp.op.lt": "a < b",
|
||||
"list.statement.exp.op.mod": "a % b",
|
||||
"list.statement.exp.op.mul": "a × b",
|
||||
"list.statement.exp.op.not": "非",
|
||||
"list.statement.exp.op.or": "p 或 q",
|
||||
"list.statement.exp.op.sep.arr": "数组",
|
||||
"list.statement.exp.op.sep.vec": "向量",
|
||||
"list.statement.exp.op.sub": "a - b",
|
||||
"list.statement.exp.op.sub1": "-n",
|
||||
"list.statement.obj": "创建容器",
|
||||
"list.statement.prop": "设置属性",
|
||||
"list.statement.select": "选择元素",
|
||||
"list.statement.select.anchor": "选择锚点",
|
||||
"list.statement.select.atanchor": "选择位于锚点",
|
||||
"list.statement.select.exp": "筛选表达式",
|
||||
"list.statement.select.type": "筛选元素类型",
|
||||
"literal.block.filter": "如果 {statement.filter.exp} {statement.filter.type}",
|
||||
"literal.block.select": "对于每个 {statement.select.exp} {statement.select.type?元素}",
|
||||
"literal.statement.filter.exp": "{0}",
|
||||
"literal.statement.filter.type": "元素的类型为 {0}",
|
||||
"literal.statement.select.exp": "{0} 的",
|
||||
"literal.statement.select.type": "{0}",
|
||||
"statement.comp": "创建一个 {0} 组件",
|
||||
"statement.define": "定义变量 {0} = {1}",
|
||||
"statement.filter": "{0} {1}",
|
||||
"statement.filter.exp": "元素符合表达式 {0}",
|
||||
"statement.filter.type": "元素的类型为 {0}",
|
||||
"statement.define": "静态定义 {0} = {1}",
|
||||
"statement.exp.cast.vector2number": "向量 {0}",
|
||||
"statement.exp.const.false": "假",
|
||||
"statement.exp.const.h": "屏幕高度",
|
||||
"statement.exp.const.inf": "无穷大",
|
||||
"statement.exp.const.null": "空变量",
|
||||
"statement.exp.const.true": "真",
|
||||
"statement.exp.const.w": "屏幕宽度",
|
||||
"statement.exp.func.abs": "{0} 的绝对值",
|
||||
"statement.exp.func.anim": "动画值从 {0} 到 {1},使用函数 {2}",
|
||||
"statement.exp.func.attack_timing": "在时间区间 ({0}, {1}) 中按下",
|
||||
"statement.exp.func.clamp": "限制 {1} 在 {0} 和 {2} 之间",
|
||||
"statement.exp.func.contact_timing": "接触时间区间 ({0}, {1})",
|
||||
"statement.exp.func.cubic_bezier": "由控制点 ({0}, {1}) 和 ({2}, {3}) 定义的三次贝塞尔曲线,复合 {4}",
|
||||
"statement.exp.func.ease": "缓动,复合 {0}",
|
||||
"statement.exp.func.ease_in": "缓入,复合 {0}",
|
||||
"statement.exp.func.ease_in_out": "缓入缓出,复合 {0}",
|
||||
"statement.exp.func.ease_out": "缓出,复合 {0}",
|
||||
"statement.exp.func.enter_timing": "进入时间区间 ({0}, +∞)",
|
||||
"statement.exp.func.frame_seq": "前缀为 {0} 从 {1} 的 {2} 帧序列",
|
||||
"statement.exp.func.int": "向下取整 {0}",
|
||||
"statement.exp.func.interval": "{0} 和 {1} 之间的区间",
|
||||
"statement.exp.func.is": "{0} 等价于 {1}",
|
||||
"statement.exp.func.leave_timing": "离开时间区间 (-∞, {0})",
|
||||
"statement.exp.func.max": "{0} 和 {1} 的最大值",
|
||||
"statement.exp.func.min": "{0} 和 {1} 的最小值",
|
||||
"statement.exp.func.release_timing": "在时间区间 ({0}, {1}) 中松开",
|
||||
"statement.exp.func.screen_edge": "屏幕边缘 #{0}",
|
||||
"statement.exp.literal.ident": "{0}",
|
||||
"statement.exp.literal.identforced": "{0}(强制)",
|
||||
"statement.exp.literal.number": "{0}",
|
||||
"statement.exp.literal.string": "{0}",
|
||||
"statement.exp.number": "{0}",
|
||||
"statement.exp.number_or_vector": "{0}",
|
||||
"statement.exp.string": "{0}",
|
||||
"statement.exp.op.add": "{0} + {1}",
|
||||
"statement.exp.op.add1": "+{0}",
|
||||
"statement.exp.op.and": "{0} 且 {1}",
|
||||
"statement.exp.op.at": "{0} 的第 {1} 个元素",
|
||||
"statement.exp.op.div": "{0} ÷ {1}",
|
||||
"statement.exp.op.eq": "{0} = {1}",
|
||||
"statement.exp.op.gt": "{0} > {1}",
|
||||
"statement.exp.op.lt": "{0} < {1}",
|
||||
"statement.exp.op.mod": "{0} % {1}",
|
||||
"statement.exp.op.mul": "{0} × {1}",
|
||||
"statement.exp.op.not": "非 {0}",
|
||||
"statement.exp.op.or": "{0} 或 {1}",
|
||||
"statement.exp.op.sep.arr": "数组 {0}",
|
||||
"statement.exp.op.sep.vec": "向量 {0}",
|
||||
"statement.exp.op.sub": "{0} - {1}",
|
||||
"statement.exp.op.sub1": "-{0}",
|
||||
"statement.obj": "创建一个容器 {0}",
|
||||
"statement.prop": "设置属性 {0} 为 {1}",
|
||||
"statement.select": "{0} {1}",
|
||||
"statement.select.exp": "元素符合表达式 {0}",
|
||||
"statement.select.type": "元素的类型为 {0}",
|
||||
"statement.select": "选择 {0} {1}",
|
||||
"statement.select.anchor": "选择其 {0} 锚点",
|
||||
"statement.select.atanchor": "选择位于其 {0} 锚点",
|
||||
"statement.select.exp": "如果元素符合表达式 {0}",
|
||||
"statement.select.type": "如果元素的类型为 {0}",
|
||||
"tool.debug": "调试",
|
||||
"tool.hideadd": "隐藏添加按钮",
|
||||
"tool.hidedelete": "隐藏删除按钮",
|
||||
|
Binary file not shown.
Reference in New Issue
Block a user