Localization support for Android icon "App Title"

Corona SDK does not currently support fully localizing an Android app.  

I have created a feature request for this here if you want to vote:

http://feedback.coronalabs.com/forums/188732-corona-sdk-feature-requests-feedback/suggestions/5287714-localization-support-for-android-icon-app-title-

Currently Corona does not support the basic concept of localizing the App Title for Android devices. This means you can have your application itself, and Google Play descriptions, translated for many different languages, however the title under the icon (App Title) does NOT get localized.

Support for achieving this is requested as a basic localization support requirement for Android.

BTW - The only known way (untested) is manually via many steps as noted by ingemar here, 1/2 way down first page of comments: http://forums.coronalabs.com/topic/38972-does-corona-support-app-name-localization/?hl=%2Btitle+%2Bandroid+%2Blocalization#entry202571.   

Rob/Brent - actually could you confirm this is valid feature request? i.e. that Corona doesn’t support this currently - thanks

Update - the manual work around I mentioned does not seem to work.  So unfortunately at the moment Corona SDK does not support you fully localizing an Android app :frowning:

Some background with trying to use the manual work around unpack/alter package/repackage approach :  Whilst I got this approach working for a test app (hello world), I still can’t get it to work my actual app.  It actually now installs, but when you run it it fails…I note in the log file items like the below:

Wondering if there is an issue with the technique for apps that are using Corona Plugins?  

E/AndroidRuntime(26903): FATAL EXCEPTION: main

E/AndroidRuntime(26903): Process: au.com.mixedup.Parachutist, PID: 26903

E/AndroidRuntime(26903): java.lang.IllegalStateException: A fatal developer error has occurred. Check the logs for further information.

E/AndroidRuntime(26903):     at com.google.android.gms.internal.u$f.a(Unknown Source)

E/AndroidRuntime(26903):     at com.google.android.gms.internal.u$f.a(Unknown Source)

E/AndroidRuntime(26903):     at com.google.android.gms.internal.u$b.A(Unknown Source)

E/AndroidRuntime(26903):     at com.google.android.gms.internal.u$a.handleMessage(Unknown Source)

E/AndroidRuntime(26903):     at android.os.Handler.dispatchMessage(Handler.java:102)

E/AndroidRuntime(26903):     at android.os.Looper.loop(Looper.java:137)

E/AndroidRuntime(26903):     at android.app.ActivityThread.main(ActivityThread.java:4998)

E/AndroidRuntime(26903):     at java.lang.reflect.Method.invokeNative(Native Method)

E/AndroidRuntime(26903):     at java.lang.reflect.Method.invoke(Method.java:515)

E/AndroidRuntime(26903):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:777)

E/AndroidRuntime(26903):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:593)

E/AndroidRuntime(26903):     at dalvik.system.NativeStart.main(Native Method)

and warnings appear:

V/Corona  (26903): > Class.forName: CoronaProvider._native.popup.social.LuaLoader

V/Corona  (26903): WARNING: Could not load ‘LuaLoader’

W/System.err(26903): java.lang.ClassNotFoundException: CoronaProvider._native.popup.social.LuaLoader

W/System.err(26903):     at java.lang.Class.classForName(Native Method)

W/System.err(26903):     at java.lang.Class.forName(Class.java:251)

W/System.err(26903):     at java.lang.Class.forName(Class.java:216)

W/System.err(26903):     at com.ansca.corona.NativeToJavaBridge.callLoadClass(NativeToJavaBridge.java:375)

W/System.err(26903):     at com.ansca.corona.JavaToNativeShim.nativeRender(Native Method)

W/System.err(26903):     at com.ansca.corona.JavaToNativeShim.render(JavaToNativeShim.java:163)

W/System.err(26903):     at com.ansca.corona.Controller.updateRuntimeState(Controller.java:234)

W/System.err(26903):     at com.ansca.corona.graphics.opengl.CoronaGLSurfaceView$CoronaRenderer.onDrawFrame(CoronaGLSurfaceView.java:399)

W/System.err(26903):     at com.ansca.corona.graphics.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1622)

W/System.err(26903):     at com.ansca.corona.graphics.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1377)

W/System.err(26903): Caused by: java.lang.NoClassDefFoundError: CoronaProvider/_native/popup/social/LuaLoader

W/System.err(26903):     … 10 more

It’s a valid feature request.  Engineering says it’s not a simple task because of the way Google want’s it done, but they will look into it.   No promises.

Rob

Thanks Rob. It seems to be quite straight forward looking at the manual work around that still works on some projects (but is incredibly time inefficient). You could make it like IOS in the sense that Corona developers would just create the right directories for the strings.xml files.

