SetLocale en PHP

Hace poco tuve un problema con el setlocale en PHP. Tengo instalado un plugin, hecho por mi, en una instalación de WordPress que tengo en mi ordenador, con un servidor local.

El plugin funcionaba en local a las mil maravillas, ya que con el setlocale de php cambiaba los idiomas de acuerdo a la selección de idioma del usuario:

setlocale(LC_ALL, $code_locale);

Donde $code_locale lo saco de la información del lenguage seleccionado por el usuario de otro plugin, WPML, del que ya comenté algo el otro día.

El caso es que al subir mi plugin al servidor de producción, no se mostraban bien los días de la semana. De hecho siempre se mostraban en inglés. Haciendo un poco de debugging con echos comprobé que, haciendo una llamada a setlocale con el segundo parámetro a 0:

$code_locale = setlocale(LC_ALL, 0);

el $code_locale que me estaba devolviendo era una simple “C” y no algo como “es_ES” que es lo que me esperaba.

Leyendo un poco por el manual de setlocale en inglés, me enteré de que el sistema estaba en POSIX (supongo que tendrá que ver que el servidor sea un Linux) y por eso PHP me devolvía una “C”.

Un poco más de investigación me llevó a la conclusión de que con ponerle “.UTF8″ después del código del lenguage que quería sería suficiente, con lo que quedaría por ejemplo para francés:

setlocale(‘fr_FR.UTF8′);

y aquí la función que he acabado usando:


function get_day_week($year, $month, $day, $code_locale){

$code_locale = $code_locale.'.UTF-8';

setlocale(LC_ALL, $code_locale);

return strftime("%A",mktime(0,0,0,$month,$day,$year));

}
+info: http://php.net/manual/en/function.setlocale.php

Enlaces personalizados a ventana nueva en WordPress

Este es un tip tonto, pero que me ha llevado unos 10 minutos de búsqueda por internet. Por si le ahorro tiempo a alguien ahí va.

Resulta que si haces un menú personalizado desde la sección Apariencia dentro del backend de WordPress, si a este menú le añades enlaces personalizados estos van a ir siempre a la misma ventana, nunca van a abrirse en una ventana nueva.

Si queremos que los enlaces se abran en una nueva ventana hay que activar la opción de decirle al enlace a donde quieres ir. Para esto solo hay que ir a la pestañita Opciones de pantalla que está arriba a la izquierda y allí marcar el checkbox Destino del enlace.

En el mismo sitio podremos activar las opciones para poner:

  • Clases CSS
  • Relación con el enlace (XFN)
  • Descripción

Marcando estos checkbox ya podremos cambiar en el destino del enlace al editar el enlace personalizado creado.

Enlaces en wordpress multiidioma con WPML

Para la última página que estoy haciendo me pidieron que esta fuese multiidioma. Al estar haciéndola con WordPress instalé el plugin WPML para crear todo el contenido en diferentes idiomas.

Me surgió un problema entonces, y explico la situación. Desde ciertas páginas se requiere acceder a otras páginas que están en el idioma adecuado. En este caso estos accesos debían hacerse desde el contenido del template de cada página y no desde un menú. Por ejemplo, si tengo una página inicio y desde esta quiero ir a una página hija, contacto,  de una llamada nosotros:

Inicio -> Nosotros / Contacto

En mi caso el menú solo iba a a tener un nivel con lo que a Contacto solo se podría acceder añadiendo un link en el template. Pero no podía poner el texto tal cual ya que la traducción iba a hacerse posteriormente y no se en que idioma. Además el problema no está en el propio texto del enlace, ya que se podría haber solucionado con una llamada a la función para localización de temas:

_e(‘Contacto’, ‘domain’);

El problema es que quería que tanto el texto del enlace como la dirección fuese adecuada al idioma. Para esto WPML tiene una función genial que cambia el enlace de acuerdo al ID del elemento que estás traduciendo y al idioma que vayas a utilizar.

icl_link_to_element(ID, type, text, arguments, anchor);

Donde :

  • ID es el identificador de la página/entrada/etiqueta/categoria a donde quieres ir.
  • Type es el tipo que podrá ser post, page, tag o category
  • Text es el texto que quieres para el enlace, pudiendo usar aqui la función de localización __()
  • Arguments, argumentos opcionales pasados por GET
  • Anchor, no tiene mucho sentido pero puedes poner que en vez de el enlace en cuestión utilice otro a capón

En fin, problema resuelto, WPML se encarga (si tiene la traducción de la página) de traducir los enlaces al idioma adecuado.

+ info: http://wpml.org/documentation/support/creating-multilingual-wordpress-themes/hard-coded-theme-links/

Alternativa a Lorem Ipsum

Para diseñar cualquier cosa siempre uso Lorem Ipsum para poner texto fictício. Si ya estás harto de usar siempre el mismo texto puedes meterte en fillerati y usar algún texto de un libro famoso.

Solo están en inglés, pero como texto fictício cuela. Además el diseño en CSS3 + HTML5 + JS hace de la página un punto de inspiración bastante chulo.

http://www.fillerati.com/

Pods CMS

Hace poco escribí una entrada en Uhuru Labs acerca del plugin Pods que convierte a WordPress en un genial y versátil CMS. Os dejo un enlace por si alguien quiere echarle un vistazo:

Como empezar con Pods CMS explicado por la gente de Uhuru Labs.

Actualización a iOS SDK 4.1

