Browse Source

Merge pull request #15179 from linbingquan/dev

Editor: i18n
Mr.doob 6 years ago
parent
commit
4860753355

+ 1 - 0
editor/css/dark.css

@@ -107,6 +107,7 @@ select {
 			color: #888;
 			margin: 0;
 			padding: 8px;
+			line-height: 16px;
 		}
 
 		#menubar .menu .options {

+ 1 - 0
editor/css/light.css

@@ -103,6 +103,7 @@ select {
 			color: #888;
 			margin: 0;
 			padding: 8px;
+			line-height: 16px;
 		}
 
 		#menubar .menu .options {

+ 8 - 6
editor/js/Sidebar.Geometry.BoxGeometry.js

@@ -4,6 +4,8 @@
 
 Sidebar.Geometry.BoxGeometry = function ( editor, object ) {
 
+	var strings = editor.strings;
+
 	var signals = editor.signals;
 
 	var container = new UI.Row();
@@ -16,7 +18,7 @@ Sidebar.Geometry.BoxGeometry = function ( editor, object ) {
 	var widthRow = new UI.Row();
 	var width = new UI.Number( parameters.width ).onChange( update );
 
-	widthRow.add( new UI.Text( 'Width' ).setWidth( '90px' ) );
+	widthRow.add( new UI.Text( strings.getKey( 'sidebar/geometry/box_geometry/width' ) ).setWidth( '90px' ) );
 	widthRow.add( width );
 
 	container.add( widthRow );
@@ -26,7 +28,7 @@ Sidebar.Geometry.BoxGeometry = function ( editor, object ) {
 	var heightRow = new UI.Row();
 	var height = new UI.Number( parameters.height ).onChange( update );
 
-	heightRow.add( new UI.Text( 'Height' ).setWidth( '90px' ) );
+	heightRow.add( new UI.Text( strings.getKey( 'sidebar/geometry/box_geometry/height' ) ).setWidth( '90px' ) );
 	heightRow.add( height );
 
 	container.add( heightRow );
@@ -36,7 +38,7 @@ Sidebar.Geometry.BoxGeometry = function ( editor, object ) {
 	var depthRow = new UI.Row();
 	var depth = new UI.Number( parameters.depth ).onChange( update );
 
-	depthRow.add( new UI.Text( 'Depth' ).setWidth( '90px' ) );
+	depthRow.add( new UI.Text( strings.getKey( 'sidebar/geometry/box_geometry/depth' ) ).setWidth( '90px' ) );
 	depthRow.add( depth );
 
 	container.add( depthRow );
@@ -46,7 +48,7 @@ Sidebar.Geometry.BoxGeometry = function ( editor, object ) {
 	var widthSegmentsRow = new UI.Row();
 	var widthSegments = new UI.Integer( parameters.widthSegments ).setRange( 1, Infinity ).onChange( update );
 
-	widthSegmentsRow.add( new UI.Text( 'Width Seg' ).setWidth( '90px' ) );
+	widthSegmentsRow.add( new UI.Text( strings.getKey( 'sidebar/geometry/box_geometry/widthseg' ) ).setWidth( '90px' ) );
 	widthSegmentsRow.add( widthSegments );
 
 	container.add( widthSegmentsRow );
@@ -56,7 +58,7 @@ Sidebar.Geometry.BoxGeometry = function ( editor, object ) {
 	var heightSegmentsRow = new UI.Row();
 	var heightSegments = new UI.Integer( parameters.heightSegments ).setRange( 1, Infinity ).onChange( update );
 
-	heightSegmentsRow.add( new UI.Text( 'Height Seg' ).setWidth( '90px' ) );
+	heightSegmentsRow.add( new UI.Text( strings.getKey( 'sidebar/geometry/box_geometry/heightseg' ) ).setWidth( '90px' ) );
 	heightSegmentsRow.add( heightSegments );
 
 	container.add( heightSegmentsRow );
@@ -66,7 +68,7 @@ Sidebar.Geometry.BoxGeometry = function ( editor, object ) {
 	var depthSegmentsRow = new UI.Row();
 	var depthSegments = new UI.Integer( parameters.depthSegments ).setRange( 1, Infinity ).onChange( update );
 
-	depthSegmentsRow.add( new UI.Text( 'Depth Seg' ).setWidth( '90px' ) );
+	depthSegmentsRow.add( new UI.Text( strings.getKey( 'sidebar/geometry/box_geometry/depthseg' ) ).setWidth( '90px' ) );
 	depthSegmentsRow.add( depthSegments );
 
 	container.add( depthSegmentsRow );

+ 4 - 2
editor/js/Sidebar.Geometry.BufferGeometry.js

@@ -4,6 +4,8 @@
 
 Sidebar.Geometry.BufferGeometry = function ( editor ) {
 
+	var strings = editor.strings;
+
 	var signals = editor.signals;
 
 	var container = new UI.Row();
@@ -20,7 +22,7 @@ Sidebar.Geometry.BufferGeometry = function ( editor ) {
 			container.clear();
 			container.setDisplay( 'block' );
 
-			var text = new UI.Text( 'Attributes' ).setWidth( '90px' );
+			var text = new UI.Text( strings.getKey( 'sidebar/geometry/buffer_geometry/attributes' ) ).setWidth( '90px' );
 			container.add( text );
 
 			var container2 = new UI.Span().setDisplay( 'inline-block' ).setWidth( '160px' );
@@ -30,7 +32,7 @@ Sidebar.Geometry.BufferGeometry = function ( editor ) {
 
 			if ( index !== null ) {
 
-				container2.add( new UI.Text( 'index' ).setWidth( '80px' ) );
+				container2.add( new UI.Text( strings.getKey( 'sidebar/geometry/buffer_geometry/index' ) ).setWidth( '80px' ) );
 				container2.add( new UI.Text( ( index.count ).format() ).setFontSize( '12px' ) );
 				container2.add( new UI.Break() );
 

+ 6 - 4
editor/js/Sidebar.Geometry.CircleGeometry.js

@@ -4,6 +4,8 @@
 
 Sidebar.Geometry.CircleGeometry = function ( editor, object ) {
 
+	var strings = editor.strings;
+
 	var signals = editor.signals;
 
 	var container = new UI.Row();
@@ -16,7 +18,7 @@ Sidebar.Geometry.CircleGeometry = function ( editor, object ) {
 	var radiusRow = new UI.Row();
 	var radius = new UI.Number( parameters.radius ).onChange( update );
 
-	radiusRow.add( new UI.Text( 'Radius' ).setWidth( '90px' ) );
+	radiusRow.add( new UI.Text( strings.getKey( 'sidebar/geometry/circle_geometry/radius' ) ).setWidth( '90px' ) );
 	radiusRow.add( radius );
 
 	container.add( radiusRow );
@@ -26,7 +28,7 @@ Sidebar.Geometry.CircleGeometry = function ( editor, object ) {
 	var segmentsRow = new UI.Row();
 	var segments = new UI.Integer( parameters.segments ).setRange( 3, Infinity ).onChange( update );
 
-	segmentsRow.add( new UI.Text( 'Segments' ).setWidth( '90px' ) );
+	segmentsRow.add( new UI.Text( strings.getKey( 'sidebar/geometry/circle_geometry/segments' ) ).setWidth( '90px' ) );
 	segmentsRow.add( segments );
 
 	container.add( segmentsRow );
@@ -36,7 +38,7 @@ Sidebar.Geometry.CircleGeometry = function ( editor, object ) {
 	var thetaStartRow = new UI.Row();
 	var thetaStart = new UI.Number( parameters.thetaStart * THREE.Math.RAD2DEG ).setStep( 10 ).onChange( update );
 
-	thetaStartRow.add( new UI.Text( 'Theta start' ).setWidth( '90px' ) );
+	thetaStartRow.add( new UI.Text( strings.getKey( 'sidebar/geometry/circle_geometry/thetastart' ) ).setWidth( '90px' ) );
 	thetaStartRow.add( thetaStart );
 
 	container.add( thetaStartRow );
@@ -46,7 +48,7 @@ Sidebar.Geometry.CircleGeometry = function ( editor, object ) {
 	var thetaLengthRow = new UI.Row();
 	var thetaLength = new UI.Number( parameters.thetaLength * THREE.Math.RAD2DEG ).setStep( 10 ).onChange( update );
 
-	thetaLengthRow.add( new UI.Text( 'Theta length' ).setWidth( '90px' ) );
+	thetaLengthRow.add( new UI.Text( strings.getKey( 'sidebar/geometry/circle_geometry/thetalength' ) ).setWidth( '90px' ) );
 	thetaLengthRow.add( thetaLength );
 
 	container.add( thetaLengthRow );

+ 8 - 6
editor/js/Sidebar.Geometry.CylinderGeometry.js

@@ -4,6 +4,8 @@
 
 Sidebar.Geometry.CylinderGeometry = function ( editor, object ) {
 
+	var strings = editor.strings;
+
 	var signals = editor.signals;
 
 	var container = new UI.Row();
@@ -16,7 +18,7 @@ Sidebar.Geometry.CylinderGeometry = function ( editor, object ) {
 	var radiusTopRow = new UI.Row();
 	var radiusTop = new UI.Number( parameters.radiusTop ).onChange( update );
 
-	radiusTopRow.add( new UI.Text( 'Radius top' ).setWidth( '90px' ) );
+	radiusTopRow.add( new UI.Text( strings.getKey( 'sidebar/geometry/cylinder_geometry/radiustop' ) ).setWidth( '90px' ) );
 	radiusTopRow.add( radiusTop );
 
 	container.add( radiusTopRow );
@@ -26,7 +28,7 @@ Sidebar.Geometry.CylinderGeometry = function ( editor, object ) {
 	var radiusBottomRow = new UI.Row();
 	var radiusBottom = new UI.Number( parameters.radiusBottom ).onChange( update );
 
-	radiusBottomRow.add( new UI.Text( 'Radius bottom' ).setWidth( '90px' ) );
+	radiusBottomRow.add( new UI.Text( strings.getKey( 'sidebar/geometry/cylinder_geometry/radiusbottom' ) ).setWidth( '90px' ) );
 	radiusBottomRow.add( radiusBottom );
 
 	container.add( radiusBottomRow );
@@ -36,7 +38,7 @@ Sidebar.Geometry.CylinderGeometry = function ( editor, object ) {
 	var heightRow = new UI.Row();
 	var height = new UI.Number( parameters.height ).onChange( update );
 
-	heightRow.add( new UI.Text( 'Height' ).setWidth( '90px' ) );
+	heightRow.add( new UI.Text( strings.getKey( 'sidebar/geometry/cylinder_geometry/height' ) ).setWidth( '90px' ) );
 	heightRow.add( height );
 
 	container.add( heightRow );
@@ -46,7 +48,7 @@ Sidebar.Geometry.CylinderGeometry = function ( editor, object ) {
 	var radialSegmentsRow = new UI.Row();
 	var radialSegments = new UI.Integer( parameters.radialSegments ).setRange( 1, Infinity ).onChange( update );
 
-	radialSegmentsRow.add( new UI.Text( 'Radial segments' ).setWidth( '90px' ) );
+	radialSegmentsRow.add( new UI.Text( strings.getKey( 'sidebar/geometry/cylinder_geometry/radialsegments' ) ).setWidth( '90px' ) );
 	radialSegmentsRow.add( radialSegments );
 
 	container.add( radialSegmentsRow );
@@ -56,7 +58,7 @@ Sidebar.Geometry.CylinderGeometry = function ( editor, object ) {
 	var heightSegmentsRow = new UI.Row();
 	var heightSegments = new UI.Integer( parameters.heightSegments ).setRange( 1, Infinity ).onChange( update );
 
-	heightSegmentsRow.add( new UI.Text( 'Height segments' ).setWidth( '90px' ) );
+	heightSegmentsRow.add( new UI.Text( strings.getKey( 'sidebar/geometry/cylinder_geometry/heightsegments' ) ).setWidth( '90px' ) );
 	heightSegmentsRow.add( heightSegments );
 
 	container.add( heightSegmentsRow );
@@ -66,7 +68,7 @@ Sidebar.Geometry.CylinderGeometry = function ( editor, object ) {
 	var openEndedRow = new UI.Row();
 	var openEnded = new UI.Checkbox( parameters.openEnded ).onChange( update );
 
-	openEndedRow.add( new UI.Text( 'Open ended' ).setWidth( '90px' ) );
+	openEndedRow.add( new UI.Text( strings.getKey( 'sidebar/geometry/cylinder_geometry/openended' ) ).setWidth( '90px' ) );
 	openEndedRow.add( openEnded );
 
 	container.add( openEndedRow );

+ 4 - 2
editor/js/Sidebar.Geometry.Geometry.js

@@ -4,6 +4,8 @@
 
 Sidebar.Geometry.Geometry = function ( editor ) {
 
+	var strings = editor.strings;
+
 	var signals = editor.signals;
 
 	var container = new UI.Row();
@@ -13,7 +15,7 @@ Sidebar.Geometry.Geometry = function ( editor ) {
 	var verticesRow = new UI.Row();
 	var vertices = new UI.Text();
 
-	verticesRow.add( new UI.Text( 'Vertices' ).setWidth( '90px' ) );
+	verticesRow.add( new UI.Text( strings.getKey( 'sidebar/geometry/geometry/vertices' ) ).setWidth( '90px' ) );
 	verticesRow.add( vertices );
 
 	container.add( verticesRow );
@@ -23,7 +25,7 @@ Sidebar.Geometry.Geometry = function ( editor ) {
 	var facesRow = new UI.Row();
 	var faces = new UI.Text();
 
-	facesRow.add( new UI.Text( 'Faces' ).setWidth( '90px' ) );
+	facesRow.add( new UI.Text( strings.getKey( 'sidebar/geometry/geometry/faces' ) ).setWidth( '90px' ) );
 	facesRow.add( faces );
 
 	container.add( facesRow );

+ 4 - 2
editor/js/Sidebar.Geometry.IcosahedronGeometry.js

@@ -4,6 +4,8 @@
 
 Sidebar.Geometry.IcosahedronGeometry = function ( editor, object ) {
 
+	var strings = editor.strings;
+
 	var signals = editor.signals;
 
 	var container = new UI.Row();
@@ -16,7 +18,7 @@ Sidebar.Geometry.IcosahedronGeometry = function ( editor, object ) {
 	var radiusRow = new UI.Row();
 	var radius = new UI.Number( parameters.radius ).onChange( update );
 
-	radiusRow.add( new UI.Text( 'Radius' ).setWidth( '90px' ) );
+	radiusRow.add( new UI.Text( strings.getKey( 'sidebar/geometry/icosahedron_geometry/radius' ) ).setWidth( '90px' ) );
 	radiusRow.add( radius );
 
 	container.add( radiusRow );
@@ -26,7 +28,7 @@ Sidebar.Geometry.IcosahedronGeometry = function ( editor, object ) {
 	var detailRow = new UI.Row();
 	var detail = new UI.Integer( parameters.detail ).setRange( 0, Infinity ).onChange( update );
 
-	detailRow.add( new UI.Text( 'Detail' ).setWidth( '90px' ) );
+	detailRow.add( new UI.Text( strings.getKey( 'sidebar/geometry/icosahedron_geometry/detail' ) ).setWidth( '90px' ) );
 	detailRow.add( detail );
 
 	container.add( detailRow );

+ 6 - 4
editor/js/Sidebar.Geometry.LatheGeometry.js

@@ -4,6 +4,8 @@
 
 Sidebar.Geometry.LatheGeometry = function( editor, object ) {
 
+	var strings = editor.strings;
+
 	var signals = editor.signals;
 
 	var container = new UI.Row();
@@ -16,7 +18,7 @@ Sidebar.Geometry.LatheGeometry = function( editor, object ) {
 	var segmentsRow = new UI.Row();
 	var segments = new UI.Integer( parameters.segments ).onChange( update );
 
-	segmentsRow.add( new UI.Text( 'Segments' ).setWidth( '90px' ) );
+	segmentsRow.add( new UI.Text( strings.getKey( 'sidebar/geometry/lathe_geometry/segments' ) ).setWidth( '90px' ) );
 	segmentsRow.add( segments );
 
 	container.add( segmentsRow );
@@ -26,7 +28,7 @@ Sidebar.Geometry.LatheGeometry = function( editor, object ) {
 	var phiStartRow = new UI.Row();
 	var phiStart = new UI.Number( parameters.phiStart * 180 / Math.PI ).onChange( update );
 
-	phiStartRow.add( new UI.Text( 'Phi start (°)' ).setWidth( '90px' ) );
+	phiStartRow.add( new UI.Text( strings.getKey( 'sidebar/geometry/lathe_geometry/phistart' ) ).setWidth( '90px' ) );
 	phiStartRow.add( phiStart );
 
 	container.add( phiStartRow );
@@ -36,7 +38,7 @@ Sidebar.Geometry.LatheGeometry = function( editor, object ) {
 	var phiLengthRow = new UI.Row();
 	var phiLength = new UI.Number( parameters.phiLength * 180 / Math.PI ).onChange( update );
 
-	phiLengthRow.add( new UI.Text( 'Phi length (°)' ).setWidth( '90px' ) );
+	phiLengthRow.add( new UI.Text( strings.getKey( 'sidebar/geometry/lathe_geometry/philength' ) ).setWidth( '90px' ) );
 	phiLengthRow.add( phiLength );
 
 	container.add( phiLengthRow );
@@ -47,7 +49,7 @@ Sidebar.Geometry.LatheGeometry = function( editor, object ) {
 	var pointsUI = [];
 
 	var pointsRow = new UI.Row();
-	pointsRow.add( new UI.Text( 'Points' ).setWidth( '90px' ) );
+	pointsRow.add( new UI.Text( strings.getKey( 'sidebar/geometry/lathe_geometry/points' ) ).setWidth( '90px' ) );
 
 	var points = new UI.Span().setDisplay( 'inline-block' );
 	pointsRow.add( points );

+ 6 - 4
editor/js/Sidebar.Geometry.PlaneGeometry.js

@@ -4,6 +4,8 @@
 
 Sidebar.Geometry.PlaneGeometry = function ( editor, object ) {
 
+	var strings = editor.strings;
+
 	var signals = editor.signals;
 
 	var container = new UI.Row();
@@ -16,7 +18,7 @@ Sidebar.Geometry.PlaneGeometry = function ( editor, object ) {
 	var widthRow = new UI.Row();
 	var width = new UI.Number( parameters.width ).onChange( update );
 
-	widthRow.add( new UI.Text( 'Width' ).setWidth( '90px' ) );
+	widthRow.add( new UI.Text( strings.getKey( 'sidebar/geometry/plane_geometry/width' ) ).setWidth( '90px' ) );
 	widthRow.add( width );
 
 	container.add( widthRow );
@@ -26,7 +28,7 @@ Sidebar.Geometry.PlaneGeometry = function ( editor, object ) {
 	var heightRow = new UI.Row();
 	var height = new UI.Number( parameters.height ).onChange( update );
 
-	heightRow.add( new UI.Text( 'Height' ).setWidth( '90px' ) );
+	heightRow.add( new UI.Text( strings.getKey( 'sidebar/geometry/plane_geometry/height' ) ).setWidth( '90px' ) );
 	heightRow.add( height );
 
 	container.add( heightRow );
@@ -36,7 +38,7 @@ Sidebar.Geometry.PlaneGeometry = function ( editor, object ) {
 	var widthSegmentsRow = new UI.Row();
 	var widthSegments = new UI.Integer( parameters.widthSegments ).setRange( 1, Infinity ).onChange( update );
 
-	widthSegmentsRow.add( new UI.Text( 'Width segments' ).setWidth( '90px' ) );
+	widthSegmentsRow.add( new UI.Text( strings.getKey( 'sidebar/geometry/plane_geometry/widthsegments' ) ).setWidth( '90px' ) );
 	widthSegmentsRow.add( widthSegments );
 
 	container.add( widthSegmentsRow );
@@ -46,7 +48,7 @@ Sidebar.Geometry.PlaneGeometry = function ( editor, object ) {
 	var heightSegmentsRow = new UI.Row();
 	var heightSegments = new UI.Integer( parameters.heightSegments ).setRange( 1, Infinity ).onChange( update );
 
-	heightSegmentsRow.add( new UI.Text( 'Height segments' ).setWidth( '90px' ) );
+	heightSegmentsRow.add( new UI.Text( strings.getKey( 'sidebar/geometry/plane_geometry/heightsegments' ) ).setWidth( '90px' ) );
 	heightSegmentsRow.add( heightSegments );
 
 	container.add( heightSegmentsRow );

+ 9 - 7
editor/js/Sidebar.Geometry.SphereGeometry.js

@@ -4,6 +4,8 @@
 
 Sidebar.Geometry.SphereGeometry = function ( editor, object ) {
 
+	var strings = editor.strings;
+
 	var signals = editor.signals;
 
 	var container = new UI.Row();
@@ -16,7 +18,7 @@ Sidebar.Geometry.SphereGeometry = function ( editor, object ) {
 	var radiusRow = new UI.Row();
 	var radius = new UI.Number( parameters.radius ).onChange( update );
 
-	radiusRow.add( new UI.Text( 'Radius' ).setWidth( '90px' ) );
+	radiusRow.add( new UI.Text( strings.getKey( 'sidebar/geometry/sphere_geometry/radius' ) ).setWidth( '90px' ) );
 	radiusRow.add( radius );
 
 	container.add( radiusRow );
@@ -26,7 +28,7 @@ Sidebar.Geometry.SphereGeometry = function ( editor, object ) {
 	var widthSegmentsRow = new UI.Row();
 	var widthSegments = new UI.Integer( parameters.widthSegments ).setRange( 1, Infinity ).onChange( update );
 
-	widthSegmentsRow.add( new UI.Text( 'Width segments' ).setWidth( '90px' ) );
+	widthSegmentsRow.add( new UI.Text( strings.getKey( 'sidebar/geometry/sphere_geometry/widthsegments' ) ).setWidth( '90px' ) );
 	widthSegmentsRow.add( widthSegments );
 
 	container.add( widthSegmentsRow );
@@ -36,7 +38,7 @@ Sidebar.Geometry.SphereGeometry = function ( editor, object ) {
 	var heightSegmentsRow = new UI.Row();
 	var heightSegments = new UI.Integer( parameters.heightSegments ).setRange( 1, Infinity ).onChange( update );
 
-	heightSegmentsRow.add( new UI.Text( 'Height segments' ).setWidth( '90px' ) );
+	heightSegmentsRow.add( new UI.Text( strings.getKey( 'sidebar/geometry/sphere_geometry/heightsegments' ) ).setWidth( '90px' ) );
 	heightSegmentsRow.add( heightSegments );
 
 	container.add( heightSegmentsRow );
@@ -46,7 +48,7 @@ Sidebar.Geometry.SphereGeometry = function ( editor, object ) {
 	var phiStartRow = new UI.Row();
 	var phiStart = new UI.Number( parameters.phiStart * THREE.Math.RAD2DEG ).setStep( 10 ).onChange( update );
 
-	phiStartRow.add( new UI.Text( 'Phi start' ).setWidth( '90px' ) );
+	phiStartRow.add( new UI.Text( strings.getKey( 'sidebar/geometry/sphere_geometry/phistart' ) ).setWidth( '90px' ) );
 	phiStartRow.add( phiStart );
 
 	container.add( phiStartRow );
@@ -56,7 +58,7 @@ Sidebar.Geometry.SphereGeometry = function ( editor, object ) {
 	var phiLengthRow = new UI.Row();
 	var phiLength = new UI.Number( parameters.phiLength * THREE.Math.RAD2DEG ).setStep( 10 ).onChange( update );
 
-	phiLengthRow.add( new UI.Text( 'Phi length' ).setWidth( '90px' ) );
+	phiLengthRow.add( new UI.Text( strings.getKey( 'sidebar/geometry/sphere_geometry/philength' ) ).setWidth( '90px' ) );
 	phiLengthRow.add( phiLength );
 
 	container.add( phiLengthRow );
@@ -66,7 +68,7 @@ Sidebar.Geometry.SphereGeometry = function ( editor, object ) {
 	var thetaStartRow = new UI.Row();
 	var thetaStart = new UI.Number( parameters.thetaStart * THREE.Math.RAD2DEG ).setStep( 10 ).onChange( update );
 
-	thetaStartRow.add( new UI.Text( 'Theta start' ).setWidth( '90px' ) );
+	thetaStartRow.add( new UI.Text( strings.getKey( 'sidebar/geometry/sphere_geometry/thetastart' ) ).setWidth( '90px' ) );
 	thetaStartRow.add( thetaStart );
 
 	container.add( thetaStartRow );
@@ -76,7 +78,7 @@ Sidebar.Geometry.SphereGeometry = function ( editor, object ) {
 	var thetaLengthRow = new UI.Row();
 	var thetaLength = new UI.Number( parameters.thetaLength * THREE.Math.RAD2DEG ).setStep( 10 ).onChange( update );
 
-	thetaLengthRow.add( new UI.Text( 'Theta length' ).setWidth( '90px' ) );
+	thetaLengthRow.add( new UI.Text( strings.getKey( 'sidebar/geometry/sphere_geometry/thetalength' ) ).setWidth( '90px' ) );
 	thetaLengthRow.add( thetaLength );
 
 	container.add( thetaLengthRow );

+ 7 - 5
editor/js/Sidebar.Geometry.TorusGeometry.js

@@ -4,6 +4,8 @@
 
 Sidebar.Geometry.TorusGeometry = function ( editor, object ) {
 
+	var strings = editor.strings;
+
 	var signals = editor.signals;
 
 	var container = new UI.Row();
@@ -16,7 +18,7 @@ Sidebar.Geometry.TorusGeometry = function ( editor, object ) {
 	var radiusRow = new UI.Row();
 	var radius = new UI.Number( parameters.radius ).onChange( update );
 
-	radiusRow.add( new UI.Text( 'Radius' ).setWidth( '90px' ) );
+	radiusRow.add( new UI.Text( strings.getKey( 'sidebar/geometry/torus_geometry/radius' ) ).setWidth( '90px' ) );
 	radiusRow.add( radius );
 
 	container.add( radiusRow );
@@ -26,7 +28,7 @@ Sidebar.Geometry.TorusGeometry = function ( editor, object ) {
 	var tubeRow = new UI.Row();
 	var tube = new UI.Number( parameters.tube ).onChange( update );
 
-	tubeRow.add( new UI.Text( 'Tube' ).setWidth( '90px' ) );
+	tubeRow.add( new UI.Text( strings.getKey( 'sidebar/geometry/torus_geometry/tube' ) ).setWidth( '90px' ) );
 	tubeRow.add( tube );
 
 	container.add( tubeRow );
@@ -36,7 +38,7 @@ Sidebar.Geometry.TorusGeometry = function ( editor, object ) {
 	var radialSegmentsRow = new UI.Row();
 	var radialSegments = new UI.Integer( parameters.radialSegments ).setRange( 1, Infinity ).onChange( update );
 
-	radialSegmentsRow.add( new UI.Text( 'Radial segments' ).setWidth( '90px' ) );
+	radialSegmentsRow.add( new UI.Text( strings.getKey( 'sidebar/geometry/torus_geometry/radialsegments' ) ).setWidth( '90px' ) );
 	radialSegmentsRow.add( radialSegments );
 
 	container.add( radialSegmentsRow );
@@ -46,7 +48,7 @@ Sidebar.Geometry.TorusGeometry = function ( editor, object ) {
 	var tubularSegmentsRow = new UI.Row();
 	var tubularSegments = new UI.Integer( parameters.tubularSegments ).setRange( 1, Infinity ).onChange( update );
 
-	tubularSegmentsRow.add( new UI.Text( 'Tubular segments' ).setWidth( '90px' ) );
+	tubularSegmentsRow.add( new UI.Text( strings.getKey( 'sidebar/geometry/torus_geometry/tubularsegments' ) ).setWidth( '90px' ) );
 	tubularSegmentsRow.add( tubularSegments );
 
 	container.add( tubularSegmentsRow );
@@ -56,7 +58,7 @@ Sidebar.Geometry.TorusGeometry = function ( editor, object ) {
 	var arcRow = new UI.Row();
 	var arc = new UI.Number( parameters.arc * THREE.Math.RAD2DEG ).setStep( 10 ).onChange( update );
 
-	arcRow.add( new UI.Text( 'Arc' ).setWidth( '90px' ) );
+	arcRow.add( new UI.Text( strings.getKey( 'sidebar/geometry/torus_geometry/arc' ) ).setWidth( '90px' ) );
 	arcRow.add( arc );
 
 	container.add( arcRow );

+ 8 - 6
editor/js/Sidebar.Geometry.TorusKnotGeometry.js

@@ -4,6 +4,8 @@
 
 Sidebar.Geometry.TorusKnotGeometry = function ( editor, object ) {
 
+	var strings = editor.strings;
+
 	var signals = editor.signals;
 
 	var container = new UI.Row();
@@ -16,7 +18,7 @@ Sidebar.Geometry.TorusKnotGeometry = function ( editor, object ) {
 	var radiusRow = new UI.Row();
 	var radius = new UI.Number( parameters.radius ).onChange( update );
 
-	radiusRow.add( new UI.Text( 'Radius' ).setWidth( '90px' ) );
+	radiusRow.add( new UI.Text( strings.getKey( 'sidebar/geometry/torusKnot_geometry/radius' ) ).setWidth( '90px' ) );
 	radiusRow.add( radius );
 
 	container.add( radiusRow );
@@ -26,7 +28,7 @@ Sidebar.Geometry.TorusKnotGeometry = function ( editor, object ) {
 	var tubeRow = new UI.Row();
 	var tube = new UI.Number( parameters.tube ).onChange( update );
 
-	tubeRow.add( new UI.Text( 'Tube' ).setWidth( '90px' ) );
+	tubeRow.add( new UI.Text( strings.getKey( 'sidebar/geometry/torusKnot_geometry/tube' ) ).setWidth( '90px' ) );
 	tubeRow.add( tube );
 
 	container.add( tubeRow );
@@ -36,7 +38,7 @@ Sidebar.Geometry.TorusKnotGeometry = function ( editor, object ) {
 	var tubularSegmentsRow = new UI.Row();
 	var tubularSegments = new UI.Integer( parameters.tubularSegments ).setRange( 1, Infinity ).onChange( update );
 
-	tubularSegmentsRow.add( new UI.Text( 'Tubular segments' ).setWidth( '90px' ) );
+	tubularSegmentsRow.add( new UI.Text( strings.getKey( 'sidebar/geometry/torusKnot_geometry/tubularsegments' ) ).setWidth( '90px' ) );
 	tubularSegmentsRow.add( tubularSegments );
 
 	container.add( tubularSegmentsRow );
@@ -46,7 +48,7 @@ Sidebar.Geometry.TorusKnotGeometry = function ( editor, object ) {
 	var radialSegmentsRow = new UI.Row();
 	var radialSegments = new UI.Integer( parameters.radialSegments ).setRange( 1, Infinity ).onChange( update );
 
-	radialSegmentsRow.add( new UI.Text( 'Radial segments' ).setWidth( '90px' ) );
+	radialSegmentsRow.add( new UI.Text( strings.getKey( 'sidebar/geometry/torusKnot_geometry/radialsegments' ) ).setWidth( '90px' ) );
 	radialSegmentsRow.add( radialSegments );
 
 	container.add( radialSegmentsRow );
@@ -56,7 +58,7 @@ Sidebar.Geometry.TorusKnotGeometry = function ( editor, object ) {
 	var pRow = new UI.Row();
 	var p = new UI.Number( parameters.p ).onChange( update );
 
-	pRow.add( new UI.Text( 'P' ).setWidth( '90px' ) );
+	pRow.add( new UI.Text( strings.getKey( 'sidebar/geometry/torusKnot_geometry/p' ) ).setWidth( '90px' ) );
 	pRow.add( p );
 
 	container.add( pRow );
@@ -66,7 +68,7 @@ Sidebar.Geometry.TorusKnotGeometry = function ( editor, object ) {
 	var qRow = new UI.Row();
 	var q = new UI.Number( parameters.q ).onChange( update );
 
-	qRow.add( new UI.Text( 'Q' ).setWidth( '90px' ) );
+	qRow.add( new UI.Text( strings.getKey( 'sidebar/geometry/torusKnot_geometry/q' ) ).setWidth( '90px' ) );
 	qRow.add( q );
 
 	container.add( qRow );

+ 7 - 5
editor/js/Sidebar.Geometry.js

@@ -4,6 +4,8 @@
 
 Sidebar.Geometry = function ( editor ) {
 
+	var strings = editor.strings;
+
 	var signals = editor.signals;
 
 	var container = new UI.Panel();
@@ -88,7 +90,7 @@ Sidebar.Geometry = function ( editor ) {
 	var geometryTypeRow = new UI.Row();
 	var geometryType = new UI.Text();
 
-	geometryTypeRow.add( new UI.Text( 'Type' ).setWidth( '90px' ) );
+	geometryTypeRow.add( new UI.Text( strings.getKey( 'sidebar/geometry/type' ) ).setWidth( '90px' ) );
 	geometryTypeRow.add( geometryType );
 
 	container.add( geometryTypeRow );
@@ -97,7 +99,7 @@ Sidebar.Geometry = function ( editor ) {
 
 	var geometryUUIDRow = new UI.Row();
 	var geometryUUID = new UI.Input().setWidth( '102px' ).setFontSize( '12px' ).setDisabled( true );
-	var geometryUUIDRenew = new UI.Button( 'New' ).setMarginLeft( '7px' ).onClick( function () {
+	var geometryUUIDRenew = new UI.Button( strings.getKey( 'sidebar/geometry/new' ) ).setMarginLeft( '7px' ).onClick( function () {
 
 		geometryUUID.setValue( THREE.Math.generateUUID() );
 
@@ -105,7 +107,7 @@ Sidebar.Geometry = function ( editor ) {
 
 	} );
 
-	geometryUUIDRow.add( new UI.Text( 'UUID' ).setWidth( '90px' ) );
+	geometryUUIDRow.add( new UI.Text( strings.getKey( 'sidebar/geometry/uuid' ) ).setWidth( '90px' ) );
 	geometryUUIDRow.add( geometryUUID );
 	geometryUUIDRow.add( geometryUUIDRenew );
 
@@ -120,7 +122,7 @@ Sidebar.Geometry = function ( editor ) {
 
 	} );
 
-	geometryNameRow.add( new UI.Text( 'Name' ).setWidth( '90px' ) );
+	geometryNameRow.add( new UI.Text( strings.getKey( 'sidebar/geometry/name' ) ).setWidth( '90px' ) );
 	geometryNameRow.add( geometryName );
 
 	container.add( geometryNameRow );
@@ -142,7 +144,7 @@ Sidebar.Geometry = function ( editor ) {
 
 	var geometryBoundingSphere = new UI.Text();
 
-	container.add( new UI.Text( 'Bounds' ).setWidth( '90px' ) );
+	container.add( new UI.Text( strings.getKey( 'sidebar/geometry/bounds' ) ).setWidth( '90px' ) );
 	container.add( geometryBoundingSphere );
 
 	//

+ 53 - 51
editor/js/Sidebar.Material.js

@@ -4,6 +4,8 @@
 
 Sidebar.Material = function ( editor ) {
 
+	var strings = editor.strings;
+
 	var signals = editor.signals;
 
 	var currentObject;
@@ -34,7 +36,7 @@ Sidebar.Material = function ( editor ) {
 
 	managerRow.add( new UI.Text( '' ).setWidth( '90px' ) );
 
-	managerRow.add( new UI.Button( 'New' ).onClick( function () {
+	managerRow.add( new UI.Button( strings.getKey( 'sidebar/material/new' ) ).onClick( function () {
 
 		var material = new THREE[ materialClass.getValue() ]();
 		editor.execute( new SetMaterialCommand( currentObject, material, currentMaterialSlot ), 'New Material: ' + materialClass.getValue() );
@@ -42,7 +44,7 @@ Sidebar.Material = function ( editor ) {
 
 	} ) );
 
-	managerRow.add( new UI.Button( 'Copy' ).setMarginLeft( '4px' ).onClick( function () {
+	managerRow.add( new UI.Button( strings.getKey( 'sidebar/material/copy' ) ).setMarginLeft( '4px' ).onClick( function () {
 
 		copiedMaterial = currentObject.material;
 
@@ -56,7 +58,7 @@ Sidebar.Material = function ( editor ) {
 
 	} ) );
 
-	managerRow.add( new UI.Button( 'Paste' ).setMarginLeft( '4px' ).onClick( function () {
+	managerRow.add( new UI.Button( strings.getKey( 'sidebar/material/paste' ) ).setMarginLeft( '4px' ).onClick( function () {
 
 		if ( copiedMaterial === undefined ) return;
 
@@ -88,7 +90,7 @@ Sidebar.Material = function ( editor ) {
 
 	} ).setWidth( '150px' ).setFontSize( '12px' ).onChange( update );
 
-	materialClassRow.add( new UI.Text( 'Type' ).setWidth( '90px' ) );
+	materialClassRow.add( new UI.Text( strings.getKey( 'sidebar/material/type' ) ).setWidth( '90px' ) );
 	materialClassRow.add( materialClass );
 
 	container.add( materialClassRow );
@@ -97,14 +99,14 @@ Sidebar.Material = function ( editor ) {
 
 	var materialUUIDRow = new UI.Row();
 	var materialUUID = new UI.Input().setWidth( '102px' ).setFontSize( '12px' ).setDisabled( true );
-	var materialUUIDRenew = new UI.Button( 'New' ).setMarginLeft( '7px' ).onClick( function () {
+	var materialUUIDRenew = new UI.Button( strings.getKey( 'sidebar/material/new' ) ).setMarginLeft( '7px' ).onClick( function () {
 
 		materialUUID.setValue( THREE.Math.generateUUID() );
 		update();
 
 	} );
 
-	materialUUIDRow.add( new UI.Text( 'UUID' ).setWidth( '90px' ) );
+	materialUUIDRow.add( new UI.Text( strings.getKey( 'sidebar/material/uuid' ) ).setWidth( '90px' ) );
 	materialUUIDRow.add( materialUUID );
 	materialUUIDRow.add( materialUUIDRenew );
 
@@ -119,7 +121,7 @@ Sidebar.Material = function ( editor ) {
 
 	} );
 
-	materialNameRow.add( new UI.Text( 'Name' ).setWidth( '90px' ) );
+	materialNameRow.add( new UI.Text( strings.getKey( 'sidebar/material/name' ) ).setWidth( '90px' ) );
 	materialNameRow.add( materialName );
 
 	container.add( materialNameRow );
@@ -127,7 +129,7 @@ Sidebar.Material = function ( editor ) {
 	// program
 
 	var materialProgramRow = new UI.Row();
-	materialProgramRow.add( new UI.Text( 'Program' ).setWidth( '90px' ) );
+	materialProgramRow.add( new UI.Text( strings.getKey( 'sidebar/material/program' ) ).setWidth( '90px' ) );
 
 	var materialProgramInfo = new UI.Button( 'Info' );
 	materialProgramInfo.setMarginLeft( '4px' );
@@ -138,7 +140,7 @@ Sidebar.Material = function ( editor ) {
 	} );
 	materialProgramRow.add( materialProgramInfo );
 
-	var materialProgramVertex = new UI.Button( 'Vertex' );
+	var materialProgramVertex = new UI.Button( strings.getKey( 'sidebar/material/vertex' ) );
 	materialProgramVertex.setMarginLeft( '4px' );
 	materialProgramVertex.onClick( function () {
 
@@ -147,7 +149,7 @@ Sidebar.Material = function ( editor ) {
 	} );
 	materialProgramRow.add( materialProgramVertex );
 
-	var materialProgramFragment = new UI.Button( 'Fragment' );
+	var materialProgramFragment = new UI.Button( strings.getKey( 'sidebar/material/fragment' ) );
 	materialProgramFragment.setMarginLeft( '4px' );
 	materialProgramFragment.onClick( function () {
 
@@ -163,7 +165,7 @@ Sidebar.Material = function ( editor ) {
 	var materialColorRow = new UI.Row();
 	var materialColor = new UI.Color().onChange( update );
 
-	materialColorRow.add( new UI.Text( 'Color' ).setWidth( '90px' ) );
+	materialColorRow.add( new UI.Text( strings.getKey( 'sidebar/material/color' ) ).setWidth( '90px' ) );
 	materialColorRow.add( materialColor );
 
 	container.add( materialColorRow );
@@ -173,7 +175,7 @@ Sidebar.Material = function ( editor ) {
 	var materialRoughnessRow = new UI.Row();
 	var materialRoughness = new UI.Number( 0.5 ).setWidth( '60px' ).setRange( 0, 1 ).onChange( update );
 
-	materialRoughnessRow.add( new UI.Text( 'Roughness' ).setWidth( '90px' ) );
+	materialRoughnessRow.add( new UI.Text( strings.getKey( 'sidebar/material/roughness' ) ).setWidth( '90px' ) );
 	materialRoughnessRow.add( materialRoughness );
 
 	container.add( materialRoughnessRow );
@@ -183,7 +185,7 @@ Sidebar.Material = function ( editor ) {
 	var materialMetalnessRow = new UI.Row();
 	var materialMetalness = new UI.Number( 0.5 ).setWidth( '60px' ).setRange( 0, 1 ).onChange( update );
 
-	materialMetalnessRow.add( new UI.Text( 'Metalness' ).setWidth( '90px' ) );
+	materialMetalnessRow.add( new UI.Text( strings.getKey( 'sidebar/material/metalness' ) ).setWidth( '90px' ) );
 	materialMetalnessRow.add( materialMetalness );
 
 	container.add( materialMetalnessRow );
@@ -193,7 +195,7 @@ Sidebar.Material = function ( editor ) {
 	var materialEmissiveRow = new UI.Row();
 	var materialEmissive = new UI.Color().setHexValue( 0x000000 ).onChange( update );
 
-	materialEmissiveRow.add( new UI.Text( 'Emissive' ).setWidth( '90px' ) );
+	materialEmissiveRow.add( new UI.Text( strings.getKey( 'sidebar/material/emissive' ) ).setWidth( '90px' ) );
 	materialEmissiveRow.add( materialEmissive );
 
 	container.add( materialEmissiveRow );
@@ -203,7 +205,7 @@ Sidebar.Material = function ( editor ) {
 	var materialSpecularRow = new UI.Row();
 	var materialSpecular = new UI.Color().setHexValue( 0x111111 ).onChange( update );
 
-	materialSpecularRow.add( new UI.Text( 'Specular' ).setWidth( '90px' ) );
+	materialSpecularRow.add( new UI.Text( strings.getKey( 'sidebar/material/specular' ) ).setWidth( '90px' ) );
 	materialSpecularRow.add( materialSpecular );
 
 	container.add( materialSpecularRow );
@@ -213,7 +215,7 @@ Sidebar.Material = function ( editor ) {
 	var materialShininessRow = new UI.Row();
 	var materialShininess = new UI.Number( 30 ).onChange( update );
 
-	materialShininessRow.add( new UI.Text( 'Shininess' ).setWidth( '90px' ) );
+	materialShininessRow.add( new UI.Text( strings.getKey( 'sidebar/material/shininess' ) ).setWidth( '90px' ) );
 	materialShininessRow.add( materialShininess );
 
 	container.add( materialShininessRow );
@@ -223,7 +225,7 @@ Sidebar.Material = function ( editor ) {
 	var materialClearCoatRow = new UI.Row();
 	var materialClearCoat = new UI.Number( 1 ).setWidth( '60px' ).setRange( 0, 1 ).onChange( update );
 
-	materialClearCoatRow.add( new UI.Text( 'ClearCoat' ).setWidth( '90px' ) );
+	materialClearCoatRow.add( new UI.Text( strings.getKey( 'sidebar/material/clearcoat' ) ).setWidth( '90px' ) );
 	materialClearCoatRow.add( materialClearCoat );
 
 	container.add( materialClearCoatRow );
@@ -233,7 +235,7 @@ Sidebar.Material = function ( editor ) {
 	var materialClearCoatRoughnessRow = new UI.Row();
 	var materialClearCoatRoughness = new UI.Number( 1 ).setWidth( '60px' ).setRange( 0, 1 ).onChange( update );
 
-	materialClearCoatRoughnessRow.add( new UI.Text( 'ClearCoat Roughness' ).setWidth( '90px' ) );
+	materialClearCoatRoughnessRow.add( new UI.Text( strings.getKey( 'sidebar/material/clearcoatroughness' ) ).setWidth( '90px' ) );
 	materialClearCoatRoughnessRow.add( materialClearCoatRoughness );
 
 	container.add( materialClearCoatRoughnessRow );
@@ -243,13 +245,13 @@ Sidebar.Material = function ( editor ) {
 	var materialVertexColorsRow = new UI.Row();
 	var materialVertexColors = new UI.Select().setOptions( {
 
-		0: 'No',
-		1: 'Face',
-		2: 'Vertex'
+		0: strings.getKey( 'sidebar/material/vertexcolors/no' ),
+		1: strings.getKey( 'sidebar/material/vertexcolors/face' ),
+		2: strings.getKey( 'sidebar/material/vertexcolors/vertex' )
 
 	} ).onChange( update );
 
-	materialVertexColorsRow.add( new UI.Text( 'Vertex Colors' ).setWidth( '90px' ) );
+	materialVertexColorsRow.add( new UI.Text( strings.getKey( 'sidebar/material/vertexcolors' ) ).setWidth( '90px' ) );
 	materialVertexColorsRow.add( materialVertexColors );
 
 	container.add( materialVertexColorsRow );
@@ -259,7 +261,7 @@ Sidebar.Material = function ( editor ) {
 	var materialSkinningRow = new UI.Row();
 	var materialSkinning = new UI.Checkbox( false ).onChange( update );
 
-	materialSkinningRow.add( new UI.Text( 'Skinning' ).setWidth( '90px' ) );
+	materialSkinningRow.add( new UI.Text( strings.getKey( 'sidebar/material/skinning' ) ).setWidth( '90px' ) );
 	materialSkinningRow.add( materialSkinning );
 
 	container.add( materialSkinningRow );
@@ -270,7 +272,7 @@ Sidebar.Material = function ( editor ) {
 	var materialMapEnabled = new UI.Checkbox( false ).onChange( update );
 	var materialMap = new UI.Texture().onChange( update );
 
-	materialMapRow.add( new UI.Text( 'Map' ).setWidth( '90px' ) );
+	materialMapRow.add( new UI.Text( strings.getKey( 'sidebar/material/map' ) ).setWidth( '90px' ) );
 	materialMapRow.add( materialMapEnabled );
 	materialMapRow.add( materialMap );
 
@@ -282,7 +284,7 @@ Sidebar.Material = function ( editor ) {
 	var materialAlphaMapEnabled = new UI.Checkbox( false ).onChange( update );
 	var materialAlphaMap = new UI.Texture().onChange( update );
 
-	materialAlphaMapRow.add( new UI.Text( 'Alpha Map' ).setWidth( '90px' ) );
+	materialAlphaMapRow.add( new UI.Text( strings.getKey( 'sidebar/material/alphamap' ) ).setWidth( '90px' ) );
 	materialAlphaMapRow.add( materialAlphaMapEnabled );
 	materialAlphaMapRow.add( materialAlphaMap );
 
@@ -295,7 +297,7 @@ Sidebar.Material = function ( editor ) {
 	var materialBumpMap = new UI.Texture().onChange( update );
 	var materialBumpScale = new UI.Number( 1 ).setWidth( '30px' ).onChange( update );
 
-	materialBumpMapRow.add( new UI.Text( 'Bump Map' ).setWidth( '90px' ) );
+	materialBumpMapRow.add( new UI.Text( strings.getKey( 'sidebar/material/bumpmap' ) ).setWidth( '90px' ) );
 	materialBumpMapRow.add( materialBumpMapEnabled );
 	materialBumpMapRow.add( materialBumpMap );
 	materialBumpMapRow.add( materialBumpScale );
@@ -308,7 +310,7 @@ Sidebar.Material = function ( editor ) {
 	var materialNormalMapEnabled = new UI.Checkbox( false ).onChange( update );
 	var materialNormalMap = new UI.Texture().onChange( update );
 
-	materialNormalMapRow.add( new UI.Text( 'Normal Map' ).setWidth( '90px' ) );
+	materialNormalMapRow.add( new UI.Text( strings.getKey( 'sidebar/material/normalmap' ) ).setWidth( '90px' ) );
 	materialNormalMapRow.add( materialNormalMapEnabled );
 	materialNormalMapRow.add( materialNormalMap );
 
@@ -321,7 +323,7 @@ Sidebar.Material = function ( editor ) {
 	var materialDisplacementMap = new UI.Texture().onChange( update );
 	var materialDisplacementScale = new UI.Number( 1 ).setWidth( '30px' ).onChange( update );
 
-	materialDisplacementMapRow.add( new UI.Text( 'Displace Map' ).setWidth( '90px' ) );
+	materialDisplacementMapRow.add( new UI.Text( strings.getKey( 'sidebar/material/displacemap' ) ).setWidth( '90px' ) );
 	materialDisplacementMapRow.add( materialDisplacementMapEnabled );
 	materialDisplacementMapRow.add( materialDisplacementMap );
 	materialDisplacementMapRow.add( materialDisplacementScale );
@@ -334,7 +336,7 @@ Sidebar.Material = function ( editor ) {
 	var materialRoughnessMapEnabled = new UI.Checkbox( false ).onChange( update );
 	var materialRoughnessMap = new UI.Texture().onChange( update );
 
-	materialRoughnessMapRow.add( new UI.Text( 'Rough. Map' ).setWidth( '90px' ) );
+	materialRoughnessMapRow.add( new UI.Text( strings.getKey( 'sidebar/material/roughmap' ) ).setWidth( '90px' ) );
 	materialRoughnessMapRow.add( materialRoughnessMapEnabled );
 	materialRoughnessMapRow.add( materialRoughnessMap );
 
@@ -346,7 +348,7 @@ Sidebar.Material = function ( editor ) {
 	var materialMetalnessMapEnabled = new UI.Checkbox( false ).onChange( update );
 	var materialMetalnessMap = new UI.Texture().onChange( update );
 
-	materialMetalnessMapRow.add( new UI.Text( 'Metal. Map' ).setWidth( '90px' ) );
+	materialMetalnessMapRow.add( new UI.Text( strings.getKey( 'sidebar/material/metalmap' ) ).setWidth( '90px' ) );
 	materialMetalnessMapRow.add( materialMetalnessMapEnabled );
 	materialMetalnessMapRow.add( materialMetalnessMap );
 
@@ -358,7 +360,7 @@ Sidebar.Material = function ( editor ) {
 	var materialSpecularMapEnabled = new UI.Checkbox( false ).onChange( update );
 	var materialSpecularMap = new UI.Texture().onChange( update );
 
-	materialSpecularMapRow.add( new UI.Text( 'Specular Map' ).setWidth( '90px' ) );
+	materialSpecularMapRow.add( new UI.Text( strings.getKey( 'sidebar/material/specularmap' ) ).setWidth( '90px' ) );
 	materialSpecularMapRow.add( materialSpecularMapEnabled );
 	materialSpecularMapRow.add( materialSpecularMap );
 
@@ -371,7 +373,7 @@ Sidebar.Material = function ( editor ) {
 	var materialEnvMap = new UI.Texture( THREE.SphericalReflectionMapping ).onChange( update );
 	var materialReflectivity = new UI.Number( 1 ).setWidth( '30px' ).onChange( update );
 
-	materialEnvMapRow.add( new UI.Text( 'Env Map' ).setWidth( '90px' ) );
+	materialEnvMapRow.add( new UI.Text( strings.getKey( 'sidebar/material/envmap' ) ).setWidth( '90px' ) );
 	materialEnvMapRow.add( materialEnvMapEnabled );
 	materialEnvMapRow.add( materialEnvMap );
 	materialEnvMapRow.add( materialReflectivity );
@@ -384,7 +386,7 @@ Sidebar.Material = function ( editor ) {
 	var materialLightMapEnabled = new UI.Checkbox( false ).onChange( update );
 	var materialLightMap = new UI.Texture().onChange( update );
 
-	materialLightMapRow.add( new UI.Text( 'Light Map' ).setWidth( '90px' ) );
+	materialLightMapRow.add( new UI.Text( strings.getKey( 'sidebar/material/lightmap' ) ).setWidth( '90px' ) );
 	materialLightMapRow.add( materialLightMapEnabled );
 	materialLightMapRow.add( materialLightMap );
 
@@ -397,7 +399,7 @@ Sidebar.Material = function ( editor ) {
 	var materialAOMap = new UI.Texture().onChange( update );
 	var materialAOScale = new UI.Number( 1 ).setRange( 0, 1 ).setWidth( '30px' ).onChange( update );
 
-	materialAOMapRow.add( new UI.Text( 'AO Map' ).setWidth( '90px' ) );
+	materialAOMapRow.add( new UI.Text( strings.getKey( 'sidebar/material/aomap' ) ).setWidth( '90px' ) );
 	materialAOMapRow.add( materialAOMapEnabled );
 	materialAOMapRow.add( materialAOMap );
 	materialAOMapRow.add( materialAOScale );
@@ -410,7 +412,7 @@ Sidebar.Material = function ( editor ) {
 	var materialEmissiveMapEnabled = new UI.Checkbox( false ).onChange( update );
 	var materialEmissiveMap = new UI.Texture().onChange( update );
 
-	materialEmissiveMapRow.add( new UI.Text( 'Emissive Map' ).setWidth( '90px' ) );
+	materialEmissiveMapRow.add( new UI.Text( strings.getKey( 'sidebar/material/emissivemap' ) ).setWidth( '90px' ) );
 	materialEmissiveMapRow.add( materialEmissiveMapEnabled );
 	materialEmissiveMapRow.add( materialEmissiveMap );
 
@@ -421,13 +423,13 @@ Sidebar.Material = function ( editor ) {
 	var materialSideRow = new UI.Row();
 	var materialSide = new UI.Select().setOptions( {
 
-		0: 'Front',
-		1: 'Back',
-		2: 'Double'
+		0: strings.getKey( 'sidebar/material/side/front' ),
+		1: strings.getKey( 'sidebar/material/side/back' ),
+		2: strings.getKey( 'sidebar/material/side/double' )
 
 	} ).setWidth( '150px' ).setFontSize( '12px' ).onChange( update );
 
-	materialSideRow.add( new UI.Text( 'Side' ).setWidth( '90px' ) );
+	materialSideRow.add( new UI.Text( strings.getKey( 'sidebar/material/side' ) ).setWidth( '90px' ) );
 	materialSideRow.add( materialSide );
 
 	container.add( materialSideRow );
@@ -437,7 +439,7 @@ Sidebar.Material = function ( editor ) {
 	var materialShadingRow = new UI.Row();
 	var materialShading = new UI.Checkbox(false).setLeft( '100px' ).onChange( update );
 
-	materialShadingRow.add( new UI.Text( 'Flat Shaded' ).setWidth( '90px' ) );
+	materialShadingRow.add( new UI.Text( strings.getKey( 'sidebar/material/flatshaded' ) ).setWidth( '90px' ) );
 	materialShadingRow.add( materialShading );
 
 	container.add( materialShadingRow );
@@ -447,16 +449,16 @@ Sidebar.Material = function ( editor ) {
 	var materialBlendingRow = new UI.Row();
 	var materialBlending = new UI.Select().setOptions( {
 
-		0: 'No',
-		1: 'Normal',
-		2: 'Additive',
-		3: 'Subtractive',
-		4: 'Multiply',
-		5: 'Custom'
+		0: strings.getKey( 'sidebar/material/blending/no' ),
+		1: strings.getKey( 'sidebar/material/blending/normal' ),
+		2: strings.getKey( 'sidebar/material/blending/additive' ),
+		3: strings.getKey( 'sidebar/material/blending/subtractive' ),
+		4: strings.getKey( 'sidebar/material/blending/multiply' ),
+		5: strings.getKey( 'sidebar/material/blending/custom' )
 
 	} ).setWidth( '150px' ).setFontSize( '12px' ).onChange( update );
 
-	materialBlendingRow.add( new UI.Text( 'Blending' ).setWidth( '90px' ) );
+	materialBlendingRow.add( new UI.Text( strings.getKey( 'sidebar/material/blending' ) ).setWidth( '90px' ) );
 	materialBlendingRow.add( materialBlending );
 
 	container.add( materialBlendingRow );
@@ -466,7 +468,7 @@ Sidebar.Material = function ( editor ) {
 	var materialOpacityRow = new UI.Row();
 	var materialOpacity = new UI.Number( 1 ).setWidth( '60px' ).setRange( 0, 1 ).onChange( update );
 
-	materialOpacityRow.add( new UI.Text( 'Opacity' ).setWidth( '90px' ) );
+	materialOpacityRow.add( new UI.Text( strings.getKey( 'sidebar/material/opacity' ) ).setWidth( '90px' ) );
 	materialOpacityRow.add( materialOpacity );
 
 	container.add( materialOpacityRow );
@@ -476,7 +478,7 @@ Sidebar.Material = function ( editor ) {
 	var materialTransparentRow = new UI.Row();
 	var materialTransparent = new UI.Checkbox().setLeft( '100px' ).onChange( update );
 
-	materialTransparentRow.add( new UI.Text( 'Transparent' ).setWidth( '90px' ) );
+	materialTransparentRow.add( new UI.Text( strings.getKey( 'sidebar/material/transparent' ) ).setWidth( '90px' ) );
 	materialTransparentRow.add( materialTransparent );
 
 	container.add( materialTransparentRow );
@@ -486,7 +488,7 @@ Sidebar.Material = function ( editor ) {
 	var materialAlphaTestRow = new UI.Row();
 	var materialAlphaTest = new UI.Number().setWidth( '60px' ).setRange( 0, 1 ).onChange( update );
 
-	materialAlphaTestRow.add( new UI.Text( 'Alpha Test' ).setWidth( '90px' ) );
+	materialAlphaTestRow.add( new UI.Text( strings.getKey( 'sidebar/material/alphatest' ) ).setWidth( '90px' ) );
 	materialAlphaTestRow.add( materialAlphaTest );
 
 	container.add( materialAlphaTestRow );
@@ -497,7 +499,7 @@ Sidebar.Material = function ( editor ) {
 	var materialWireframe = new UI.Checkbox( false ).onChange( update );
 	var materialWireframeLinewidth = new UI.Number( 1 ).setWidth( '60px' ).setRange( 0, 100 ).onChange( update );
 
-	materialWireframeRow.add( new UI.Text( 'Wireframe' ).setWidth( '90px' ) );
+	materialWireframeRow.add( new UI.Text( strings.getKey( 'sidebar/material/wireframe' ) ).setWidth( '90px' ) );
 	materialWireframeRow.add( materialWireframe );
 	materialWireframeRow.add( materialWireframeLinewidth );
 

+ 26 - 24
editor/js/Sidebar.Object.js

@@ -4,6 +4,8 @@
 
 Sidebar.Object = function ( editor ) {
 
+	var strings = editor.strings;
+
 	var signals = editor.signals;
 
 	var container = new UI.Panel();
@@ -59,7 +61,7 @@ Sidebar.Object = function ( editor ) {
 	var objectTypeRow = new UI.Row();
 	var objectType = new UI.Text();
 
-	objectTypeRow.add( new UI.Text( 'Type' ).setWidth( '90px' ) );
+	objectTypeRow.add( new UI.Text( strings.getKey( 'sidebar/object/type' ) ).setWidth( '90px' ) );
 	objectTypeRow.add( objectType );
 
 	container.add( objectTypeRow );
@@ -68,7 +70,7 @@ Sidebar.Object = function ( editor ) {
 
 	var objectUUIDRow = new UI.Row();
 	var objectUUID = new UI.Input().setWidth( '102px' ).setFontSize( '12px' ).setDisabled( true );
-	var objectUUIDRenew = new UI.Button( 'New' ).setMarginLeft( '7px' ).onClick( function () {
+	var objectUUIDRenew = new UI.Button( strings.getKey( 'sidebar/object/new' ) ).setMarginLeft( '7px' ).onClick( function () {
 
 		objectUUID.setValue( THREE.Math.generateUUID() );
 
@@ -76,7 +78,7 @@ Sidebar.Object = function ( editor ) {
 
 	} );
 
-	objectUUIDRow.add( new UI.Text( 'UUID' ).setWidth( '90px' ) );
+	objectUUIDRow.add( new UI.Text( strings.getKey( 'sidebar/object/uuid' ) ).setWidth( '90px' ) );
 	objectUUIDRow.add( objectUUID );
 	objectUUIDRow.add( objectUUIDRenew );
 
@@ -91,7 +93,7 @@ Sidebar.Object = function ( editor ) {
 
 	} );
 
-	objectNameRow.add( new UI.Text( 'Name' ).setWidth( '90px' ) );
+	objectNameRow.add( new UI.Text( strings.getKey( 'sidebar/object/name' ) ).setWidth( '90px' ) );
 	objectNameRow.add( objectName );
 
 	container.add( objectNameRow );
@@ -103,7 +105,7 @@ Sidebar.Object = function ( editor ) {
 	var objectPositionY = new UI.Number().setPrecision( 3 ).setWidth( '50px' ).onChange( update );
 	var objectPositionZ = new UI.Number().setPrecision( 3 ).setWidth( '50px' ).onChange( update );
 
-	objectPositionRow.add( new UI.Text( 'Position' ).setWidth( '90px' ) );
+	objectPositionRow.add( new UI.Text( strings.getKey( 'sidebar/object/position' ) ).setWidth( '90px' ) );
 	objectPositionRow.add( objectPositionX, objectPositionY, objectPositionZ );
 
 	container.add( objectPositionRow );
@@ -115,7 +117,7 @@ Sidebar.Object = function ( editor ) {
 	var objectRotationY = new UI.Number().setStep( 10 ).setUnit( '°' ).setWidth( '50px' ).onChange( update );
 	var objectRotationZ = new UI.Number().setStep( 10 ).setUnit( '°' ).setWidth( '50px' ).onChange( update );
 
-	objectRotationRow.add( new UI.Text( 'Rotation' ).setWidth( '90px' ) );
+	objectRotationRow.add( new UI.Text( strings.getKey( 'sidebar/object/rotation' ) ).setWidth( '90px' ) );
 	objectRotationRow.add( objectRotationX, objectRotationY, objectRotationZ );
 
 	container.add( objectRotationRow );
@@ -128,7 +130,7 @@ Sidebar.Object = function ( editor ) {
 	var objectScaleY = new UI.Number( 1 ).setPrecision( 3 ).setRange( 0.001, Infinity ).setWidth( '50px' ).onChange( updateScaleY );
 	var objectScaleZ = new UI.Number( 1 ).setPrecision( 3 ).setRange( 0.001, Infinity ).setWidth( '50px' ).onChange( updateScaleZ );
 
-	objectScaleRow.add( new UI.Text( 'Scale' ).setWidth( '90px' ) );
+	objectScaleRow.add( new UI.Text( strings.getKey( 'sidebar/object/scale' ) ).setWidth( '90px' ) );
 	objectScaleRow.add( objectScaleLock );
 	objectScaleRow.add( objectScaleX, objectScaleY, objectScaleZ );
 
@@ -139,7 +141,7 @@ Sidebar.Object = function ( editor ) {
 	var objectFovRow = new UI.Row();
 	var objectFov = new UI.Number().onChange( update );
 
-	objectFovRow.add( new UI.Text( 'Fov' ).setWidth( '90px' ) );
+	objectFovRow.add( new UI.Text( strings.getKey( 'sidebar/object/fov' ) ).setWidth( '90px' ) );
 	objectFovRow.add( objectFov );
 
 	container.add( objectFovRow );
@@ -149,7 +151,7 @@ Sidebar.Object = function ( editor ) {
 	var objectNearRow = new UI.Row();
 	var objectNear = new UI.Number().onChange( update );
 
-	objectNearRow.add( new UI.Text( 'Near' ).setWidth( '90px' ) );
+	objectNearRow.add( new UI.Text( strings.getKey( 'sidebar/object/near' ) ).setWidth( '90px' ) );
 	objectNearRow.add( objectNear );
 
 	container.add( objectNearRow );
@@ -159,7 +161,7 @@ Sidebar.Object = function ( editor ) {
 	var objectFarRow = new UI.Row();
 	var objectFar = new UI.Number().onChange( update );
 
-	objectFarRow.add( new UI.Text( 'Far' ).setWidth( '90px' ) );
+	objectFarRow.add( new UI.Text( strings.getKey( 'sidebar/object/far' ) ).setWidth( '90px' ) );
 	objectFarRow.add( objectFar );
 
 	container.add( objectFarRow );
@@ -169,7 +171,7 @@ Sidebar.Object = function ( editor ) {
 	var objectIntensityRow = new UI.Row();
 	var objectIntensity = new UI.Number().setRange( 0, Infinity ).onChange( update );
 
-	objectIntensityRow.add( new UI.Text( 'Intensity' ).setWidth( '90px' ) );
+	objectIntensityRow.add( new UI.Text( strings.getKey( 'sidebar/object/intensity' ) ).setWidth( '90px' ) );
 	objectIntensityRow.add( objectIntensity );
 
 	container.add( objectIntensityRow );
@@ -179,7 +181,7 @@ Sidebar.Object = function ( editor ) {
 	var objectColorRow = new UI.Row();
 	var objectColor = new UI.Color().onChange( update );
 
-	objectColorRow.add( new UI.Text( 'Color' ).setWidth( '90px' ) );
+	objectColorRow.add( new UI.Text( strings.getKey( 'sidebar/object/color' ) ).setWidth( '90px' ) );
 	objectColorRow.add( objectColor );
 
 	container.add( objectColorRow );
@@ -189,7 +191,7 @@ Sidebar.Object = function ( editor ) {
 	var objectGroundColorRow = new UI.Row();
 	var objectGroundColor = new UI.Color().onChange( update );
 
-	objectGroundColorRow.add( new UI.Text( 'Ground color' ).setWidth( '90px' ) );
+	objectGroundColorRow.add( new UI.Text( strings.getKey( 'sidebar/object/groundcolor' ) ).setWidth( '90px' ) );
 	objectGroundColorRow.add( objectGroundColor );
 
 	container.add( objectGroundColorRow );
@@ -199,7 +201,7 @@ Sidebar.Object = function ( editor ) {
 	var objectDistanceRow = new UI.Row();
 	var objectDistance = new UI.Number().setRange( 0, Infinity ).onChange( update );
 
-	objectDistanceRow.add( new UI.Text( 'Distance' ).setWidth( '90px' ) );
+	objectDistanceRow.add( new UI.Text( strings.getKey( 'sidebar/object/distance' ) ).setWidth( '90px' ) );
 	objectDistanceRow.add( objectDistance );
 
 	container.add( objectDistanceRow );
@@ -209,7 +211,7 @@ Sidebar.Object = function ( editor ) {
 	var objectAngleRow = new UI.Row();
 	var objectAngle = new UI.Number().setPrecision( 3 ).setRange( 0, Math.PI / 2 ).onChange( update );
 
-	objectAngleRow.add( new UI.Text( 'Angle' ).setWidth( '90px' ) );
+	objectAngleRow.add( new UI.Text( strings.getKey( 'sidebar/object/angle' ) ).setWidth( '90px' ) );
 	objectAngleRow.add( objectAngle );
 
 	container.add( objectAngleRow );
@@ -219,7 +221,7 @@ Sidebar.Object = function ( editor ) {
 	var objectPenumbraRow = new UI.Row();
 	var objectPenumbra = new UI.Number().setRange( 0, 1 ).onChange( update );
 
-	objectPenumbraRow.add( new UI.Text( 'Penumbra' ).setWidth( '90px' ) );
+	objectPenumbraRow.add( new UI.Text( strings.getKey( 'sidebar/object/penumbra' ) ).setWidth( '90px' ) );
 	objectPenumbraRow.add( objectPenumbra );
 
 	container.add( objectPenumbraRow );
@@ -229,7 +231,7 @@ Sidebar.Object = function ( editor ) {
 	var objectDecayRow = new UI.Row();
 	var objectDecay = new UI.Number().setRange( 0, Infinity ).onChange( update );
 
-	objectDecayRow.add( new UI.Text( 'Decay' ).setWidth( '90px' ) );
+	objectDecayRow.add( new UI.Text( strings.getKey( 'sidebar/object/decay' ) ).setWidth( '90px' ) );
 	objectDecayRow.add( objectDecay );
 
 	container.add( objectDecayRow );
@@ -238,12 +240,12 @@ Sidebar.Object = function ( editor ) {
 
 	var objectShadowRow = new UI.Row();
 
-	objectShadowRow.add( new UI.Text( 'Shadow' ).setWidth( '90px' ) );
+	objectShadowRow.add( new UI.Text( strings.getKey( 'sidebar/object/shadow' ) ).setWidth( '90px' ) );
 
-	var objectCastShadow = new UI.THREE.Boolean( false, 'cast' ).onChange( update );
+	var objectCastShadow = new UI.THREE.Boolean( false, strings.getKey( 'sidebar/object/cast' ) ).onChange( update );
 	objectShadowRow.add( objectCastShadow );
 
-	var objectReceiveShadow = new UI.THREE.Boolean( false, 'receive' ).onChange( update );
+	var objectReceiveShadow = new UI.THREE.Boolean( false, strings.getKey( 'sidebar/object/receive' ) ).onChange( update );
 	objectShadowRow.add( objectReceiveShadow );
 
 	var objectShadowRadius = new UI.Number( 1 ).onChange( update );
@@ -256,7 +258,7 @@ Sidebar.Object = function ( editor ) {
 	var objectVisibleRow = new UI.Row();
 	var objectVisible = new UI.Checkbox().onChange( update );
 
-	objectVisibleRow.add( new UI.Text( 'Visible' ).setWidth( '90px' ) );
+	objectVisibleRow.add( new UI.Text( strings.getKey( 'sidebar/object/visible' ) ).setWidth( '90px' ) );
 	objectVisibleRow.add( objectVisible );
 
 	container.add( objectVisibleRow );
@@ -266,7 +268,7 @@ Sidebar.Object = function ( editor ) {
 	var objectFrustumCulledRow = new UI.Row();
 	var objectFrustumCulled = new UI.Checkbox().onChange( update );
 
-	objectFrustumCulledRow.add( new UI.Text( 'Frustum Cull' ).setWidth( '90px' ) );
+	objectFrustumCulledRow.add( new UI.Text( strings.getKey( 'sidebar/object/frustumcull' ) ).setWidth( '90px' ) );
 	objectFrustumCulledRow.add( objectFrustumCulled );
 
 	container.add( objectFrustumCulledRow );
@@ -276,7 +278,7 @@ Sidebar.Object = function ( editor ) {
 	var objectRenderOrderRow = new UI.Row();
 	var objectRenderOrder = new UI.Integer().setWidth( '50px' ).onChange( update );
 
-	objectRenderOrderRow.add( new UI.Text( 'Render Order' ).setWidth( '90px' ) );
+	objectRenderOrderRow.add( new UI.Text( strings.getKey( 'sidebar/object/renderorder' ) ).setWidth( '90px' ) );
 	objectRenderOrderRow.add( objectRenderOrder );
 
 	container.add( objectRenderOrderRow );
@@ -305,7 +307,7 @@ Sidebar.Object = function ( editor ) {
 
 	} );
 
-	objectUserDataRow.add( new UI.Text( 'User data' ).setWidth( '90px' ) );
+	objectUserDataRow.add( new UI.Text( strings.getKey( 'sidebar/object/userdata' ) ).setWidth( '90px' ) );
 	objectUserDataRow.add( objectUserData );
 
 	container.add( objectUserDataRow );

+ 6 - 4
editor/js/Sidebar.Script.js

@@ -4,12 +4,14 @@
 
 Sidebar.Script = function ( editor ) {
 
+	var strings = editor.strings;
+
 	var signals = editor.signals;
 
 	var container = new UI.Panel();
 	container.setDisplay( 'none' );
 
-	container.add( new UI.Text( 'Script' ).setTextTransform( 'uppercase' ) );
+	container.add( new UI.Text( strings.getKey( 'sidebar/script' ) ).setTextTransform( 'uppercase' ) );
 	container.add( new UI.Break() );
 	container.add( new UI.Break() );
 
@@ -18,7 +20,7 @@ Sidebar.Script = function ( editor ) {
 	var scriptsContainer = new UI.Row();
 	container.add( scriptsContainer );
 
-	var newScript = new UI.Button( 'New' );
+	var newScript = new UI.Button( strings.getKey( 'sidebar/script/new' ) );
 	newScript.onClick( function () {
 
 		var script = { name: '', source: 'function update( event ) {}' };
@@ -66,7 +68,7 @@ Sidebar.Script = function ( editor ) {
 					} );
 					scriptsContainer.add( name );
 
-					var edit = new UI.Button( 'Edit' );
+					var edit = new UI.Button( strings.getKey( 'sidebar/script/edit' ) );
 					edit.setMarginLeft( '4px' );
 					edit.onClick( function () {
 
@@ -75,7 +77,7 @@ Sidebar.Script = function ( editor ) {
 					} );
 					scriptsContainer.add( edit );
 
-					var remove = new UI.Button( 'Remove' );
+					var remove = new UI.Button( strings.getKey( 'sidebar/script/remove' ) );
 					remove.setMarginLeft( '4px' );
 					remove.onClick( function () {
 

+ 294 - 0
editor/js/Strings.js

@@ -68,6 +68,153 @@ var Strings = function ( config ) {
 			'sidebar/properties/material': 'Material',
 			'sidebar/properties/script': 'Script',
 
+			'sidebar/object/type': 'Type',
+			'sidebar/object/new': 'New',
+			'sidebar/object/uuid': 'UUID',
+			'sidebar/object/name': 'Name',
+			'sidebar/object/position': 'Position',
+			'sidebar/object/rotation': 'Rotation',
+			'sidebar/object/scale': 'Scale',
+			'sidebar/object/fov': 'Fov',
+			'sidebar/object/near': 'Near',
+			'sidebar/object/far': 'Far',
+			'sidebar/object/intensity': 'Intensity',
+			'sidebar/object/color': 'Color',
+			'sidebar/object/groundcolor': 'Ground Color',
+			'sidebar/object/distance': 'Distance',
+			'sidebar/object/angle': 'Angle',
+			'sidebar/object/penumbra': 'Penumbra',
+			'sidebar/object/decay': 'Decay',
+			'sidebar/object/shadow': 'Shadow',
+			'sidebar/object/cast': 'cast',
+			'sidebar/object/receive': 'receive',
+			'sidebar/object/visible': 'Visible',
+			'sidebar/object/frustumcull': 'Frustum Cull',
+			'sidebar/object/renderorder': 'Render Order',
+			'sidebar/object/userdata': 'User data',
+
+			'sidebar/geometry/type': 'Type',
+			'sidebar/geometry/new': 'New',
+			'sidebar/geometry/uuid': 'UUID',
+			'sidebar/geometry/name': 'Name',
+			'sidebar/geometry/bounds': 'Bounds',
+
+			'sidebar/geometry/box_geometry/width': 'Width',
+			'sidebar/geometry/box_geometry/height': 'Height',
+			'sidebar/geometry/box_geometry/depth': 'Depth',
+			'sidebar/geometry/box_geometry/widthseg': 'Width Seg',
+			'sidebar/geometry/box_geometry/heightseg': 'Height Seg',
+			'sidebar/geometry/box_geometry/depthseg': 'Depth Seg',
+
+			'sidebar/geometry/buffer_geometry/attributes': 'Attributes',
+			'sidebar/geometry/buffer_geometry/index': 'index',
+
+			'sidebar/geometry/circle_geometry/radius': 'Radius',
+			'sidebar/geometry/circle_geometry/segments': 'Segments',
+			'sidebar/geometry/circle_geometry/thetastart': 'Theta start',
+			'sidebar/geometry/circle_geometry/thetalength': 'Theta length',
+
+			'sidebar/geometry/cylinder_geometry/radiustop': 'Radius top',
+			'sidebar/geometry/cylinder_geometry/radiusbottom': 'Radius bottom',
+			'sidebar/geometry/cylinder_geometry/height': 'Height',
+			'sidebar/geometry/cylinder_geometry/radialsegments': 'Radial segments',
+			'sidebar/geometry/cylinder_geometry/heightsegments': 'Height segments',
+			'sidebar/geometry/cylinder_geometry/openended': 'Open ended',
+
+			'sidebar/geometry/geometry/vertices': 'Vertices',
+			'sidebar/geometry/geometry/faces': 'Faces',
+
+			'sidebar/geometry/icosahedron_geometry/radius': 'Radius',
+			'sidebar/geometry/icosahedron_geometry/detail': 'Detail',
+
+			'sidebar/geometry/lathe_geometry/segments': 'Segments',
+			'sidebar/geometry/lathe_geometry/phistart': 'Phi start (°)',
+			'sidebar/geometry/lathe_geometry/philength': 'Phi length (°)',
+			'sidebar/geometry/lathe_geometry/points': 'Points',
+
+			'sidebar/geometry/plane_geometry/width': 'Width',
+			'sidebar/geometry/plane_geometry/height': 'Height',
+			'sidebar/geometry/plane_geometry/widthsegments': 'Width segments',
+			'sidebar/geometry/plane_geometry/heightsegments': 'Height segments',
+
+			'sidebar/geometry/sphere_geometry/radius': 'Radius',
+			'sidebar/geometry/sphere_geometry/widthsegments': 'Width segments',
+			'sidebar/geometry/sphere_geometry/heightsegments': 'Height segments',
+			'sidebar/geometry/sphere_geometry/phistart': 'Phi start',
+			'sidebar/geometry/sphere_geometry/philength': 'Phi length',
+			'sidebar/geometry/sphere_geometry/thetastart': 'Theta start',
+			'sidebar/geometry/sphere_geometry/thetalength': 'Theta length',
+			
+			'sidebar/geometry/torus_geometry/radius': 'Radius',
+			'sidebar/geometry/torus_geometry/tube': 'Tube',
+			'sidebar/geometry/torus_geometry/radialsegments': 'Radial segments',
+			'sidebar/geometry/torus_geometry/tubularsegments': 'Tubular segments',
+			'sidebar/geometry/torus_geometry/arc': 'Arc',
+
+			'sidebar/geometry/torusKnot_geometry/radius': 'Radius',
+			'sidebar/geometry/torusKnot_geometry/tube': 'Tube',
+			'sidebar/geometry/torusKnot_geometry/tubularsegments': 'Tubular segments',
+			'sidebar/geometry/torusKnot_geometry/radialsegments': 'Radial segments',
+			'sidebar/geometry/torusKnot_geometry/p': 'P',
+			'sidebar/geometry/torusKnot_geometry/q': 'Q',
+			
+			'sidebar/material/new': 'New',
+			'sidebar/material/copy': 'Copy',
+			'sidebar/material/paste': 'Paste',
+			'sidebar/material/type': 'Type',
+			'sidebar/material/uuid': 'UUID',
+			'sidebar/material/name': 'Name',
+			'sidebar/material/program': 'Program',
+			'sidebar/material/info': 'Info',
+			'sidebar/material/vertex': 'Vertex',
+			'sidebar/material/fragment': 'fragment',
+			'sidebar/material/color': 'Color',
+			'sidebar/material/roughness': 'Roughness',
+			'sidebar/material/metalness': 'Metalness',
+			'sidebar/material/emissive': 'Emissive',
+			'sidebar/material/specular': 'Specular',
+			'sidebar/material/shininess': 'Shininess',
+			'sidebar/material/clearcoat': 'ClearCoat',
+			'sidebar/material/clearcoatroughness': 'ClearCoat Roughness',
+			'sidebar/material/vertexcolors': 'Vertex Colors',
+			'sidebar/material/vertexcolors/no': 'No',
+			'sidebar/material/vertexcolors/face': 'Face',
+			'sidebar/material/vertexcolors/vertex': 'Vertex',
+			'sidebar/material/skinning': 'Skinning',
+			'sidebar/material/map': 'Map',
+			'sidebar/material/alphamap': 'Alpha Map',
+			'sidebar/material/bumpmap': 'Bump Map',
+			'sidebar/material/normalmap': 'Normal Map',
+			'sidebar/material/displacemap': 'Displace Map',
+			'sidebar/material/roughmap': 'Rough. Map',
+			'sidebar/material/metalmap': 'Metal. Map',
+			'sidebar/material/specularmap': 'Specular. Map',
+			'sidebar/material/envmap': 'Env Map',
+			'sidebar/material/lightmap': 'Light Map',
+			'sidebar/material/aomap': 'AO Map',
+			'sidebar/material/emissivemap': 'Emissive Map',
+			'sidebar/material/side': 'Side',
+			'sidebar/material/side/front': 'Front',
+			'sidebar/material/side/back': 'Back',
+			'sidebar/material/side/double': 'Double',
+			'sidebar/material/flatshaded': 'Flat Shaded',
+			'sidebar/material/blending': 'Blending',
+			'sidebar/material/blending/no': 'No',
+			'sidebar/material/blending/normal': 'Normal',
+			'sidebar/material/blending/additive': 'Additive',
+			'sidebar/material/blending/subtractive': 'Subtractive',
+			'sidebar/material/blending/multiply': 'Multiply',
+			'sidebar/material/blending/custom': 'Custom',
+			'sidebar/material/opacity': 'Opacity',
+			'sidebar/material/transparent': 'Transparent',
+			'sidebar/material/alphatest': 'Alpha Test',
+			'sidebar/material/wireframe': 'Wireframe',
+
+			'sidebar/script': 'Script',
+			'sidebar/script/new': 'New',
+			'sidebar/script/edit': 'Edit',
+			'sidebar/script/remove': 'Remove',
+
 			'sidebar/project': 'Project',
 			'sidebar/project/title': 'Title',
 			'sidebar/project/editable': 'Editable',
@@ -157,6 +304,153 @@ var Strings = function ( config ) {
 			'sidebar/properties/material': '材质组件',
 			'sidebar/properties/script': '脚本',
 
+			'sidebar/object/type': '类型',
+			'sidebar/object/new': '更新',
+			'sidebar/object/uuid': '识别码',
+			'sidebar/object/name': '名称',
+			'sidebar/object/position': '位置',
+			'sidebar/object/rotation': '旋转',
+			'sidebar/object/scale': '缩放',
+			'sidebar/object/fov': '视角',
+			'sidebar/object/near': '近点',
+			'sidebar/object/far': '远点',
+			'sidebar/object/intensity': '强度',
+			'sidebar/object/color': '颜色',
+			'sidebar/object/groundcolor': '基色',
+			'sidebar/object/distance': '距离',
+			'sidebar/object/angle': '角度',
+			'sidebar/object/penumbra': '边缘',
+			'sidebar/object/decay': '衰减',
+			'sidebar/object/shadow': '阴影',
+			'sidebar/object/cast': '产生',
+			'sidebar/object/receive': '接受',
+			'sidebar/object/visible': '可见性',
+			'sidebar/object/frustumcull': '视锥体裁剪',
+			'sidebar/object/renderorder': '渲染次序',
+			'sidebar/object/userdata': '自定义数据',
+
+			'sidebar/geometry/type': '类型',
+			'sidebar/geometry/new': '更新',
+			'sidebar/geometry/uuid': '识别码',
+			'sidebar/geometry/name': '名称',
+			'sidebar/geometry/bounds': '界限',
+
+			'sidebar/geometry/box_geometry/width': '宽度',
+			'sidebar/geometry/box_geometry/height': '高度',
+			'sidebar/geometry/box_geometry/depth': '深度',
+			'sidebar/geometry/box_geometry/widthseg': '宽度分段',
+			'sidebar/geometry/box_geometry/heightseg': '高度分段',
+			'sidebar/geometry/box_geometry/depthseg': '深度分段',
+
+			'sidebar/geometry/buffer_geometry/attributes': '属性',
+			'sidebar/geometry/buffer_geometry/index': '索引',
+
+			'sidebar/geometry/circle_geometry/radius': '半径',
+			'sidebar/geometry/circle_geometry/segments': '分段',
+			'sidebar/geometry/circle_geometry/thetastart': '弧度起点',
+			'sidebar/geometry/circle_geometry/thetalength': '弧度长度',
+
+			'sidebar/geometry/cylinder_geometry/radiustop': '顶部半径',
+			'sidebar/geometry/cylinder_geometry/radiusbottom': '底部半径',
+			'sidebar/geometry/cylinder_geometry/height': '高度',
+			'sidebar/geometry/cylinder_geometry/radialsegments': '径向分段',
+			'sidebar/geometry/cylinder_geometry/heightsegments': '高度分段',
+			'sidebar/geometry/cylinder_geometry/openended': '开端',
+
+			'sidebar/geometry/geometry/vertices': '顶点',
+			'sidebar/geometry/geometry/faces': '面',
+
+			'sidebar/geometry/icosahedron_geometry/radius': '半径',
+			'sidebar/geometry/icosahedron_geometry/detail': '面片分段',
+
+			'sidebar/geometry/lathe_geometry/segments': '分段',
+			'sidebar/geometry/lathe_geometry/phistart': '经度起点',
+			'sidebar/geometry/lathe_geometry/philength': '经度长度',
+			'sidebar/geometry/lathe_geometry/points': '点',
+
+			'sidebar/geometry/plane_geometry/width': '宽度',
+			'sidebar/geometry/plane_geometry/height': '长度',
+			'sidebar/geometry/plane_geometry/widthsegments': '宽度分段',
+			'sidebar/geometry/plane_geometry/heightsegments': '长度分段',
+
+			'sidebar/geometry/sphere_geometry/radius': '半径',
+			'sidebar/geometry/sphere_geometry/widthsegments': '宽度分段',
+			'sidebar/geometry/sphere_geometry/heightsegments': '长度分段',
+			'sidebar/geometry/sphere_geometry/phistart': '经度起点',
+			'sidebar/geometry/sphere_geometry/philength': '经度长度',
+			'sidebar/geometry/sphere_geometry/thetastart': '纬度起点',
+			'sidebar/geometry/sphere_geometry/thetalength': '纬度长度',
+
+			'sidebar/geometry/torus_geometry/radius': '半径',
+			'sidebar/geometry/torus_geometry/tube': '管厚',
+			'sidebar/geometry/torus_geometry/radialsegments': '半径分段',
+			'sidebar/geometry/torus_geometry/tubularsegments': '管厚分段',
+			'sidebar/geometry/torus_geometry/arc': '弧度',
+
+			'sidebar/geometry/torusKnot_geometry/radius': '半径',
+			'sidebar/geometry/torusKnot_geometry/tube': '管厚',
+			'sidebar/geometry/torusKnot_geometry/tubularsegments': '管厚分段',
+			'sidebar/geometry/torusKnot_geometry/radialsegments': '半径分段',
+			'sidebar/geometry/torusKnot_geometry/p': '管长弧度',
+			'sidebar/geometry/torusKnot_geometry/q': '扭曲弧度',
+
+			'sidebar/material/new': '更新',
+			'sidebar/material/copy': '复制',
+			'sidebar/material/paste': '粘贴',
+			'sidebar/material/type': '类型',
+			'sidebar/material/uuid': '识别码',
+			'sidebar/material/name': '名称',
+			'sidebar/material/program': '程序',
+			'sidebar/material/info': '信息',
+			'sidebar/material/vertex': '顶点',
+			'sidebar/material/fragment': '分段',
+			'sidebar/material/color': '颜色',
+			'sidebar/material/roughness': '粗糙性',
+			'sidebar/material/metalness': '金属性',
+			'sidebar/material/emissive': '放射性',
+			'sidebar/material/specular': '高光',
+			'sidebar/material/shininess': '发光',
+			'sidebar/material/clearcoat': '透明贴图',
+			'sidebar/material/clearcoatroughness': '透明贴图粗糙度',
+			'sidebar/material/vertexcolors': '顶点颜色',
+			'sidebar/material/vertexcolors/no': '无',
+			'sidebar/material/vertexcolors/face': '面',
+			'sidebar/material/vertexcolors/vertex': '顶点',
+			'sidebar/material/skinning': '皮肤',
+			'sidebar/material/map': '贴图',
+			'sidebar/material/alphamap': '透明贴图',
+			'sidebar/material/bumpmap': '凹凸贴图',
+			'sidebar/material/normalmap': '法线贴图',
+			'sidebar/material/displacemap': '位移贴图',
+			'sidebar/material/roughmap': '粗糙贴图',
+			'sidebar/material/metalmap': '金属贴图',
+			'sidebar/material/specularmap': '高光贴图',
+			'sidebar/material/envmap': '环境贴图',
+			'sidebar/material/lightmap': '光照贴图',
+			'sidebar/material/aomap': '烘培贴图',
+			'sidebar/material/emissivemap': '烘培贴图',
+			'sidebar/material/side': '面',
+			'sidebar/material/side/front': '正面',
+			'sidebar/material/side/back': '反面',
+			'sidebar/material/side/double': '双面',
+			'sidebar/material/flatshaded': '平面着色',
+			'sidebar/material/blending': '混合',
+			'sidebar/material/blending/no': '无',
+			'sidebar/material/blending/normal': '正常混合',
+			'sidebar/material/blending/additive': '和混合',
+			'sidebar/material/blending/subtractive': '差混合',
+			'sidebar/material/blending/multiply': '积混合',
+			'sidebar/material/blending/custom': '自定义混合',
+			'sidebar/material/opacity': '透明度',
+			'sidebar/material/transparent': '透明性',
+			'sidebar/material/alphatest': 'α测试',
+			'sidebar/material/wireframe': '线框',
+			
+			'sidebar/script': '脚本',
+			'sidebar/script/new': '新建',
+			'sidebar/script/edit': '编辑',
+			'sidebar/script/remove': '删除',
+
 			'sidebar/project': '项目',
 			'sidebar/project/title': '标题',
 			'sidebar/project/editable': '编辑性',