Formato con calendarios alternativos en Flex

Este artículo fue originalmente escrito en Inglés. Texto en otros idiomas fue proporcionada por la traducción automática.

Las fechas pueden ser formateados en varios calendarios en el SDK de Flex. Vamos a explorar cómo funciona.

Flex SDK le permite dar formato a una fecha dada en el "calendario alternativo", además del calendario gregoriano. La convención de la industria se refiere todos los calendarios no gregorianos como calendarios alternativos. Para utilizar un calendario alternativo, se requiere un poco de cuidado en su aplicación Flex.

Tipos de calendarios

Antes de profundizar en los usos calendario alternativo en el SDK de Flex, vamos a echar un breve vistazo a un par de calendarios. Tenga en cuenta, Sólo puedo describir los usos básicos de algunos calendarios alternativos comunes. Hay complejidades detrás de cada uno de los calendarios y no puede ser de forma explícita los. Investigar la piel.

Calendario gregoriano

Este es el calendario más sistemas ofrecen como estándar. Usted probablemente sabe que este calendario ya, pero aquí están algunas de las características: Siempre hay doce meses en un año y tiene cada mes 28 a 31 día. El número de días en cada uno de los meses son fijos (30 o 31 día) excepto para el segundo mes (Febrero), que incluye 28 (salto no años) o 29 día (los años bisiestos). El número de días en un año se fija (365 o 366 día).

Calendario islámico (Hijri calendario)

Calendario islámico es uno de los calendarios lunares. Siempre hay doce meses en un año. Cada mes tiene ei 29 o 30 día. Comienzo de un mes se determina mediante la observación de la fase lunar (Calendario religioso islámico). Debido a esta naturaleza, no es muy posible predecir la fecha con el calendario religioso islámico. Por razones de conveniencia, existe la variante del calendario, Calendario civil islámica, que determina las fechas a través de algún cálculo matemático puro. Calendario civil islámico puede no ser exacta para eventos religiosos. Número de días en un año 354 o 355 día. Por lo tanto, el año calendario islámico y el año calendario gregoriano no se sincronizan.

Del calendario japonés

Calendario japonés es muy similar con el calendario gregoriano. La diferencia es la parte era y el año. El calendario gregoriano se ha estado utilizando el nombre de la misma época en los últimos 2,000 años (AD; D. de JC). También hay BC (Antes de Cristo) años antes de Cristo era, pero no por el apoyo de casi todas las aplicaciones de calendario. Por otro lado, Los cambios del calendario japonés era el nombre cuando hay nuevo emperador. Por lo tanto, cada diez a una pareja de diez años, hay nuevas eras. *1

*1 Antes de que el 1868, los cambios de nombre de la era fueron más frecuentes, una era sólo duró tan bajo como dos años. Pero al igual que el BC en gregoriano, no hay mucha demanda para poder hacer frente a las épocas anteriores en el calendario de aplicación de hoy.

Hay varios tipos mucho más de los calendarios en el mundo, pero espero que se una idea de cómo pueden variar los calendarios.

Cómo usar los calendarios alternos en Flex SDK

Ahora echemos un vistazo a la utilización de calendarios alternativos. ¿Cómo se utiliza otro calendario que el gregoriano en el SDK de Flex? El uno.

Identificador de configuración regional, opcionalmente, puede contener etiqueta de calendario. Por ejemplo:

Identificador de configuración regional Significado
AR-SA Árabe utilizado en Arabia Saudita
AR-SA @ calendario islámico = Árabe utilizado en Arabia Saudita. Calendario islámico
en-US @ calendar = islámico Inglés utilizado en el U.S. Calendario islámico.

Cuando usted necesita para dar formato a una fecha en un calendario alternativo, la etiqueta del calendario se puede añadir a la ID local. He aquí un ejemplo:

