Преобразовать файл ресурсов Visual Studio в текстовый файл? - PullRequest
8 голосов
/ 13 октября 2008

Я знаю, что есть инструменты для передачи текстовых файлов в файлы ресурсов для Visual Studio. Но я хочу получить текст из моих файлов ресурсов в текстовый файл, чтобы их можно было перевести. Или есть лучший способ сделать это?

Ответы [ 7 ]

3 голосов
/ 13 октября 2008

Вы можете использовать Resx Editor , небольшой переводчик файлов, ориентированный на перевод.

  • Целевая аудитория: переводчики.
  • Поддерживаемый формат файла: Microsoft RESX 2.0

Вот ссылка на статью Джоаннеса Вермоэля (автора бесплатного инструмента) запись в блоге об этом.

2 голосов
/ 05 июля 2013

В итоге я просто использовал быстрый взлом:

public class Export
{
    public string Run()
    {
        var resources = new StringBuilder();

        var assembly = Assembly.GetExecutingAssembly();
        var types = from t in assembly.GetTypes()
                    where t != typeof(Export)
                    select t;
        foreach (Type t in types)
        {
            resources.AppendLine(t.Name);
            resources.AppendLine("Key, Value");
            var props = from p in t.GetProperties()
                        where !p.CanWrite && p.Name != "ResourceManager"
                        select p;
            foreach (PropertyInfo p in props)
            {
                resources.AppendFormat("\"{0}\",\"{1}\"\n", p.Name, p.GetValue(null));
            }

            resources.AppendLine();
        }
        return resources.ToString();
    }
}

Добавьте этот код в проект, который содержит ваши файлы .resx (мои находятся в отдельном проекте «Языки»), а затем используйте следующий код для сохранения результата в .csv, чтобы его можно было загрузить с помощью редактора электронных таблиц.

var hack = new Languages.Export();
var resourcesSummary = hack.Run();
var cultureName = System.Threading.Thread.CurrentThread.CurrentCulture.Name;
using (TextWriter file = File.CreateText(@"C:\resources." + cultureName + ".csv"))
{
    file.Write(resourcesSummary);
}

Это не позволяет вам импортировать файлы из .csv обратно в ваши файлы .resx, чтобы их можно было компилировать. Было бы неплохо иметь утилиту, которая бы это делала.

2 голосов
/ 09 марта 2009

Вы можете использовать Simple Resx Editor , в нем есть несколько интересных функций, которые помогут вам в процессе перевода.

1 голос
/ 07 декабря 2015

Если вы делаете это для веб-проекта, лучший способ сделать интернационализацию (включая перевод) - использовать пакет i18n nuget . Мало того, что лучше работает с шаблонами, но у него есть и другие приятные вещи, такие как локализованные URL.

Вот пример из репозитория github:

<div id="content">
    <h2>[[[Welcome to my web app!]]]</h2>
    <h3><span>[[[Amazing slogan here]]]</span></h3>
    <p>[[[Ad copy that would make Hiten Shah fall off his chair!]]]</p>
    <span class="button" title="[[[Click to see plans and pricing]]]">
        <a href="@Url.Action("Plans", "Home", new { area = "" })">
            <strong>[[[SEE PLANS & PRICING]]]</strong>
            <span>[[[Free unicorn with all plans!]]]</span>
        </a>
    </span>
</div>

При выполнении задачи после сборки создается база данных PO, которая может быть предоставлена ​​переводчикам, использующим инструменты редактирования PO (например, POEdit ), для предоставления текста для конкретной локали.

1 голос
/ 20 октября 2008

Возможно, вы захотите взглянуть на Excel Resource Transfer . это надстройка для Microsoft Excel для импорта и экспорта текстов из файлов ресурсов. Есть пробная версия. Полная версия стоит 25, - евро.

1 голос
/ 14 октября 2008

Несмотря на то, что это противоречит интуиции, лучше перевести exe, а не файл ресурсов. Прочитайте почему здесь:

http://www.apptranslator.com/misconceptions.html

0 голосов
/ 16 октября 2008

Вы можете использовать winres.exe от Microsoft, он позволяет локализовать формы Windows без использования Visual Studio. Он не сохраняет ресурсы в текстовый файл, но идея заключается в том, что эксперт по локализации для каждой культуры может использовать инструмент для создания локализованных версий приложения.

Вот лучшее объяснение: http://msdn.microsoft.com/en-us/library/8bxdx003(VS.80).aspx

...