Konvertere CSV-fil eller Excel regneark til ResX File

stemmer
4

Jeg leter etter en løsning eller en anbefaling om et problem jeg har. Jeg har en haug med ASPX sider som vil bli lokalisert og har en haug med tekst som må støttes på 6 språk.

Folk gjør oversettelsen vil ikke ha tilgang til Visual Studio og sannsynlig enkleste verktøyet er Excel. Hvis vi bruker Excel eller eksport til CSV, må vi være i stand til å importere til å flytte til .resx filer. Så, hva er den beste metoden for dette?

Jeg er klar over dette spørsmålet, Konverter en Visual Studio ressurs fil til en tekstfil? allerede, og bruk av ResX Editor, men en enklere løsning ville være å foretrekke.

Publisert på 21/10/2008 klokken 19:14
kilden bruker
På andre språk...                            


3 svar

stemmer
2

Jeg er ikke sikker på hvor omfattende et svar du leter etter, men hvis du egentlig bare bruke [streng, streng] parene for lokalisering, og du er bare ute etter en rask måte å laste ressurs (.resx) filer med resultatene av oversettelser, og følgende vil fungere som en ganske rask, low-tech løsning.

Den ting å huske er at .resx filer er bare XML-dokumenter, så det bør være mulig å laste inn data manuelt i ressursen fra en ekstern del av koden. Følgende eksempel jobbet for meg i VS2005 og 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);
        }
    }
}

Selvfølgelig vil det foregående metoden ikke generere koden-bak for ressurs, men åpner ressursfilen i Visual Studio og veksling tilgjengeligheten modifier for ressursen vil (re) generere statiske egenskaper for deg.

Hvis du leter etter en helt XML-basert løsning (vs. CSV eller Excel Interop), du kan også instruere dine oversettere til å lagre sine oversatte innholdet i Excel, lagres som XML, og deretter bruke XPath å hente lokalisering info. Den eneste innvendingen er filstørrelser tendens til å bli ganske oppblåst.

Lykke til.

Svarte 22/10/2008 kl. 00:02
kilden bruker

stemmer
1

I løp inn i tilsvarende problem, og innså at den enkleste måten å lage en .resx fil fra Excel-fil er ved hjelp av en sammenslåings funksjon av Excel for å generere "<" data ">" .. "<" / data ">" noden for. ResX fil og deretter manuelt kopiere de genererte rekker til .resx filen i en tekst editor. Så kan si at du har "navn" i kolonne A i et excel-dokument og "verdi" i kolonne B i Excel-dokumentet. Ved hjelp av følgende formel i kolonne C

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

du vil få data node for ressurs. Deretter kan du kopiere denne formelen til alle radene og deretter kopiere innholdet i kolonne C i .resx fil.

Svarte 14/11/2012 kl. 18:31
kilden bruker

stemmer
0

Hvis det er i csv her er en rask Ruby skript til å generere dataelementene.

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!) }
Svarte 26/09/2013 kl. 17:36
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more