import spark.formatters.DateTimeFormatter;
private function calendarDemo():void
{
    var d:Date = new Date(2011, 9, 15);
    var dtf:DateTimeFormatter = new DateTimeFormatter();
    dtf.dateStyle = "long";
    dtf.timeStyle = "none";
 
    dtf.setStyle("locale", "en-US");
    trace("(1) " + dtf.format(d));
 
    dtf.setStyle("locale", "ar-SA");
    trace("(2) " + dtf.format(d));
 
    dtf.setStyle("locale", "ja-JP");
    trace("(3) " + dtf.format(d));
 
    dtf.setStyle("locale", "en-US@calendar=islamic");
    trace("(4) " + dtf.format(d));
 
    dtf.setStyle("locale", "ar-SA@calendar=islamic");
    trace("(5) " + dtf.format(d));
 
    dtf.setStyle("locale", "en-US@calendar=japanese");
    trace("(6) " + dtf.format(d));
 
    dtf.setStyle("locale", "ja-JP@calendar=japanese");
    trace("(7) " + dtf.format(d));
}

Este es el resultado que puede obtener.

Tenga en cuenta que el resultado puede variar en función de las plataformas en tiempo de ejecución.

Limitaciones que deben ser conscientes de

Hay parejas a las limitaciones de la actual de Flash Player y SDK de Flex para apoyar calendario alternativo.

  1. La clase Date sólo puede manejar fechas gregorianas.
  2. La clase DateTimeFormatter chispa puede dar formato a un objeto Date, pero cuentan con el análisis (traducción de un formato gregoriano o no gregoriano cadena de fecha en un objeto Date) no está disponible. Inglés cadena de fecha gregoriana se puede analizar a través del constructor de la clase Fecha en algún grado.
  3. La disponibilidad de apoyo calendario alternativo y su comportamiento depende de la plataforma. Por favor, consulte la plataforma.

Si desea saber más acerca de calendarios alternativos, las entradas del calendario en la Wikipedia es una buena fuente.

Diferencia entre la alzadora Coincidencia Flex SDK y la alzadora clasificación

Este artículo fue originalmente escrito en Inglés. Texto en otros idiomas fue proporcionada por la traducción automática.

Flex SDK tiene dos tipos de alzadoras. ¿Sabe usted la diferencia?

Ante todo, permítanme explicar lo que es un clasificador. El Alzadoras Flex SDK son clases que se han diseñado para comparar dos cadenas. Comparar sus funciones devuelven un valor numérico para decir cuál de los dos puntos es mayor o menor.

He aquí un ejemplo:

<fx:Declarations>
    <s:SortingCollator id="c1"/>
    </fx:Declarations>
    <s:VGroup>
        <s:TextInput id="uiInput1" text="ABC"/>
        <s:TextInput id="uiInput2" text="ABC"/>
        <mx:Text id="uiOutput" text="{c1.compare(uiInput1.text, uiInput2.text)}"/>
    </s:VGroup>

Este ejemplo muestra 0 como el resultado de comparar por defecto. A medida que altera las entradas, el resultado se convierte en -1 si la primera entrada es menor o 1 si es mayor. Ver las capturas de pantalla por debajo de.

 width=

 width=

 width=

La diferencia en la clasificación

Ahora, vamos a hablar de las diferencias de Igualar y clasificar Alzadoras. En realidad, son esencialmente iguales, pero han dado algunos parámetros específicos iniciales colación bueno para que aparezca la cadena en general (MatchingCollator) o bien los parámetros para la clasificación general de cadena (SortingCollator). Siguiente ejemplo ilustra por qué dos alzadoras diferentes son útiles.

Suponga que tiene los siguientes elementos de la matriz. Desea ordenar los elementos y buscar una cadena específica de los elementos.

  • naïve
  • Naïve
  • NAÏVE
  • naive
  • Naive
  • NAIVE
  • adolescent
  • youthful

Si bien ordenar los elementos con un SortingCollator clase con “en_US” (Inglés se habla en EE.UU.) local, puede obtener un resultado después de clase.

  • adolescent
  • naive
  • Naive
  • NAIVE
  • naïve
  • Naïve
  • NAÏVE
  • youthful

