diff --git a/src/errors.h b/src/errors.h
index 361a576..0361d71 100644
--- a/src/errors.h
+++ b/src/errors.h
@@ -3376,8 +3376,8 @@
 	INIT(= N_("E1315: White space required after name: %s"));
 EXTERN char e_class_can_only_be_defined_in_vim9_script[]
 	INIT(= N_("E1316: Class can only be defined in Vim9 script"));
-EXTERN char e_invalid_object_member_declaration_str[]
-	INIT(= N_("E1317: Invalid object member declaration: %s"));
+EXTERN char e_invalid_object_variable_declaration_str[]
+	INIT(= N_("E1317: Invalid object variable declaration: %s"));
 EXTERN char e_not_valid_command_in_class_str[]
 	INIT(= N_("E1318: Not a valid command in a class: %s"));
 EXTERN char e_using_class_as_number[]
@@ -3394,30 +3394,30 @@
 	INIT(= N_("E1324: Using an object as a String"));
 EXTERN char e_method_not_found_on_class_str_str[]
 	INIT(= N_("E1325: Method not found on class \"%s\": %s"));
-EXTERN char e_member_not_found_on_object_str_str[]
-	INIT(= N_("E1326: Member not found on object \"%s\": %s"));
+EXTERN char e_variable_not_found_on_object_str_str[]
+	INIT(= N_("E1326: Variable not found on object \"%s\": %s"));
 EXTERN char e_object_required_found_str[]
 	INIT(= N_("E1327: Object required, found %s"));
 EXTERN char e_constructor_default_value_must_be_vnone_str[]
 	INIT(= N_("E1328: Constructor default value must be v:none: %s"));
 // E1329 unused
-EXTERN char e_invalid_type_for_object_member_str[]
-	INIT(= N_("E1330: Invalid type for object member: %s"));
+EXTERN char e_invalid_type_for_object_variable_str[]
+	INIT(= N_("E1330: Invalid type for object variable: %s"));
 EXTERN char e_public_must_be_followed_by_this_or_static[]
 	INIT(= N_("E1331: Public must be followed by \"this\" or \"static\""));
-EXTERN char e_public_member_name_cannot_start_with_underscore_str[]
-	INIT(= N_("E1332: Public member name cannot start with underscore: %s"));
-EXTERN char e_cannot_access_private_member_str[]
-	INIT(= N_("E1333: Cannot access private member: %s"));
+EXTERN char e_public_variable_name_cannot_start_with_underscore_str[]
+	INIT(= N_("E1332: Public variable name cannot start with underscore: %s"));
+EXTERN char e_cannot_access_private_variable_str[]
+	INIT(= N_("E1333: Cannot access private variable: %s"));
 // E1334 unused
-EXTERN char e_member_is_not_writable_str[]
+EXTERN char e_variable_is_not_writable_str[]
 	INIT(= N_("E1335: Variable \"%s\" in class \"%s\" is not writable"));
 #endif
 EXTERN char e_internal_error_shortmess_too_long[]
 	INIT(= "E1336: Internal error: shortmess too long");
 #ifdef FEAT_EVAL
-EXTERN char e_class_member_str_not_found_in_class_str[]
-	INIT(= N_("E1337: Class member \"%s\" not found in class \"%s\""));
+EXTERN char e_class_variable_str_not_found_in_class_str[]
+	INIT(= N_("E1337: Class variable \"%s\" not found in class \"%s\""));
 // E1338 unused
 #endif
 #ifdef FEAT_PROP_POPUP
@@ -3433,16 +3433,16 @@
 	INIT(= N_("E1342: Interface can only be defined in Vim9 script"));
 EXTERN char e_interface_name_must_start_with_uppercase_letter_str[]
 	INIT(= N_("E1343: Interface name must start with an uppercase letter: %s"));
-EXTERN char e_cannot_initialize_member_in_interface[]
-	INIT(= N_("E1344: Cannot initialize a member in an interface"));
+EXTERN char e_cannot_initialize_variable_in_interface[]
+	INIT(= N_("E1344: Cannot initialize a variable in an interface"));
 EXTERN char e_not_valid_command_in_interface_str[]
 	INIT(= N_("E1345: Not a valid command in an interface: %s"));
 EXTERN char e_interface_name_not_found_str[]
 	INIT(= N_("E1346: Interface name not found: %s"));
 EXTERN char e_not_valid_interface_str[]
 	INIT(= N_("E1347: Not a valid interface: %s"));
-EXTERN char e_member_str_of_interface_str_not_implemented[]
-	INIT(= N_("E1348: Member \"%s\" of interface \"%s\" is not implemented"));
+EXTERN char e_variable_str_of_interface_str_not_implemented[]
+	INIT(= N_("E1348: Variable \"%s\" of interface \"%s\" is not implemented"));
 EXTERN char e_method_str_of_interface_str_not_implemented[]
 	INIT(= N_("E1349: Method \"%s\" of interface \"%s\" is not implemented"));
 EXTERN char e_duplicate_implements[]
@@ -3459,12 +3459,12 @@
 	INIT(= N_("E1355: Duplicate function: %s"));
 EXTERN char e_super_must_be_followed_by_dot[]
 	INIT(= N_("E1356: \"super\" must be followed by a dot"));
-EXTERN char e_using_super_not_in_class_function[]
-	INIT(= N_("E1357: Using \"super\" not in a class function"));
+EXTERN char e_using_super_not_in_class_method[]
+	INIT(= N_("E1357: Using \"super\" not in a class method"));
 EXTERN char e_using_super_not_in_child_class[]
 	INIT(= N_("E1358: Using \"super\" not in a child class"));
