2011-03-08 14 views
17

Estoy usando CentOS 5.5 Linux (sin X), PHP 5.3 y Drupal 7.0.¿Cómo generar un archivo de traducción para un módulo personalizado de Drupal 7?

¡El idioma principal de mi sitio es el ruso (no el inglés)!

He creado un game.info y la siguiente game.module que genera a 3 cuadras de la primera página:

function game_block_info() { 
    return array(
    'game_main' => array(
    'info' => t('Set FlashVars and show the flash game.'), 
    'cache' => DRUPAL_NO_CACHE, 
), 
    'game_winner' => array(
    'info' => t('Show the winner of the last week.'), 
    'cache' => DRUPAL_NO_CACHE, 
), 
    'game_leader' => array(
    'info' => t('Show the leader of the current week.'), 
    'cache' => DRUPAL_NO_CACHE, 
); 
} 


function game_block_view($block_name = '') { 
    global $user; 

    if ($block_name == 'game_main') { 
    if (user_is_logged_in()) { 
     $content = t('User is logged in.'); 
    } else { 
     $content = t('User is an anonymous user.'); 
    } 
    drupal_set_message("<pre>$output</pre>\n"); 
    return array(
     'subject' => t('Main Game'), 
     'content' => $content, 
    ); 
    } else if ($block_name == 'game_winner') { 
    .... 
    } else if ($block_name == 'game_leader') { 
    .... 
    } 
} 

Funciona bien, pero necesito todas las cadenas estar en Ruso y no quiero codificarlos en mi archivo game.module.

¿Necesito crear el tercer archivo llamado game.po y agregarlo al juego.info?

¿Cómo puedo crear un archivo .po? Preferiría una edición simple de ese archivo si es posible, sin herramientas oscuras.

También he intentado una herramienta:

# xgettext -n game/game.module --keyword=t 
xgettext: warning: file `game/game.module' extension `module' is unknown; will try C 
game/game.module:87: warning: unterminated character constant 
game/game.module:100: warning: unterminated character constant 

Respuesta

22

Estos deberían ser los pasos:

  1. para generar el archivo .pot, instale el módulo Translation template extractor

  2. Ir a la pestaña "Extraer cadenas" en la interfaz de administración de configuración regional, seleccione su módulo y envíe el formulario. Obtendrá un único archivo de plantilla generado.

  3. Luego puede traducir las cadenas con una herramienta como Poedit (http://www.poedit.net).

  4. Cuando haya terminado, los archivos se deben copiar a una subcarpeta de "traducciones" en la carpeta del módulo, para que Drupal los importe automáticamente al instalar el módulo del juego.

Por favor, den sus comentarios y díganles qué problemas tenían. Gracias

+1

No es que, aunque todo esto es correcto, para los módulos contribuidos, la extracción de cadenas de localización se produce automáticamente cuando una nueva versión es publicada por http://localize.drupal.org. Luego, http://drupal.org/project/l10n_update se puede usar para obtener las traducciones desde allí. Pero los módulos personalizados son una historia diferente, obviamente ... – Berdir

+2

Si está traduciendo un módulo * personalizado *, debe * reinstalar * para poder aplicar la traducción. Cuando no desee hacer eso (por ejemplo, no desea perder todos los permisos y tablas db al desinstalar) puede ejecutar un comando drush para forzar la carga de traducciones: '' drush php-eval '' locale_system_update (array ('yourmodule_name ')); drush_backend_batch_process(); "' – gakhov

+0

@corbacho: sigo tus pasos pero no funcionó para mí –

Cuestiones relacionadas