В итоге я объединил два из них, чтобы немного поработать, двигаясь как на большие, так и на большие расстояния. Я получаю довольно последовательные результаты, но это, вероятно, может быть немного изменено кем-то умнее меня, чтобы работать по-разному для разных размеров и т. Д.
Использование некоторых других методов при перемещении объектов на небольшие расстояния было значительно быстрее (x10), чем использование сплайсинга. Это может меняться в зависимости от длины массива, но это верно для больших массивов.
function ArrayMove(array, from, to) {
if ( Math.abs(from - to) > 60) {
array.splice(to, 0, array.splice(from, 1)[0]);
} else {
// works better when we are not moving things very far
var target = array[from];
var inc = (to - from) / Math.abs(to - from);
var current = from;
for (; current != to; current += inc) {
array[current] = array[current + inc];
}
array[to] = target;
}
}
Я видел, что проекты реализовали использование многих разных подходов, у каждого есть их достоинства и недостатки.
я сказал бы метод ресурса, который Вы выбрали имеет много смысла. Было бы интересно видеть ответы других людей также, как я часто задаюсь вопросом, существует ли лучший способ сделать вещи как это. Я видел многочисленные ресурсы что вся точка к методу ресурсов использования, включая один прямо здесь на ТАК .
+1 База данных
Формы в Вашем приложении могут даже снова перевести себя на лету, если исправления сделаны к базе данных.
Мы использовали систему, где все средства управления были отображены в XML-файле (один на форму) к идентификаторам ресурса языка, но все идентификаторы были в базе данных.
В основном, вместо того, чтобы иметь каждый контроль содержат идентификатор (реализующий интерфейс или использующий свойство тегов в VB6), мы использовали то, что в.NET, дерево управления было легко поддающимся обнаружению посредством отражения. Процесс, когда загруженная форма создала бы XML-файл, если бы это отсутствовало. XML-файл отобразил бы средства управления на их идентификаторы ресурса, таким образом, это просто должно было быть заполнено в и отображенный на базе данных. Это означало, что не было никакой потребности изменить скомпилированный двоичный файл, если бы что-то не было отмечено, или если бы он должен был быть разделен к другому идентификатору (некоторые слова на английском языке, который мог бы использоваться и в качестве существительных и в качестве глаголов, то, возможно, должен был бы перевести в два различных слова в словаре и не быть снова использованы, но Вы не могли бы обнаружить это во время начального присвоения идентификаторов). Но факт - то, что целый процесс перевода становится абсолютно независимым от Вашего двоичного файла (каждая форма должна наследоваться основной форме, которая знает, как перевести себя и все ее средства управления).
единственные, где приложение больше принимает участие, - когда фаза с точками вставки используется.
программное обеспечение для перевода базы данных было Вашим основным экраном обслуживания CRUD с различными опциями рабочего процесса упростить прохождение через недостающих переводов, и т.д.
Я не думаю, что существует "лучший способ". Это действительно будет зависеть от технологий и типа приложения, которое Вы создаете.
Веб-приложения могут хранить информацию в базе данных, как другие плакаты предположили, но я рекомендую использовать отдельные файлы ресурсов. Это файлы ресурсов, отдельные от Вашего источника . Файлы ресурсов Seperate уменьшают конкуренцию для тех же файлов и как Ваш проект растет, можно найти, что локализация будет сделана seperatly от бизнес-логики. (Программисты и Переводчики).
Microsoft WinForm и гуру WPF рекомендуют использовать отдельные сборки ресурсов, настроенные для каждой локали.
способность WPF измерить элементы UI к содержанию понижает требуемую разметку, например: (японские слова намного короче, чем английский язык).
, Если Вы рассматриваете WPF: я предлагаю читать эту статью MSDN, Чтобы быть правдивым, я нашел инструменты локализации WPF: msbuild, locbaml, (и возможно электронная таблица Excel) утомительный для использования но это действительно работает.
Что-то незначительно имело отношение: типичная проблема, с которой я сталкиваюсь, интегрирует унаследованные системы, которые отправляют сообщения об ошибках (обычно на английском языке), не коды ошибки. Это вызывает или изменения в унаследованных системах или отображающиеся строки бэкенда к моим собственным кодам ошибки и затем к локализованным строкам... yech. Коды ошибки являются другом локализаций
Можно использовать коммерческие инструменты как Sisulizer. Это создаст сборку-сателлит для каждого языка. Только вещь, необходимо обратить внимание, не состоит в том, чтобы запутать имена классов формы (при использовании obfuscator).
Я пошел бы с несколькими файлами ресурсов. Это не должно быть это трудно для конфигурирования. На самом деле я недавно ответил на подобный вопрос на установке глобальные основанные на языке файлы ресурсов в сочетании с файлами ресурсов языка формы.
Локализация в Visual Studio 2008
я полагал бы что лучший подход, по крайней мере, для разработки WinForm.
Использование проектов самое с открытым исходным кодом GetText с этой целью. Я не знаю, как и использовалось ли это когда-либо на.Net проекте прежде.
Мы используем пользовательского поставщика для многоязыковой поддержки и помещаем все тексты в таблицу базы данных. Это работает хорошо кроме, мы иногда сталкиваемся с кэширующимися проблемами при обновлении текстов в базе данных, не обновляя веб-приложение.
Стандартные файлы ресурсов легче. Однако, если у Вас есть какие-либо языковозависимые данные, такие как таблицы поиска тогда, необходимо будет управлять двумя наборами ресурсов.
я не сделал его, но в моем следующем проекте я реализовал бы провайдер ресурсов базы данных. Я нашел, как сделать это на MSDN:
http://msdn.microsoft.com/en-us/library/aa905797.aspx
я также нашел эту реализацию: