Большинство данных решений используют обходной путь, используя дополнительный заголовок или неадекватный HTTP-код. Эти решения, скорее всего, будут работать, но немного «взломать». Я придумал другое решение.
Мы используем WIF, который настроен на перенаправление (passiveRedirectEnabled = "true") на ответ 401. Переадресация полезна при обращении с обычными запросами, но не будет работать для AJAX-запросов (поскольку браузеры не будут выполнять 302 / переадресацию).
Используя следующий код в вашем global.asax, вы можете отключить перенаправление для запросов AJAX:
void WSFederationAuthenticationModule_AuthorizationFailed(object sender, AuthorizationFailedEventArgs e)
{
string requestedWithHeader = HttpContext.Current.Request.Headers["X-Requested-With"];
if (!string.IsNullOrEmpty(requestedWithHeader) && requestedWithHeader.Equals("XMLHttpRequest", StringComparison.OrdinalIgnoreCase))
{
e.RedirectToIdentityProvider = false;
}
}
Это позволяет вам возвращать 401 ответа на запросы AJAX, которые могут быть у вашего javascript затем выполните перезагрузку страницы. Перезагрузка страницы вызовет 401, которые будут обрабатываться WIF (и WIF перенаправит пользователя на страницу входа в систему).
Пример javascript для обработки ошибок 401:
$(document).ajaxError(function (event, jqxhr, settings, exception) {
if (jqxhr.status == 401) { //Forbidden, go to login
//Use a reload, WIF will redirect to Login
location.reload(true);
}
});
Всегда существует , Переводят Инструментарий , которые позволяют переводить между, я думаю весь упомянутые форматы и предпочтенный (почтовый) gettext и XLIFF.
можно использовать INI, если Вы хотите, это просто, что INI не имеет способа сказать любому, что это находится в UTF8, поэтому если кто-то открывает Ваш INI с редактором, это могло бы повредить Ваш файл.
, Таким образом, идея - это, если можно доверить пользователя для редактирования ее с кодированием UTF8.
можно добавить BOM в начале файла, некоторые редакторы знает об этом.
, Что Вы хотите, чтобы он сохранил? пользователь генерировал содержание или Ваши ресурсы приложения?
Я работал с двумя из этих форматов на l18n стороне: TMX и XLIFF. Они довольно подобны. TMX более популярен в наше время, но XLIFF получает поддержку быстро. Был по крайней мере один свободный редактор XLIFF, когда я в последний раз изучил его: Transolution, но это не разрабатывается теперь.
POEdit не действительно тверд получить подвешивание. Просто создайте новый .po файл, затем скажите ему импортировать строки из исходных файлов. Программа сканирует Ваши файлы PHP для любых вызовов функции, соответствующих _("Text"), gettext("Text")
и т.д. Можно даже определить собственные функции для поиска.
Вы тогда вводите перевод в соответствующее поле. Когда Вы сохранили свой .po файл, .mo файл автоматически сгенерирован. Это - просто версия двоичных файлов переводов, которые может легко проанализировать gettext.
В Вашем Сценарии PHP звонят bindtextdomain()
сообщение его, где Ваш .mo файл расположен. Теперь любые строки передали gettext
(или функция подчеркивания) будет переведен.
Это делает действительно легким усовершенствовать Ваши файлы перевода. POEdit также имеет некоторые аккуратные функции как разрешение комментариев, показ поменявших и отброшенных струн и разрешение нечетких соответствий, что означает, что Вы не должны снова переводить строки, которые были немного изменены.
Ни один из того выбора не выглядит очень аппетитным мне.
при отсылке файлов для перевода на нескольких языках, затем Вы хотите смочь положить, что кодировка корректна, особенно если Вы никто в Вашей команде не говорит на тех языках. Иногда трудно определить проблему кодирования на иностранном языке, и просто слишком легко непреднамеренно повредить кодировку файла при разрешении ОС 'предположение'.
Вы действительно хотите формат, который объявляет его кодирование. Иначе переводчики или их инструментальные средства для перевода могли бы выбрать что-то другое, чем UTF-8. За мои деньги любой вид простого формата XML является лучшим, но похоже, что Вам было бы нужно к самокрутке на Пехлеви. XLIFF и TMX являются, конечно, излишеством.
формат А как ресурсы Java XML был бы идеален.
Я делаю хранение данных сам с помощью индивидуального проекта - Весь отображаемый текст хранится в DB.
у меня есть две таблицы. Первая таблица имеет значение идентификационных данных, 32 символа varchar поле (индексированный на этом поле) и 200 символьных английских описаний фразы.
Моя вторая таблица имеет значение идентификационных данных от первой таблицы, код языка (EN_UK, EN_US, и т.д.) и столбец NVARCHAR для текста.
я использую nvarchar для текста, потому что он поддерживает другие наборы символов, которые я еще не использую.
32 символа varchar в первой таблице хранят что-то как 'pleaselogin', в то время как вторая таблица на самом деле хранит полное, "Введите свой вход в систему и пароль ниже".
я создал огромный список динамических значений, которые я заменяю во времени выполнения. Пример был бы, "У Вас есть {[dynamic:passworddaysremain]} дни для изменения пароля". - это позволяет мне работать вокруг упорядочивания слова на различных языках.
я должен был только иметь дело с Арабскими цифрами до сих пор, но должен буду разработать что-то для первого пользователя, который требует не арабских цифр.
я на самом деле вытаскиваю эту информацию из базы данных по 2 почасовым интервалам и кэширую его к диску в файле для каждого языка в XML. Широкое применение CDATA используется.
существует много доступных опций для производительности, Вы могли использовать шаблоны HTML для каждого языка - Мой метод работает хорошо, но действительно использует XML DOM много во времени выполнения для создания страниц.
Это могло бы немного отличаться от того, что было отправлено до сих пор и не может быть точно, что Вы ищете, но я думал, что добавлю его, если ни для чего иного кроме другого подхода. Я пошел с объектно-ориентированным подходом. То, что я сделал, было, создают систему, которая инкапсулирует файлы языка в класс путем хранения их в массиве строки => пары перевода. Доступ к переводу через названный метод, переводят со строкой ключа в качестве параметра. Расширяющиеся классы наследовали массив языка родителя и могут добавить к нему или перезаписать его. Поскольку классы расширяемы, можно изменить базовый класс и иметь изменения, распространяют через детей, делая более удобным в сопровождении, чем массив отдельно. Плюс, Вы только называете классы, в которых Вы нуждаетесь.
Один довольно простой подход должен просто использовать сценарий ресурса и файл ресурсов. Программы как MSVC не имеют никакой проблемы при редактировании их. Они также довольно дружелюбны по отношению к другим системам (и по отношению к текстовым редакторам) также. Можно просто создать отдельные таблицы строк (и побитово отобразить таблицы) для каждого языка, и отметьте каждую такую таблицу с тем, в каком языке это находится.
#headermenu
на ссылке предоставленный автор имеют float: left;
присвоенный.
– kleinfreund
6 June 2013 в 04:45
Мы просто храним строки в DB и встроили режим переводчика в приложение для обработки на самом деле добавляющих строк для различных языков.
В приложении мы используем различные приемы для создания текстовых идентификаторов, как
£("btn_save")
£(Order.class,"amt")
, переводы загружаются из дб, когда начальные загрузки системы, или когда перезагрузка вручную инициирована. ВЈ метод заботится о поиске переведенной строки соответственно язык, указанный на сеансе пользователя.
Вы можете проверить мой инструмент l10n под названием iL10Nz на http://www.myl10n.net
Вы можете загружать файлы po / pot, xliff, ini, переводить, скачивать.
вы также можете посмотреть это видео на YouTube http://www.youtube.com/watch?v=LJLmxMFxaxA
Спасибо Оливье