The intl extension is very useful, but it is quite low-level. In practice, using it directly can become verbose, especially for common localisation tasks that require combining multiple ICU classes and options.
For many applications, it can be helpful to use a higher-level interface on top of ext-intl. An example of such a package is Cosmo:
https://cosmo.miloun.com/?lang=php
It provides a more practical API for common tasks such as formatting numbers, money, percentages, dates, units, plurals, lists, and locale names, while still being based on ICU / intl.