Question: Is there any way to intercept the Android framework's inflation of xml resources (menus and layouts) to change the strings it uses (e.g. for attributes like `android:text="@string/button_trade_commit"`.)

I know it's possible to override `getString()` as it's called from an Activity. But framework code doesn't seem to use `getString()`. For example, in MenuInflator.java, strings come from `mContext.obtainStyledAttributes()`, and `obtainStyledAttributes()` is final: I can't override it.

Anybody know of another way to accomplish this?

Background: I want to allow non-English-speaking users to localize my app themselves. I imagine an interface that displays the English strings and lets them enter a translation which is then used in place of the English string from then on. I can imagine also providing a "Share translations" button that uploads the translations, and then,
on the server side, incorporating them into a downloadable module that other users of the same language would get. Being able to substitute strings at runtime is the blocking piece that I can't figure out.

Answer: 
I don't believe you can override the systems getString() methods the way you are looking at it.  

It might be worth trying to use a custom attribute and handle the work there: <http://developer.android.com/training/custom-views/create-view.html#customattr>
I am not sure about this, but i think you can examine the source of [Calligraphy](https://github.com/chrisjenx/Calligraphy "Calligrapgy") library for Android. It is overriding system LayoutInflater to change the FontType, so i imagine you can do the same to change the strings.