2009-12-12 8 views
6

Я работаю над локализацией приложения, которое я написал на C#..NET Globalization & Satellite DLL

Все, кажется, работает хорошо, с помощью сборок спутниковых ресурсов для перевода строк, каждая форма (как в этом учебнике: http://msdn.microsoft.com/en-us/library/y99d1cd3%28VS.71%29.aspx)

Однако применение в конечном счете, потребует довольно много языков, что означает грузы каталогов в моем рабочем каталоге (т. е./zh-tw,/zh-cn,/fr-FR,/ja-JP и т. д.). Я бы немного почистил это, найдя все их в подкаталоге/languages ​​или/resources (другими словами, задайте «базовый путь для спутниковых сборок»). Но я искал высоко и низко, и не смог найти способ настроить расположение этих спутниковых сборок.

Любые советы были бы высоко оценены!

ответ

11

Обнаружили еще более простое решение - в app.config:

<configuration> 
<runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
    <probing privatePath=".;Lang" /> 
    </assemblyBinding> 
</runtime> 
</configuration> 

Тогда вы можете просто бросить все эти каталоги в «Lang» подкаталоге, и он будет работать прямо из коробки! Событие после сборки также удобно для автоматического копирования их там после компиляции :)

1

ИМХО, я ничего не изменило бы здесь. Существует стандартный механизм локализации в .NET, который основан на спутниковых dll и этих подкаталогах. Если вы используете инструмент для локализации, например. Passolo, он также будет поддерживать именно эту структуру и ничего больше.

Будет много подкаталогов ... и что? Все остальное будет довольно сложно.

0

Добавить все файлы ресурсов (т.е. * .resx) в/Ресурса папку и создать объект ResourceManager, как показано ниже

System.Resources.ResourceManager rm = new System.Resources.ResourceManager ("ApplicationName.Resources.MyResource", Assembly.GetExecutingAssembly());

Здесь говорят для lang de-DE, ваш файл resx будет называться MyResource.de-DE.resx