Если вы хотите изменить язык на лету, не перезапуская приложение, вам нужно использовать такую функцию в сочетании с тем, что сказали вам ребята.
//refresh all the controls e sub-controls of the form
private void RefreshResources(Control ctrl, ComponentResourceManager res)
{
ctrl.SuspendLayout();
res.ApplyResources(ctrl, ctrl.Name, CurrentLocale);
foreach (Control control in ctrl.Controls)
RefreshResources(control, res); // recursion
ctrl.ResumeLayout(false);
}
Если вы хотите получить более полную пример проверить мой блог
valueForKey:
имеет особое поведение. Применительно к массиву он всегда возвращает массив всех значений для данного ключа.
Вам лучше использовать objectForKey: