In this snapshot you can see that are several strings in english while the locale is spanish. Checked l10n files and such localizations are there, but NC doesn’t show them.
Is that the mobile app? Translations are handled on transifex, you can check there for this app, if everything was translated (for new versions this can take some time). If everything was translated, it could be that certain strings are not handled correctly and don’t show up for translation, in this case the repository of the corresponding app would be the right place to put a bug report.
How is this working if a string is not available in Spanish (Peru), does it then show the Spanish (Spain) or does it use English as fallback? If the Spanish (Spain) were the fallback, you’d only have to translate where they differ.
AFAIK the fallback is the source string. As our source (reference) language is english, so this is used.
The function you describe is part of the products I create in my company. You can select the main language and a fallback language. We load the reference language at first, than the fallback and after it the main language to get the best user result.