我正在为其他实体(类)的属性制作一个“翻译器”类。此类将在许多地方使用,并且可以在编译之前真正确定(硬编码)。该过程如何自动化?
例如, 这些是实体类
public class Teacher
{
public int Id {get;set;}
public string Name {get; set;} //Lorem
public List<Student> Students {get; set;}
public Teacher() => Students = new List<Student>();
}
public class Student
{
public int Id {get; set;}
public int Name {get; set;} //Ipsum
public string Cls {get; set;} // will store grade/class/standard the student is in, in this case class 10
}
这是在没有翻译时使用它们的方式:
var k = string.Format("Teacher {0} has tought student {1} who is in class {2}.",teacher.Name, teacher.Students[0].Name, teacher.Students[1].Cls)
示例输出为:
老师Lorem教过10年级的学生Ipsum。
生成的翻译器类如下:
public class Translator
{
public int Id {get; set;}
public string Teacher_Id {get; set;} // doesn't matter
public string Teacher_Name {get; set;} //teacher or mentor
public string Teacher_Student {get; set;} //student or mentored
public string Student_Id {get; set;} //doesn't matter
public string Student_Name {get; set;} // student or menties
public string Student_Cls {get; set;} // class or standard
}
用于翻译字符串的代码如下:
var k = string.Format("{3} {0} has {4} {5} {1} who is in {6} {2}.",teacher.Name, teacher.Students[0].Name, teacher.Students[1].Cls, translator.Teacher_Name, translator.Teacher_Student, translator.Student_Name, translator.Student_Cls)
不同的地区/学校对班级和教师的约定不同。
- Lorem老师教了10年级的Ipsum学生。
- Moror Lorem曾指导过标准10的受训生Ipsum。
我有一个所有变量名的列表,这里有翻译器类(在ICollection或json中),唯一的麻烦是在编译时创建它。
我真的很想知道这种方式是否可行,以及是否还有其他更好的方法。我们将Vue用于前端,并为用户提供创建/自定义其语言的选项。我有另一种方法,我只是认为如果可以这样做,那将更快,更清洁。