bool is_power_of_2(int i) {
if ( i <= 0 ) {
return 0;
}
return ! (i & (i-1));
}
Нашел еще более простое решение - в app.config:
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath=".;Lang" />
</assemblyBinding>
</runtime>
</configuration>
Затем вы можете просто выбросить все эти каталоги в подкаталог «Lang», и он будет работать прямо из коробки! Событие после сборки также удобно для автоматического копирования их туда после компиляции :)
IMHO, I wouldn't change anything here. There is a standard mechanism for localization in .NET, which is based on satellite dlls and these subdirectories. If you use a tool for localization, eg. Passolo, it will also support exactly this structure and nothing else.
There will be a lot of subdirectories ... so what? Everything else will be quite complicated.
Добавьте все ваши файлы ресурсов (т.е. *.resx) в папку /Resource и создайте объект ResourceManager следующим образом
System.Resources.ResourceManager rm = new System.Resources.ResourceManager("ApplicationName.Resources.MyResource", Assembly.GetExecutingAssembly());
Скажем, для lang de-DE ваш resx файл будет назван MyResource.de-DE.resx