У нас была похожая проблема, хотя не с Каслом. Решение, которое мы использовали, состояло в том, чтобы просто определить новый атрибут, который был получен из другого и который использовал строку констант в качестве поиска менеджера ресурсов, и возвращался к самой строке ключа, если ни один не был найден.
[AttributeUsage(AttributeTargets.Class
| AttributeTargets.Method
| AttributeTargets.Property
| AttributeTargets.Event)]
public class LocalizedIdentifierAttribute : ... {
public LocalizedIdentifierAttribute(Type provider, string key)
: base(...) {
foreach (PropertyInfo p in provider.GetProperties(
BindingFlags.Static | BindingFlags.NonPublic)) {
if (p.PropertyType == typeof(System.Resources.ResourceManager)) {
ResourceManager m = (ResourceManager) p.GetValue(null, null);
// We found the key; use the value.
return m.GetString(key);
}
}
// We didn't find the key; use the key as the value.
return key;
}
}
Использование это что-то вроде:
[LocalizedIdentifierAttribute(typeof(Resource), "Entities.FruitBasket")]
class FruitBasket {
// ...
}
Тогда каждый файл ресурсов для конкретной локали может при необходимости определять собственную запись Entities.FruitBasket
.