Este ordenamiento tiene sentido para la mayoría de los usos. (Al menos eso es lo que hemos esperado.) Las letras minúsculas son lo primero en mayúsculas; letras sin acento en lo primero que tienen acento.

Por otro lado, si usted ordenar los elementos con un MatchingCollator, se obtiene el siguiente resultado. (Resultado puede variar ya que algunos atributos son ignorados.)

  • adolescent
  • Naïve
  • NAÏVE
  • naive
  • naïve
  • NAIVE
  • Naive
  • youthful

Usted puede notar que mayúsculas / minúsculas de pedidos y carácter con acento de pedidos no son consistentes con una MatchingCollator clase. De hecho, la MachingCollator la clase no está diseñado para la clasificación.

La diferencia en el juego

Ahora, Supongo que quiere buscar una cadena específica, “naive“, de la lista. Con una SortingCollator clase, se obtiene el siguiente resultado:

  • naive

Sí, sólo una cadena con un SortingCollator clase.

Por otro lado, con una MatchingCollator clase, se obtiene el siguiente resultado.

  • Naïve
  • NAÏVE
  • naive
  • naïve
  • NAIVE
  • Naive

Como se puede ver, la comparación de cadenas se hizo en forma más indulgente con MatchingCollator clase. A menudo, esta indulgencia es deseada en la búsqueda cadenas.

Aunque SortingCollator y MatchingCollator comportan de manera diferente como lo hemos visto más arriba, las clases son más o menos igual por debajo de. De hecho, se puede silenciar al otro hermano, estableciendo sus propiedades. Si necesita un control más detalles de la clasificación / juego comportamiento, también manipular las propiedades. Por favor, consulte las referencias Flex SDK para obtener más detalles.

Referencias

El programa de ejemplo utilizado en este artículo

<?xml version ="1.0" encoding ="UTF-8"?>
   <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
   >
   <fx:Declarations>
      <s:SortingCollator id ="sortingCollator" Local ="en_US"/>
      <s:MatchingCollator id ="matchingCollator" Local ="en_US"/>
      <s:Sort id ="sort"/>
      <s:ArrayCollection id ="arrayCollection" sort ="{tipo}" fuente ="{lista de palabras}"/>
   </fx:Declarations>
   <fx:Script>
      <![CDATA[
         private static const lista de palabras:= Array [
            "naïve", "Naïve", "NAÏVE",
            "naive", "Naive", "NAIVE",
            "adolescent", "youthful" ];
         private function setCollator(useSortingCollator:Boolean):void
         {
            const alzadora:Objeto = useSortingCollator ?
            sortingCollator : matchingCollator;
            sort.compareFunction = function (un:Objeto, b:Objeto, campos:Matriz):int
               { return collator.compare(un as Cadena, b as Cadena); }
            arrayCollection.refresh();
            uiResult.text = "Sort Result:\n" + arrayCollection.toString();
            uiResult.text += "\n\nStinrgs equal to 'naive' are:\n";
            for (var yo:uint = 0; yo < arrayCollection.length; yo)
            {
               if (!collator.compare(ArrayCollection[yo], "naive"))
               uiResult.text = ArrayCollection[yo] + "\n";
            }
         }
      ]]>
   </fx:Script>
   <s:VGroup paddingTop="20" paddingBottom="20"
         paddingLeft ="20" paddingRight ="20" height ="100%">
      <s:Button label ="Use SortingCollator" click ="setCollator(true)"/>
      <s:Button label ="Use MatchingCollator" click ="setCollator(false)"/>
      <s:TextArea id ="uiResult" height ="100%"/>
   </s:VGroup>
    </s:Application>

Las diferencias de los tres paquetes de la globalización en la plataforma Flash

Este artículo fue originalmente escrito en Inglés. Texto en otros idiomas fue proporcionada por la traducción automática.

Los desarrolladores que estén buscando a los comunicados de Flex SDK héroe di cuenta de que tenemos tres NumberFormatters (y otras relacionadas con la globalización las clases) en la Plataforma Flash. Si usted se pregunta por qué, aquí está la explicación.

