Αρχικά δεδομένα:
Μεταφρασμένα δεδομένα:
Γενικά, είναι εύκολο να ρωτήσετε και να εμφανίσετε έναν πίνακα δεδομένων στον κώδικα, εφόσον ο πίνακας δεδομένων που ζητήθηκε χρησιμοποιείται ως πηγή δεδομένων ενός συγκεκριμένου στοιχείου ελέγχου, είναι εντάξει, αλλά τα πεδία αυτού του πίνακα δεδομένων είναι όλα αγγλικά πεδία, πώς να τα αλλάξετε όλα σε κινέζικα;
Τώρα γνωρίζω τα κινεζικά ονόματα κάθε αγγλικού πεδίου και όλες οι μεταφραστικές πληροφορίες των πεδίων αποθηκεύονται σε έναν πίνακα, που ονομάζεται COLUMNTRANSLATION, και η πρόταση SQL για τη δημιουργία αυτού του πίνακα είναι:
δημιουργία πίνακα ΣΤΗΛΗ μετάφραση
( ΑΡΙΘΜΌΣ ΤΑΥΤΌΤΗΤΑΣ(10) ΠΡΩΤΕΎΟΝ ΚΛΕΙΔΊ, COLUMNNAME VARCHAR2(50), //όνομα πεδίου ΜΕΤΑΦΡΑΣΗ VARCHAR2(50) // πεδίο που αντιστοιχεί στην κινεζική ονομασία
)
Βάλτε πρώτα μερικά δεδομένα σε αυτό, έτσι ώστε να υπάρχουν πολλές εγγραφές σε αυτόν τον πίνακα, για παράδειγμα: Το StudentName αντιστοιχεί στο "όνομα μαθητή".
Τώρα που έχω έναν πίνακα δεδομένων με όλα τα ονόματα πεδίων του στα αγγλικά, μπορώ να τον μεταφράσω και να επιστρέψω τον μεταφρασμένο πίνακα δεδομένων εκτελώντας απλώς τον ακόλουθο κώδικα:
- /// <summary>
- /// 将DataTable的字段名全部翻译为中文
- /// </summary>
- /// <param name="table">待翻译的DataTable</param>
- /// <returns></returns>
- public DataTable TranslateDataTable(DataTable table)
- {
- DataTable dt = new DataTable();
- dt.TableName = "TempTable";
- if (table != null && table.Rows.Count > 0)
- {
- //先为dt构造列信息
- foreach (DataColumn column in table.Columns)
- {
- string name = GetColumnName(column.ColumnName);
- dt.Columns.Add(name);
- }
- for (int i = 0; i < table.Rows.Count; i++)
- {
- DataRow NewRow = dt.NewRow();
- DataRow row = table.Rows[i];
- for (int j = 0; j < dt.Columns.Count; j++)
- {
- NewRow[j] = row[j].ToString();
- }
- dt.Rows.Add(NewRow);
- }
- }
- return dt;
- }
- /// <summary>
- /// 得到列名称的别名
- /// </summary>
- /// <param name="columnName"></param>
- /// <returns></returns>
- private string GetColumnName(string columnName)
- {
- string sqlString = " Select TRANSLATION from COLUMNTRANSLATION where COLUMNNAME = '" + columnName.ToUpper() + "'";
- object s = dao.ExecuteScalar(sqlString);
- string name = (s == null) ? columnName : s.ToString(); //如果此英文字段有翻译,则返回其中文翻译,若无,则保留此英文翻译。
- return name;
- }
Αντιγραφή κώδικα Η ιδέα αυτής της μεθόδου είναι η κατασκευή ενός νέου Πίνακα Δεδομένων σύμφωνα με τον Πίνακα Δεδομένων που πρόκειται να μεταφραστεί: το όνομα στήλης κάθε στήλης του νέου Πίνακα Δεδομένων είναι το μεταφρασμένο κινεζικό όνομα (εάν το όνομα της αγγλικής στήλης δεν μεταφραστεί, το όνομα της αγγλικής στήλης διατηρείται, εάν μπορεί να μεταφραστεί, μεταφράζεται) και μετά την κατασκευή των πληροφοριών πεδίου του νέου Πίνακα Δεδομένων, οι εγγραφές του παλιού Πίνακα Δεδομένων εισάγονται στον νέο Πίνακα Δεδομένων μία προς μία.
Χεχε, είναι μια σειρά... Αλλά η ταχύτητα είναι ακόμα δυνατή.
|