2010-09-27 10 views
10

estoy teniendo un poco de dificultad para archivos de recursos localizados para trabajar en Windows Phone 7. Esto es lo que estoy haciendo:de adaptación local del Windows Phone 7 App

  1. Crear un archivo de recursos, dicen "Strings.resx" (Acción de compilación: compilar)
  2. Crear una clave, decir "TestKey" con un valor predeterminado de cadena vacía
  3. Agregue un archivo de recursos en inglés en la misma carpeta con el valor "alguna cadena en inglés": Strings.en- us.resx (Acción de compilación: recurso incrustado)
  4. Agregue un archivo de recursos japonés en la misma carpeta con un valor de "som e cadena japonesa ": strings.ja-jp.resx (Build Acción: Recurso incrustado)

En mi PC Silverlight, WPF aplicaciones que funciona bien cuando cambio la Thread.CurrentThread.CurrentCulture. Pero en el teléfono siempre parece estar obteniendo el valor que está en el archivo Strings.resx, una cadena vacía.

He intentado utilizar el código generado por el diseñador y cablear el administrador de recursos a mano y no parece importar. Aquí está mi código:

  Type t = typeof(Strings); 

      _resourceManager = new ResourceManager(
       t.Namespace + "." + t.Name, 
       t.Assembly); 

      _resourceManager.GetString("TestKey"); 

Dime los recursos localizados son compatibles con el teléfono ...;> ¿Qué estoy haciendo mal? ¡Gracias!

Actualización: Gracias Olivier por reenviar el enlace. Lo vi también pero perdí un paso importante. No agregué el nodo "SupportedCultures" a mi csproj. Hizo la diferencia, esperando que alguien más no pierda dos horas tratando de resolver esto como yo lo hice.

<SupportedCultures>de-DE;es-ES;</SupportedCultures> 
+1

+1 para la propiedad 'SupportedCultures'. Sorprendente que no está expuesto en Visual Studio a través de las propiedades de la aplicación. – si618

Respuesta

4

escribí un blog que ofrece enlaces a un montón de Globalization/Localization guides for WP7. No es un Windows Phone 7 in 7 Training video que me ayudó a entender los conceptos básicos . Después de que era simplemente una cuestión de aprender cómo hacer de enlace de datos:

El artículo de MSDN muestra cómo configuración de los archivos y crear la clase LocalizedStrings, pero luego suponer que usted sabe cómo usar esa clase para el enlace de datos. Visual Studio 2010 y identificador de datos de Silverlight de unión diferente que Winforms y se pone aún más confuso ya XAML también tiene su propia definición de recursos que son diferentes entonces los .NET recursos que acabamos de crear. Silverlight también utiliza el término de Recursos para referirse a los archivos que utilizan el la Acción de generación de "contenido”, como estos archivos se envolvieron en el archivo .xap similar a cómo los archivos con Acción de generación de "Recursos” llegar incrustado en el conjunto .Dll (por ejemplo, cargando una imagen del contenido archivos de recursos). Encontré que en su lugar de usar el texto = "{Enlace Path = resourceFile.resourceName, Fuente = {StaticResource Localizedresources}}" sintaxis XAML que era más fácil de usar las siguientes etapas:

  1. Abra su página XAML principal (normalmente MainPage.xaml) en el diseñador de Visual Studio

  2. Abrir las propiedades de la PhoneApplicationPage y establecer el DataContext ser Application.Resources -> LocalizedStrings NOTA: si ya está utilizando un objeto DataContext, entonces.debe integrar la clase LocalizedStrings en ese objeto para que tenga soporte de localización .

  3. Una vez DataContext de la página se ha establecido que puede cambiar los datos vinculante para cualquier control de la página por simplemente seleccionando la propiedad (por ejemplo: texto, comprobado, etc), seleccionando la opción “Aplicar Encuadernación datos ...” y estableciendo la ruta en Localizedresources.BtnText o sea cual sea el nombre del valor de recurso deseado .

+0

¡Esta es una gran respuesta, muchas gracias por tomarse el tiempo! – will