Как легкое и чистый способ использовать Перечисление с расширенным для цикла, преобразуйте в ArrayList с java.util. Collections.list.
for (TableColumn col : Collections.list(columnModel.getColumns()) {
(javax.swing.table. TableColumnModel.getColumns возвращает Перечисление.)
Примечание, это может быть очень немного менее эффективно.
Есть способ лучше сделать это. Вы можете принудительно установить язык следующим образом:
[[NSUserDefaults standardUserDefaults] setObject: [NSArray arrayWithObjects:@"en", nil] forKey:@"AppleLanguages"];
И отменить эту настройку:
[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"AppleLanguages"];
NB. обычно вам придется перезапустить приложение, чтобы это повлияло на вас.
Подумайте, нужно ли вам вызывать [[NSUserDefaults standardUserDefaults] synchronize];
Я согласен, что нет необходимости позволять пользователю указывать язык. Однако единственным исключением является возможность переопределить язык и установить для него родной язык разработчика. Если пользователь может говорить на языке разработчика (например, на английском для меня), он может пожелать использовать Приложение на этом языке, если перевод неверен.
Я ссылаюсь на этот ответ: Как заставить NSLocalizedString использовать определенный язык (ответ на самом деле не работает для меня, но следование идеям в комментариях помогло. Отмена действий, которые я разработал.
Правильный «Пользовательский интерфейс» - это выбор пользователем языка через панель системных настроек; не ваше приложение (или панель настроек вашего приложения и т. д.). Невозможно переопределить это приложение, и мы не хотим, чтобы какое-либо приложение изменяло общесистемные настройки.
Здесь есть три проблемы:
Последнее почти наверняка не исправимо, поэтому оставим его. . Они будут отображаться на языке устройства.
Остальные два разрешимы, но вам нужно будет сделать больше вручную. Для строк вместо создания одного Localizable.strings и последующей его локализации создайте полностью отдельные таблицы (English.strings, French.strings и т. Д.). Затем используйте NSLocalizedStringFromTable ()
, передав язык в качестве таблица.
Для NIB есть два подхода. Вы можете поместить каждый набор локализованных NIB в отдельный пакет, а затем передать этот пакет вместо nil
в -initWithNibName: bundle:
. Кроме того, вы можете вручную загрузить NIB после их обнаружения с помощью [NSBundle -pathForResource: ofType: inDirectory: forLocalization:]
.
Для NIB есть два подхода. Вы можете поместить каждый набор локализованных NIB в свой собственный Bundle, а затем передать этот Bundle вместо nil
в -initWithNibName: bundle:
. Кроме того, вы можете вручную загрузить NIB после их обнаружения с помощью [NSBundle -pathForResource: ofType: inDirectory: forLocalization:]
.
Для NIB есть два подхода. Вы можете поместить каждый набор локализованных NIB в свой собственный Bundle, а затем передать этот Bundle вместо nil
в -initWithNibName: bundle:
. Кроме того, вы можете вручную загрузить NIB после их обнаружения с помощью [NSBundle -pathForResource: ofType: inDirectory: forLocalization:]
.