From eaa65c529893a0839166a8c793ab5e4c5d4d24ca Mon Sep 17 00:00:00 2001 From: carlosjml4 Date: Mon, 16 Jun 2014 11:01:53 -0500 Subject: [PATCH] traduccion capitulo 10 --- eBook/10.0.md | 19 +++++++++--------- eBook/10.1.md | 55 ++++++++++++++++++++++++++------------------------- eBook/10.2.md | 43 ++++++++++++++++++++-------------------- eBook/10.3.md | 41 +++++++++++++++++++------------------- eBook/10.4.md | 4 ++-- 5 files changed, 80 insertions(+), 82 deletions(-) diff --git a/eBook/10.0.md b/eBook/10.0.md index 72ccd8f..ce8bf48 100644 --- a/eBook/10.0.md +++ b/eBook/10.0.md @@ -1,21 +1,20 @@ -# 10 Internationalization and localization +# 10 Internacionalización y localización -In order to adapt to globalization, as a developer, we need to develop a multilingual, international Web applications. -This means the same page in a different language environment need to show a different effect. For example, the application at runtime according to the request from the geographical and language differences and display a different user interface. Thus, when an application needs to add support for a new language, the need to modify the application code, just add language packs can be realized. +Con el fin de adaptarse a la globalización, como desarrollador, tenemos que desarrollar un multilingües aplicaciones web internacionales. Esto significa que la misma página en un entorno de idioma distinto necesita demostrar un efecto diferente. Por ejemplo, la aplicación en tiempo de ejecución de acuerdo con la solicitud de las diferencias geográficas y lingüísticas y mostrar una interfaz de usuario diferente. Así, cuando una aplicación necesita para añadir soporte para un nuevo idioma, la necesidad de modificar el código de la aplicación, sólo tiene que añadir paquetes de idiomas puede ser observada. -Internationalization and Localization (usually expressed as i18n and L10N), internationalization is an area designed for the reconstruction program to enable it to use in more areas, localization refers to a face international programs to increase support for the new region. +Internacionalización y Localización (generalmente expresado como i18n y L10N), la internacionalización es un área diseñada para el programa de reconstrucción para que pueda utilizar en más zonas, la localización se refiere a una cara programas internacionales para aumentar el apoyo a la nueva región. -Currently, Go language standard package does not provide i18n support, but there are some relatively simple third-party implementations of this chapter we will achieve a go-i18n library to support the Go language i18n. +Actualmente, Go paquete estándar del lenguaje no ofrece soporte i18n, pero hay algunas implementaciones relativamente simples de terceros de este capítulo vamos a lograr una biblioteca go-i18n para apoyar la i18n lenguaje Go. -The so-called International: is based on a specific locale information, extracted with the corresponding string or some other things (such as time and currency format) and so on. This involves three issues: +El llamado Internacional: se basa en una información de configuración regional específica, se extrajo con la cadena correspondiente o algunas otras cosas (tales como el tiempo y formato de moneda) y así sucesivamente. Esto implica tres cuestiones: -1. how to determine the locale. +1. cómo determinar la configuración regional. -2. how to save the string associated with the locale or other information. +2. cómo guardar la cadena asociada a la configuración regional o de otra información. -3. how to extract according to locale strings and other appropriate information. +3. cómo extraer de acuerdo a las cadenas de localización y otra información apropiada. -In the first section, we will describe how to set the correct locale in order to allow access to the site's users to get their language corresponding page. The second section describes how to handle or store strings, currency, time, date and other locale related information, and the third section describes how to achieve international sites, namely, how to return different depending on locale appropriate content. Through these three sections of the study, we will get a full i18n program. +En la primera sección, describiremos cómo establecer la configuración regional correcta con el fin de permitir el acceso a los usuarios del sitio para obtener su página correspondiente idioma. La segunda sección describe cómo manejar o almacenar cadenas, moneda, hora, fecha y otra información relacionada con la configuración regional, y la tercera sección se describe la forma de lograr un sitio, es decir, cómo devolver diferente según la zona de contenido apropiado. A través de estas tres secciones de estudio, vamos a conseguir un programa i18n completo. ## Links diff --git a/eBook/10.1.md b/eBook/10.1.md index b31239d..3d375ee 100644 --- a/eBook/10.1.md +++ b/eBook/10.1.md @@ -1,27 +1,27 @@ # 10.1 Time zone -## What is the Locale +## Cuál es la configuración regional -Locale is a set of descriptors in the world in a particular region and language habits text format collection of settings. locale name is usually composed of three parts: The first part is a mandatory, which means that the language abbreviation, such as "en" for English or "zh" represents Chinese. The second part, followed by an underscore, the country is an optional specifier, speak the same language is used to distinguish between different countries, such as "en_US" for U.S. English, and "en_UK" represents British English. The last part, followed by a period after the optional character set specifiers, such as "zh_CN.gb2312" said the Chinese use the gb2312 character set. +Locale es un conjunto de descriptores en el mundo de una región en particular y los hábitos lingüísticos de texto colección formato de configuración. nombre de entorno se compone normalmente de tres partes: La primera parte es un sistema obligatorio, lo que significa que la abreviatura del idioma, como por ejemplo "en" para Inglés o "zh" representa chino. La segunda parte, seguido de un guión, el país es un especificador opcional, hablan el mismo idioma se utiliza para distinguir entre los diferentes países, como "en_US" para EE.UU. Inglés, y "es_ES" representa Inglés británico. La última parte, seguido de un punto después de los especificadores de conjunto de caracteres opcionales, tales como "zh_CN.gb2312" dijo que los chinos utilizan el conjunto de caracteres GB2312. -GO language defaults to "UTF-8" encoding set, so we realize i18n does not consider the third part, then we have adopted the locale description of the previous two sections as i18n standard locale name. +GO lenguaje predeterminado a "UTF-8" conjunto de codificación, por lo que nos damos cuenta de i18n no considera que la tercera parte, entonces hemos adoptado la descripción escenario de las dos secciones anteriores como i18n nombre de entorno estándar. -> On Linux and Solaris systems can `locale -a` command lists all supported regional name, the reader can see these areas naming names. For BSD and other systems, there is no locale command, but the regional information is stored in `/usr/share/locale`. +> En los sistemas Linux y Solaris pueden locale-a comando lista todos los nombres de la región con el apoyo, el lector puede ver estas áreas a dar nombres. Para BSD y otros sistemas, no hay comando locale, pero la información regional se almacena en `/usr/share/locale`. -## Set the Locale +## Establecer la configuración regional -With the face of the locale definition, then we need according to the user's information( access to information, personal information, access to domain names, etc.) to set the associated locale, we can use the following several ways to set the user's locale. +Con la cara de la definición del entorno regional, entonces tenemos que de acuerdo a la información del usuario (acceso a la información, la información personal, el acceso a los nombres de dominio, etc) para establecer la configuración regional asociada, podemos utilizar las siguientes varias formas de establecer la configuración regional del usuario . -### Set Locale by domain name +### Establezca la configuración regional por su nombre de dominio -Set Locale way this is used when the application is running domain hierarchical manner, for example, we have adopted as our English www.asta.com station( the default station), and the domain name www.asta.cn as a Chinese station. By application of this domain name and set up inside the correspondence between the respective locale, you can set up regions. This treatment has several advantages: +Establecer modo de configuración regional se utiliza cuando la aplicación se está ejecutando de forma jerárquica de dominio, por ejemplo, hemos adoptado como nuestro Inglés www.asta.com estación (la estación por defecto), y el nombre de dominio www.asta.cn como estación china. Por aplicación de este nombre de dominio y establecer dentro de la correspondencia entre la respectiva localidad, usted puede configurar regiones. Este tratamiento tiene varias ventajas: -- Via a URL can be very distinctive identification -- Users can be very intuitive to know the domain name will be visiting the site in that language -- Go program is implemented in a very simple and convenient, can be achieved through a map -- Conducive to search engine crawlers can improve the site's SEO +- A través de una URL puede ser muy distintivo de identificación +- Los usuarios pueden ser muy intuitivo para saber el nombre de dominio va a visitar el sitio en este idioma +- Vaya programa es implementado de una manera muy simple y conveniente, se puede lograr a través de un map +- Propicio para buscar rastreadores de motores puede mejorar la vida del sitio SEO -We can use the following code to implement a corresponding domain name locale: +Podemos utilizar el siguiente código para implementar una configuración regional correspondiente nombre de dominio: if r.Host == "www.asta.com" { i18n.SetLocale("en") @@ -31,7 +31,7 @@ We can use the following code to implement a corresponding domain name locale: i18n.SetLocale("zh-TW") } -Of course, in addition to the entire domain settings outside the region, we can also be set through the sub-domain areas, such as "en.asta.com" for English sites, "cn.asta.com" indicates Chinese site. Realization of the code is as follows: +Por supuesto, además de la configuración del dominio enteras fuera de la región, que también puede ser ajustada a través de las áreas sub-dominio, como "en.asta.com" para sitios en inglés, "cn.asta.com" indica el sitio chino. Realización del código es el siguient prefix:= strings.Split(r.Host,".") @@ -43,25 +43,25 @@ Of course, in addition to the entire domain settings outside the region, we can i18n.SetLocale("zh-TW") } -Locale setting by domain name as shown above advantages, but we generally do not develop Web applications, when used in this way, because first of all domain names cost is relatively high, the development of a Locale need a domain name, and often the name of the domain does not necessarily uniform apply to, and secondly we do not want to go to each site localization of a configuration, but more is to use the url method with parameters, see the following description. +Configuración de Región por nombre de dominio, como se muestra más arriba ventajas, pero por lo general no desarrollamos aplicaciones Web, cuando se usa de esta manera, porque en primer lugar el costo nombres de dominio es relativamente alto, el desarrollo de un Locale necesita un nombre de dominio, ya menudo el nombre del dominio no necesariamente uniforme se aplica a, y en segundo lugar que no quiero ir a cada sitio de la localización de una configuración, pero más es utilizar el método de URL con parámetros, vea la siguiente descripción. -### Locale parameter settings from the domain name +### Configuración de los parámetros de configuración regional del nombre de dominio -The most common way is to set the Locale to bring inside in the URL parameters, such `www.asta.com/hello?locale=zh` or `www.asta.com/zh/hello`. So that we can set the region: `i18n.SetLocale(params["locale"])`. +La forma más común es establecer la configuración regional para que dentro de los parámetros de la URL, tales www.asta.com/hello?locale=zh o www.asta.com / zh / hola . Para que podamos establecer la región: `i18n.SetLocale(params["locale"])`. -This setup has almost speaking in front of the domain name Locale setting all the advantages, it uses a RESTful way, so we do not need to add additional methods to deal with. However, this approach requires a link inside each one corresponding increase in the parameter locale, this may be a bit complicated and sometimes quite cumbersome. However, we can write a generic function that url, so that all the link addresses are generated through this function, then this function which increases `locale = params [" locale "]` parameter to alleviate it. +Esta configuración se ha casi hablar delante del nombre de dominio estableciendo todas las ventajas de configuración regional, utiliza de manera RESTful, por lo que no es necesario añadir métodos adicionales para hacer frente a. Sin embargo, este enfoque requiere un enlace dentro de cada uno incremento en el parámetro de configuración regional correspondiente, esto puede ser un poco complicado y, a veces bastante engorroso. Sin embargo, podemos escribir una función genérica que url, para que todas las direcciones de enlace se generan a través de esta función, esta función que aumenta `locale = params [" locale "]` parámetro para aliviarlo -Maybe we want to look more RESTful URL address that, for example: `www.asta.com/en/books` (English site) and `www.asta.com/zh/books` (Chinese site), this approach is more conducive to the URL SEO, but also more friendly for the user, can be accessed through the URL of the site that intuitive. Then such a URL address to get through router locale(reference section which describes the router REST plug-in implementation): +Tal vez queremos ver la dirección URL más reparador que, por ejemplo: `www.asta.com/en/books` (English site) and `www.asta.com/zh/books` (Chinese site), este enfoque es más propicio para el URL SEO, pero también más amigable para el usuario, se puede acceder a través de la dirección URL del sitio que intuitivo. A continuación, una dirección URL similar a conseguir a través de la configuración regional router (sección de referencia que describe el RESTO del router plug-in de aplicación): mux.Get("/:locale/books", listbook) -### From the client settings area +### Desde el área de configuración del cliente -In some special cases, we need the client's information rather than through the URL to set Locale, such information may come from the client to set the preferred language( the browser settings), the user's IP address, the user at the time of registration fill the location information. This approach is more suitable for Web -based applications. +En algunos casos especiales, necesitamos la información del cliente en lugar de a través de la URL para establecer la configuración regional, dicha información puede provenir del cliente para definir el idioma preferido (los ajustes del navegador), la dirección IP del usuario, el usuario en el momento de llenar el registro la información de ubicación. Este enfoque es más adecuado para las aplicaciones basadas en Web. - Accept-Language -When a client requests information in the HTTP header there `Accept-Language`, clients will generally set this information, the following is the Go language to achieve a simple `Accept-Language` under implementation sets the region code: +Cuando un cliente solicita información en el encabezado HTTP no Accept-Language , los clientes generalmente se establezca esta información, el siguiente es el lenguaje Go para lograr una sencilla Accept-Language en fase de ejecución establece el código de la región: AL := r.Header.Get("Accept-Language") if AL == "en" { @@ -72,18 +72,19 @@ When a client requests information in the HTTP header there `Accept-Language`, c i18n.SetLocale("zh-TW") } -Of course, in practical applications, it may require more rigorous judgment to be set area +Por supuesto, en las aplicaciones prácticas, puede requerir un juicio más riguroso que se establezca zona + - IP Address -Another set of the client area is the user access IP, we according to the corresponding IP library, corresponding to the IP access to areas of the world that is more commonly used GeoIP Lite Country this library. This setting regional mechanism is very simple, we only need to check the user's IP IP database and then return to the country regions, according to the results returned by setting the corresponding regions. +Otro conjunto del área de cliente es la IP de acceso de usuario, de acuerdo a la biblioteca IP correspondiente, que corresponde a la IP de acceso a las zonas del mundo que se utiliza más comúnmente GeoIP Lite País esta biblioteca. Este mecanismo de configuración regional es muy simple, sólo tenemos que comprobar la base de datos de IP IP del usuario y luego regresar a las regiones de los países, de acuerdo con los resultados devueltos por el establecimiento de las regiones correspondientes. - User profile -Of course, you can also let users provide you with drop-down menus or whatever way set the appropriate locale, then we have the information entered by the user, it is saved to the account associated with the profile, when the user login again, this time to set up replicated to the locale setting, so that you can guarantee that every time the user accesses are based on their previously set locale to get the page. +Por supuesto, también puede permitir que los usuarios le proporcionan menús desplegables o cualquier forma que establezca la configuración regional adecuada, entonces tenemos la información introducida por el usuario, se guarda en la cuenta asociada con el perfil, cuando el usuario entre de nuevo, este tiempo para crear replicado con la configuración local, de modo que usted puede garantizar que cada vez que los accesos de los usuarios se basan en su configuración regional establecida previamente para obtener la página. -## Summary +## Resumen -Through the above description shows that you can set the Locale There are many ways that we should be selected according to the different needs of different settings Locale way to allow a user to its most familiar way to get the services we provide, improve application user friendliness. +A través de la descripción anterior demuestra que se puede establecer la configuración regional Hay muchas maneras en las que deben ser seleccionados de acuerdo a las diferentes necesidades de los diferentes ajustes de modo de configuración regional para permitir a un usuario a su forma más familiar para obtener los servicios que ofrecemos, mejorar la facilidad de uso de aplicaciones . ## Links diff --git a/eBook/10.2.md b/eBook/10.2.md index 40baa85..1c1fe43 100644 --- a/eBook/10.2.md +++ b/eBook/10.2.md @@ -1,10 +1,10 @@ -# 10.2 Localized Resources +# 10.2 Recursos localizados -The previous section we describe how to set Locale, Locale set then we need to address the problem is how to store the information corresponding to the appropriate Locale it? This inside information includes: text messages, time and date, currency values ​​, pictures, include files, and view other resources. So then we are talking about information on eleven of these are described, Go language we put these information is stored in JSON format, and then through the appropriate way to show it. (Followed by Chinese and English contrast for example, the storage format en.json and zh-CN.json) +En la sección anterior describimos cómo establecer la configuración regional, configuración regional establecida entonces tenemos que abordar el problema es cómo almacenar la información correspondiente a la configuración regional apropiada que? Esta información privilegiada incluye: mensajes de texto, fecha y hora, valores de moneda, imágenes, archivos de inclusión y ver otros recursos. Así que estamos hablando de información sobre las once de ellos se describen, Go idioma ponemos esta información se almacena en formato JSON, y luego a través de la forma adecuada para demostrarlo. (Seguido por el contrario Chino e Inglés, por ejemplo, el formato de almacenamiento en.json y zh-CN.json) -## Localized text messages +## Mensajes de texto localizados -This information is most commonly used for writing Web applications, but also localized resources in the most information, you want to fit the local language way to display text information, a feasible solution is: Create a map corresponding to the language needed to maintain a key-value relationship, before the output needed to go from a suitable map for the corresponding text in the following is a simple example: +Esta información se utiliza con mayor frecuencia para la escritura de aplicaciones Web, pero también los recursos localizados en la mayoría de la información, que desea para adaptarse a la forma en idioma local para mostrar información de texto, una solución factible es: Crear un mapa correspondiente al idioma necesario para mantener una tecla -valor de la relación, antes de la salida necesaria para pasar de un mapa adecuado para el texto correspondiente en el siguiente es un ejemplo sencillo: package main @@ -36,26 +36,25 @@ This information is most commonly used for writing Web applications, but also lo return "" } -The above example demonstrates a different locale text translation to achieve the Chinese and English for the same key display different language implementation, to achieve the above Chinese text message, if you want to switch to the English version, just need to set to en lang. +El ejemplo anterior demuestra una traducción diferente texto locale para lograr los chinos e Inglés para la misma aplicación idioma de visualización de teclas, para conseguir el mensaje de texto en chino arriba, si usted quiere cambiar a la versión en Inglés, sólo tiene que ajustar a es lang. -Sometimes only a key-value substitution is not meet the need, for example, "I am 30 years old", Chinese expression "I am 30 years old," and where 30 is a variable, how to do it? This time, we can combine `fmt.Printf` function to achieve, see the following code: +A veces, sólo un cambio de clave y valor no se cumple con la necesidad, por ejemplo, "tengo 30 años", expresión china "Tengo 30 años", y donde el 30 es una variable, cómo hacerlo? Esta vez, podemos combinar fmt.Printf función de lograr, consulte el siguiente código: en["how old"] = "I am %d years old" cn["how old"] = "我今年%d岁了" fmt.Printf(msg(lang, "how old"), 30) -The above example code is only to demonstrate the internal implementations, but the actual data is stored in the JSON inside, so we can `json.Unmarshal` to populate the data for the corresponding map. +El código de ejemplo anterior es sólo para demostrar las implementaciones internas, pero los datos reales se almacena en el JSON dentro, por lo que podemos json.Unmarshal para rellenar los datos del map correspondiente. -## Localized date and time +## Fecha y hora localizada -Because the relationship between time zones, the same time, in different regions, which means that is not the same, but because of the relationship between Locale and time formats are not the same, for example, Chinese environment may be displayed: -`October 24, 2012 Wednesday 23:11 minutes and 13 seconds CST`, while in the English environment may show: `Wed Oct 24 23:11:13 CST 2012`. That which we need to address two points: +Dado que la relación entre las zonas horarias, al mismo tiempo, en las diferentes regiones, lo que significa que no es la misma, pero debido a la relación entre la configuración regional y de los formatos de hora no son lo mismo, por ejemplo, el medio ambiente de China puede aparecer: 24 de octubre de 2012 Miércoles 23:11 minutos y 13 segundos CST , mientras que en el entorno de Inglés puede mostrar: Mié 24 Oct 23:11:13 CST 2012 Lo que tenemos que abordar dos puntos.: -1. time zones -2. formatting issues +1. zonas horarias +2. problemas de formatos -`$GOROOT/lib/time/package/timeinfo.zip` contain locale corresponds to the time zone definition, in order to obtain a time corresponding to the current locale, we should first use `time.LoadLocation (name string)` Get the region corresponding to the locale, such as `Asia/Shanghai` or `America/Chicago` corresponding to the time zone information, and then use this information to call the `time.Now` time object obtained collaborate to get the final time. Detailed Look at the following example (this example uses the example above, some of the variables): +`$GOROOT/lib/time/package/timeinfo.zip` contener escenario corresponde a la definición de zona horaria, con el fin de obtener un tiempo correspondiente a la localización actual, debemos usar primero time.LoadLocation (string nombre) Obtener la región correspondiente a la configuración regional, como Asia / Shanghai o America / Chicago correspondiente a la información de zona horaria y, a continuación, utilizar esta información para llamar a time.Now objeto tiempo obtenido colaborar para obtener el tiempo final. Vista Detallada del siguiente ejemplo (este ejemplo utiliza el ejemplo anterior, algunas de las variables): en["time_zone"] = "America/Chicago" cn["time_zone"] = "Asia/Shanghai" @@ -65,7 +64,7 @@ Because the relationship between time zones, the same time, in different regions t = t.In(loc) fmt.Println(t.Format(time.RFC3339)) -We can handle text format similar way to solve the problem of time format, for example as follows: +Podemos manejar formato de texto de forma similar a resolver el problema de formato de hora, por ejemplo de la siguiente manera: en["date_format"]="%Y-%m-%d %H:%M:%S" cn["date_format"]="%Y年%m月%d日 %H时%M分%S秒" @@ -81,9 +80,9 @@ We can handle text format similar way to solve the problem of time format, for e //%d replaced by 24 } -## Localized currency value +## Valor de la moneda localizada -Various regions of the currency is not the same, is also treated with a date about the details see the following code: +Varias regiones de la moneda no es el mismo, también se trata con una fecha acerca de los detalles, véase el siguiente código: en["money"] ="USD %d" cn["money"] ="¥%d元" @@ -95,9 +94,9 @@ Various regions of the currency is not the same, is also treated with a date abo } -## Localization views and resources +## Vistas de localización y recursos -We may use Locale to show different views that contain different images, css, js and other static resources. So how to deal with these information? First we shall locale to organize file information, see the following file directory Arrangement: +Podemos utilizar la configuración regional para mostrar diferentes vistas que contienen diferentes imágenes, css, js y otros recursos estáticos. Entonces, ¿cómo hacer frente a estas informaciones? En primer lugar vamos a la configuración regional para organizar la información de archivos, consulte el siguiente Acuerdo de directorio de archivos: views |--en //English Templates @@ -113,7 +112,7 @@ We may use Locale to show different views that contain different images, css, js index.tpl login.tpl -With this directory structure we can render to realize where this code: +Con esta estructura de directorios que podemos rendir a darse cuenta de dónde este código: s1, _ := template.ParseFiles("views" + lang + "index.tpl") VV.Lang = lang @@ -128,11 +127,11 @@ As for the inside of the resources inside the index.tpl set as follows: // Picture files -With this view, and the way to localize the resources, we can easily be expanded. +Con este punto de vista, y la manera de localizar los recursos, se puede ampliar fácilmente. -## Summary +## Resumen -This section describes how to use and store local resources, sometimes through the conversion function to achieve, sometimes through lang to set up, but eventually through key-value way to store Locale corresponding data when needed remove the corresponding Locale information, if it is a text message directly to the output, if it is the date and time or money, you need to pass `fmt.Printf` or other formatting function to deal with, and for different views and resources Locale is the most simple, as long as increase in the path which can be achieved lang. +En esta sección se describe cómo utilizar y almacenar los recursos locales, a veces a través de la función de conversión de conseguir, a veces a través lang de configurar, pero con el tiempo a través de forma clave-valor para almacenar los datos cuando sea necesario Locale corresponde eliminar la información de la configuración regional correspondiente, si se trata de un mensaje de texto directamente a la salida, si es la fecha y la hora o el dinero, tiene que pasar fmt.Printf u otra función de formateo de tratar, y para los diferentes puntos de vista y los recursos de configuración regional es la más simple, siempre y cuando el aumento de la ruta de acceso que se puede lograr Lang. ## Links diff --git a/eBook/10.3.md b/eBook/10.3.md index b57a820..18caf10 100644 --- a/eBook/10.3.md +++ b/eBook/10.3.md @@ -1,10 +1,9 @@ -# 10.3 International sites +# 10.3 Páginas internacionales: +Sección anterior describe cómo manejar los recursos localizados, es decir, una configuración regional de los archivos de configuración correspondientes, por lo que si se trabaja con múltiples recursos localizados? Por ejemplo, algunos de nuestros equipos de frecuencia: la simple traducción del texto, fecha y hora, número, etc Si manejarlo? Esta sección once resolver estos problemas.. -Previous section describes how to handle localized resources, namely Locale an appropriate configuration files, so if dealing with multiple localized resources? For example, some of our frequently used: simple text translation, time and date, number, etc. If handle it? This section eleven solve these problems. +## Gestione local del paquete múltiple -## Manage multiple local package - -In the development of an application, the first thing we have to decide whether to support only one language, or languages, if you want to support multiple languages, we will need to develop an organizational structure to facilitate future to add more languages ​​. Here we designed as follows: Locale -related files are placed in the `config/locales`, suppose you want to support Chinese and English, then you need to be placed in this folder en.json and zh.json. Probably the contents are as follows: +En el desarrollo de una aplicación, lo primero que tenemos que decidir si apoyar un solo idioma, o idiomas, si usted quiere apoyar a varios idiomas, se tendrá que desarrollar una estructura organizativa para facilitar el futuro para añadir más idiomas. Aquí hemos diseñado de la siguiente manera: Los archivos relacionados con el entorno nacional estén colocados en los config / locales , supongamos que usted quiere apoyar Chino e Inglés, entonces usted necesita para ser colocado en esta carpeta y en.json zh.json. Probablemente los contenidos son los siguientes: # zh.json @@ -24,12 +23,12 @@ In the development of an application, the first thing we have to decide whether } } -In order to support internationalization, in which we used an international related packages - [go-i18n](https://github.com/astaxie/go-i18n) ( ***More advanced i18n package can be found [here](https://github.com/beego/i18n)*** ), we first go-i18n package to register `config/locales` this directory, to load all of the locale files +Con el fin de apoyar la internacionalización, en el que se utilizó un paquetes relacionados internacionales - [go-i18n](https://github.com/astaxie/go-i18n) ( ***More advanced i18n package can be found [here](https://github.com/beego/i18n)*** ),lo primero que vamos-i18n paquete para registrar config/locales este directorio, para cargar todos los archivos de configuración regional Tr := i18n.NewLocale() Tr.LoadPath("config/locales") -This package is simple to use, you can be tested by the following method: +Este paquete es fácil de usar, puede ser examinado por el siguiente método: fmt.Println (Tr.Translate ("submit")) //Output Submit @@ -43,9 +42,9 @@ fmt.Println (Tr.Translate ("submit")) fmt.Println(Tr.Translate("submit")) //Outputs "递交" -## Automatically load local package +## Cargar automáticamente el paquete locales -Above we described how to automatically load custom language packs, in fact, go-i18n library has been a lot of pre-loaded default formatting information, such as time format, currency format, the user can customize the configuration override these default configurations, see the following process: +Arriba describimos cómo cargar automáticamente los paquetes de idioma de encargo, de hecho, la biblioteca go-i18n ha habido un montón de información de formato por defecto pre-cargado, como el formato de tiempo, formato de moneda, el usuario puede personalizar la configuración de anulación estas configuraciones predeterminadas, consulte el siguiente proceso: //Load the default configuration files, which are placed below `go-i18n/locales` @@ -91,7 +90,7 @@ Above we described how to automatically load custom language packs, in fact, go- return nil } -Through the above method to load configuration information to the default file, so that we can customize the time we do not have information when executed the following code to obtain the corresponding information: +A través del método anterior para cargar la información de configuración en el archivo por defecto, de manera que podamos personalizar el tiempo que no tenemos información de cuando se ejecuta el código siguiente para obtener la información correspondiente: //locale = zh, execute the following code: @@ -106,11 +105,11 @@ Through the above method to load configuration information to the default file, ## Template mapfunc -Above we achieve a number of language packs and load management, and some function implementation is based on the logical layer, for example: "Tr.Translate", "Tr.Time", "Tr.Money" and so on, while we at the logical level You can use these functions to the parameters required for conversion when rendering the template layer output directly, but if we want to use them directly in the template layer functions that how to achieve it? I do not know if you remember, at the time said earlier template: Go language template support custom template function, the following is our implementation to facilitate the operation of mapfunc: +Por encima se consigue un número de paquetes de idioma y gestión de la carga, y algunos implementación de la función se basa en la capa lógica, por ejemplo: "Tr.Translate", "Tr.Time", "Tr.Money" y así sucesivamente, mientras que en el nivel lógico Usted puede utilizar estas funciones para los parámetros necesarios para la conversión al representar la salida de capa de plantilla directamente, pero si queremos utilizarlas directamente en las funciones de la capa de plantilla que la forma de lograrlo? No sé si usted recuerda, en el momento, dijo a principios de plantilla: Ir soporte de plantillas de idioma función de plantilla personalizada, el siguiente es nuestra aplicación para facilitar la operación de mapfunc: -1 text information +1 información de texto -Text information call `Tr.Translate` to achieve the appropriate information conversion, mapFunc is implemented as follows: +La información de texto llamada Tr.Translate para lograr la conversión de la información adecuada, mapFunc se implementa de la siguiente manera: func I18nT(args ...interface{}) string { ok := false @@ -124,18 +123,18 @@ Text information call `Tr.Translate` to achieve the appropriate information conv return Tr.Translate(s) } -Registration function is as follows: +Registration function de la siguiente manera t.Funcs(template.FuncMap{"T": I18nT}) -Using the following template: +usando la siguiente plantilla: {{.V.Submit | T}} -2. The date and time +2. la fecha y la hora -Date and time to call `Tr.Time` function to achieve the appropriate time for a change, mapFunc is implemented as follows: +Fecha y hora de llamar Tr.Time función de lograr el momento apropiado para un cambio, mapFunc se implementa de la siguiente manera: func I18nTimeDate(args ...interface{}) string { ok := false @@ -157,9 +156,9 @@ Using the following template: {{.V.Now | TD}} -3 Currency Information +3 Moneda Información -Currency called `Tr.Money` function to achieve the appropriate time for a change, mapFunc is implemented as follows: +Moneda llama Tr.Money función de lograr el momento apropiado para un cambio, mapFunc se implementa de la siguiente manera: func I18nMoney(args ...interface{}) string { ok := false @@ -181,9 +180,9 @@ Using the following template: {{.V.Money | M}} -## Summary +## Resumen -Through this section we know how to implement a multi-language package for Web applications, through a custom language packs that we can facilitate the realization of multi-language, but also through the configuration file can be very convenient to expand multi-language, by default, go-i18n will be self- fixed load some common configuration information, such as time, money, etc., we can be very convenient to use, and in order to support the use of these functions in the template, but also to achieve the appropriate template functions, thus allowing us to develop Web applications in the time directly in the template the way through the pipeline operate multiple language packs. +A través de esta sección sabemos cómo implementar un paquete multi-idioma para aplicaciones web, a través de unos paquetes de idiomas a medida que podamos facilitar la realización de varios idiomas, pero también a través del archivo de configuración puede ser muy conveniente para expandir en varios idiomas, por De forma predeterminada, vaya-i18n será auto-fijo carga la información de configuración comunes, como el tiempo, el dinero, etc, podemos estar muy cómodo de usar, y con el fin de apoyar el uso de estas funciones en la plantilla, pero también para lograr las funciones de plantilla adecuados, lo que nos permite desarrollar aplicaciones Web en el tiempo directamente en la plantilla de la forma a través de la tubería de operar varios paquetes de idioma.. ## Links diff --git a/eBook/10.4.md b/eBook/10.4.md index 522956c..343409b 100644 --- a/eBook/10.4.md +++ b/eBook/10.4.md @@ -1,6 +1,6 @@ -# 10.4 Summary +# 10.4 Resumen -Through the introduction of this chapter, the reader should be how to operate an insight into the i18n, I also introduced based on the contents of this chapter implements an open source solution for go-i18n: https://github.com/astaxie/go-i18n through this open source library that we can easily achieve multi-language version of the Web application, making our applications to easily achieve internationalization. If you find an error in this open source library or those missing places, please join to this open source project, let us strive to become the library Go's standard libraries. +A través de la introducción de este capítulo, el lector debe ser la forma de operar una idea de la i18n, también introdujo basándose en el contenido de este capítulo se implementa una solución de código abierto para el go-i18n: https://github.com/astaxie/ go-i18n través de esta biblioteca de código abierto que podemos lograr fácilmente la versión multi-idioma de la aplicación web, por lo que nuestras aplicaciones para lograr fácilmente la internacionalización. Si usted encuentra un error en esta biblioteca de código abierto o los lugares que faltan, por favor únase a este proyecto de código abierto, esforcémonos para convertirse bibliotecas estándar de la biblioteca de Go. ## Links