Как бороться с локализацией? Есть ли стандарт, которому я должен следовать?

Я пытаюсь создать набор классов для локализации (в основном, валютной части, а также языка).

Я могу представить, как логика может быть, но я не знаю, какие имена использовать для разных языков и валют. Я видел, что для этого существует множество стандартов ИСО, которые я должен выбрать?

Во всяком случае, вот логика, о которой я думал, если вы тоже можете помочь с этим:

У меня будет класс Money, с указанием количества и валюты. При создании объект получает сумму и валюту (возможно, объект, предоставленный классом локализации?). Вы можете добавить или умножить сумму. Метод add принимает в качестве параметра другой денежный объект, и если он имеет другую валюту, конвертирование производится автоматически. Где-то массив хранится со всеми стандартными именами, такими как en_US и USD, соответствующим образом их сопоставляя, а также привязывая их к эквиваленту в долларах США как скалярное значение. Денежные объекты должны иметь возможность печатать суммы в разных форматах, например, $ 1000 или U $ s и т. Д.

  • Это хороший способ справиться с этим?
  • Какую основу я должен придерживаться?
  • Вы знаете какие-либо уже существующие, развязанные библиотеки php для этого?

Используйте новый модуль intl . Хотя библиотека ICU в целом не является стандартом, ее компоненты. И он совместим с C, C ++ и Java.

Взгляните на компонент Zend Framework Zend_Locale . Он выполняет всю работу за вас, не требуя написать свой собственный класс.

Обычно я бы не предлагал зеркалировать .Net, но проверить, как они делают локализацию. Это легко одна из лучших мелкомасштабных реализаций, которые я видел.

Не очень подходит для высокодинамичных приложений в стиле iGoogle, но фантастичен для заголовков статических форм, валюты и т. П.