Какая структура javascript превосходит при обработке интернационализации?

Предположим, я создаю довольно большое браузерное интерактивное мультимедийное приложение, и у меня есть следующие требования:Только для Webkit (допустим, хром на рабочем столе)Версии для планшетов и настольных ПК, возможно, с небольшими различиями в пользовательском интерфейсеПолностью на стороне клиента: никакого взаимодействия с сервером вообщеНаилучшее исполнение возможноПолностью интернационализированныйЯ собираюсь построить много этих приложенийДолгосрочная ремонтопригодность НЕ является приоритетом (здесь нет TDD)Повторное использование и использование от проекта к проекту является приоритетомДизайнеры правят на курорте - много времени будет потрачено на внешний вид и анимациюОчень короткие сроки разработкиМаленькая, блестящая командаЯ ищу совет от людей, которые делали что-то подобное раньше, чтобы не сделать неправильный выбор заранее.Я знаю JS & CSS3 как внутри, так и снаружи, но я достаточно умен, опытен /стар, чтобы знать, что есть преимущества в использовании архитектурной среды, которую кто-то другой разработал, вместо того, чтобы использовать мою собственную.Однако эти преимущества вступают в силу только в том случае, если приложения, которые я пишу, соответствуют целям разработчика платформы.Я провел день, пытаясь обдумать SenchaTouch, и пришел к выводу, что он отлично подходит для создания чего-то совершенно отличного от того, что я строю.(По аналогии SenchaTouch /ExtJS - это Swing, и я ищу Flash.) Кроме того, у Sencha, похоже, много трудностей, чтобы превратить Javascript в систему на основе классов, вместо того, чтобы просто принять /принять, что это прототипсистема.Это подвело меня.Я провел целый день, изучая все о backbone.js, и мне действительно это нравится, за исключением 1) мне не нужны ЛЮБЫЕ вещи взаимодействия с сервером (хотя я мог бы использовать это для начальной загрузки всех элементов пользовательского интерфейса из файлов ресурсов)и 2) полностью игнорирует актуальность представлений.Но, может быть, это хорошо?Я не уверен в этом.Я посмотрел на knockout.js и хотя это не очень волнуется о сохранении вида до настоящего времени ни один из демки я никогда смотрел на снасти интернационализации.Мои потребности в i18n просты: каждая текстовая строка, которая появляется в моем приложении, должна исходить из таблицы (и используемый язык можно изменить в любое время).Когда я вижу что-то подобное на домашней странице knockout.js:Я беспокоюсь о том, как легко будет сделать эту строку динамической, основываясь на настройке переменной времени выполнения.То есть, если бы я хотел написать эквивалент:Есть ли достаточно безболезненный способ сделать это, и что связано с тем, чтобы смена языка автоматически распространялась по всему пользовательскому интерфейсу?Любая сильная рекомендация, чтобы я посмотрел на еще одну структуру, которая может быть лучше подходит?Кроме того, я предполагаю, что мы будем использовать jquery /ui или zepto, возможно, zepto, чтобы исключить множество шаблонов в динамическом обновлении страниц и анимации.Есть полезные мысли по этой части архитектуры?
4 голоса | спросил Joshua Smith 13 MarpmTue, 13 Mar 2012 19:43:59 +04002012-03-13T19:43:59+04:0007 2012, 19:43:59

5 ответов


0
Мне самому было любопытно (мне здесь нужен нокаут + поиск i18n), я сделал быстрый и грязный JSFiddle с утилитой Jed вместе с knockoutjs, которые предложил Акаша.Мне также пришлось использовать немного JQuery.Посмотрите здесь: http://jsfiddle.net/yUE7a/5/Я создал пользовательскую привязку (i18n), которая привязывается к вашей текущей локали.Привязка i18n берет текст из элемента и использует его в качестве ключа и заменяет его переведенным текстом из Jed.Локаль сама по себе реализована как ko.obervable, так что вы можете изменить значение локали и заставить knockoutjs обновлять все ваши метки перевода за один раз (возможно, вам придется кэшировать ключ между init и update, поскольку он перезаписывается элементом $ () .html () вызов).Одна проблема сохраняется, когда я включил Jed в JsFiddle, все стили исчезли.Я не знаю почему и если это актуальная проблема с Jed + KnockoutJS или только с Jed + JsFiddle.Я никогда раньше не использовал Jed, поэтому я не знаю, подходит ли он для вашей цели, но он должен быть достаточно простым, чтобы заменить Jed другим фреймворком i18n.Надеюсь это поможет!
ответил Magnus 5 PMpThu, 05 Apr 2012 14:43:40 +040043Thursday 2012, 14:43:40
0
Я думаю, вы обнаружите, что существует множество сценариев JavaScripts, которые отвечают вашим потребностям.Если вы хотите получить краткий обзор того, что чувствуют различные фреймворки, я бы порекомендовал взглянуть на проект TodoMVC , где одно и то же приложение было реализовано в 18 различных фреймворках JavaScript, включая те, которые вы пометили для этого вопроса.Я только что добавил реализацию GWT к этому проекту - и GWT - технология, которую, я думаю, стоит рассмотреть.Он имеет много «корпоративных» функций, таких как встроенный i18n, плюс использование строго типизированного языка Java значительно упрощает повторное использование.
ответил ColinE 13 MarpmTue, 13 Mar 2012 19:53:57 +04002012-03-13T19:53:57+04:0007 2012, 19:53:57
0
Я еще не пробовал это, но они кажутся простыми в использовании с любой структурой:получить текст для JavaScript: http://slexaxton.github.com/Jed/гибкие формы множественного числа и пола: https://github.com/SlexAxton/messageformat.js
ответил Akasha 14 MaramWed, 14 Mar 2012 02:38:21 +04002012-03-14T02:38:21+04:0002 2012, 02:38:21
0
Просто создайте все HTML со стороны сервера и используйте метки для языков.Я делаю это с PHP и использую knockoutjs и sammyjs.HTML использует метки для всех языков, и у меня есть разные PHP-файлы для каждого языка, содержащие все метки и их значения на этом языке.«Недостатком» этого решения является то, что вам, вероятно, потребуется перезагрузить страницу при смене языка (возможно, только недостатком, если вы собираетесь использовать одностраничное приложение).
ответил Yngve 14 MarpmWed, 14 Mar 2012 12:44:35 +04002012-03-14T12:44:35+04:0012 2012, 12:44:35
0
Недавно я столкнулся с той же проблемой, и, поскольку для этого существует множество инструментов JS, ни один из них (насколько я обнаружил) не работал очень хорошо с KnockoutJS и не мог менять язык без обновления страницы.Поэтому я создал слишком большой собственный файл под названием KnockoutJS-i18n .Работает как с простыми текстами, так и с переменными:
ответил Rene Pot 31 +04002013-10-31T14:10:24+04:00312013bEurope/MoscowThu, 31 Oct 2013 14:10:24 +0400 2013, 14:10:24

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132