-EXTERN char e_cannot_define_new_function_in_abstract_class[]
-	INIT(= N_("E1359: Cannot define a \"new\" function in an abstract class"));
+EXTERN char e_cannot_define_new_method_in_abstract_class[]
+	INIT(= N_("E1359: Cannot define a \"new\" method in an abstract class"));
 EXTERN char e_using_null_object[]
 	INIT(= N_("E1360: Using a null object"));
 #endif
@@ -3479,30 +3479,30 @@
 EXTERN char e_warning_pointer_block_corrupted[]
 	INIT(= N_("E1364: Warning: Pointer block corrupted"));
 #ifdef FEAT_EVAL
-EXTERN char e_cannot_use_a_return_type_with_new[]
-	INIT(= N_("E1365: Cannot use a return type with the \"new\" function"));
+EXTERN char e_cannot_use_a_return_type_with_new_method[]
+	INIT(= N_("E1365: Cannot use a return type with the \"new\" method"));
 EXTERN char e_cannot_access_private_method_str[]
 	INIT(= N_("E1366: Cannot access private method: %s"));
-EXTERN char e_member_str_of_interface_str_has_different_access[]
-	INIT(= N_("E1367: Access level of member \"%s\" of interface \"%s\" is different"));
+EXTERN char e_variable_str_of_interface_str_has_different_access[]
+	INIT(= N_("E1367: Access level of variable \"%s\" of interface \"%s\" is different"));
 EXTERN char e_static_cannot_be_followed_by_this[]
-	INIT(= N_("E1368: Static cannot be followed by \"this\" in a member name"));
-EXTERN char e_duplicate_member_str[]
-	INIT(= N_("E1369: Duplicate member: %s"));
-EXTERN char e_cannot_define_new_function_as_static[]
-	INIT(= N_("E1370: Cannot define a \"new\" function as static"));
+	INIT(= N_("E1368: Static cannot be followed by \"this\" in a variable name"));
+EXTERN char e_duplicate_variable_str[]
+	INIT(= N_("E1369: Duplicate variable: %s"));
+EXTERN char e_cannot_define_new_method_as_static[]
+	INIT(= N_("E1370: Cannot define a \"new\" method as static"));
 EXTERN char e_abstract_must_be_followed_by_def_or_static[]
 	INIT(= N_("E1371: Abstract must be followed by \"def\" or \"static\""));
 EXTERN char e_abstract_method_in_concrete_class[]
 	INIT(= N_("E1372: Abstract method \"%s\" cannot be defined in a concrete class"));
 EXTERN char e_abstract_method_str_not_found[]
 	INIT(= N_("E1373: Abstract method \"%s\" is not implemented"));
-EXTERN char e_class_member_str_accessible_only_inside_class_str[]
-	INIT(= N_("E1374: Class member \"%s\" accessible only inside class \"%s\""));
-EXTERN char e_class_member_str_accessible_only_using_class_str[]
-	INIT(= N_("E1375: Class member \"%s\" accessible only using class \"%s\""));
-EXTERN char e_object_member_str_accessible_only_using_object_str[]
-	INIT(= N_("E1376: Object member \"%s\" accessible only using class \"%s\" object"));
+EXTERN char e_class_variable_str_accessible_only_inside_class_str[]
+	INIT(= N_("E1374: Class variable \"%s\" accessible only inside class \"%s\""));
+EXTERN char e_class_variable_str_accessible_only_using_class_str[]
+	INIT(= N_("E1375: Class variable \"%s\" accessible only using class \"%s\""));
+EXTERN char e_object_variable_str_accessible_only_using_object_str[]
+	INIT(= N_("E1376: Object variable \"%s\" accessible only using class \"%s\" object"));
 EXTERN char e_method_str_of_class_str_has_different_access[]
 	INIT(= N_("E1377: Access level of method \"%s\" is different in class \"%s\""));
 EXTERN char e_static_member_not_supported_in_interface[]
@@ -3513,10 +3513,16 @@
 	INIT(= N_("E1380: Private method not supported in an interface"));
 EXTERN char e_interface_cannot_use_implements[]
 	INIT(= N_("E1381: Interface cannot use \"implements\""));
-EXTERN char e_member_str_type_mismatch_expected_str_but_got_str[]
-	INIT(= N_("E1382: Member \"%s\": type mismatch, expected %s but got %s"));
+EXTERN char e_variable_str_type_mismatch_expected_str_but_got_str[]
+	INIT(= N_("E1382: Variable \"%s\": type mismatch, expected %s but got %s"));
 EXTERN char e_method_str_type_mismatch_expected_str_but_got_str[]
 	INIT(= N_("E1383: Method \"%s\": type mismatch, expected %s but got %s"));
+EXTERN char e_class_method_str_accessible_only_inside_class_str[]
+	INIT(= N_("E1384: Class method \"%s\" accessible only inside class \"%s\""));
+EXTERN char e_class_method_str_accessible_only_using_class_str[]
+	INIT(= N_("E1385: Class method \"%s\" accessible only using class \"%s\""));
+EXTERN char e_object_method_str_accessible_only_using_object_str[]
+	INIT(= N_("E1386: Object method \"%s\" accessible only using class \"%s\" object"));
 #endif
 EXTERN char e_cannot_mix_positional_and_non_positional_str[]
 	INIT(= N_("E1400: Cannot mix positional and non-positional arguments: %s"));
