Jon Haider
Posts: 0
Joined: Thu Oct 16, 2014 2:53 pm

Android build to apk fails with Facebook Connect plugin included: lint flags "Missed Translation" errors from values/str

Hey guys,
I'm having problems exporting to .apk when including the Facebook Connect plugin from here: (https://github.com/Wizcorp/phonegap-f...) and as a result the build fails with the long error shown below (all errors are related to lint flagging a "Missed Translation"). As a potential fix, I tried adding codedisable 'MissingTranslation'/code to the lintOptions in build.gradle file (as suggested here: http://stackoverflow.com/questions/18...) but with this work-around the build fails with no reason specified.

Also to clarify, my app will build to apk absolutely fine if I unselect the Facebook Connect from my App SettingsCordova Plugins Imported Cordova Plugins, but if I include the plugin with my build, it fails.

Thank you in advance!

pre
Build error

Most likely build error cause:

/AppName/res/values/strings.xml:5: Error: "activity_name" is not translated in "ar" (Arabic), "bg" (Bulgarian), "ca" (Catalan), "cs" (Czech), "da" (Danish), "de" (German), "el" (Greek), "es" (Spanish), "eu" (Basque), "fi" (Finnish), "fr" (French), "he" (Hebrew), "hi" (Hindi), "hu" (Hungarian), "id" (Indonesian), "it" (Italian), "iw" (Hebrew), "ja" (Japanese), "ko" (Korean), "nl" (Dutch), "pl" (Polish), "pt" (Portuguese), "ru" (Russian), "sk" (Slovak), "sl" (Slovene), "sv" (Swedish), "tr" (Turkish), "zh-rCN" (Chinese: China), "zh-rTW" (Chinese: Taiwan, Province of China) [MissingTranslation]
@string/launcher_name

Code: Select all


    Explanation for issues of type "MissingTranslation": 
    If an application has more than one locale, then all the strings declared 
    in one language should also be translated in all other languages. 

    If the string should not be translated, you can add the attribute 
    translatable="false" on the  element, or you can define all your 
    non-translatable strings in a resource file called donottranslate.xml. Or, 
    you can ignore the issue with a tools:ignore="MissingTranslation" 
    attribute. 

    By default this detector allows regions of a language to just provide a 
    subset of the strings and fall back to the standard language strings. You 
    can require all regions to provide a full translation by setting the 
    environment variable ANDROID_LINT_COMPLETE_REGIONS. 

    You can tell lint (and other tools) which language is the default language 
    in your res/values/ folder by specifying tools:locale="languageCode" for 
    the root  element in your resource file. (The tools prefix 
    refers to the namespace declaration http://schemas.android.com/tools.) 

 /AppName/res/values-ar/strings.xml:64: Error: "menu_settings" is translated here but not found in default locale [ExtraTranslation] 
   إعدادات 
           ~~~~~~~~~~~~~~~~~~~~ 
     /AppName/res/values-bg/strings.xml:64: Also translated here 
     /AppName/res/values-ca/strings.xml:64: Also translated here 
     /AppName/res/values-cs/strings.xml:64: Also translated here 
     /AppName/res/values-da/strings.xml:64: Also translated here 
     /AppName/res/values-de/strings.xml:64: Also translated here 
     /AppName/res/values-el/strings.xml:64: Also translated here 
     /AppName/res/values-es/strings.xml:64: Also translated here 
     /AppName/res/values-eu/strings.xml:64: Also translated here 
     /AppName/res/values-fi/strings.xml:64: Also translated here 
     /AppName/res/values-fr/strings.xml:64: Also translated here 
     /AppName/res/values-he/strings.xml:64: Also translated here 
     /AppName/res/values-hi/strings.xml:64: Also translated here 
     /AppName/res/values-hu/strings.xml:64: Also translated here 
     /AppName/res/values-id/strings.xml:64: Also translated here 
     /AppName/res/values-it/strings.xml:64: Also translated here 
     /AppName/res/values-iw/strings.xml:64: Also translated here 
     /AppName/res/values-ja/strings.xml:64: Also translated here 
     /AppName/res/values-ko/strings.xml:64: Also translated here 
     /AppName/res/values-nl/strings.xml:64: Also translated here 
     /AppName/res/values-pl/strings.xml:64: Also translated here 
     /AppName/res/values-pt/strings.xml:64: Also translated here 
     /AppName/res/values-ru/strings.xml:64: Also translated here 
     /AppName/res/values-sk/strings.xml:64: Also translated here 
     /AppName/res/values-sl/strings.xml:64: Also translated here 
     /AppName/res/values-sv/strings.xml:64: Also translated here 
     /AppName/res/values-tr/strings.xml:64: Also translated here 
     /AppName/res/values-zh-rCN/strings.xml:64: Also translated here 
     /AppName/res/values-zh-rTW/strings.xml:64: Also translated here 

    Explanation for issues of type "ExtraTranslation": 
    If a string appears in a specific language translation file, but there is 
    no corresponding string in the default locale, then this string is probably 
    unused. (It's technically possible that your application is only intended 
    to run in a specific locale, but it's still a good idea to provide a 
    fallback.). 

    Note that these strings can lead to crashes if the string is looked up on 
    any locale not providing a translation, so it's important to clean them 
    up. 

 7 errors, 0 warnings 

 :compileReleaseNdk 
 :preDexRelease 
 :dexRelease 
 UNEXPECTED TOP-LEVEL EXCEPTION: 
 com.android.dex.DexException: Multiple dex files define Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoVersionImpl; 
  at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:591) 
  at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:546) 
  at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:528) 
  at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:164) 
  at com.android.dx.merge.DexMerger.merge(DexMerger.java:188) 
  at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:504) 
  at com.android.dx.command.dexer.Main.runMonoDex(Main.java:334) 
  at com.android.dx.command.dexer.Main.run(Main.java:277) 
  at com.android.dx.command.dexer.Main.main(Main.java:245) 
  at com.android.dx.command.Main.main(Main.java:106) 

  FAILED 

 FAILURE: Build failed with an exception. 
 /pre
Jon Haider
Posts: 0
Joined: Thu Oct 16, 2014 2:53 pm

Android build to apk fails with Facebook Connect plugin included: lint flags "Missed Translation" errors from values/str

I exported the project to an Android Studio project so I can see all the files inside both with and without the Facebook Connect plugin, and it's really interesting because the strings.xml file is the same in both cases, but when the facebook connect plugin is NOT included, the appery compiler is ignoring the 'MissingTranslation' and 'ExtraTranslation' errors.

In other words, the error shown above that "activity_name" is not being translated to all of those languages is true even when the plugin is excluded from the build, but it doesn't trigger any errors. Same with the "menu_settings" being translated to all of those language and not the default.

When the plugin is included, then the Appery builder is flagging 'MissingTranslation' and 'ExtraTranslation' as severe errors.

Lastly, I tried ignoring both errors by adding
pre
lintOptions{
disable 'MissingTranslation'
disable 'ExtraTranslation'
}
/pre
and then the build fails with a blank error.

Jon Haider
Posts: 0
Joined: Thu Oct 16, 2014 2:53 pm

Android build to apk fails with Facebook Connect plugin included: lint flags "Missed Translation" errors from values/str

[SOLVED]

Was able to follow the solution posted by Taucher here.

At first I thought that issue was unrelated so I overlooked the solution, but it's the easiest work-around.

Thank you!

Return to “Issues”