{"id":1288,"date":"2025-05-30T00:00:00","date_gmt":"2025-05-29T22:00:00","guid":{"rendered":"https:\/\/programaraciegas.net\/?p=1288"},"modified":"2025-05-18T07:57:15","modified_gmt":"2025-05-18T05:57:15","slug":"obtener-el-idioma-del-sistema-en-applescript","status":"publish","type":"post","link":"https:\/\/programaraciegas.net\/?p=1288","title":{"rendered":"Obtener el idioma del sistema en AppleScript"},"content":{"rendered":"<p>En algunos proyectos con AppleScript puede que queramos dar soporte a varios idiomas. La soluci\u00f3n inicial pasa por distribuir nuestro fichero de AppleScript adaptado a cada uno de los idiomas que queramos incluir en el proyecto. Esta soluci\u00f3n es poco eficiente e incrementa mucho el coste de mantenimiento.<\/p>\n<p>Pero si nuestro AppleScript pudiese detectar qu\u00e9 idioma necesita el usuario y se pudiera adaptar la selecci\u00f3n de cadenas de texto al idioma que necesitemos podr\u00edamos utilizar un \u00fanico fichero de AppleScript para todos los idioma.<\/p>\n<h2>Limitaciones y soluciones para identificar el idioma<\/h2>\n<p>En principio AppleScript no puede acceder a la informaci\u00f3n del sistema desde su propia librer\u00eda de comandos. Pero s\u00ed podemos usar otros entornos para acceder a dicha informaci\u00f3n.<\/p>\n<p>Por ejemplo, con el comando defaults tenemos acceso a mucha de la informaci\u00f3n del sistema. Si ejecutamos en la Terminal de MacOS el comando <em>defaults read NSGlobalDomain AppleLanguages<\/em> por la pantalla de la Terminal aparecer\u00e1 algo como:<\/p>\n<pre>(<br \/>\"es-ES\",<br \/>\"en-ES\"<br \/>)<\/pre>\n<p>Es un array o lista de los idiomas y regiones que tenemos instalado en nuestro sistema. Como buscamos obtener un resultado con el texto <em>es<\/em> que representa a Espa\u00f1ol debemos cortar todo el texto sobrante para quedarnos con ese primer elemento de la lista.<\/p>\n<p>Con el comando <strong>sed<\/strong> podemos realizar todas estas operaciones. Enlazando el comando defaults con sed podemos obtener lo que buscamos utilizando el comando:<\/p>\n<pre>defaults read NSGlobalDomain AppleLanguages | sed -n '2s\/[^a-zA-Z-]\/\/gp' | cut -d '-' -f1\u00a0<\/pre>\n<p>Al ejecutarlo en la Terminal aparecer\u00e1:<\/p>\n<pre>es<\/pre>\n<p>Ahora podemos <a href=\"https:\/\/programaraciegas.net\/?p=493\">utilizar un comando de Terminal en un AppleScript<\/a>.<\/p>\n<h2>Funci\u00f3n para AppleScript<\/h2>\n<p>Nuestra funci\u00f3n finalmente quedar\u00eda as\u00ed:<\/p>\n<pre>on getSystemLanguage()\n  \u00a0 return do shell script \"defaults read NSGlobalDomain AppleLanguages | sed -n '2s\/[^a-zA-Z-]\/\/gp' | cut -d '-' -f1\"\nend getSystemLanguage<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>En algunos proyectos con AppleScript puede que queramos dar soporte a varios idiomas. La soluci\u00f3n inicial pasa por distribuir nuestro fichero de AppleScript adaptado a cada uno de los idiomas que queramos incluir en el proyecto. Esta soluci\u00f3n es poco eficiente e incrementa mucho el coste de mantenimiento. Pero si nuestro AppleScript pudiese detectar qu\u00e9 &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/programaraciegas.net\/?p=1288\" class=\"more-link\">Continuar leyendo<span class=\"screen-reader-text\"> \u00abObtener el idioma del sistema en AppleScript\u00bb<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[80,6],"tags":[83,87],"class_list":["post-1288","post","type-post","status-publish","format-standard","hentry","category-applescript","category-programacion","tag-applescript-2","tag-programacion-2"],"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/programaraciegas.net\/index.php?rest_route=\/wp\/v2\/posts\/1288","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/programaraciegas.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/programaraciegas.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/programaraciegas.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/programaraciegas.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1288"}],"version-history":[{"count":0,"href":"https:\/\/programaraciegas.net\/index.php?rest_route=\/wp\/v2\/posts\/1288\/revisions"}],"wp:attachment":[{"href":"https:\/\/programaraciegas.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1288"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/programaraciegas.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1288"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/programaraciegas.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1288"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}