Я пытаюсь создать набор классов для локализации (в основном, валютной части, а также языка).
Я могу представить, как логика может быть, но я не знаю, какие имена использовать для разных языков и валют. Я видел, что для этого существует множество стандартов ИСО, которые я должен выбрать?
Во всяком случае, вот логика, о которой я думал, если вы тоже можете помочь с этим:
У меня будет класс Money, с указанием количества и валюты. При создании объект получает сумму и валюту (возможно, объект, предоставленный классом локализации?). Вы можете добавить или умножить сумму. Метод add принимает в качестве параметра другой денежный объект, и если он имеет другую валюту, конвертирование производится автоматически. Где-то массив хранится со всеми стандартными именами, такими как en_US и USD, соответствующим образом их сопоставляя, а также привязывая их к эквиваленту в долларах США как скалярное значение. Денежные объекты должны иметь возможность печатать суммы в разных форматах, например, $ 1000 или U $ s и т. Д.
Используйте новый модуль intl
. Хотя библиотека ICU
в целом не является стандартом, ее компоненты. И он совместим с C, C ++ и Java.
Взгляните на компонент Zend Framework Zend_Locale . Он выполняет всю работу за вас, не требуя написать свой собственный класс.
Обычно я бы не предлагал зеркалировать .Net, но проверить, как они делают локализацию. Это легко одна из лучших мелкомасштабных реализаций, которые я видел.
Не очень подходит для высокодинамичных приложений в стиле iGoogle, но фантастичен для заголовков статических форм, валюты и т. П.