@@ -3532,4 +3538,4 @@
 	INIT(= N_("E1405: Invalid format specifier: %s"));
 EXTERN char e_aptypes_is_null_nr_str[]
 	INIT(= "E1408: Internal error: ap_types or ap_types[idx] is NULL: %d: %s");
-// E1384 - E1399 unused
+// E1387 - E1399 unused
diff --git a/src/eval.c b/src/eval.c
index 3f8ce5f..eaca2f5 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -1560,7 +1560,7 @@
 			switch (om->ocm_access)
 			{
 			    case VIM_ACCESS_PRIVATE:
-				semsg(_(e_cannot_access_private_member_str),
+				semsg(_(e_cannot_access_private_variable_str),
 					om->ocm_name);
 				return NULL;
 			    case VIM_ACCESS_READ:
@@ -1569,7 +1569,7 @@
 				    break;
 				if ((flags & GLV_READ_ONLY) == 0)
 				{
-				    semsg(_(e_member_is_not_writable_str),
+				    semsg(_(e_variable_is_not_writable_str),
 					    om->ocm_name, cl->class_name);
 				    return NULL;
 				}
diff --git a/src/testdir/test_vim9_class.vim b/src/testdir/test_vim9_class.vim
index 87dc536..3730329 100644
--- a/src/testdir/test_vim9_class.vim
+++ b/src/testdir/test_vim9_class.vim
@@ -132,7 +132,7 @@
       endclass
       var obj = Something.new()
   END
-  v9.CheckSourceFailure(lines, 'E1326: Member not found on object "Something": state')
+  v9.CheckSourceFailure(lines, 'E1326: Variable not found on object "Something": state')
 
   # Space before ":" in a member variable declaration
   lines =<< trim END
@@ -563,7 +563,7 @@
     var outer_obj = Outer.new(inner_obj)
     F(outer_obj)
   END
-  v9.CheckSourceFailure(lines, 'E1333: Cannot access private member: _value')
+  v9.CheckSourceFailure(lines, 'E1333: Cannot access private variable: _value')
 
   # Try modifying a non-existing variable using an "any" object
   lines =<< trim END
@@ -585,7 +585,7 @@
     var outer_obj = Outer.new(inner_obj)
     F(outer_obj)
   END
-  v9.CheckSourceFailure(lines, 'E1326: Member not found on object "Inner": someval')
+  v9.CheckSourceFailure(lines, 'E1326: Variable not found on object "Inner": someval')
 enddef
 
 " Nested assignment to a object variable which is of another class type
@@ -1009,7 +1009,7 @@
        this.value: void
     endclass
   END
-  v9.CheckSourceFailure(lines, 'E1330: Invalid type for object member: void')
+  v9.CheckSourceFailure(lines, 'E1330: Invalid type for object variable: void')
 enddef
 
 " Test for instance variable access
@@ -1154,7 +1154,7 @@
     endclass
     A.val = 1
   END
-  v9.CheckSourceFailure(lines, 'E1376: Object member "val" accessible only using class "A" object')
+  v9.CheckSourceFailure(lines, 'E1376: Object variable "val" accessible only using class "A" object')
 
   # Read a instance variable using the class name in the script context
   lines =<< trim END
@@ -1164,7 +1164,7 @@
     endclass
     var i = A.val
   END
-  v9.CheckSourceFailure(lines, 'E1376: Object member "val" accessible only using class "A" object')
+  v9.CheckSourceFailure(lines, 'E1376: Object variable "val" accessible only using class "A" object')
 
   # Modify a instance variable using the class name in a def function
   lines =<< trim END
@@ -1177,7 +1177,7 @@
     enddef
     T()
   END
-  v9.CheckSourceFailure(lines, 'E1376: Object member "val" accessible only using class "A" object')
+  v9.CheckSourceFailure(lines, 'E1376: Object variable "val" accessible only using class "A" object')
 
   # Read a instance variable using the class name in a def function
   lines =<< trim END
@@ -1190,7 +1190,7 @@
     enddef
     T()
   END
-  v9.CheckSourceFailure(lines, 'E1376: Object member "val" accessible only using class "A" object')
+  v9.CheckSourceFailure(lines, 'E1376: Object variable "val" accessible only using class "A" object')
 
   # Access from child class extending a class:
   lines =<< trim END
@@ -1237,7 +1237,7 @@
       static this.val = 1
     endclass
   END
-  v9.CheckSourceFailure(lines, 'E1368: Static cannot be followed by "this" in a member name')
+  v9.CheckSourceFailure(lines, 'E1368: Static cannot be followed by "this" in a variable name')
 
   # Test for "static" cannot be followed by "public".
   lines =<< trim END
@@ -1282,7 +1282,7 @@
       var b = B.new()
       b.Foo()
   END
-  v9.CheckSourceFailure(lines, 'E1333: Cannot access private member: _priv_class_var')
+  v9.CheckSourceFailure(lines, 'E1333: Cannot access private variable: _priv_class_var')
 
   # A private class variable cannot be modified from a child class
   lines =<< trim END
@@ -1300,7 +1300,7 @@
       var b = B.new()
       b.Foo()
   END
-  v9.CheckSourceFailure(lines, 'E1333: Cannot access private member: _priv_class_var')
+  v9.CheckSourceFailure(lines, 'E1333: Cannot access private variable: _priv_class_var')
 
   # Access from child class extending a class and from script context
   lines =<< trim END
@@ -1689,7 +1689,7 @@
     var a = A.new()
     var v = a.bar
   END
-  v9.CheckSourceFailure(lines, 'E1326: Member not found on object "A": bar')
+  v9.CheckSourceFailure(lines, 'E1326: Variable not found on object "A": bar')
 enddef
 
 func Test_class_garbagecollect()
@@ -1881,7 +1881,7 @@
 
       defcompile C.new
   END
-  v9.CheckSourceFailure(lines, 'E1370: Cannot define a "new" function as static')
+  v9.CheckSourceFailure(lines, 'E1370: Cannot define a "new" method as static')
 
   # Trying to compile a function using a non-existing class variable
   lines =<< trim END
@@ -2103,7 +2103,7 @@
         enddef
       endclass
   END
-  v9.CheckSourceFailure(lines, 'E1348: Member "counter" of interface "Some" is not implemented')
+  v9.CheckSourceFailure(lines, 'E1348: Variable "counter" of interface "Some" is not implemented')
 
   lines =<< trim END
       vim9script
@@ -2718,7 +2718,7 @@
       endclass
       var c = Child.new()
   END
-  v9.CheckSourceFailure(lines, 'E1375: Class member "new" accessible only using class "Child"')
+  v9.CheckSourceFailure(lines, 'E1385: Class method "new" accessible only using class "Child"')
 
   # base class with more than one object member
   lines =<< trim END
@@ -4000,7 +4000,7 @@
     assert_equal(102, ob.AccessObject())
     assert_equal(103, oc.AccessObject())
 
-    assert_fails('echo oc.AccessPrivateStaticThroughClassName()', 'E1333: Cannot access private member: _svar')
+    assert_fails('echo oc.AccessPrivateStaticThroughClassName()', 'E1333: Cannot access private variable: _svar')
 
     # verify object properly resolves to correct static
     assert_equal(1, oa.AccessStaticThroughObject())
@@ -4020,7 +4020,7 @@
       this.val = 20
     endclass
   END
-  v9.CheckSourceFailure(lines, 'E1369: Duplicate member: val')
+  v9.CheckSourceFailure(lines, 'E1369: Duplicate variable: val')
 
   # Duplicate private member variable
   lines =<< trim END
@@ -4030,7 +4030,7 @@
       this._val = 20
     endclass
   END
-  v9.CheckSourceFailure(lines, 'E1369: Duplicate member: _val')
+  v9.CheckSourceFailure(lines, 'E1369: Duplicate variable: _val')
 
   # Duplicate public member variable
   lines =<< trim END
@@ -4040,7 +4040,7 @@
       public this.val = 20
     endclass
   END
-  v9.CheckSourceFailure(lines, 'E1369: Duplicate member: val')
+  v9.CheckSourceFailure(lines, 'E1369: Duplicate variable: val')
 
   # Duplicate private member variable
   lines =<< trim END
@@ -4050,7 +4050,7 @@
       this._val = 20
     endclass
   END
-  v9.CheckSourceFailure(lines, 'E1369: Duplicate member: _val')
+  v9.CheckSourceFailure(lines, 'E1369: Duplicate variable: _val')
 
   # Duplicate public and private member variable
   lines =<< trim END
@@ -4060,7 +4060,7 @@
       public this.val = 10
     endclass
   END
-  v9.CheckSourceFailure(lines, 'E1369: Duplicate member: val')
+  v9.CheckSourceFailure(lines, 'E1369: Duplicate variable: val')
 
   # Duplicate class member variable
   lines =<< trim END
@@ -4070,7 +4070,7 @@
       static _s: string = "def"
     endclass
   END
-  v9.CheckSourceFailure(lines, 'E1369: Duplicate member: _s')
+  v9.CheckSourceFailure(lines, 'E1369: Duplicate variable: _s')
 
   # Duplicate public and private class member variable
   lines =<< trim END
@@ -4080,7 +4080,7 @@
       static _s: string = "def"
     endclass
   END
-  v9.CheckSourceFailure(lines, 'E1369: Duplicate member: _s')
+  v9.CheckSourceFailure(lines, 'E1369: Duplicate variable: _s')
 
   # Duplicate class and object member variable
   lines =<< trim END
@@ -4109,7 +4109,7 @@
       this.val = 20
     endclass
   END
-  v9.CheckSourceFailure(lines, 'E1369: Duplicate member: val')
+  v9.CheckSourceFailure(lines, 'E1369: Duplicate variable: val')
 
   # Duplicate object private member variable in a derived class
   lines =<< trim END
@@ -4123,7 +4123,7 @@
       this._val = 20
     endclass
   END
-  v9.CheckSourceFailure(lines, 'E1369: Duplicate member: _val')
+  v9.CheckSourceFailure(lines, 'E1369: Duplicate variable: _val')
 
   # Duplicate object private member variable in a derived class
   lines =<< trim END
@@ -4137,7 +4137,7 @@
       this._val = 20
     endclass
   END
-  v9.CheckSourceFailure(lines, 'E1369: Duplicate member: _val')
+  v9.CheckSourceFailure(lines, 'E1369: Duplicate variable: _val')
 
   # Duplicate object member variable in a derived class
   lines =<< trim END
@@ -4151,7 +4151,7 @@
       this.val = 20
     endclass
   END
-  v9.CheckSourceFailure(lines, 'E1369: Duplicate member: val')
+  v9.CheckSourceFailure(lines, 'E1369: Duplicate variable: val')
 
   # Two member variables with a common prefix
   lines =<< trim END
@@ -4181,7 +4181,7 @@
     enddef
     T()
   END
-  v9.CheckSourceFailure(lines, 'E1333: Cannot access private member: _val')
+  v9.CheckSourceFailure(lines, 'E1333: Cannot access private variable: _val')
 
   # access a non-existing private object member variable
   lines =<< trim END
@@ -4195,7 +4195,7 @@
     enddef
     T()
   END
-  v9.CheckSourceFailure(lines, 'E1326: Member not found on object "A": _a')
+  v9.CheckSourceFailure(lines, 'E1326: Variable not found on object "A": _a')
 
   # private static member variable
   lines =<< trim END
@@ -4209,7 +4209,7 @@
     enddef
     T()
   END
-  v9.CheckSourceFailure(lines, 'E1375: Class member "_val" accessible only using class "A"')
+  v9.CheckSourceFailure(lines, 'E1375: Class variable "_val" accessible only using class "A"')
 
   # private static member variable
   lines =<< trim END
@@ -4223,7 +4223,7 @@
     enddef
     T()
   END
-  v9.CheckSourceFailure(lines, 'E1375: Class member "_val" accessible only using class "A"')
+  v9.CheckSourceFailure(lines, 'E1375: Class variable "_val" accessible only using class "A"')
 
   # private static class variable
   lines =<< trim END
@@ -4236,7 +4236,7 @@
     enddef
     T()
   END
-  v9.CheckSourceFailure(lines, 'E1333: Cannot access private member: _val')
+  v9.CheckSourceFailure(lines, 'E1333: Cannot access private variable: _val')
 
   # private static class variable
   lines =<< trim END
@@ -4249,7 +4249,7 @@
     enddef
     T()
   END
-  v9.CheckSourceFailure(lines, 'E1333: Cannot access private member: _val')
+  v9.CheckSourceFailure(lines, 'E1333: Cannot access private variable: _val')
 enddef
 
 " Test for changing the member access of an interface in a implementation class
@@ -4263,7 +4263,7 @@
       this.val = 10
     endclass
   END
-  v9.CheckSourceFailure(lines, 'E1367: Access level of member "val" of interface "A" is different')
+  v9.CheckSourceFailure(lines, 'E1367: Access level of variable "val" of interface "A" is different')
 
   lines =<< trim END
     vim9script
@@ -4274,7 +4274,7 @@
       public this.val = 10
     endclass
   END
-  v9.CheckSourceFailure(lines, 'E1367: Access level of member "val" of interface "A" is different')
+  v9.CheckSourceFailure(lines, 'E1367: Access level of variable "val" of interface "A" is different')
 enddef
 
 " Test for trying to change a readonly member from a def function
@@ -4310,7 +4310,7 @@
       A.var3 = {c: 3, d: 4}
       assert_equal([3, 4], A.var2)
       assert_equal({c: 3, d: 4}, A.var3)
-      assert_fails('echo A._priv_var4', 'E1333: Cannot access private member: _priv_var4')
+      assert_fails('echo A._priv_var4', 'E1333: Cannot access private variable: _priv_var4')
     enddef
     T()
   END
@@ -4352,7 +4352,7 @@
     var a = A.new()
     echo a.svar2
   END
-  v9.CheckSourceFailure(lines, 'E1375: Class member "svar2" accessible only using class "A"')
+  v9.CheckSourceFailure(lines, 'E1375: Class variable "svar2" accessible only using class "A"')
 
   # Cannot write to a class variable using an object in script context
   lines =<< trim END
@@ -4365,7 +4365,7 @@
     var a = A.new()
     a.svar2 = [2]
   END
-  v9.CheckSourceFailure(lines, 'E1375: Class member "svar2" accessible only using class "A"')
+  v9.CheckSourceFailure(lines, 'E1375: Class variable "svar2" accessible only using class "A"')
 
   # Cannot read from a class variable using an object in def method context
   lines =<< trim END
@@ -4381,7 +4381,7 @@
     enddef
     T()
   END
-  v9.CheckSourceFailure(lines, 'E1375: Class member "svar2" accessible only using class "A"')
+  v9.CheckSourceFailure(lines, 'E1375: Class variable "svar2" accessible only using class "A"')
 
   # Cannot write to a class variable using an object in def method context
   lines =<< trim END
@@ -4397,7 +4397,7 @@
     enddef
     T()
   END
-  v9.CheckSourceFailure(lines, 'E1375: Class member "svar2" accessible only using class "A"')
+  v9.CheckSourceFailure(lines, 'E1375: Class variable "svar2" accessible only using class "A"')
 enddef
 
 " Test for using a interface method using a child object
@@ -4636,7 +4636,7 @@
     var b = B.new()
     b.Bar()
   END
-  v9.CheckSourceFailure(lines, 'E1374: Class member "Foo" accessible only inside class "A"')
+  v9.CheckSourceFailure(lines, 'E1384: Class method "Foo" accessible only inside class "A"')
 enddef
 
 " Test for calling a class method using an object in a def function context and
@@ -4680,7 +4680,7 @@
     var a = A.new()
     assert_equal('foo', a.Foo())
   END
-  v9.CheckSourceFailure(lines, 'E1375: Class member "Foo" accessible only using class "A"')
+  v9.CheckSourceFailure(lines, 'E1385: Class method "Foo" accessible only using class "A"')
 
   # def function context
   lines =<< trim END
@@ -4697,7 +4697,7 @@
     enddef
     T()
   END
-  v9.CheckSourceFailure(lines, 'E1375: Class member "Foo" accessible only using class "A"')
+  v9.CheckSourceFailure(lines, 'E1385: Class method "Foo" accessible only using class "A"')
 enddef
 
 def Test_class_variable()
@@ -4750,7 +4750,7 @@
     endclass
     B.ClassFunc()
   END
-  v9.CheckSourceFailure(lines, 'E1374: Class member "val" accessible only inside class "A"')
+  v9.CheckSourceFailure(lines, 'E1374: Class variable "val" accessible only inside class "A"')
 
   # Reading a parent class variable from a child class method
   lines =<< trim END
@@ -4767,7 +4767,7 @@
     endclass
     B.ClassFunc()
   END
-  v9.CheckSourceFailure(lines, 'E1374: Class member "val" accessible only inside class "A"')
+  v9.CheckSourceFailure(lines, 'E1374: Class variable "val" accessible only inside class "A"')
 
   # Modifying a parent class variable from a child object method
   lines =<< trim END
@@ -4785,7 +4785,7 @@
     var b = B.new()
     b.ObjFunc()
   END
-  v9.CheckSourceFailure(lines, 'E1374: Class member "val" accessible only inside class "A"')
+  v9.CheckSourceFailure(lines, 'E1374: Class variable "val" accessible only inside class "A"')
 
   # Reading a parent class variable from a child object method
   lines =<< trim END
@@ -4803,7 +4803,7 @@
     var b = B.new()
     b.ObjFunc()
   END
-  v9.CheckSourceFailure(lines, 'E1374: Class member "val" accessible only inside class "A"')
+  v9.CheckSourceFailure(lines, 'E1374: Class variable "val" accessible only inside class "A"')
 
   # Modifying a class variable using an object at script level
   lines =<< trim END
@@ -4815,7 +4815,7 @@
     var a = A.new()
     a.val = 20
   END
-  v9.CheckSourceFailure(lines, 'E1375: Class member "val" accessible only using class "A"')
+  v9.CheckSourceFailure(lines, 'E1375: Class variable "val" accessible only using class "A"')
 
   # Reading a class variable using an object at script level
   lines =<< trim END
@@ -4827,7 +4827,7 @@
     var a = A.new()
     var i = a.val
   END
-  v9.CheckSourceFailure(lines, 'E1375: Class member "val" accessible only using class "A"')
+  v9.CheckSourceFailure(lines, 'E1375: Class variable "val" accessible only using class "A"')
 
   # Modifying a class variable using an object at function level
   lines =<< trim END
@@ -4843,7 +4843,7 @@
     enddef
     T()
   END
-  v9.CheckSourceFailure(lines, 'E1375: Class member "val" accessible only using class "A"')
+  v9.CheckSourceFailure(lines, 'E1375: Class variable "val" accessible only using class "A"')
 
   # Reading a class variable using an object at function level
   lines =<< trim END
@@ -4858,7 +4858,7 @@
     enddef
     T()
   END
-  v9.CheckSourceFailure(lines, 'E1375: Class member "val" accessible only using class "A"')
+  v9.CheckSourceFailure(lines, 'E1375: Class variable "val" accessible only using class "A"')
 enddef
 
 " Test for using a duplicate class method and class variable in a child class
@@ -4957,7 +4957,7 @@
     endclass
     A.Foo()
   END
-  v9.CheckSourceFailure(lines, 'E1376: Object member "Foo" accessible only using class "A" object')
+  v9.CheckSourceFailure(lines, 'E1386: Object method "Foo" accessible only using class "A" object')
 
   # Invoke an object method using a class in def function context
   lines =<< trim END
@@ -4972,7 +4972,7 @@
     enddef
     T()
   END
-  v9.CheckSourceFailure(lines, 'E1376: Object member "Foo" accessible only using class "A" object')
+  v9.CheckSourceFailure(lines, 'E1386: Object method "Foo" accessible only using class "A" object')
 enddef
 
 " Test for duplicate class method and instance method
@@ -5218,7 +5218,7 @@
       enddef
     endclass
   END
-  v9.CheckSourceFailure(lines, 'E1348: Member "var2" of interface "B" is not implemented')
+  v9.CheckSourceFailure(lines, 'E1348: Variable "var2" of interface "B" is not implemented')
 
   # interface cannot extend a class
   lines =<< trim END
@@ -5276,7 +5276,7 @@
       this.val2: number
     endinterface
   END
-  v9.CheckSourceFailure(lines, 'E1382: Member "val1": type mismatch, expected number but got string')
+  v9.CheckSourceFailure(lines, 'E1382: Variable "val1": type mismatch, expected number but got string')
 enddef
 
 " Test for a child class implementing an interface when some of the methods are
@@ -5433,7 +5433,7 @@
       this.var1 = [{a: 10}]
     endclass
   END
-  v9.CheckSourceFailure(lines, 'E1348: Member "var3" of interface "Intf" is not implemented')
+  v9.CheckSourceFailure(lines, 'E1348: Variable "var3" of interface "Intf" is not implemented')
 
   # One of the interface variables is of different type
   lines =<< trim END
@@ -5460,7 +5460,7 @@
       this.var1 = [{a: 10}]
     endclass
   END
-  v9.CheckSourceFailure(lines, 'E1382: Member "var3": type mismatch, expected list<dict<number>> but got list<dict<string>>')
+  v9.CheckSourceFailure(lines, 'E1382: Variable "var3": type mismatch, expected list<dict<number>> but got list<dict<string>>')
 enddef
 
 " Test for extending an interface with duplicate variables and methods
@@ -5531,7 +5531,7 @@
     endclass
     var b = B.new()
   END
-  v9.CheckSourceFailure(lines, 'E1382: Member "val": type mismatch, expected list<dict<string>> but got dict<number>')
+  v9.CheckSourceFailure(lines, 'E1382: Variable "val": type mismatch, expected list<dict<string>> but got dict<number>')
 enddef
 
 " Test for assigning to a member variable in a nested class
diff --git a/src/version.c b/src/version.c
index 68afda2..7517452 100644
--- a/src/version.c
+++ b/src/version.c
@@ -700,6 +700,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1935,
+/**/
     1934,
 /**/
     1933,
diff --git a/src/vim9class.c b/src/vim9class.c
index 0b9ded7..b5e11ca 100644
--- a/src/vim9class.c
+++ b/src/vim9class.c
@@ -79,7 +79,7 @@
     *varname_end = to_name_end(varname, FALSE);
     if (*varname == '_' && has_public)
     {
-	semsg(_(e_public_member_name_cannot_start_with_underscore_str), line);
+	semsg(_(e_public_variable_name_cannot_start_with_underscore_str), line);
 	return FAIL;
     }
 
@@ -113,7 +113,7 @@
 
     if (init_expr == NULL && *init_arg == '=')
     {
-	emsg(_(e_cannot_initialize_member_in_interface));
+	emsg(_(e_cannot_initialize_variable_in_interface));
 	return FAIL;
     }
 
@@ -426,7 +426,7 @@
 		    ? p_m->ocm_name + 1 : p_m->ocm_name;
 		if (STRCMP(pstr, qstr) == 0)
 		{
-		    semsg(_(e_duplicate_member_str), c_m->ocm_name);
+		    semsg(_(e_duplicate_variable_str), c_m->ocm_name);
 		    return FALSE;
 		}
 	    }
@@ -586,7 +586,7 @@
 	// Ensure the access type is same
 	if (if_var->ocm_access != m->ocm_access)
 	{
-	    semsg(_(e_member_str_of_interface_str_has_different_access),
+	    semsg(_(e_variable_str_of_interface_str_has_different_access),
 		    if_var->ocm_name, intf_class_name);
 	    return FALSE;
 	}
@@ -662,7 +662,7 @@
 	    if (!intf_variable_present(intf_class_name, &if_ms[if_i],
 				is_class_var, cl_ms, cl_count, extends_cl))
 	    {
-		semsg(_(e_member_str_of_interface_str_not_implemented),
+		semsg(_(e_variable_str_of_interface_str_not_implemented),
 			if_ms[if_i].ocm_name, intf_class_name);
 		return FALSE;
 	    }
@@ -908,7 +908,7 @@
 	char_u	*qstr = *m->ocm_name == '_' ? m->ocm_name + 1 : m->ocm_name;
 	if (STRCMP(pstr, qstr) == 0)
 	{
-	    semsg(_(e_duplicate_member_str), name);
+	    semsg(_(e_duplicate_variable_str), name);
 	    dup = TRUE;
 	    break;
 	}
@@ -957,20 +957,20 @@
     // Constructors are not allowed in abstract classes.
     if (is_abstract)
     {
-	emsg(_(e_cannot_define_new_function_in_abstract_class));
+	emsg(_(e_cannot_define_new_method_in_abstract_class));
 	return FALSE;
     }
     // A constructor is always static, no need to define it so.
     if (has_static)
     {
-	emsg(_(e_cannot_define_new_function_as_static));
+	emsg(_(e_cannot_define_new_method_as_static));
 	return FALSE;
     }
     // A return type should not be specified for the new()
     // constructor method.
     if (uf->uf_ret_type->tt_type != VAR_VOID)
     {
-	emsg(_(e_cannot_use_a_return_type_with_new));
+	emsg(_(e_cannot_use_a_return_type_with_new_method));
 	return FALSE;
     }
     return TRUE;
@@ -1608,7 +1608,7 @@
 	{
 	    if (p[4] != '.' || !eval_isnamec1(p[5]))
 	    {
-		semsg(_(e_invalid_object_member_declaration_str), p);
+		semsg(_(e_invalid_object_variable_declaration_str), p);
 		break;
 	    }
 	    if (has_static)
@@ -2074,7 +2074,7 @@
 
     if (*name == '_')
     {
-	semsg(_(e_cannot_access_private_member_str), m->ocm_name);
+	semsg(_(e_cannot_access_private_variable_str), m->ocm_name);
 	return FAIL;
     }
 
@@ -2233,7 +2233,7 @@
 
 	if (*name == '_')
 	{
-	    semsg(_(e_cannot_access_private_member_str), m->ocm_name);
+	    semsg(_(e_cannot_access_private_variable_str), m->ocm_name);
 	    return FAIL;
 	}
 
@@ -2770,7 +2770,7 @@
 	if (*name == '_')
 	    semsg(_(e_cannot_access_private_method_str), method_name);
 	else
-	    semsg(_(e_class_member_str_accessible_only_using_class_str),
+	    semsg(_(e_class_method_str_accessible_only_using_class_str),
 		    method_name, cl->class_name);
     }
     else if ((v_type == VAR_CLASS)
@@ -2780,7 +2780,7 @@
 	if (*name == '_')
 	    semsg(_(e_cannot_access_private_method_str), method_name);
 	else
-	    semsg(_(e_object_member_str_accessible_only_using_object_str),
+	    semsg(_(e_object_method_str_accessible_only_using_object_str),
 		    method_name, cl->class_name);
     }
     else
@@ -2800,19 +2800,19 @@
     if (v_type == VAR_OBJECT)
     {
 	if (class_member_idx(cl, name, len) >= 0)
-	    semsg(_(e_class_member_str_accessible_only_using_class_str),
+	    semsg(_(e_class_variable_str_accessible_only_using_class_str),
 		    varname, cl->class_name);
 	else
-	    semsg(_(e_member_not_found_on_object_str_str), cl->class_name,
+	    semsg(_(e_variable_not_found_on_object_str_str), cl->class_name,
 		    varname);
     }
     else
     {
 	if (object_member_idx(cl, name, len) >= 0)
-	    semsg(_(e_object_member_str_accessible_only_using_object_str),
+	    semsg(_(e_object_variable_str_accessible_only_using_object_str),
 		    varname, cl->class_name);
 	else
-	    semsg(_(e_class_member_str_not_found_in_class_str),
+	    semsg(_(e_class_variable_str_not_found_in_class_str),
 		    varname, cl->class_name);
     }
     vim_free(varname);
diff --git a/src/vim9compile.c b/src/vim9compile.c
index c69afb9..269d801 100644
--- a/src/vim9compile.c
+++ b/src/vim9compile.c
@@ -1610,8 +1610,8 @@
 	     || (!is_object && cctx->ctx_ufunc->uf_class != cl)))
     {
 	char *msg = (m->ocm_access == VIM_ACCESS_PRIVATE)
-				? e_cannot_access_private_member_str
-				: e_member_is_not_writable_str;
+				? e_cannot_access_private_variable_str
+				: e_variable_is_not_writable_str;
 	semsg(_(msg), m->ocm_name, cl->class_name);
 	return FALSE;
     }
@@ -1750,7 +1750,7 @@
 		{
 		    // A class variable can be accessed without the class name
 		    // only inside a class.
-		    semsg(_(e_class_member_str_accessible_only_inside_class_str),
+		    semsg(_(e_class_variable_str_accessible_only_inside_class_str),
 			    lhs->lhs_name, defcl->class_name);
 		    return FAIL;
 		}
diff --git a/src/vim9execute.c b/src/vim9execute.c
index 2fc7f34..02a37e8 100644
--- a/src/vim9execute.c
+++ b/src/vim9execute.c
@@ -2181,7 +2181,7 @@
 	    {
 		if (*member == '_')
 		{
-		    semsg(_(e_cannot_access_private_member_str), m->ocm_name);
+		    semsg(_(e_cannot_access_private_variable_str), m->ocm_name);
 		    status = FAIL;
 		}
 
diff --git a/src/vim9expr.c b/src/vim9expr.c
index 20289bf..7abd0a4 100644
--- a/src/vim9expr.c
+++ b/src/vim9expr.c
@@ -293,7 +293,7 @@
     {
 	if (cctx->ctx_ufunc == NULL || cctx->ctx_ufunc->uf_class == NULL)
 	{
-	    emsg(_(e_using_super_not_in_class_function));
+	    emsg(_(e_using_super_not_in_class_method));
 	    return FAIL;
 	}
 	is_super = TRUE;
@@ -407,7 +407,7 @@
 	{
 	    if (*name == '_' && !inside_class(cctx, cl))
 	    {
-		semsg(_(e_cannot_access_private_member_str), m->ocm_name);
+		semsg(_(e_cannot_access_private_variable_str), m->ocm_name);
 		return FAIL;
 	    }
 
@@ -443,7 +443,7 @@
 	    // it is defined.
 	    if (*name == '_' && cctx->ctx_ufunc->uf_class != cl)
 	    {
-		semsg(_(e_cannot_access_private_member_str), m->ocm_name);
+		semsg(_(e_cannot_access_private_variable_str), m->ocm_name);
 		return FAIL;
 	    }
 
@@ -772,7 +772,7 @@
 		    res = generate_CLASSMEMBER(cctx, TRUE, cl, idx);
 		else
 		{
-		    semsg(_(e_class_member_str_accessible_only_inside_class_str),
+		    semsg(_(e_class_variable_str_accessible_only_inside_class_str),
 			    name, cl->class_name);
 		    res = FAIL;
 		}
@@ -1151,7 +1151,7 @@
 	    }
 	    else
 	    {
-		semsg(_(e_class_member_str_accessible_only_inside_class_str),
+		semsg(_(e_class_method_str_accessible_only_inside_class_str),
 			name, cl->class_name);
 		res = FAIL;
 	    }
diff --git a/src/vim9type.c b/src/vim9type.c
index 2b81c92..6ca4b29 100644
--- a/src/vim9type.c
+++ b/src/vim9type.c
@@ -648,7 +648,7 @@
     {
 	char *tofree = NULL;
 	char *name = type_name(type, &tofree);
-	semsg(_(e_invalid_type_for_object_member_str), name);
+	semsg(_(e_invalid_type_for_object_variable_str), name);
 	vim_free(tofree);
 	return FALSE;
     }
@@ -755,7 +755,7 @@
     switch (where.wt_kind)
     {
 	case WT_MEMBER:
-	    semsg(_(e_member_str_type_mismatch_expected_str_but_got_str),
+	    semsg(_(e_variable_str_type_mismatch_expected_str_but_got_str),
 		    where.wt_func_name, typename1, typename2);
 	    break;
 	case WT_METHOD:
