diff --git a/libraries/geometryBlocks.xml b/libraries/geometryBlocks.xml
index 1bb51964..4ab83e42 100644
--- a/libraries/geometryBlocks.xml
+++ b/libraries/geometryBlocks.xml
@@ -1 +1,26 @@
-zh_CN:对每个项目 _ 来自列表 _ 执行 _
zh_CN:连接点集 _ 方式 _ 步长 _ 连接到第一点 _ 回到第一点 _
10falsefalseitemzh_CN:列表 _ 为空?
zh_CN:圆形 圆心 _ 直径 _
201801803clockwise1802zh_CN:移到 _ 方式 _ 步长 _
no
no
foldLine
randomFoldLine
curveLine10distance0.5zh_CN:折线 _ 步 宽度 _ 方向 _ 方式 _
1010leftleft
rightangle2chordleftzh_CN:圆弧 _ 步 角度 _ 分段数 _ 方向 _ 方式 _
503010clockwiseclockwise
anticlockwisedirr22segLength21clockwisezh_CN:移动 _ 步 方式 _ 步长 _
5010dist0.50zh_CN:入射角 _ 和线段 _ 的反射角
60zh_CN:倾斜角 起点 _ 终点 _
0angle0zh_CN:将和线段 _ 产生交点?
180180truezh_CN:到线段 _ 的距离,交点为 _
pointangle112angle21angle31angle490360360includedAngle1includedAngle2180180includeAngle3180edgeLength221221111111vDistancedistance90hypotenuse2crossPoint1121zh_CN:线段 _ 的中间点
zh_CN:和线段 _ 的交点,距离为 _
zh_CN:线段长度 _
zh_CN:线段 _ 上的任意一点
translate angle to or from polar coordinateszh_CN:角度转换 _
0zh_CN:线段1 _ 和线段2 _ 的交点
point1angle112angle21angle31angle42includedAngle1includedAngle2180180includeAngle3180edgeLength221221111111vDistancedistance90hypotenuse2crossPoint1121zh_CN:开始跟踪
zh_CN:我的轨迹
zh_CN:重置轨迹
zh_CN:线段1 _ 和线段2 _ 有交点?
180180truezh_CN:复制列表 _
de:ist _ leer?
ca:_ buida?
es:_ vacía?
fr:_ vide?
de:wende _ an auf _
ca:mapeja _ sobre _
es:mapear _ sobre _
fr:appliquer _ à _
1zh_CN:圆弧 _ 步 角度 _ 方向 _ 方式 _
5030clockwiseclockwise
anticlockwisedirsections3r22segLength21clockwise
+zh_CN:入射角 _ 和线段 _ 的反射角
60zh_CN:倾斜角 起点 _ 终点 _
0angle0zh_CN:将和线段 _ 产生交点?
180180truezh_CN:到线段 _ 的距离,交点为 _
pointangle112angle21angle31angle490360360includedAngle1includedAngle2180180includeAngle3180edgeLength221221111111vDistancedistance90hypotenuse2crossPoint1121zh_CN:线段 _ 的中间点
zh_CN:和线段 _ 的交点,距离为 _
zh_CN:线段 _ 上的任意一点
translate angle to or from polar coordinateszh_CN:角度转换 _
0zh_CN:线段1 _ 和线段2 _ 的交点
point1angle112angle21angle31angle42includedAngle1includedAngle2180180includeAngle3180edgeLength221221111111vDistancedistance90hypotenuse2crossPoint1121zh_CN:线段1 _ 和线段2 _ 有交点?
180180truezh_CN:入射角 _ 和线段角度 _ 的反射角
6090zh_CN:点集转换为矢量 _
lastDir1212lastPoint22pt:para _ de _ com passo _ a _ _ $loop-0.7
zh_CN:重复执行 因子 _ 初值 _ 步长 _ 终值 _ _
1110zh_CN:绘制矢量 _ 比例 _ 方式 _ 镜像 _ 针脚长度 _
1false6dirnewVector#item2zh_CN:对每个项目 _ 来自列表 _ 执行 _
zh_CN:列表 _ 为空?
zh_CN:线段长度 _
zh_CN:复制列表 _
de:ist _ leer?
+ca:_ buida?
+es:_ vacía?
+fr:_ vide?
de:wende _ an auf _
+ca:mapeja _ sobre _
+es:mapear _ sobre _
+fr:appliquer _ à _
1zh_CN:_ 为空?
Take any number of input lists, and create a new list
+containing the items of the input lists. So
+APPEND [A B] [C D]
+where the [...] are lists reports the list
+[A B C D]
+not [[A B] [C D]].ca:concatena _
zh_CN:合并列表 _
1111Reports a new list containing the items of the input list, but in the opposite order.ca:capgira _
zh_CN:倒置列表 _
1inputresultReports a new list whose items are the same as in the input list, except that if two or more equal items appear in the input list, only the last one is kept in the result.ca:elimina els duplicats de _
zh_CN:从列表 _ 中移除重复项目
1This block applies the given function to each item of the given list, like the primitive MAP block, but with two differences:
+
+1. The # variable provided will contain the item number of the item currently being used in the given function: 1 for item 1, and so on. You read the variable in your function; don't set it.
+
+2. You can provide more than one input list. If so, the lengths of all the lists should be the same, and the function you supply must expect as many inputs as you have lists (i.e., that many empty input slots in the function).ca:_ mapeja _ sobre _
zh_CN:_ 映射 _ 来源 _
#11datacountmapmany##1#1data listscountThis block makes a new list containing selected items from the given list, like the primitive KEEP block.
+
+What's different is that it provides the # variable for use in your predicate function. It will contain the item number (in the original list) of the item being examined by the predicate.ca:_ manté els elements on _ de _
zh_CN:_ 保留满足条件 _ 的项,来源 _
#1datacount1This block carries out the given script for each item of the given list, like the primitive FOR EACH.
+
+What's different is that it provides the # variable, which will contain the item number in the list of each item in turn, 1 while processing item 1, and so on.ca:_ per cada _ de _ _
zh_CN:_ 对每个项目 _ 来自列表 _ 执行 _
zh_CN:倒置矢量 _
021lastPfalsei21zh_CN:转换矢量 _ 比例 _ 针脚长度 _
16!deflectionzh_CN:合并矢量 矢量1 _ 矢量2 _ 偏移角度 _
0c222angleA2222angleB22220zh_CN:按目标点及弧度绘制 _
00002zh_CN:移到 _ 方式 _ 步长 _
no
+
no
+foldLine
+randomFoldLine
+curveLine10distance0.5zh_CN:移动 _ 步 方式 _ 步长 _
5010dir10dist21.5zh_CN:_ 移动 _ 步 方式 _ 步长 _
5010dist#121.5zh_CN:圆弧 _ 步 角度 _ 方向 _ 方式 _
5030clockwiseclockwise
anticlockwisedirsections3r22segLength21clockwisezh_CN:圆弧 _ 步 角度 _ 分段数 _ 方向 _ 方式 _
503010clockwiseclockwise
anticlockwisedirr22segLength21clockwisezh_CN:_ 圆弧 _ 步 角度 _ 分段数 _ 方向 _ 方式 _
503010clockwiseclockwise
anticlockwisedirr22segLength21#1clockwisezh_CN:圆形 圆心 _ 直径 _
201801803clockwise1802part1,part2zh_CN:圆形 直径 _ 分段数 _ 方向 _ 方式 _
10020clockwiseclockwise
anticlockwisedirr2segLength21clockwisepart1,part2zh_CN:_ 圆形 直径 _ 分段数 _ 方向 _ 方式 _
10020clockwiseclockwise
anticlockwisedirr2segLength21#1clockwiseline1,line2,dirzh_CN:折线 _ 步 宽度 _ 方向 _ 方式 _
1010leftleft
right
middleangle2chordmiddleline1,line2,dirzh_CN:折线 _ 步 宽度 _ 方向 _ 方式1 _ 方式2 _
1010leftleft
rightangle2chordleftzh_CN:方波 _ 步 方向 _ 方式 _
20leftleft
rightsideLength2leftzh_CN:方波 _ 步 宽度 _ 方向 _ 方式 _
2020leftleft
right
middleleftzh_CN:开始跟踪
zh_CN:我的轨迹
zh_CN:重置轨迹
zh_CN:取消跟踪
trackPointszh_CN:轨迹转换为矢量 _
trackPointszh_CN:轨迹转换为矢量 _ _
zh_CN:连接点集 _ 方式 _ 步长 _ 连接到第一点 _ 回到第一点 _
10falsefalseitemline1,line2zh_CN:连接线段 _ 方式 _ 步长 _ 类型 _ 填充前 连接到第一点 _ 回到第一点 _ 填充后 去第一点 _ 去最后一点 _
10parallelnormal
parallel
curve
interlaced
randomfalsefalsefalsefalse20line210falsefalsenormal10falsefalse10falsefalseparallel10falsefalse10falsefalsecurveinterlaced20i2random1dir,lineszh_CN:填充轨迹间区域 _ 方式 _
zh_CN:填充轨迹间区域 轨迹1 _ 突出部分 _ _ 轨迹2 _ 方式 _
line2dir#!zh_CN:分形 _ 步 造型函数 _ 级数 _
1001009zh_CN:虚线 _ _
105zh_CN:折边线条 _ 步 宽度 _ 方向 _
1010leftleft
right