4

私が抱えている問題の解決策または推奨事項を探しています。ローカライズされる ASPX ページがたくさんあり、6 言語でサポートする必要があるテキストがたくさんあります。

翻訳を行う人は Visual Studio にアクセスできません。おそらく最も簡単なツールは Excel です。Excel を使用したり、CSV にエクスポートしたりする場合でも、インポートして .resx ファイルに移動できる必要があります。それで、これに最適な方法は何ですか?

Visual Studio リソース ファイルをテキスト ファイルに変換しますか?という質問は承知しています。既に Resx Editor を使用していますが、より簡単な解決策をお勧めします。

4

3 に答える 3

2

同様の問題に遭遇し、Excel ファイルから .resx ファイルを作成する最も簡単な方法は、Excel の連結関数を使用して、.. resx ファイルを開き、生成された行を任意のテキスト エディターで .resx ファイルに手動でコピーします。たとえば、Excel ドキュメントの列 A に「名前」があり、Excel ドキュメントの列 B に「値」があるとします。C列に次の式を使用

=CONCATENATE("<data name=","""",A14,""" xml:space=""preserve"">","<value>", B14, "</value>", "</data>")

リソースのデータノードを取得します。次に、この数式をすべての行にコピーしてから、.resx ファイルの列 C の内容をコピーできます。

于 2012-11-14T21:31:45.163 に答える
2

あなたが探している答えがどれほど包括的なものかはわかりませんが、ローカリゼーションに [string, string] ペアを実際に使用しているだけで、リソース (.resx) をロードする簡単な方法を探しているだけの場合ファイルに翻訳結果が含まれている場合、以下はかなり迅速でローテクなソリューションとして機能します。

覚えておくべきことは、.resx ファイルは単なる XML ドキュメントであるため、外部のコードからリソースにデータを手動でロードできる必要があるということです。次の例は、VS2005 と VS2008 でうまくいきました。

namespace SampleResourceImport
{
    class Program
    {
        static void Main(string[] args)
        {

            XmlDocument doc = new XmlDocument();
            string filePath = @"[file path to your resx file]";
            doc.Load(filePath);
            XmlElement root = doc.DocumentElement;

            XmlElement datum = null;
            XmlElement value = null;
            XmlAttribute datumName = null;
            XmlAttribute datumSpace = doc.CreateAttribute("xml:space");
            datumSpace.Value = "preserve";

            // The following mocks the actual retrieval of your localized text
            // from a CSV or ?? document...
            // CSV parsers are common enough that it shouldn't be too difficult
            // to find one if that's the direction you go.
            Dictionary<string, string> d = new Dictionary<string, string>();
            d.Add("Label1", "First Name");
            d.Add("Label2", "Last Name");
            d.Add("Label3", "Date of Birth");

            foreach (KeyValuePair<string, string> pair in d)
            {
                datum = doc.CreateElement("data");
                datumName = doc.CreateAttribute("name");
                datumName.Value = pair.Key;
                value = doc.CreateElement("value");
                value.InnerText = pair.Value;

                datum.Attributes.Append(datumName);
                datum.Attributes.Append(datumSpace);
                datum.AppendChild(value);
                root.AppendChild(datum);
            }

            doc.Save(filePath);
        }
    }
}

明らかに、前述の方法ではリソースの分離コードは生成されませんが、Visual Studio でリソース ファイルを開き、リソースのアクセシビリティ修飾子を切り替えると、静的プロパティが (再) 生成されます。

完全に XML ベースのソリューション (対 CSV または Excel 相互運用) を探している場合は、翻訳されたコンテンツを Excel に保存し、XML として保存し、XPath を使用してローカリゼーション情報を取得するように翻訳者に指示することもできます。唯一の注意点は、ファイル サイズがかなり肥大化する傾向があることです。

幸運を祈ります。

于 2008-10-22T02:02:25.377 に答える
0

csv の場合は、データ要素を生成する簡単な Ruby スクリプトを次に示します。

require 'csv'
require 'builder'

file = ARGV[0]

builder = Builder::XmlMarkup.new(:indent => 2)

CSV.foreach(file) do |row|
  builder.data(:name => row[0], "xml:space" => :preserve) {|d| d.value(row[1]) }
end

File.open(file + ".xml", 'w') { |f| f.write(builder.target!) }
于 2013-09-26T19:36:25.157 に答える