この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 20385|答える: 0

[出典] DataTableのすべてのフィールド名を中国語に翻訳し、返す

[リンクをコピー]
掲載地 2015/10/29 13:50:20 | | | |
元のデータ:

翻訳データ:



一般的に、クエリしたDataTableを特定のコントロールのDataSourceとして使っていれば、コード内でDataTableをクエリして表示するのは簡単です。ただし、このDataTableのフィールドはすべて英語のフィールドです。どうやってすべて中国語に変えるのでしょうか?



今では各英語フィールドの中国語名を知っており、すべての翻訳情報はCOLUMNTRANSLATIONというテーブルに保存されています。このテーブルを作成するSQL文は以下の通りです。

テーブルCOLUMNTRANSLATIONを作成

(
    ID番号(10) 主キー、
    列名 VARCHAR2(50), //フィールド名
    翻訳 VARCHAR2(50) // 中国語名に対応するフィールド
)



まずいくつかのデータを入力し、例えばStudentNameは「student name」に対応します。



すべてのフィールド名が英語で書かれたDataTableができたので、以下のコードを実行するだけで翻訳して返すことができます。

  1. /// <summary>
  2.         /// 将DataTable的字段名全部翻译为中文
  3.         /// </summary>
  4.         /// <param name="table">待翻译的DataTable</param>
  5.         /// <returns></returns>
  6.         public DataTable TranslateDataTable(DataTable table)
  7.         {
  8.             DataTable dt = new DataTable();
  9.             dt.TableName = "TempTable";

  10.             if (table != null && table.Rows.Count > 0)
  11.             {
  12.                 //先为dt构造列信息
  13.                 foreach (DataColumn column in table.Columns)
  14.                 {
  15.                     string name = GetColumnName(column.ColumnName);
  16.                     dt.Columns.Add(name);
  17.                 }

  18.                 for (int i = 0; i < table.Rows.Count; i++)
  19.                 {
  20.                     DataRow NewRow = dt.NewRow();
  21.                     DataRow row = table.Rows[i];

  22.                     for (int j = 0; j < dt.Columns.Count; j++)
  23.                     {
  24.                         NewRow[j] = row[j].ToString();
  25.                     }

  26.                     dt.Rows.Add(NewRow);
  27.                 }
  28.             }
  29.             return dt;
  30.         }

  31.         /// <summary>
  32.         /// 得到列名称的别名
  33.         /// </summary>
  34.         /// <param name="columnName"></param>
  35.         /// <returns></returns>
  36.         private string GetColumnName(string columnName)
  37.         {
  38.             string sqlString = " Select TRANSLATION from COLUMNTRANSLATION where COLUMNNAME = '" + columnName.ToUpper() + "'";

  39.             object s = dao.ExecuteScalar(sqlString);
  40.             string name = (s == null) ? columnName : s.ToString(); //如果此英文字段有翻译,则返回其中文翻译,若无,则保留此英文翻译。
  41.             return name;
  42.         }
コードをコピーします
この手法の考え方は、翻訳対象のDataTableに従って新しいDataTableを構築することです。すなわち、新しいDataTableの各列の列名は翻訳済みの中国語名(英語の列名が翻訳されない場合は英語の列名を保持し、翻訳可能なら翻訳されます)。新しいDataTableのフィールド情報を構築した後、古いDataTableのレコードを一つずつ新しいDataTableに挿入します。



へへ、曲がり角だ... しかし、スピードはまだ可能です。







先の:EasyUI datagrid tables はフィールドの列を動的にバインドします
次に:Visual Studio 2013のブラウザリンク機能をオフにしてください
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com