Я член команды, в которой работает более 20 разработчиков. Каждый разработчик работает над отдельным модулем (что-то около 10 модулей). В каждом модуле мы могли бы иметь по крайней мере 50 CRUD форму, а это значит , что мы в настоящее время есть около 500 кнопок добавлений , сохранить кнопки , кнопки редактирования и т.д.
Однако, поскольку мы хотим глобализировать наше приложение, нам необходимо иметь возможность переводить тексты в нашем приложении. Например, повсюду слово add должно стать для французских пользователей джоутером .
Что мы сделали до сих пор, так это то, что для каждого представления в пользовательском интерфейсе или на уровне презентации у нас есть словарь пар переводов ключ / значение. Затем при рендеринге представления мы переводим требуемые тексты и строки, используя этот словарь. Однако при таком подходе мы получили около 500 добавлений к 500 словарям. Это означает, что мы нарушили принцип DRY.
С другой стороны, если мы централизуем общие строки, например, добавляем add в одном месте, и просим разработчиков использовать его везде, мы сталкиваемся с проблемой неуверенности в том, определена ли строка в централизованном словаре или нет.
Еще одним вариантом может быть отсутствие словаря перевода и использование сервисов онлайн-перевода, таких как Google Translate, Bing Translator и т. Д.
Еще одна проблема, с которой мы столкнулись, заключается в том, что некоторые разработчики, испытывающие стресс из-за своевременной сдачи проекта, не могут запомнить ключи перевода . Например, для текста кнопки добавления разработчик использовал add, а другой разработчик - new и т. Д.
Каков наилучший или наиболее известный метод глобализации и локализации строковых ресурсов приложения?
Ответы:
Насколько мне известно, есть хорошая библиотека
localeplanet
для локализации и интернационализации в JavaScript. Кроме того, я думаю, что он родной и не зависит от других библиотек (например, jQuery).Вот сайт библиотеки: http://www.localeplanet.com/
Также посмотрите эту статью Mozilla, вы можете найти очень хороший метод и алгоритмы для перевода на стороне клиента: http://blog.mozilla.org/webdev/2011/10/06/i18njs-internationalize-your-javascript-with- а-мало-помощь-с-JSON-и-на-сервер /
Общей чертой всех этих статей / библиотек является то, что они используют
i18n
класс иget
метод (в некоторых случаях также определяя меньшее имя функции, например_
) для получения / преобразования файлаkey
вvalue
. В моем объясненииkey
означает, что строка, которую вы хотите перевести, иvalue
означает переведенную строку.Затем вам просто нужен документ JSON для хранения
key
иvalue
.Например:
А вот JSON:
Я считаю, что использование текущих популярных библиотечных решений - хороший подход.
источник
Я считаю, что для этой проблемы уже существует множество решений в серверных языках, таких как ASP.Net/C#.
Я обозначил некоторые из основных аспектов проблемы.
Проблема : нам нужно загружать данные только для желаемого языка
Решение : для этого мы сохраняем данные в отдельные файлы для каждого языка.
ех. res.de.js, res.fr.js, res.en.js, res.js (для языка по умолчанию)
Проблема: файлы ресурсов для каждой страницы должны быть разделены, чтобы мы получали только те данные, которые нам нужны.
Решение : мы можем использовать уже существующие инструменты, например https://github.com/rgrove/lazyload
Проблема: нам нужна структура пары ключ / значение для сохранения наших данных
Решение : я предлагаю объект javascript вместо строки / строки air. Мы можем извлечь выгоду из intellisense из IDE
Проблема: общие члены должны храниться в общедоступном файле, и все страницы должны иметь к ним доступ
Решение : для этой цели я создаю папку в корне веб-приложения с именем Global_Resources и папку для хранения глобального файла для каждой подпапки, которую мы назвали «Local_Resources».
Проблема: каждый член подсистем / подпапок / модулей должен переопределять элементы Global_Resources в своей области
Решение : я рассмотрел файл для каждого
Структура приложения
Соответствующий код для файлов:
Global_Resources / default.js
Global_Resources / default.fr.js
Файл ресурсов для желаемого языка должен быть загружен на страницу, выбранную из Global_Resource - это должен быть первый файл, загружаемый на всех страницах.
UserManagementSystem / Local_Resources / default.js
UserManagementSystem / Local_Resources / default.fr.js
UserManagementSystem / Local_Resources / createUser.js
UserManagementSystem / Local_Resources / createUser.fr.js
файл manager.js (этот файл должен быть загружен последним)
Надеюсь, поможет :)
источник
"Create" : {"message": "Create", "description": "text on the button that opens the editor with a blank Foo"}
например, для локализации расширений Chrome . Или создайте отдельный файл с этими комментариями.jQuery.i18n - это легкий плагин jQuery для обеспечения интернационализации ваших веб-страниц. Это позволяет вам упаковывать пользовательские строки ресурсов в файлы .properties, как в Java Resource Bundles. Он загружает и анализирует пакеты ресурсов (.properties) на основе предоставленного языка или языка, сообщаемого браузером.
чтобы узнать больше об этом, взгляните на Как интернационализировать ваши страницы с помощью JQuery?
источник