2011-02-08 6 views
5

Creé un proyecto de prueba WPF, una sola ventana con un solo botón. Luego descargué el proyecto y modifiqué el archivo csproj para contener el siguiente <UICulture>en-US</UICulture>. Después de reconstruir la carpeta de compilación ahora contiene una subcarpeta llamada en-US y contiene un archivo llamado WpfLocalizationTest.resources.dll. Todo despejado hasta ahora.¿Cómo funciona Locbaml?

Luego descargué el código fuente de Locbaml y lo construí. (No se pudo encontrar una descarga binaria en cualquier lugar, vaya a la figura.)

Luego copié el archivo Locbaml.exe a la carpeta en-US e intenté lo siguiente.

locbaml /parse WpfLocalizationTest.resources.dll /out:test.csv 

Esto se traduce en un error 'No se pudo cargar el archivo o ensamblado WpfLocalizationTest.resources.dll o una de sus dependencias. Se intentó cargar un programa con un formato incorrecto.

En la carpeta obj \ x86 \ Debug hay un archivo llamado WpfLocalizationTest.g.en-US.resources. Intenté ejecutar locbaml sobre eso, pero el resultado fue el mismo.

¿Cómo se supone que locbaml se debe usar? MSDN está lleno de muestras de cockamamie, ninguna de las cuales funciona. ¿Realmente es locbaml cómo Microsoft pretende que las aplicaciones de WPF sean localizadas? ¿O han encontrado las herramientas adecuadas para el trabajo?

Respuesta

3

Mientras continúo buscando encontré otro enlace aquí en Stackoverflow. Los errores de compilación que estábamos recibiendo originalmente estaban relacionados con un proyecto de LocBaml desactualizado que no estaba configurado para .Net4.0. Es por eso que no pude generar el CSV desde el DLL y tuve que ir directamente al archivo de recursos. Siga este enlace para más detalles. Locbaml localization of .net wpf4 application

Este enlace proporciona un enlace a los binarios .net 4 que, una vez compilados, le permiten ir directamente al dll para generar el archivo CSV utilizando LocBaml.

+1

randyc - El LocBaml actualizado a .NET 4 realmente funciona. Eso es por el enlace. Sigo pensando que el equipo de MS WPF está completamente perdido en lo que respecta a la localización de WPF. – Rubio

1

Solo una actualización Saqué mis notas esta mañana. Espero que esto te ayude a avanzar un poco más.

Una vez que el proyecto ha sido compilado copiar el LocBaml.exe al directorio del proyecto, donde se ha generado la construcción: En mi caso he copiado el archivo a E: \ localiztion_sample \ localiztion_sample \ obj \ x86 \ Release

Esta es la parte difícil en que la compilación no contenía todos los archivos DLL del directorio bin (controles telerik y otros ensamblajes). Como resultado, fui a bin \ release \ y copié todos los archivos DLL y de recursos desde allí al directorio obj \ x86 \ Release. Para los archivos en los que se me solicitó que sobrescribiera, miré para ver si había una diferencia en el tamaño del archivo o la fecha de creación y, en caso de que no, omití la copia de estos objetos.

NOTA: Para poder generar el archivo CSV tuve que copiar los archivos dll y de recursos del directorio bin y colocarlos en el directorio obj. Si omite este paso, se creará el archivo CSV pero no se rellenará con datos.

Una vez que haya copiado los archivos necesarios en el directorio, a continuación, analizará el archivo .resource ubicado en el directorio de la versión.

En mi proyecto el archivo de recursos se encuentra en:

E: \ localiztion_sample \ localiztion_sample \ obj \ x86 \ Release

Y el nombre del archivo se tituló: US.resources-localiztion_sample.g.en

Nota: esto es diferente de las instrucciones en el sitio web de Microsoft. Microsoft afirma que debe ejecutar la herramienta LocBaml en el archivo dll ubicado dentro del directorio en-US. Sin embargo, después de múltiples intentos e investigaciones descubrí que esto de hecho causaba una serie de problemas con la compatibilidad entre compilaciones de 32 y 64 bits, y que simplemente no funcionaba.

Al leer a través de wpf4 desatado, así como en foros en línea, se sugiere señalar el archivo * .gen.en-Us.resources.* = El nombre del proyecto y gen.en-estadounidense refleja el lenguaje de desarrollo elegido

Dentro del untility comando VS a continuación, tendrá que introducir la siguiente

LocBaml/filename.resources análisis sintáctico de entrada/salida: muestra-en .csv

Notas: se supone que ha copiado el archivo LocBaml al directorio raíz donde existe este archivo y que se está ejecutando el símbolo del sistema como administrador del sistema. Para facilidad de uso He cambiado el directorio de trabajo dentro de la línea de comandos para el directorio del proyecto VS

para mi proyecto de ejemplo el comando miraba como:

* LocBaml/analizar localization_sample.g.en-US.resources de entrada/salida : muestra-en.csv *

Este comando genera el archivo CSV que actúa como una definición del proyecto actual

Esto fue tan lejos como llegué yo era capaz de modificar teh archivo y volver a generar el archivo DLL, pero No pude cambiar la cultura dentro de la aplicación, así que todavía estoy trabajando en esta pieza. Volveré a publicar una vez que lo haga funcionar.