10
votes

Les ressources de localisation peuvent-elles être téléchargées en runtime?

J'ai une application avec accès à Internet et je ne veux pas stocker de nombreux string.xml pour différentes langues.

Ce que je veux:

  1. application contient un seul string.xml avec des chaînes anglaises.
  2. Lorsque l'utilisateur le lance - je vois la locale téléphonique de l'utilisateur et poser mon propre serveur pour le fichier de langue nécessaire. (Les clés de ressources seront les mêmes)
  3. Lorsque le nouveau fichier de ressources est livré, toute interface doit fonctionner avec un nouveau fichier.

    La question est de savoir comment modifier existant ou ajouter de nouveaux string.xml fichier dans l'exécution?


0 commentaires

3 Réponses :


3
votes

Vous ne pouvez évidemment pas changer, télécharger ou supprimer strings.xml au moment de l'exécution

Si vous souhaitez stocker des emplacements, vous devrez utiliser SQLite Stockage pour stocker les traductions.

Similaire:

Comment modifier les fichiers Strings.xml à l'exécution
Modification du temps d'exécution de strings.xml


4 commentaires

Le problème de ces solutions - Vous ne pouvez pas vous appeler la base de données à partir de fichiers XML et vous ne pouvez pas utiliser les méthodes de Standart 'Context.GetString ()'.


Yup, c'est le côté obscur de la solution, mais aussi longtemps que vous souhaiterez utiliser votre solution fournie, il n'y a aucune différence, seule ceci est clairement plus distincte du système et il est plus facile et il est plus facile de mettre en œuvre.


Et puis-je créer, par exemple, dossier valeurs-de dans mes ressources et mettre de nouveau fichier XML là-bas?


Comme vous ne pouvez pas modifier les fichiers enregistrés à l'intérieur de .apk , non, ce n'est pas possible.



3
votes

Maintenant, je ne peux voir que la solution:

  1. Créez une "proxy de localisation" qui me rendra la ressource nécessaire (à partir de string.xml ou ressource téléchargée)
  2. Remplacez tous les getstring () et gettext () à votre propre méthode getStringfromlocalization
  3. remplacement textview , et d'autres vues avec personnalisé et modifier là-bas et settext méthodes.

1 commentaires

Tout va bien, sauf settext (string) méthode est final de sorte qu'il ne peut pas être remplacé



0
votes

Remplacement de la ressource / langue standard à l'aide de fichiers de ressources compilés TIME, alors vos performances scarifiantes sur la personnalisation. Ne le faites que si vous en avez besoin.


0 commentaires