Para uno de los proyectos que estamos desarrollando en Uhuru Labs creamos una aplicación para iPhone. En esta es necesaria la introducción de números decimales con lo que pensamos que estaría bien tener un teclado numérico con coma decimal para la introducción de dichos datos. Para nuestra sorpresa hasta la versión 4.1 del SDK no se incluye un teclado de estas características con lo que decidimos buscar alguna teclado custom para este propósito. Buscando esto dimos con esta página donde se explica como crear un teclado custom para tener simplemente números y coma decimal. En esta misma página y nada más empezar a leer se nos comunica que en la versión 4.1 del SDK para iOS ya existe un keyboard especial que se dedica a estos menesteres.

Al estar desarrollando con el SDK 4.0 decidimos que lo más conveniente era instalar el nuevo SDK y utilizar el ya implementado teclado antes de desarrollar uno custom.

Dicho y hecho, descargamos desde la web de desarrolladores de Apple el nuevo SDK, e instalamos. Al abrir nuestro proyecto nos encontramos con un par de errores. El primero era que el proyecto estaba definido para Base SDK Missing y al intentar compilar daba un error diciendo:

base sdk missing there is no sdk with the name iphoneos4.0

Por lo visto el proyecto estaba apuntado todavía al SDK 4.0 cuando el programa de instalación de la 4.1 sobreescribe el 4.0 y lo borra del mapa. Lo que hay que hacer para solucionar esto es acceder a Project / Edit Projet Settings y una vez en la ventana de configuración cambiar la entrada Base SDK a IOS Device 4.1.

Una vez corregido este error y al intentar compilar se nos mostraba el siguiente error:

Code Sign error: The identity ‘iPhone Developer’ doesn’t match any valid certificate/private key pair in the default keychain

Parece ser que si pones como Base del SDK a IOS Device 4.1, en la entrada Code Signing Identity de la configuración del proyecto te pone por defecto iPhone Developer. A no ser que te hayas apuntado a la red de desarrolladores de iOS no tendrás un certificado en tu keychain con lo que no podrás compilar. Para arreglar esto simplemente selecciona la opción Simulator en la barra principal de tu proyecto en Xcode, y ya te compilará sin problemas pudiendo utilizar las últimas funcionalidades del nuevo SDK.

Supersized

Para la última actualización que hice de la web de MUT Design querían que una imagen ocupara completamente la pantalla. Para esto me puse a buscar por internet algún plugin para jQuery dando con Supersized, un sencillo plugin que permite hacer precisamente esto.

Puse un div después de cada una de las imágenes para que, poniéndole un postion:absolute este quedara por encima de la imagen y pudiera ahí poner texto o lo que hiciera falta.

Una de las cosas que me llevó un poco de cabeza fue como saber si la pantalla con la que se estaba viendo la página era cuadrada o rectangular, ya que entonces la imagen debería de cambiar ya que su ratio también cambiaba. Para ello hice dos copias de las imágenes, unas con ratio 1280×960 y otras con ratio 1280×645. Luego mediante jQuery detecto el ratio a aplicar de acuerdo a la pantalla con la que se está visualizando la web, cargando unas imágenes u otras.

El código utilizado para realizar el cambio de las imágenes es este:

	var browserwidth = $(window).width();
	var browserheight = $(window).height();	

	var ratio = browserheight/browserwidth;
	if(ratio<=0.6) //WideScreen 0.5
	{
		$('#supersize a img').each(function()
		{
			var src = $(this).attr('src');
			src = src.replace('fondo/','fondo/ratio2/');
			$(this).attr('src',src);
		});
	}

En este código lo que hago es cambiar el atributo src de las imágenes haciendo que apunte a una imagen en un subdirectorio donde están las imágenes iniciales, con lo que dependiendo del ratio se cargan unas u otras.

jQuery Novice to Ninja

Hace unos tres meses, cuando España estaba jugando la semifinal de la copa del mundo, la gente de Sitepoint hizo una oferta en la que cada equipo estaba asociado a un libro en pdf y cuantas más fases pasaba el equipo, más barato era el libro, hasta que el equipo que ganaba el campeonato hacía que su libro fuera gratuito durante un dia.

El libro asociado a la selección española fue jQuery Novice to Ninja y yo me lo compré cuando España estaba en semifinales, con lo que pagué por el libro unos 8€. Al final resultó que me lo podía haber sacado gratis pero por 8€ valía la pena y realmente lo necesitaba y resultó ser una gran compra ya que es mi punto de referencia en cuanto a jQuery se refiere.

Ayer estaba haciendo una cosa con la web de Rethink Marketing y me puse a buscar por internet. Di con una página que es el libro en pdf tal cual. Te lo puedes bajar si tienes cuenta en scribd.com. No se si será legal ni cuanto tiempo durará pero merece la pena hacerse una cuenta. Además te ahorras los 29.95$ que cuesta en pdf…

http://www.scribd.com/doc/38198961/2010-jQuery-novice-to-Ninja-1

Un pedazo de libro de jQuery online y gratuito. Que más se puede pedir…

@font-face kits por FontSquirrel

Font Squirrel le da una vuelta de tuerca a lo que viene siendo la comunidad de páginas web que proporcionan fuentes gratuitas y que pueden utilizarse en proyectos comerciales.

Se les ha ocurrido, para facilitar el uso de las fuentes para diseño web, hacer kits para usar las fuentes con @font-face con las fuentes ya creadas en todos los formatos aplicables, tanto para los navegadores modernos como para internet explorer. Cada kit incluye, aparte de las fuentes un ejemplo de como usarlas en html y el fichero css que las carga.

Muy grandes estos de Font Squirrel.

Uhuru Labs

Ya estamos online!

Iniciamos, Alfredo y yo, una nueva andadura empresarial que esperemos nos lleve a buen puerto.

Sobran las ganas y la ilusión. Así es que manos a la obra!!!

Si quieres saber lo que es Uhuru Labs y a que pretendemos dedicarnos entra en nuestra web.