La plataforma Flash tiene los siguientes conjuntos de la globalización relacionadas con las clases para los diferentes casos de uso.

  1. flash.globalization: Flash Player incorporado
  2. mx.formatters: Flex SDK MX espacio de nombres
  3. spark.formatters / validadores / globalización: Flex SDK chispa espacio de nombres

El paquete flash.globalization se implementa como código nativo en Flash Player. Al igual que con las clases de otros jugadores como Sprite, vincular contra playerglobal.swc o airglobal.swc usarlo. Este paquete es una adición reciente a Flash Player. Necesita Flash Player 10.1 o AIR 2.0 (o nuevas versiones de estos) y la versión correspondiente de playerglobal.swc o airglobal.swc. Que utilizar las características de la globalización que ofrece el sistema operativo subyacente en lugar de utilizar ResourceManager Flex. Por lo tanto se puede utilizar cualquier entorno local al que el sistema operativo, no sólo a los locales para el que construyó su aplicación. Sin embargo, estas API jugador puede producir diferentes resultados en diferentes plataformas. Por ejemplo, una fecha griego podría tener un formato diferente en Macintosh, Ventanas, Androide, etc.

El segundo conjunto de las clases de la globalización es proporcionado por el kit SDK de Flex y del espacio de nombres MX. En realidad, este conjunto de MX es la primera globalización clases que dimos en la plataforma Flash. Las clases de la globalización MX para ofrecer algunos formateadores como el número de, moneda, fecha y así sucesivamente. Estas clases utilizan la información de localización muy limitada en el ResourceManager. Si desea dar formato griego, tienes que tener los paquetes de recursos griego (que Adobe no proporciona actualmente, aunque proporciona 16 otros lugares). También, la configuración regional de colación y la conversión de caso no fueron ofrecidos por estas clases.

El tercer conjunto de las clases de la globalización también es proporcionada por el SDK de Flex (partir de la versión 4.5) y en el espacio de chispa. Esta es nuestra última incorporación en términos de clases globalización. Este conjunto actúa como nexo de unión entre las características flash.globalization y el SDK de Flex. Esta versión chispa Flex tiene una ventaja en comparación con las características incorporadas de la globalización Flash Player. En particular, están sobre el cumplimiento de la sintaxis MXML y la herencia de estilo. Esos sí son necesarias para hacer la función de la globalización como una parte del SDK de Flex UI infraestructura.

Aquí hay un resumen que compara las tres API:

Artículo Flash Player incorporado en función de la globalización Característica de globalización Flex SDK MX Flex SDK chispa característica de la globalización
Espacio de nombres flash.globalization mx.formatters y mx.validators spark.globalization, spark.formatters, spark.validators y otros
Mínimo requerido Flex SDK versión N / A Flexible 3 Flexible 4.5
Mínimo requerido Flash Player versión Flash Player 10.1
AIR 2
Flash Player 9
AIR 1.1
Flash Player 10.1
AIR 2
Número formateador
Moneda formateador
Fecha formateador tiempo
Número de validación No
Validador de moneda No
Alzadora No
Interfaz de usuario de apoyo N / A No

(DataGrid, Tipo, SortField)

Locales soportados Depende de el sistema operativo subyacente 16 Depende de el sistema operativo subyacente
Su uso en MXML No
El uso de secuencias de comandos
Localidad estilo inheri-cia N / A No

Referencias

  • flash.globalization documento conjunto

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/globalization/package-detail.html

  • Flex SDK mx.formatters documento conjunto

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/formatters/package-detail.html

  • Flex SDK mx.validators documento conjunto

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/validators/package-detail.html

  • Flex SDK héroe (Beta) spark.globalization documento conjunto

http://help.adobe.com/en_US/FlashPlatform/beta/reference/actionscript/3/spark/globalization/package-detail.html

  • Flex SDK héroe (Beta) spark.formatters documento conjunto

