We should introduce a new base class underneath Locale/ULocale with just the identifier-related functionality and without display names. The base class should be in the ICU "core" and not drag in any significant data. We can then try to broaden some APIs to work with the base class instead of the larger one.
It might be sufficient (and would be simpler and less disruptive) to not actually split the Locale/ULocale API but achieve the code modularization via Java reflection (which Doug introduced with his recent display name work) and splitting the .c/.cpp files between locale ID and display name functionality.
Good enough, I think:
In Java, Doug rewrote the display names code to use the new LocaleDisplayNames API and implementation. When no display names are accessed, then that class and its associated data should not be loaded.
In C, I just split the locid.cpp and uloc.c files into multiple files so that core locale ID .c/.cpp files (hopefully) do not depend on resource bundle code or data any more.
I don't see the new files in the changelist. Were they added under some other ticket?