2009-04-24 7 views
0

Est-ce que quelqu'un a réussi à localiser une application mobile qui utilise les contrôles Orientation Aware pour prendre en charge plusieurs résolutions. Le CultureInfo doit être paramétrable à l'exécution et non lu par le système. Je ne sais pas si cela est pris en charge. S'il vous plaît aider.Localisation NET CF avec l'orientation consciente

Plamen

Répondre

1

Je n'ai jamais utilisé les commandes que vous mentionnez et je ne connais la la raison pour laquelle vous devez définir CultureInfo lors de l'exécution pour lesdits contrôles. Par conséquent, ma réponse est basée sur votre question comment configurer CultureInfo à l'exécution. Si ce n'est pas ce que vous vouliez, ne tenez pas compte de ma réponse.

Si nous programmerons une application de bureau, le CultureInfo pourrait être changé en utilisant:

Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-US") 
'en-US = American English 

Malheureusement, cela est impossible dans CF.NET.

En fait, autant que je sache, il n'y a pas de manière officielle ou supportée que vous pouvez changer le CultureInfo (et les paramètres régionaux) de l'appareil dans CF.NET pendant l'exécution. On pourrait, peut-être, modifier les paramètres régionaux dans le registre, mais cela signifierait que l'appareil doit être redémarré.

Dans ma bibliothèque de code, cependant, j'ai un extrait de code que j'ai trouvé il y a quelque temps et que j'ai testé seulement dans un émulateur où ça a marché très bien. Il est considéré comme un "hack" et peut être risqué mais en le testant dans l'émulateur, je n'ai jamais rencontré de problèmes. Ici, il est en VB.Net:

'I declare the following statement 

Dim myCIintl As New Globalization.CultureInfo("en-US") 'where en-US is for Ame-English 

'Then I call the following sub 

SetDefaultLocale(myCIintl) 

'Here is the code of the sub 

Public Shared Sub SetDefaultLocale(ByVal locale As System.Globalization.CultureInfo) 
     If Nothing Is locale Then 
      Throw New ArgumentNullException("locale") 
     End If 

     Dim fi As System.Reflection.FieldInfo = GetType(System.Globalization.CultureInfo).GetField _ 
     ("m_userDefaultCulture", System.Reflection.BindingFlags.NonPublic Or System.Reflection.BindingFlags.Static) 
     If Nothing Is fi Then 
      Throw New NotSupportedException("Setting locale is not supported in this version of the framework.") 
     End If 
     fi.SetValue(Nothing, locale) 
End Sub 

Note: S'il vous plaît être conscient du fait que si la variable privée m_userDefaultCulture changera son nom dans une version ultérieure, puis au-dessus du code peut se briser. En outre, le nom de la variable peut avoir un autre nom dans une version localisée de Windows Mobile - peut-être dans la version espagnole, il est appelé quelque chose d'autre. Je ne sais pas donc je suppose que vous devez l'essayer pour vous. Outre la note ci-dessus, le code ci-dessus devrait fonctionner (croiser les doigts) tant que les réglages régionaux que vous souhaitez utiliser sont présents sur l'appareil. Pour voir quels paramètres régionaux sont pris en charge par l'appareil, vous pouvez utiliser l'excellent code que Ctacke a montré here.

Bonne chance!

Questions connexes