http://help.adobe.com/en_US/FlashPlatform/beta/reference/actionscript/3/spark/formatters/package-detail.html

  • Flex SDK héroe (Beta) spark.validators documento conjunto (Todavía no se dispone de la redacción)

http://help.adobe.com/en_US/FlashPlatform/beta/reference/actionscript/3/spark/validators/package-detail.html

Nuevas características de la globalización en Flex SDK “Hero”

Este artículo fue originalmente escrito en Inglés. Texto en otros idiomas fue proporcionada por la traducción automática.

 

En junio de este año, Flash® Player 10.1, fue lanzado que contenía un nuevo conjunto de clases de ActionScript que ayudan a la creación de aplicaciones compatibles con múltiples idiomas y regiones. Las nuevas clases se pusieron en el flash.globalization paquete y proporcionan el lenguaje y el formato de región específica de fechas, veces, números, y monedas, así como la ordenación alanguage específicos y conversión entre mayúsculas y minúsculas. Las clases de uso de las capacidades subyacentes del sistema operativo que Flash Player se está ejecutando en. Por lo tanto, las aplicaciones de Flash se pueden crear base que soporte local que es el mismo que proporciona el sistema operativo. Puesto que estas clases se construyen en el reproductor, se pueden utilizar con el código de ActionScript nativos por aplicaciones creadas con Flash Professional o bien con aplicaciones que utilizan el Flex SDK. This version of the Flash Player was also incorporated into Adobe AIR version 2.0 and thus both browser based applications and AIR applications can make use of this new functionality.

Durante el Adobe Max 2010, la Flex SDK Hero versión preliminar fue puesto a disposición de los asistentes a la conferencia, así como publicado en el Adobe Labs sitio web. Hero is the code-name for the next version of the Flex SDK. Hero reflects the next step in making improvements to the Flex ecosystem for creating world ready applications. This release incorporates a new set of classes that make use of the flash.globalization package available in Flash Player 10.1. These new classes make it easier to use the flash.globalization functionality in MXML declarations and provide a way to set a common locale to be used by the entire application or portions of the application.

Las nuevas clases en el Flex SDK Se han añadido dos nuevos paquetes:

  • spark.formatters package contains NumberFormatter, CurrencyFormatter, and DateTimeFormatterclases
  • spark.globalization package contains SortingCollator, MatchingCollator, and StringTools clases

Aquellos que estén familiarizados con Flex, se sabe que ya contiene un conjunto de formateadores y los validadores en el espacio de nombres mx. Estos formateadores mx no han sido modificados en el Hero versión de la Flex SDK y todavía se comportan como las versiones anteriores de la Flex SDK. La principal diferencia entre estos dos conjuntos de formateadores es que los formateadores nueva chispa hacer uso de la funcionalidad de formato proporcionado por el sistema operativo (a través de la flash.globalization paquete) en tanto que la formateadores MX uso de los paquetes ResourceManager y de recursos para la información de localización específica utilizada en el formato. La Flex SDK se entrega con los datos de un conjunto limitado de localidades para los formateadores mx. Por otro lado, dependiendo del sistema operativo, los formateadores nueva chispa puede tener acceso a cientos de locales. Además, la nueva chispa formateadores también tienen acceso a las preferencias internacionales del usuario final y la configuración o configuraciones regionales personalizadas que puedan estar instalados en su sistema operativo.

El lenguaje de cadena específica capacidad de comparación proporcionada por el flash.globalization clases y el nuevo Spark SortingCollator y MatchingCollator clases también son nuevos en el Hero versión de la Flex SDK. Esta comparación lingüísticamente correcto es crítico cuando se muestra una lista de cadenas a un usuario.

A diferencia de los flash.globalization clases, las clases de nueva chispa se puede declarar en la <fx:Declarations> sección de un archivo MXML y por defecto determinar el sitio de la “locale” estilo. La configuración regional identifica el idioma, guión, región y, opcionalmente, otros valores que afectan al comportamiento de estas clases. Cuando el estilo local se actualiza, las clases chispa generará eventos de cambio que se puede utilizar al enlazar los resultados a la propiedad de un UIComponent o objetivo vinculante otros.