The problem is it has to be done post build after we are out of the equation.  They are looking into it. 

Hi Rob - any update on this by chance?  Feature request link is above.  Just about release another little app and will have to tackle this one again…

No short term solution. Engineering resources are tied up with other projects at the moment.

Rob

ok - best to probably not have different app names for different languages at all (including title in iTC) until we get this one implemented…

Rob/Brent - actually could you confirm this is valid feature request? i.e. that Corona doesn’t support this currently - thanks

Update - the manual work around I mentioned does not seem to work.  So unfortunately at the moment Corona SDK does not support you fully localizing an Android app :frowning:

Some background with trying to use the manual work around unpack/alter package/repackage approach :  Whilst I got this approach working for a test app (hello world), I still can’t get it to work my actual app.  It actually now installs, but when you run it it fails…I note in the log file items like the below:

Wondering if there is an issue with the technique for apps that are using Corona Plugins?  

E/AndroidRuntime(26903): FATAL EXCEPTION: main

E/AndroidRuntime(26903): Process: au.com.mixedup.Parachutist, PID: 26903

E/AndroidRuntime(26903): java.lang.IllegalStateException: A fatal developer error has occurred. Check the logs for further information.

E/AndroidRuntime(26903):     at com.google.android.gms.internal.u$f.a(Unknown Source)

E/AndroidRuntime(26903):     at com.google.android.gms.internal.u$f.a(Unknown Source)

E/AndroidRuntime(26903):     at com.google.android.gms.internal.u$b.A(Unknown Source)

E/AndroidRuntime(26903):     at com.google.android.gms.internal.u$a.handleMessage(Unknown Source)

E/AndroidRuntime(26903):     at android.os.Handler.dispatchMessage(Handler.java:102)

E/AndroidRuntime(26903):     at android.os.Looper.loop(Looper.java:137)

E/AndroidRuntime(26903):     at android.app.ActivityThread.main(ActivityThread.java:4998)

E/AndroidRuntime(26903):     at java.lang.reflect.Method.invokeNative(Native Method)

E/AndroidRuntime(26903):     at java.lang.reflect.Method.invoke(Method.java:515)

E/AndroidRuntime(26903):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:777)

E/AndroidRuntime(26903):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:593)

E/AndroidRuntime(26903):     at dalvik.system.NativeStart.main(Native Method)

and warnings appear:

V/Corona  (26903): > Class.forName: CoronaProvider._native.popup.social.LuaLoader

V/Corona  (26903): WARNING: Could not load ‘LuaLoader’

W/System.err(26903): java.lang.ClassNotFoundException: CoronaProvider._native.popup.social.LuaLoader

W/System.err(26903):     at java.lang.Class.classForName(Native Method)

W/System.err(26903):     at java.lang.Class.forName(Class.java:251)

W/System.err(26903):     at java.lang.Class.forName(Class.java:216)

W/System.err(26903):     at com.ansca.corona.NativeToJavaBridge.callLoadClass(NativeToJavaBridge.java:375)

W/System.err(26903):     at com.ansca.corona.JavaToNativeShim.nativeRender(Native Method)

W/System.err(26903):     at com.ansca.corona.JavaToNativeShim.render(JavaToNativeShim.java:163)

W/System.err(26903):     at com.ansca.corona.Controller.updateRuntimeState(Controller.java:234)

W/System.err(26903):     at com.ansca.corona.graphics.opengl.CoronaGLSurfaceView$CoronaRenderer.onDrawFrame(CoronaGLSurfaceView.java:399)

W/System.err(26903):     at com.ansca.corona.graphics.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1622)

W/System.err(26903):     at com.ansca.corona.graphics.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1377)

W/System.err(26903): Caused by: java.lang.NoClassDefFoundError: CoronaProvider/_native/popup/social/LuaLoader

W/System.err(26903):     … 10 more

It’s a valid feature request.  Engineering says it’s not a simple task because of the way Google want’s it done, but they will look into it.   No promises.

Rob

Thanks Rob. It seems to be quite straight forward looking at the manual work around that still works on some projects (but is incredibly time inefficient). You could make it like IOS in the sense that Corona developers would just create the right directories for the strings.xml files.

The problem is it has to be done post build after we are out of the equation.  They are looking into it. 

Hi Rob - any update on this by chance?  Feature request link is above.  Just about release another little app and will have to tackle this one again…

No short term solution. Engineering resources are tied up with other projects at the moment.

Rob

ok - best to probably not have different app names for different languages at all (including title in iTC) until we get this one implemented…