Aquí está un ejemplo de cómo la NumberFormatter y DateTimeFormatter podría ser utilizado:

<fx:Declarations>
	<s:NumberFormatter id ="nf" fractionalDigits ="0"/>
	<s:DateTimeFormatter id ="df" dateStyle ="long" timestyle ="none"/>
</fx:Declarations>
<mx:Text text ="{nf.format(myNumCandles)}"/>
<mx:Text text ="{df.format(myBirthday)}"/>

y he aquí un ejemplo de cómo el SortingCollator podría ser utilizado:

<fx:Declarations>
	<s:SortingCollator id ="sc"/>
</fx:Declarations>
<mx:DataGrid id="dg">
	<mx:columns>
		<mx:DataGridColumn sortCompareFunction ="{sc.compare}"/>
	</mx:columns>
</mx:DataGrid>

En ambos casos, la configuración regional heredada de la aplicación, módulo, o componente que incluye las declaraciones. La configuración regional se establece mediante una declaración de estilo o mediante código ActionScript, como ilustran los siguientes ejemplos:

<fx:Style>
	global
	{
		local: "fr-FR";
	}
</fx:Style>

o

private function initApp(): vacío
{
	setStyle("locale","fr-FR");
}

El estilo también se puede especificar directamente en la declaración de la siguiente manera:

<fx:Declarations>
	<s:DateTimeFormatter id ="df" dateStyle ="long" timestyle ="none" style ="fr-FR"/>
</fx:Declarations>

Aquí está un ejemplo completo que establece la configuración regional global del francés tal como se utiliza en Francia (fr-FR) y los formatos de un número, una fecha, y proporciona una función de comparación para la clasificación de un DataGridColumn:

<?xml version="1.0" encoding="utf-8"?>
<s:Application
	xmlns:fx ="http://ns.adobe.com/mxml/2009"
	xmlns:s ="library://ns.adobe.com/flex/spark"
	xmlns:mx ="library://ns.adobe.com/flex/mx" minWidth ="955" minHeight ="600">
	<fx:Style>
		@namespace s "library://ns.adobe.com/flex/spark";
		@namespace mx "library://ns.adobe.com/flex/mx";
		global
		{
			local: "fr-FR";
		}
	</fx:Style>
	<fx:Declarations>
		<s:NumberFormatter id ="nf" fractionalDigits ="0"/>
		<s:DateTimeFormatter id ="df" dateStyle ="long" timeStyle ="none"/>
		<s:SortingCollator id ="sc"/>
	</fx:Declarations>
	<fx:Script>
		<![CDATA[
			import mx.collections.ArrayCollection;
			[Bindable]
			private var myNumCandles:int = 10;
			[Bindable]
			private var myBirthday:Date = new Fecha(2000, 0, 1);
			[Bindable]
			private var amigos:ArrayCollection = new ArrayCollection
				([
					"Frédérique", "Valentine", "Grégoire", "Jérôme",
					"André", "Noémie", "Eugène", "Jean", "René",
					"Valérie", "Noëlle"
				]);
		]]>
	</fx:Script>
	<s:VGroup>
		<mx:Text text ="{nf.format(myNumCandles)}"/>
		<mx:Text text ="{df.format(myBirthday)}"/>
		<mx:DataGrid id ="dg" dataProvider ="{friends}"
			rowCount ="11" width ="150">
			<mx:columns>
				<mx:DataGridColumn
					HeaderText ="click here to sort"
					sortCompareFunction ="{sc.compare}"/>
			</mx:columns>
		</mx:DataGrid>
	</s:VGroup>

</s:Application>

 

Hay más ejemplos y la documentación completa en el ASDoc siempre con la Flex SDK. Le invitamos a descargar el Flex SDK Hero liberación, pruébalo y dinos lo que piensas.