feat(jdk8): move files to new folder to avoid resources compiled.

This commit is contained in:
2025-09-07 15:25:52 +08:00
parent 3f0047bf6f
commit 8c35cfb1c0
17415 changed files with 217 additions and 213 deletions

View File

@@ -0,0 +1,232 @@
/*
* Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
* (C) Copyright IBM Corp. 2003 - All Rights Reserved
*
* The original version of this source code and documentation is
* copyrighted and owned by IBM. These materials are provided
* under terms of a License Agreement between IBM and Sun.
* This technology is protected by multiple US and International
* patents. This notice and attribution to IBM may not be removed.
*/
package sun.text;
import java.text.CharacterIterator;
public abstract class CodePointIterator {
public static final int DONE = -1;
public abstract void setToStart();
public abstract void setToLimit();
public abstract int next();
public abstract int prev();
public abstract int charIndex();
public static CodePointIterator create(char[] text) {
return new CharArrayCodePointIterator(text);
}
public static CodePointIterator create(char[] text, int start, int limit) {
return new CharArrayCodePointIterator(text, start, limit);
}
public static CodePointIterator create(CharSequence text) {
return new CharSequenceCodePointIterator(text);
}
public static CodePointIterator create(CharacterIterator iter) {
return new CharacterIteratorCodePointIterator(iter);
}
}
final class CharArrayCodePointIterator extends CodePointIterator {
private char[] text;
private int start;
private int limit;
private int index;
public CharArrayCodePointIterator(char[] text) {
this.text = text;
this.limit = text.length;
}
public CharArrayCodePointIterator(char[] text, int start, int limit) {
if (start < 0 || limit < start || limit > text.length) {
throw new IllegalArgumentException();
}
this.text = text;
this.start = this.index = start;
this.limit = limit;
}
public void setToStart() {
index = start;
}
public void setToLimit() {
index = limit;
}
public int next() {
if (index < limit) {
char cp1 = text[index++];
if (Character.isHighSurrogate(cp1) && index < limit) {
char cp2 = text[index];
if (Character.isLowSurrogate(cp2)) {
++index;
return Character.toCodePoint(cp1, cp2);
}
}
return cp1;
}
return DONE;
}
public int prev() {
if (index > start) {
char cp2 = text[--index];
if (Character.isLowSurrogate(cp2) && index > start) {
char cp1 = text[index - 1];
if (Character.isHighSurrogate(cp1)) {
--index;
return Character.toCodePoint(cp1, cp2);
}
}
return cp2;
}
return DONE;
}
public int charIndex() {
return index;
}
}
final class CharSequenceCodePointIterator extends CodePointIterator {
private CharSequence text;
private int index;
public CharSequenceCodePointIterator(CharSequence text) {
this.text = text;
}
public void setToStart() {
index = 0;
}
public void setToLimit() {
index = text.length();
}
public int next() {
if (index < text.length()) {
char cp1 = text.charAt(index++);
if (Character.isHighSurrogate(cp1) && index < text.length()) {
char cp2 = text.charAt(index+1);
if (Character.isLowSurrogate(cp2)) {
++index;
return Character.toCodePoint(cp1, cp2);
}
}
return cp1;
}
return DONE;
}
public int prev() {
if (index > 0) {
char cp2 = text.charAt(--index);
if (Character.isLowSurrogate(cp2) && index > 0) {
char cp1 = text.charAt(index - 1);
if (Character.isHighSurrogate(cp1)) {
--index;
return Character.toCodePoint(cp1, cp2);
}
}
return cp2;
}
return DONE;
}
public int charIndex() {
return index;
}
}
// note this has different iteration semantics than CharacterIterator
final class CharacterIteratorCodePointIterator extends CodePointIterator {
private CharacterIterator iter;
public CharacterIteratorCodePointIterator(CharacterIterator iter) {
this.iter = iter;
}
public void setToStart() {
iter.setIndex(iter.getBeginIndex());
}
public void setToLimit() {
iter.setIndex(iter.getEndIndex());
}
public int next() {
char cp1 = iter.current();
if (cp1 != CharacterIterator.DONE) {
char cp2 = iter.next();
if (Character.isHighSurrogate(cp1) && cp2 != CharacterIterator.DONE) {
if (Character.isLowSurrogate(cp2)) {
iter.next();
return Character.toCodePoint(cp1, cp2);
}
}
return cp1;
}
return DONE;
}
public int prev() {
char cp2 = iter.previous();
if (cp2 != CharacterIterator.DONE) {
if (Character.isLowSurrogate(cp2)) {
char cp1 = iter.previous();
if (Character.isHighSurrogate(cp1)) {
return Character.toCodePoint(cp1, cp2);
}
iter.next();
}
return cp2;
}
return DONE;
}
public int charIndex() {
return iter.getIndex();
}
}

View File

@@ -0,0 +1,65 @@
/*
* Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
package sun.text;
import sun.text.normalizer.NormalizerBase;
public class CollatorUtilities {
public static int toLegacyMode(NormalizerBase.Mode mode) {
// find the index of the legacy mode in the table;
// if it's not there, default to Collator.NO_DECOMPOSITION (0)
int legacyMode = legacyModeMap.length;
while (legacyMode > 0) {
--legacyMode;
if (legacyModeMap[legacyMode] == mode) {
break;
}
}
return legacyMode;
}
public static NormalizerBase.Mode toNormalizerMode(int mode) {
NormalizerBase.Mode normalizerMode;
try {
normalizerMode = legacyModeMap[mode];
}
catch(ArrayIndexOutOfBoundsException e) {
normalizerMode = NormalizerBase.NONE;
}
return normalizerMode;
}
static NormalizerBase.Mode[] legacyModeMap = {
NormalizerBase.NONE, // Collator.NO_DECOMPOSITION
NormalizerBase.NFD, // Collator.CANONICAL_DECOMPOSITION
NormalizerBase.NFKD, // Collator.FULL_DECOMPOSITION
};
}

View File

@@ -0,0 +1,352 @@
/*
* Copyright (c) 1996, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
* (C) Copyright Taligent, Inc. 1996 - All Rights Reserved
* (C) Copyright IBM Corp. 1996 - All Rights Reserved
*
* The original version of this source code and documentation is copyrighted
* and owned by Taligent, Inc., a wholly-owned subsidiary of IBM. These
* materials are provided under terms of a License Agreement between Taligent
* and Sun. This technology is protected by multiple US and International
* patents. This notice and attribution to Taligent may not be removed.
* Taligent is a registered trademark of Taligent, Inc.
*
*/
package sun.text;
/**
* class CompactATypeArray : use only on primitive data types
* Provides a compact way to store information that is indexed by Unicode
* values, such as character properties, types, keyboard values, etc.This
* is very useful when you have a block of Unicode data that contains
* significant values while the rest of the Unicode data is unused in the
* application or when you have a lot of redundance, such as where all 21,000
* Han ideographs have the same value. However, lookup is much faster than a
* hash table.
* A compact array of any primitive data type serves two purposes:
* <UL type = round>
* <LI>Fast access of the indexed values.
* <LI>Smaller memory footprint.
* </UL>
* A compact array is composed of a index array and value array. The index
* array contains the indicies of Unicode characters to the value array.
*
* @see CompactIntArray
* @see CompactShortArray
* @author Helena Shih
*/
public final class CompactByteArray implements Cloneable {
/**
* The total number of Unicode characters.
*/
public static final int UNICODECOUNT =65536;
/**
* Constructor for CompactByteArray.
* @param defaultValue the default value of the compact array.
*/
public CompactByteArray(byte defaultValue)
{
int i;
values = new byte[UNICODECOUNT];
indices = new short[INDEXCOUNT];
hashes = new int[INDEXCOUNT];
for (i = 0; i < UNICODECOUNT; ++i) {
values[i] = defaultValue;
}
for (i = 0; i < INDEXCOUNT; ++i) {
indices[i] = (short)(i<<BLOCKSHIFT);
hashes[i] = 0;
}
isCompact = false;
}
/**
* Constructor for CompactByteArray.
* @param indexArray the indicies of the compact array.
* @param newValues the values of the compact array.
* @exception IllegalArgumentException If index is out of range.
*/
public CompactByteArray(short indexArray[],
byte newValues[])
{
int i;
if (indexArray.length != INDEXCOUNT)
throw new IllegalArgumentException("Index out of bounds!");
for (i = 0; i < INDEXCOUNT; ++i) {
short index = indexArray[i];
if ((index < 0) || (index >= newValues.length+BLOCKCOUNT))
throw new IllegalArgumentException("Index out of bounds!");
}
indices = indexArray;
values = newValues;
isCompact = true;
}
/**
* Get the mapped value of a Unicode character.
* @param index the character to get the mapped value with
* @return the mapped value of the given character
*/
public byte elementAt(char index)
{
return (values[(indices[index >> BLOCKSHIFT] & 0xFFFF)
+ (index & BLOCKMASK)]);
}
/**
* Set a new value for a Unicode character.
* Set automatically expands the array if it is compacted.
* @param index the character to set the mapped value with
* @param value the new mapped value
*/
public void setElementAt(char index, byte value)
{
if (isCompact)
expand();
values[(int)index] = value;
touchBlock(index >> BLOCKSHIFT, value);
}
/**
* Set new values for a range of Unicode character.
* @param start the starting offset o of the range
* @param end the ending offset of the range
* @param value the new mapped value
*/
public void setElementAt(char start, char end, byte value)
{
int i;
if (isCompact) {
expand();
}
for (i = start; i <= end; ++i) {
values[i] = value;
touchBlock(i >> BLOCKSHIFT, value);
}
}
/**
*Compact the array.
*/
public void compact()
{
if (!isCompact) {
int limitCompacted = 0;
int iBlockStart = 0;
short iUntouched = -1;
for (int i = 0; i < indices.length; ++i, iBlockStart += BLOCKCOUNT) {
indices[i] = -1;
boolean touched = blockTouched(i);
if (!touched && iUntouched != -1) {
// If no values in this block were set, we can just set its
// index to be the same as some other block with no values
// set, assuming we've seen one yet.
indices[i] = iUntouched;
} else {
int jBlockStart = 0;
int j = 0;
for (j = 0; j < limitCompacted;
++j, jBlockStart += BLOCKCOUNT) {
if (hashes[i] == hashes[j] &&
arrayRegionMatches(values, iBlockStart,
values, jBlockStart, BLOCKCOUNT)) {
indices[i] = (short)jBlockStart;
break;
}
}
if (indices[i] == -1) {
// we didn't match, so copy & update
System.arraycopy(values, iBlockStart,
values, jBlockStart, BLOCKCOUNT);
indices[i] = (short)jBlockStart;
hashes[j] = hashes[i];
++limitCompacted;
if (!touched) {
// If this is the first untouched block we've seen,
// remember its index.
iUntouched = (short)jBlockStart;
}
}
}
}
// we are done compacting, so now make the array shorter
int newSize = limitCompacted*BLOCKCOUNT;
byte[] result = new byte[newSize];
System.arraycopy(values, 0, result, 0, newSize);
values = result;
isCompact = true;
hashes = null;
}
}
/**
* Convenience utility to compare two arrays of doubles.
* @param len the length to compare.
* The start indices and start+len must be valid.
*/
final static boolean arrayRegionMatches(byte[] source, int sourceStart,
byte[] target, int targetStart,
int len)
{
int sourceEnd = sourceStart + len;
int delta = targetStart - sourceStart;
for (int i = sourceStart; i < sourceEnd; i++) {
if (source[i] != target[i + delta])
return false;
}
return true;
}
/**
* Remember that a specified block was "touched", i.e. had a value set.
* Untouched blocks can be skipped when compacting the array
*/
private final void touchBlock(int i, int value) {
hashes[i] = (hashes[i] + (value<<1)) | 1;
}
/**
* Query whether a specified block was "touched", i.e. had a value set.
* Untouched blocks can be skipped when compacting the array
*/
private final boolean blockTouched(int i) {
return hashes[i] != 0;
}
/** For internal use only. Do not modify the result, the behavior of
* modified results are undefined.
*/
public short getIndexArray()[]
{
return indices;
}
/** For internal use only. Do not modify the result, the behavior of
* modified results are undefined.
*/
public byte getStringArray()[]
{
return values;
}
/**
* Overrides Cloneable
*/
public Object clone()
{
try {
CompactByteArray other = (CompactByteArray) super.clone();
other.values = values.clone();
other.indices = indices.clone();
if (hashes != null) other.hashes = hashes.clone();
return other;
} catch (CloneNotSupportedException e) {
throw new InternalError(e);
}
}
/**
* Compares the equality of two compact array objects.
* @param obj the compact array object to be compared with this.
* @return true if the current compact array object is the same
* as the compact array object obj; false otherwise.
*/
public boolean equals(Object obj) {
if (obj == null) return false;
if (this == obj) // quick check
return true;
if (getClass() != obj.getClass()) // same class?
return false;
CompactByteArray other = (CompactByteArray) obj;
for (int i = 0; i < UNICODECOUNT; i++) {
// could be sped up later
if (elementAt((char)i) != other.elementAt((char)i))
return false;
}
return true; // we made it through the guantlet.
}
/**
* Generates the hash code for the compact array object
*/
public int hashCode() {
int result = 0;
int increment = Math.min(3, values.length/16);
for (int i = 0; i < values.length; i+= increment) {
result = result * 37 + values[i];
}
return result;
}
// --------------------------------------------------------------
// package private
// --------------------------------------------------------------
/**
* Expanding takes the array back to a 65536 element array.
*/
private void expand()
{
int i;
if (isCompact) {
byte[] tempArray;
hashes = new int[INDEXCOUNT];
tempArray = new byte[UNICODECOUNT];
for (i = 0; i < UNICODECOUNT; ++i) {
byte value = elementAt((char)i);
tempArray[i] = value;
touchBlock(i >> BLOCKSHIFT, value);
}
for (i = 0; i < INDEXCOUNT; ++i) {
indices[i] = (short)(i<<BLOCKSHIFT);
}
values = null;
values = tempArray;
isCompact = false;
}
}
private byte[] getArray()
{
return values;
}
private static final int BLOCKSHIFT =7;
private static final int BLOCKCOUNT =(1<<BLOCKSHIFT);
private static final int INDEXSHIFT =(16-BLOCKSHIFT);
private static final int INDEXCOUNT =(1<<INDEXSHIFT);
private static final int BLOCKMASK = BLOCKCOUNT - 1;
private byte[] values; // char -> short (char parameterized short)
private short indices[];
private boolean isCompact;
private int[] hashes;
};

View File

@@ -0,0 +1,83 @@
/*
* Copyright (c) 2001, 2005, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
package sun.text;
import sun.text.normalizer.NormalizerBase;
import sun.text.normalizer.NormalizerImpl;
public final class ComposedCharIter {
/**
* Constant that indicates the iteration has completed.
* {@link #next} returns this value when there are no more composed characters
* over which to iterate.
*/
public static final int DONE = NormalizerBase.DONE;
//cache the decomps mapping, so the seconde composedcharIter does
//not need to get the data again.
private static int chars[];
private static String decomps[];
private static int decompNum;
static {
int maxNum = 2000; //TBD: Unicode 4.0 only has 1926 canoDecomp...
chars = new int[maxNum];
decomps = new String[maxNum];
decompNum = NormalizerImpl.getDecompose(chars, decomps);
}
/**
* Construct a new <tt>ComposedCharIter</tt>. The iterator will return
* all Unicode characters with canonical decompositions, excluding Korean
* Hangul characters.
*/
public ComposedCharIter() { }
/**
* Returns the next precomposed Unicode character.
* Repeated calls to <tt>next</tt> return all of the precomposed characters defined
* by Unicode, in ascending order. After all precomposed characters have
* been returned, {@link #hasNext} will return <tt>false</tt> and further calls
* to <tt>next</tt> will return {@link #DONE}.
*/
public int next() {
if (curChar == decompNum - 1) {
return DONE;
}
return chars[++curChar];
}
/**
* Returns the Unicode decomposition of the current character.
* This method returns the decomposition of the precomposed character most
* recently returned by {@link #next}. The resulting decomposition is
* affected by the settings of the options passed to the constructor.
*/
public String decomposition() {
return decomps[curChar];
}
private int curChar = -1;
}

View File

@@ -0,0 +1,271 @@
/*
* Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
* (C) Copyright Taligent, Inc. 1996,1997 - All Rights Reserved
* (C) Copyright IBM Corp. 1996, 1997 - All Rights Reserved
*/
package sun.text;
/** Simple internal class for doing hash mapping. Much, much faster than the
* standard Hashtable for integer to integer mappings,
* and doesn't require object creation.<br>
* If a key is not found, the defaultValue is returned.
* Note: the keys are limited to values above Integer.MIN_VALUE+1.<br>
*/
public final class IntHashtable {
public IntHashtable () {
initialize(3);
}
public IntHashtable (int initialSize) {
initialize(leastGreaterPrimeIndex((int)(initialSize/HIGH_WATER_FACTOR)));
}
public int size() {
return count;
}
public boolean isEmpty() {
return count == 0;
}
public void put(int key, int value) {
if (count > highWaterMark) {
rehash();
}
int index = find(key);
if (keyList[index] <= MAX_UNUSED) { // deleted or empty
keyList[index] = key;
++count;
}
values[index] = value; // reset value
}
public int get(int key) {
return values[find(key)];
}
public void remove(int key) {
int index = find(key);
if (keyList[index] > MAX_UNUSED) { // neither deleted nor empty
keyList[index] = DELETED; // set to deleted
values[index] = defaultValue; // set to default
--count;
if (count < lowWaterMark) {
rehash();
}
}
}
public int getDefaultValue() {
return defaultValue;
}
public void setDefaultValue(int newValue) {
defaultValue = newValue;
rehash();
}
public boolean equals (Object that) {
if (that.getClass() != this.getClass()) return false;
IntHashtable other = (IntHashtable) that;
if (other.size() != count || other.defaultValue != defaultValue) {
return false;
}
for (int i = 0; i < keyList.length; ++i) {
int key = keyList[i];
if (key > MAX_UNUSED && other.get(key) != values[i])
return false;
}
return true;
}
public int hashCode() {
// NOTE: This function isn't actually used anywhere in this package, but it's here
// in case this class is ever used to make sure we uphold the invariants about
// hashCode() and equals()
// WARNING: This function hasn't undergone rigorous testing to make sure it actually
// gives good distribution. We've eyeballed the results, and they appear okay, but
// you copy this algorithm (or these seed and multiplier values) at your own risk.
// --rtg 8/17/99
int result = 465; // an arbitrary seed value
int scrambler = 1362796821; // an arbitrary multiplier.
for (int i = 0; i < keyList.length; ++i) {
// this line just scrambles the bits as each value is added into the
// has value. This helps to make sure we affect all the bits and that
// the same values in a different order will produce a different hash value
result = result * scrambler + 1;
result += keyList[i];
}
for (int i = 0; i < values.length; ++i) {
result = result * scrambler + 1;
result += values[i];
}
return result;
}
public Object clone ()
throws CloneNotSupportedException {
IntHashtable result = (IntHashtable) super.clone();
values = values.clone();
keyList = keyList.clone();
return result;
}
// =======================PRIVATES============================
private int defaultValue = 0;
// the tables have to have prime-number lengths. Rather than compute
// primes, we just keep a table, with the current index we are using.
private int primeIndex;
// highWaterFactor determines the maximum number of elements before
// a rehash. Can be tuned for different performance/storage characteristics.
private static final float HIGH_WATER_FACTOR = 0.4F;
private int highWaterMark;
// lowWaterFactor determines the minimum number of elements before
// a rehash. Can be tuned for different performance/storage characteristics.
private static final float LOW_WATER_FACTOR = 0.0F;
private int lowWaterMark;
private int count;
// we use two arrays to minimize allocations
private int[] values;
private int[] keyList;
private static final int EMPTY = Integer.MIN_VALUE;
private static final int DELETED = EMPTY + 1;
private static final int MAX_UNUSED = DELETED;
private void initialize (int primeIndex) {
if (primeIndex < 0) {
primeIndex = 0;
} else if (primeIndex >= PRIMES.length) {
System.out.println("TOO BIG");
primeIndex = PRIMES.length - 1;
// throw new java.util.IllegalArgumentError();
}
this.primeIndex = primeIndex;
int initialSize = PRIMES[primeIndex];
values = new int[initialSize];
keyList = new int[initialSize];
for (int i = 0; i < initialSize; ++i) {
keyList[i] = EMPTY;
values[i] = defaultValue;
}
count = 0;
lowWaterMark = (int)(initialSize * LOW_WATER_FACTOR);
highWaterMark = (int)(initialSize * HIGH_WATER_FACTOR);
}
private void rehash() {
int[] oldValues = values;
int[] oldkeyList = keyList;
int newPrimeIndex = primeIndex;
if (count > highWaterMark) {
++newPrimeIndex;
} else if (count < lowWaterMark) {
newPrimeIndex -= 2;
}
initialize(newPrimeIndex);
for (int i = oldValues.length - 1; i >= 0; --i) {
int key = oldkeyList[i];
if (key > MAX_UNUSED) {
putInternal(key, oldValues[i]);
}
}
}
public void putInternal (int key, int value) {
int index = find(key);
if (keyList[index] < MAX_UNUSED) { // deleted or empty
keyList[index] = key;
++count;
}
values[index] = value; // reset value
}
private int find (int key) {
if (key <= MAX_UNUSED)
throw new IllegalArgumentException("key can't be less than 0xFFFFFFFE");
int firstDeleted = -1; // assume invalid index
int index = (key ^ 0x4000000) % keyList.length;
if (index < 0) index = -index; // positive only
int jump = 0; // lazy evaluate
while (true) {
int tableHash = keyList[index];
if (tableHash == key) { // quick check
return index;
} else if (tableHash > MAX_UNUSED) { // neither correct nor unused
// ignore
} else if (tableHash == EMPTY) { // empty, end o' the line
if (firstDeleted >= 0) {
index = firstDeleted; // reset if had deleted slot
}
return index;
} else if (firstDeleted < 0) { // remember first deleted
firstDeleted = index;
}
if (jump == 0) { // lazy compute jump
jump = (key % (keyList.length - 1));
if (jump < 0) jump = -jump;
++jump;
}
index = (index + jump) % keyList.length;
if (index == firstDeleted) {
// We've searched all entries for the given key.
return index;
}
}
}
private static int leastGreaterPrimeIndex(int source) {
int i;
for (i = 0; i < PRIMES.length; ++i) {
if (source < PRIMES[i]) {
break;
}
}
return (i == 0) ? 0 : (i - 1);
}
// This list is the result of buildList below. Can be tuned for different
// performance/storage characteristics.
private static final int[] PRIMES = {
17, 37, 67, 131, 257,
521, 1031, 2053, 4099, 8209, 16411, 32771, 65537,
131101, 262147, 524309, 1048583, 2097169, 4194319, 8388617, 16777259,
33554467, 67108879, 134217757, 268435459, 536870923, 1073741827, 2147483647
};
}

View File

@@ -0,0 +1,98 @@
/*
* Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
package sun.text;
import sun.text.normalizer.NormalizerBase;
import sun.text.normalizer.NormalizerImpl;
/**
* This Normalizer is for Unicode 3.2 support for IDNA only.
* Developers should not use this class.
*
* @ since 1.6
*/
public final class Normalizer {
private Normalizer() {};
/**
* Option to select Unicode 3.2 (without corrigendum 4 corrections) for
* normalization.
*/
public static final int UNICODE_3_2 = NormalizerBase.UNICODE_3_2_0_ORIGINAL;
/**
* Normalize a sequence of char values.
* The sequence will be normalized according to the specified normalization
* from.
* @param src The sequence of char values to normalize.
* @param form The normalization form; one of
* {@link java.text.Normalizer.Form#NFC},
* {@link java.text.Normalizer.Form#NFD},
* {@link java.text.Normalizer.Form#NFKC},
* {@link java.text.Normalizer.Form#NFKD}
* @param option The normalization option;
* {@link sun.text.Normalizer#UNICODE_3_2}
* @return The normalized String
* @throws NullPointerException If <code>src</code> or <code>form</code>
* is null.
*/
public static String normalize(CharSequence src,
java.text.Normalizer.Form form,
int option) {
return NormalizerBase.normalize(src.toString(), form, option);
};
/**
* Determines if the given sequence of char values is normalized.
* @param src The sequence of char values to be checked.
* @param form The normalization form; one of
* {@link java.text.Normalizer.Form#NFC},
* {@link java.text.Normalizer.Form#NFD},
* {@link java.text.Normalizer.Form#NFKC},
* {@link java.text.Normalizer.Form#NFKD}
* @param option The normalization option;
* {@link sun.text.Normalizer#UNICODE_3_2}
* @return true if the sequence of char values is normalized;
* false otherwise.
* @throws NullPointerException If <code>src</code> or <code>form</code>
* is null.
*/
public static boolean isNormalized(CharSequence src,
java.text.Normalizer.Form form,
int option) {
return NormalizerBase.isNormalized(src.toString(), form, option);
}
/**
* Returns the combining class of the given character
* @param ch character to retrieve combining class of
* @return combining class of the given character
*/
public static final int getCombiningClass(int ch) {
return NormalizerImpl.getCombiningClass(ch);
}
}

View File

@@ -0,0 +1,99 @@
/*
* Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
package sun.text;
/**
* SupplementaryCharacterData is an SMI-private class which was written for
* RuleBasedBreakIterator and BreakDictionary.
*/
public final class SupplementaryCharacterData implements Cloneable {
/**
* A token used as a character-category value to identify ignore characters
*/
private static final byte IGNORE = -1;
/**
* An array for supplementary characters and values.
* Lower one byte is used to keep a byte-value.
* Upper three bytes are used to keep the first supplementary character
* which has the value. The value is also valid for the following
* supplementary characters until the next supplementary character in
* the array <code>dataTable</code>.
* For example, if the value of <code>dataTable[2]</code> is
* <code>0x01000123</code> and the value of <code>dataTable[3]</code> is
* <code>0x01000567</code>, supplementary characters from
* <code>0x10001</code> to <code>0x10004</code> has the value
* <code>0x23</code>. And, <code>getValue(0x10003)</code> returns the value.
*/
private int[] dataTable;
/**
* Creates a new SupplementaryCharacterData object with the given table.
*/
public SupplementaryCharacterData(int[] table) {
dataTable = table;
}
/**
* Returns a corresponding value for the given supplementary code-point.
*/
public int getValue(int index) {
// Index should be a valid supplementary character.
assert index >= Character.MIN_SUPPLEMENTARY_CODE_POINT &&
index <= Character.MAX_CODE_POINT :
"Invalid code point:" + Integer.toHexString(index);
int i = 0;
int j = dataTable.length - 1;
int k;
for (;;) {
k = (i + j) / 2;
int start = dataTable[k] >> 8;
int end = dataTable[k+1] >> 8;
if (index < start) {
j = k;
} else if (index > (end-1)) {
i = k;
} else {
int v = dataTable[k] & 0xFF;
return (v == 0xFF) ? IGNORE : v;
}
}
}
/**
* Returns the data array.
*/
public int[] getArray() {
return dataTable;
}
}

View File

@@ -0,0 +1,205 @@
/*
* Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
package sun.text;
public final class UCompactIntArray implements Cloneable {
/**
* Default constructor for UCompactIntArray, the default value of the
* compact array is 0.
*/
public UCompactIntArray() {
values = new int[16][];
indices = new short[16][];
blockTouched = new boolean[16][];
planeTouched = new boolean[16];
}
public UCompactIntArray(int defaultValue) {
this();
this.defaultValue = defaultValue;
}
/**
* Get the mapped value of a Unicode character.
* @param index the character to get the mapped value with
* @return the mapped value of the given character
*/
public int elementAt(int index) {
int plane = (index & PLANEMASK) >> PLANESHIFT;
if (!planeTouched[plane]) {
return defaultValue;
}
index &= CODEPOINTMASK;
return values[plane][(indices[plane][index >> BLOCKSHIFT] & 0xFFFF)
+ (index & BLOCKMASK)];
}
/**
* Set a new value for a Unicode character.
* Set automatically expands the array if it is compacted.
* @param index the character to set the mapped value with
* @param value the new mapped value
*/
public void setElementAt(int index, int value) {
if (isCompact) {
expand();
}
int plane = (index & PLANEMASK) >> PLANESHIFT;
if (!planeTouched[plane]) {
initPlane(plane);
}
index &= CODEPOINTMASK;
values[plane][index] = value;
blockTouched[plane][index >> BLOCKSHIFT] = true;
}
/**
* Compact the array.
*/
public void compact() {
if (isCompact) {
return;
}
for (int plane = 0; plane < PLANECOUNT; plane++) {
if (!planeTouched[plane]) {
continue;
}
int limitCompacted = 0;
int iBlockStart = 0;
short iUntouched = -1;
for (int i = 0; i < indices[plane].length; ++i, iBlockStart += BLOCKCOUNT) {
indices[plane][i] = -1;
if (!blockTouched[plane][i] && iUntouched != -1) {
// If no values in this block were set, we can just set its
// index to be the same as some other block with no values
// set, assuming we've seen one yet.
indices[plane][i] = iUntouched;
} else {
int jBlockStart = limitCompacted * BLOCKCOUNT;
if (i > limitCompacted) {
System.arraycopy(values[plane], iBlockStart,
values[plane], jBlockStart, BLOCKCOUNT);
}
if (!blockTouched[plane][i]) {
// If this is the first untouched block we've seen, remember it.
iUntouched = (short)jBlockStart;
}
indices[plane][i] = (short)jBlockStart;
limitCompacted++;
}
}
// we are done compacting, so now make the array shorter
int newSize = limitCompacted * BLOCKCOUNT;
int[] result = new int[newSize];
System.arraycopy(values[plane], 0, result, 0, newSize);
values[plane] = result;
blockTouched[plane] = null;
}
isCompact = true;
}
// --------------------------------------------------------------
// private
// --------------------------------------------------------------
/**
* Expanded takes the array back to a 0x10ffff element array
*/
private void expand() {
int i;
if (isCompact) {
int[] tempArray;
for (int plane = 0; plane < PLANECOUNT; plane++) {
if (!planeTouched[plane]) {
continue;
}
blockTouched[plane] = new boolean[INDEXCOUNT];
tempArray = new int[UNICODECOUNT];
for (i = 0; i < UNICODECOUNT; ++i) {
tempArray[i] = values[plane][indices[plane][i >> BLOCKSHIFT]
& 0xffff + (i & BLOCKMASK)];
blockTouched[plane][i >> BLOCKSHIFT] = true;
}
for (i = 0; i < INDEXCOUNT; ++i) {
indices[plane][i] = (short)(i<<BLOCKSHIFT);
}
values[plane] = tempArray;
}
isCompact = false;
}
}
private void initPlane(int plane) {
values[plane] = new int[UNICODECOUNT];
indices[plane] = new short[INDEXCOUNT];
blockTouched[plane] = new boolean[INDEXCOUNT];
planeTouched[plane] = true;
if (planeTouched[0] && plane != 0) {
System.arraycopy(indices[0], 0, indices[plane], 0, INDEXCOUNT);
} else {
for (int i = 0; i < INDEXCOUNT; ++i) {
indices[plane][i] = (short)(i<<BLOCKSHIFT);
}
}
for (int i = 0; i < UNICODECOUNT; ++i) {
values[plane][i] = defaultValue;
}
}
public int getKSize() {
int size = 0;
for (int plane = 0; plane < PLANECOUNT; plane++) {
if (planeTouched[plane]) {
size += (values[plane].length * 4 + indices[plane].length * 2);
}
}
return size / 1024;
}
private static final int PLANEMASK = 0x30000;
private static final int PLANESHIFT = 16;
private static final int PLANECOUNT = 0x10;
private static final int CODEPOINTMASK = 0xffff;
private static final int UNICODECOUNT = 0x10000;
private static final int BLOCKSHIFT = 7;
private static final int BLOCKCOUNT = (1<<BLOCKSHIFT);
private static final int INDEXSHIFT = (16-BLOCKSHIFT);
private static final int INDEXCOUNT = (1<<INDEXSHIFT);
private static final int BLOCKMASK = BLOCKCOUNT - 1;
private int defaultValue;
private int values[][];
private short indices[][];
private boolean isCompact;
private boolean[][] blockTouched;
private boolean[] planeTouched;
};

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,849 @@
/*
* Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
*******************************************************************************
* (C) Copyright IBM Corp. and others, 1996-2009 - All Rights Reserved *
* *
* The original version of this source code and documentation is copyrighted *
* and owned by IBM, These materials are provided under terms of a License *
* Agreement between IBM and Sun. This technology is protected by multiple *
* US and International patents. This notice and attribution to IBM may not *
* to removed. *
*******************************************************************************
*/
/* Written by Simon Montagu, Matitiahu Allouche
* (ported from C code written by Markus W. Scherer)
*/
package sun.text.bidi;
import java.text.Bidi;
import java.util.Arrays;
public final class BidiLine {
/*
* General remarks about the functions in this file:
*
* These functions deal with the aspects of potentially mixed-directional
* text in a single paragraph or in a line of a single paragraph
* which has already been processed according to
* the Unicode 3.0 Bidi algorithm as defined in
* http://www.unicode.org/unicode/reports/tr9/ , version 13,
* also described in The Unicode Standard, Version 4.0.1 .
*
* This means that there is a Bidi object with a levels
* and a dirProps array.
* paraLevel and direction are also set.
* Only if the length of the text is zero, then levels==dirProps==NULL.
*
* The overall directionality of the paragraph
* or line is used to bypass the reordering steps if possible.
* Even purely RTL text does not need reordering there because
* the getLogical/VisualIndex() methods can compute the
* index on the fly in such a case.
*
* The implementation of the access to same-level-runs and of the reordering
* do attempt to provide better performance and less memory usage compared to
* a direct implementation of especially rule (L2) with an array of
* one (32-bit) integer per text character.
*
* Here, the levels array is scanned as soon as necessary, and a vector of
* same-level-runs is created. Reordering then is done on this vector.
* For each run of text positions that were resolved to the same level,
* only 8 bytes are stored: the first text position of the run and the visual
* position behind the run after reordering.
* One sign bit is used to hold the directionality of the run.
* This is inefficient if there are many very short runs. If the average run
* length is <2, then this uses more memory.
*
* In a further attempt to save memory, the levels array is never changed
* after all the resolution rules (Xn, Wn, Nn, In).
* Many methods have to consider the field trailingWSStart:
* if it is less than length, then there is an implicit trailing run
* at the paraLevel,
* which is not reflected in the levels array.
* This allows a line Bidi object to use the same levels array as
* its paragraph parent object.
*
* When a Bidi object is created for a line of a paragraph, then the
* paragraph's levels and dirProps arrays are reused by way of setting
* a pointer into them, not by copying. This again saves memory and forbids to
* change the now shared levels for (L1).
*/
/* handle trailing WS (L1) -------------------------------------------------- */
/*
* setTrailingWSStart() sets the start index for a trailing
* run of WS in the line. This is necessary because we do not modify
* the paragraph's levels array that we just point into.
* Using trailingWSStart is another form of performing (L1).
*
* To make subsequent operations easier, we also include the run
* before the WS if it is at the paraLevel - we merge the two here.
*
* This method is called only from setLine(), so paraLevel is
* set correctly for the line even when contextual multiple paragraphs.
*/
static void setTrailingWSStart(BidiBase bidiBase)
{
byte[] dirProps = bidiBase.dirProps;
byte[] levels = bidiBase.levels;
int start = bidiBase.length;
byte paraLevel = bidiBase.paraLevel;
/* If the line is terminated by a block separator, all preceding WS etc...
are already set to paragraph level.
Setting trailingWSStart to pBidi->length will avoid changing the
level of B chars from 0 to paraLevel in getLevels when
orderParagraphsLTR==TRUE
*/
if (BidiBase.NoContextRTL(dirProps[start - 1]) == BidiBase.B) {
bidiBase.trailingWSStart = start; /* currently == bidiBase.length */
return;
}
/* go backwards across all WS, BN, explicit codes */
while (start > 0 &&
(BidiBase.DirPropFlagNC(dirProps[start - 1]) & BidiBase.MASK_WS) != 0) {
--start;
}
/* if the WS run can be merged with the previous run then do so here */
while (start > 0 && levels[start - 1] == paraLevel) {
--start;
}
bidiBase.trailingWSStart=start;
}
public static Bidi setLine(Bidi bidi, BidiBase paraBidi,
Bidi newBidi, BidiBase newBidiBase,
int start, int limit) {
int length;
BidiBase lineBidi = newBidiBase;
/* set the values in lineBidi from its paraBidi parent */
/* class members are already initialized to 0 */
// lineBidi.paraBidi = null; /* mark unfinished setLine */
// lineBidi.flags = 0;
// lineBidi.controlCount = 0;
length = lineBidi.length = lineBidi.originalLength =
lineBidi.resultLength = limit - start;
lineBidi.text = new char[length];
System.arraycopy(paraBidi.text, start, lineBidi.text, 0, length);
lineBidi.paraLevel = paraBidi.GetParaLevelAt(start);
lineBidi.paraCount = paraBidi.paraCount;
lineBidi.runs = new BidiRun[0];
if (paraBidi.controlCount > 0) {
int j;
for (j = start; j < limit; j++) {
if (BidiBase.IsBidiControlChar(paraBidi.text[j])) {
lineBidi.controlCount++;
}
}
lineBidi.resultLength -= lineBidi.controlCount;
}
/* copy proper subset of DirProps */
lineBidi.getDirPropsMemory(length);
lineBidi.dirProps = lineBidi.dirPropsMemory;
System.arraycopy(paraBidi.dirProps, start, lineBidi.dirProps, 0,
length);
/* copy proper subset of Levels */
lineBidi.getLevelsMemory(length);
lineBidi.levels = lineBidi.levelsMemory;
System.arraycopy(paraBidi.levels, start, lineBidi.levels, 0,
length);
lineBidi.runCount = -1;
if (paraBidi.direction != BidiBase.MIXED) {
/* the parent is already trivial */
lineBidi.direction = paraBidi.direction;
/*
* The parent's levels are all either
* implicitly or explicitly ==paraLevel;
* do the same here.
*/
if (paraBidi.trailingWSStart <= start) {
lineBidi.trailingWSStart = 0;
} else if (paraBidi.trailingWSStart < limit) {
lineBidi.trailingWSStart = paraBidi.trailingWSStart - start;
} else {
lineBidi.trailingWSStart = length;
}
} else {
byte[] levels = lineBidi.levels;
int i, trailingWSStart;
byte level;
setTrailingWSStart(lineBidi);
trailingWSStart = lineBidi.trailingWSStart;
/* recalculate lineBidi.direction */
if (trailingWSStart == 0) {
/* all levels are at paraLevel */
lineBidi.direction = (byte)(lineBidi.paraLevel & 1);
} else {
/* get the level of the first character */
level = (byte)(levels[0] & 1);
/* if there is anything of a different level, then the line
is mixed */
if (trailingWSStart < length &&
(lineBidi.paraLevel & 1) != level) {
/* the trailing WS is at paraLevel, which differs from
levels[0] */
lineBidi.direction = BidiBase.MIXED;
} else {
/* see if levels[1..trailingWSStart-1] have the same
direction as levels[0] and paraLevel */
for (i = 1; ; i++) {
if (i == trailingWSStart) {
/* the direction values match those in level */
lineBidi.direction = level;
break;
} else if ((levels[i] & 1) != level) {
lineBidi.direction = BidiBase.MIXED;
break;
}
}
}
}
switch(lineBidi.direction) {
case Bidi.DIRECTION_LEFT_TO_RIGHT:
/* make sure paraLevel is even */
lineBidi.paraLevel = (byte)
((lineBidi.paraLevel + 1) & ~1);
/* all levels are implicitly at paraLevel (important for
getLevels()) */
lineBidi.trailingWSStart = 0;
break;
case Bidi.DIRECTION_RIGHT_TO_LEFT:
/* make sure paraLevel is odd */
lineBidi.paraLevel |= 1;
/* all levels are implicitly at paraLevel (important for
getLevels()) */
lineBidi.trailingWSStart = 0;
break;
default:
break;
}
}
newBidiBase.paraBidi = paraBidi; /* mark successful setLine */
return newBidi;
}
static byte getLevelAt(BidiBase bidiBase, int charIndex)
{
/* return paraLevel if in the trailing WS run, otherwise the real level */
if (bidiBase.direction != BidiBase.MIXED || charIndex >= bidiBase.trailingWSStart) {
return bidiBase.GetParaLevelAt(charIndex);
} else {
return bidiBase.levels[charIndex];
}
}
static byte[] getLevels(BidiBase bidiBase)
{
int start = bidiBase.trailingWSStart;
int length = bidiBase.length;
if (start != length) {
/* the current levels array does not reflect the WS run */
/*
* After the previous if(), we know that the levels array
* has an implicit trailing WS run and therefore does not fully
* reflect itself all the levels.
* This must be a Bidi object for a line, and
* we need to create a new levels array.
*/
/* bidiBase.paraLevel is ok even if contextual multiple paragraphs,
since bidiBase is a line object */
Arrays.fill(bidiBase.levels, start, length, bidiBase.paraLevel);
/* this new levels array is set for the line and reflects the WS run */
bidiBase.trailingWSStart = length;
}
if (length < bidiBase.levels.length) {
byte[] levels = new byte[length];
System.arraycopy(bidiBase.levels, 0, levels, 0, length);
return levels;
}
return bidiBase.levels;
}
static BidiRun getLogicalRun(BidiBase bidiBase, int logicalPosition)
{
/* this is done based on runs rather than on levels since levels have
a special interpretation when REORDER_RUNS_ONLY
*/
BidiRun newRun = new BidiRun(), iRun;
getRuns(bidiBase);
int runCount = bidiBase.runCount;
int visualStart = 0, logicalLimit = 0;
iRun = bidiBase.runs[0];
for (int i = 0; i < runCount; i++) {
iRun = bidiBase.runs[i];
logicalLimit = iRun.start + iRun.limit - visualStart;
if ((logicalPosition >= iRun.start) &&
(logicalPosition < logicalLimit)) {
break;
}
visualStart = iRun.limit;
}
newRun.start = iRun.start;
newRun.limit = logicalLimit;
newRun.level = iRun.level;
return newRun;
}
/* in trivial cases there is only one trivial run; called by getRuns() */
private static void getSingleRun(BidiBase bidiBase, byte level) {
/* simple, single-run case */
bidiBase.runs = bidiBase.simpleRuns;
bidiBase.runCount = 1;
/* fill and reorder the single run */
bidiBase.runs[0] = new BidiRun(0, bidiBase.length, level);
}
/* reorder the runs array (L2) ---------------------------------------------- */
/*
* Reorder the same-level runs in the runs array.
* Here, runCount>1 and maxLevel>=minLevel>=paraLevel.
* All the visualStart fields=logical start before reordering.
* The "odd" bits are not set yet.
*
* Reordering with this data structure lends itself to some handy shortcuts:
*
* Since each run is moved but not modified, and since at the initial maxLevel
* each sequence of same-level runs consists of only one run each, we
* don't need to do anything there and can predecrement maxLevel.
* In many simple cases, the reordering is thus done entirely in the
* index mapping.
* Also, reordering occurs only down to the lowest odd level that occurs,
* which is minLevel|1. However, if the lowest level itself is odd, then
* in the last reordering the sequence of the runs at this level or higher
* will be all runs, and we don't need the elaborate loop to search for them.
* This is covered by ++minLevel instead of minLevel|=1 followed
* by an extra reorder-all after the reorder-some loop.
* About a trailing WS run:
* Such a run would need special treatment because its level is not
* reflected in levels[] if this is not a paragraph object.
* Instead, all characters from trailingWSStart on are implicitly at
* paraLevel.
* However, for all maxLevel>paraLevel, this run will never be reordered
* and does not need to be taken into account. maxLevel==paraLevel is only reordered
* if minLevel==paraLevel is odd, which is done in the extra segment.
* This means that for the main reordering loop we don't need to consider
* this run and can --runCount. If it is later part of the all-runs
* reordering, then runCount is adjusted accordingly.
*/
private static void reorderLine(BidiBase bidiBase, byte minLevel, byte maxLevel) {
/* nothing to do? */
if (maxLevel<=(minLevel|1)) {
return;
}
BidiRun[] runs;
BidiRun tempRun;
byte[] levels;
int firstRun, endRun, limitRun, runCount;
/*
* Reorder only down to the lowest odd level
* and reorder at an odd minLevel in a separate, simpler loop.
* See comments above for why minLevel is always incremented.
*/
++minLevel;
runs = bidiBase.runs;
levels = bidiBase.levels;
runCount = bidiBase.runCount;
/* do not include the WS run at paraLevel<=old minLevel except in the simple loop */
if (bidiBase.trailingWSStart < bidiBase.length) {
--runCount;
}
while (--maxLevel >= minLevel) {
firstRun = 0;
/* loop for all sequences of runs */
for ( ; ; ) {
/* look for a sequence of runs that are all at >=maxLevel */
/* look for the first run of such a sequence */
while (firstRun < runCount && levels[runs[firstRun].start] < maxLevel) {
++firstRun;
}
if (firstRun >= runCount) {
break; /* no more such runs */
}
/* look for the limit run of such a sequence (the run behind it) */
for (limitRun = firstRun; ++limitRun < runCount &&
levels[runs[limitRun].start]>=maxLevel; ) {}
/* Swap the entire sequence of runs from firstRun to limitRun-1. */
endRun = limitRun - 1;
while (firstRun < endRun) {
tempRun = runs[firstRun];
runs[firstRun] = runs[endRun];
runs[endRun] = tempRun;
++firstRun;
--endRun;
}
if (limitRun == runCount) {
break; /* no more such runs */
} else {
firstRun = limitRun + 1;
}
}
}
/* now do maxLevel==old minLevel (==odd!), see above */
if ((minLevel & 1) == 0) {
firstRun = 0;
/* include the trailing WS run in this complete reordering */
if (bidiBase.trailingWSStart == bidiBase.length) {
--runCount;
}
/* Swap the entire sequence of all runs. (endRun==runCount) */
while (firstRun < runCount) {
tempRun = runs[firstRun];
runs[firstRun] = runs[runCount];
runs[runCount] = tempRun;
++firstRun;
--runCount;
}
}
}
/* compute the runs array --------------------------------------------------- */
static int getRunFromLogicalIndex(BidiBase bidiBase, int logicalIndex) {
BidiRun[] runs = bidiBase.runs;
int runCount = bidiBase.runCount, visualStart = 0, i, length, logicalStart;
for (i = 0; i < runCount; i++) {
length = runs[i].limit - visualStart;
logicalStart = runs[i].start;
if ((logicalIndex >= logicalStart) && (logicalIndex < (logicalStart+length))) {
return i;
}
visualStart += length;
}
/* we should never get here */
throw new IllegalStateException("Internal ICU error in getRunFromLogicalIndex");
}
/*
* Compute the runs array from the levels array.
* After getRuns() returns true, runCount is guaranteed to be >0
* and the runs are reordered.
* Odd-level runs have visualStart on their visual right edge and
* they progress visually to the left.
* If option OPTION_INSERT_MARKS is set, insertRemove will contain the
* sum of appropriate LRM/RLM_BEFORE/AFTER flags.
* If option OPTION_REMOVE_CONTROLS is set, insertRemove will contain the
* negative number of BiDi control characters within this run.
*/
static void getRuns(BidiBase bidiBase) {
/*
* This method returns immediately if the runs are already set. This
* includes the case of length==0 (handled in setPara)..
*/
if (bidiBase.runCount >= 0) {
return;
}
if (bidiBase.direction != BidiBase.MIXED) {
/* simple, single-run case - this covers length==0 */
/* bidiBase.paraLevel is ok even for contextual multiple paragraphs */
getSingleRun(bidiBase, bidiBase.paraLevel);
} else /* BidiBase.MIXED, length>0 */ {
/* mixed directionality */
int length = bidiBase.length, limit;
byte[] levels = bidiBase.levels;
int i, runCount;
byte level = BidiBase.INTERNAL_LEVEL_DEFAULT_LTR; /* initialize with no valid level */
/*
* If there are WS characters at the end of the line
* and the run preceding them has a level different from
* paraLevel, then they will form their own run at paraLevel (L1).
* Count them separately.
* We need some special treatment for this in order to not
* modify the levels array which a line Bidi object shares
* with its paragraph parent and its other line siblings.
* In other words, for the trailing WS, it may be
* levels[]!=paraLevel but we have to treat it like it were so.
*/
limit = bidiBase.trailingWSStart;
/* count the runs, there is at least one non-WS run, and limit>0 */
runCount = 0;
for (i = 0; i < limit; ++i) {
/* increment runCount at the start of each run */
if (levels[i] != level) {
++runCount;
level = levels[i];
}
}
/*
* We don't need to see if the last run can be merged with a trailing
* WS run because setTrailingWSStart() would have done that.
*/
if (runCount == 1 && limit == length) {
/* There is only one non-WS run and no trailing WS-run. */
getSingleRun(bidiBase, levels[0]);
} else /* runCount>1 || limit<length */ {
/* allocate and set the runs */
BidiRun[] runs;
int runIndex, start;
byte minLevel = BidiBase.MAX_EXPLICIT_LEVEL + 1;
byte maxLevel=0;
/* now, count a (non-mergeable) WS run */
if (limit < length) {
++runCount;
}
/* runCount > 1 */
bidiBase.getRunsMemory(runCount);
runs = bidiBase.runsMemory;
/* set the runs */
/* FOOD FOR THOUGHT: this could be optimized, e.g.:
* 464->444, 484->444, 575->555, 595->555
* However, that would take longer. Check also how it would
* interact with BiDi control removal and inserting Marks.
*/
runIndex = 0;
/* search for the run limits and initialize visualLimit values with the run lengths */
i = 0;
do {
/* prepare this run */
start = i;
level = levels[i];
if (level < minLevel) {
minLevel = level;
}
if (level > maxLevel) {
maxLevel = level;
}
/* look for the run limit */
while (++i < limit && levels[i] == level) {}
/* i is another run limit */
runs[runIndex] = new BidiRun(start, i - start, level);
++runIndex;
} while (i < limit);
if (limit < length) {
/* there is a separate WS run */
runs[runIndex] = new BidiRun(limit, length - limit, bidiBase.paraLevel);
/* For the trailing WS run, bidiBase.paraLevel is ok even
if contextual multiple paragraphs. */
if (bidiBase.paraLevel < minLevel) {
minLevel = bidiBase.paraLevel;
}
}
/* set the object fields */
bidiBase.runs = runs;
bidiBase.runCount = runCount;
reorderLine(bidiBase, minLevel, maxLevel);
/* now add the direction flags and adjust the visualLimit's to be just that */
/* this loop will also handle the trailing WS run */
limit = 0;
for (i = 0; i < runCount; ++i) {
runs[i].level = levels[runs[i].start];
limit = (runs[i].limit += limit);
}
/* Set the embedding level for the trailing WS run. */
/* For a RTL paragraph, it will be the *first* run in visual order. */
/* For the trailing WS run, bidiBase.paraLevel is ok even if
contextual multiple paragraphs. */
if (runIndex < runCount) {
int trailingRun = ((bidiBase.paraLevel & 1) != 0)? 0 : runIndex;
runs[trailingRun].level = bidiBase.paraLevel;
}
}
}
/* handle insert LRM/RLM BEFORE/AFTER run */
if (bidiBase.insertPoints.size > 0) {
BidiBase.Point point;
int runIndex, ip;
for (ip = 0; ip < bidiBase.insertPoints.size; ip++) {
point = bidiBase.insertPoints.points[ip];
runIndex = getRunFromLogicalIndex(bidiBase, point.pos);
bidiBase.runs[runIndex].insertRemove |= point.flag;
}
}
/* handle remove BiDi control characters */
if (bidiBase.controlCount > 0) {
int runIndex, ic;
char c;
for (ic = 0; ic < bidiBase.length; ic++) {
c = bidiBase.text[ic];
if (BidiBase.IsBidiControlChar(c)) {
runIndex = getRunFromLogicalIndex(bidiBase, ic);
bidiBase.runs[runIndex].insertRemove--;
}
}
}
}
static int[] prepareReorder(byte[] levels, byte[] pMinLevel, byte[] pMaxLevel)
{
int start;
byte level, minLevel, maxLevel;
if (levels == null || levels.length <= 0) {
return null;
}
/* determine minLevel and maxLevel */
minLevel = BidiBase.MAX_EXPLICIT_LEVEL + 1;
maxLevel = 0;
for (start = levels.length; start>0; ) {
level = levels[--start];
if (level > BidiBase.MAX_EXPLICIT_LEVEL + 1) {
return null;
}
if (level < minLevel) {
minLevel = level;
}
if (level > maxLevel) {
maxLevel = level;
}
}
pMinLevel[0] = minLevel;
pMaxLevel[0] = maxLevel;
/* initialize the index map */
int[] indexMap = new int[levels.length];
for (start = levels.length; start > 0; ) {
--start;
indexMap[start] = start;
}
return indexMap;
}
static int[] reorderVisual(byte[] levels)
{
byte[] aMinLevel = new byte[1];
byte[] aMaxLevel = new byte[1];
int start, end, limit, temp;
byte minLevel, maxLevel;
int[] indexMap = prepareReorder(levels, aMinLevel, aMaxLevel);
if (indexMap == null) {
return null;
}
minLevel = aMinLevel[0];
maxLevel = aMaxLevel[0];
/* nothing to do? */
if (minLevel == maxLevel && (minLevel & 1) == 0) {
return indexMap;
}
/* reorder only down to the lowest odd level */
minLevel |= 1;
/* loop maxLevel..minLevel */
do {
start = 0;
/* loop for all sequences of levels to reorder at the current maxLevel */
for ( ; ; ) {
/* look for a sequence of levels that are all at >=maxLevel */
/* look for the first index of such a sequence */
while (start < levels.length && levels[start] < maxLevel) {
++start;
}
if (start >= levels.length) {
break; /* no more such runs */
}
/* look for the limit of such a sequence (the index behind it) */
for (limit = start; ++limit < levels.length && levels[limit] >= maxLevel; ) {}
/*
* Swap the entire interval of indexes from start to limit-1.
* We don't need to swap the levels for the purpose of this
* algorithm: the sequence of levels that we look at does not
* move anyway.
*/
end = limit - 1;
while (start < end) {
temp = indexMap[start];
indexMap[start] = indexMap[end];
indexMap[end] = temp;
++start;
--end;
}
if (limit == levels.length) {
break; /* no more such sequences */
} else {
start = limit + 1;
}
}
} while (--maxLevel >= minLevel);
return indexMap;
}
static int[] getVisualMap(BidiBase bidiBase)
{
/* fill a visual-to-logical index map using the runs[] */
BidiRun[] runs = bidiBase.runs;
int logicalStart, visualStart, visualLimit;
int allocLength = bidiBase.length > bidiBase.resultLength ? bidiBase.length
: bidiBase.resultLength;
int[] indexMap = new int[allocLength];
visualStart = 0;
int idx = 0;
for (int j = 0; j < bidiBase.runCount; ++j) {
logicalStart = runs[j].start;
visualLimit = runs[j].limit;
if (runs[j].isEvenRun()) {
do { /* LTR */
indexMap[idx++] = logicalStart++;
} while (++visualStart < visualLimit);
} else {
logicalStart += visualLimit - visualStart; /* logicalLimit */
do { /* RTL */
indexMap[idx++] = --logicalStart;
} while (++visualStart < visualLimit);
}
/* visualStart==visualLimit; */
}
if (bidiBase.insertPoints.size > 0) {
int markFound = 0, runCount = bidiBase.runCount;
int insertRemove, i, j, k;
runs = bidiBase.runs;
/* count all inserted marks */
for (i = 0; i < runCount; i++) {
insertRemove = runs[i].insertRemove;
if ((insertRemove & (BidiBase.LRM_BEFORE|BidiBase.RLM_BEFORE)) > 0) {
markFound++;
}
if ((insertRemove & (BidiBase.LRM_AFTER|BidiBase.RLM_AFTER)) > 0) {
markFound++;
}
}
/* move back indexes by number of preceding marks */
k = bidiBase.resultLength;
for (i = runCount - 1; i >= 0 && markFound > 0; i--) {
insertRemove = runs[i].insertRemove;
if ((insertRemove & (BidiBase.LRM_AFTER|BidiBase.RLM_AFTER)) > 0) {
indexMap[--k] = BidiBase.MAP_NOWHERE;
markFound--;
}
visualStart = i > 0 ? runs[i-1].limit : 0;
for (j = runs[i].limit - 1; j >= visualStart && markFound > 0; j--) {
indexMap[--k] = indexMap[j];
}
if ((insertRemove & (BidiBase.LRM_BEFORE|BidiBase.RLM_BEFORE)) > 0) {
indexMap[--k] = BidiBase.MAP_NOWHERE;
markFound--;
}
}
}
else if (bidiBase.controlCount > 0) {
int runCount = bidiBase.runCount, logicalEnd;
int insertRemove, length, i, j, k, m;
char uchar;
boolean evenRun;
runs = bidiBase.runs;
visualStart = 0;
/* move forward indexes by number of preceding controls */
k = 0;
for (i = 0; i < runCount; i++, visualStart += length) {
length = runs[i].limit - visualStart;
insertRemove = runs[i].insertRemove;
/* if no control found yet, nothing to do in this run */
if ((insertRemove == 0) && (k == visualStart)) {
k += length;
continue;
}
/* if no control in this run */
if (insertRemove == 0) {
visualLimit = runs[i].limit;
for (j = visualStart; j < visualLimit; j++) {
indexMap[k++] = indexMap[j];
}
continue;
}
logicalStart = runs[i].start;
evenRun = runs[i].isEvenRun();
logicalEnd = logicalStart + length - 1;
for (j = 0; j < length; j++) {
m = evenRun ? logicalStart + j : logicalEnd - j;
uchar = bidiBase.text[m];
if (!BidiBase.IsBidiControlChar(uchar)) {
indexMap[k++] = m;
}
}
}
}
if (allocLength == bidiBase.resultLength) {
return indexMap;
}
int[] newMap = new int[bidiBase.resultLength];
System.arraycopy(indexMap, 0, newMap, 0, bidiBase.resultLength);
return newMap;
}
}

View File

@@ -0,0 +1,124 @@
/*
* Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
*******************************************************************************
* (C) Copyright IBM Corp. and others, 1996-2009 - All Rights Reserved *
* *
* The original version of this source code and documentation is copyrighted *
* and owned by IBM, These materials are provided under terms of a License *
* Agreement between IBM and Sun. This technology is protected by multiple *
* US and International patents. This notice and attribution to IBM may not *
* to removed. *
*******************************************************************************
*/
/* Written by Simon Montagu, Matitiahu Allouche
* (ported from C code written by Markus W. Scherer)
*/
package sun.text.bidi;
/**
* A BidiRun represents a sequence of characters at the same embedding level.
* The Bidi algorithm decomposes a piece of text into sequences of characters
* at the same embedding level, each such sequence is called a <quote>run</quote>.
*
* <p>A BidiRun represents such a run by storing its essential properties,
* but does not duplicate the characters which form the run.
*
* <p>The &quot;limit&quot; of the run is the position just after the
* last character, i.e., one more than that position.
*
* <p>This class has no public constructor, and its members cannot be
* modified by users.
*
* @see com.ibm.icu.text.Bidi
*/
public class BidiRun {
int start; /* first logical position of the run */
int limit; /* last visual position of the run +1 */
int insertRemove; /* if >0, flags for inserting LRM/RLM before/after run,
if <0, count of bidi controls within run */
byte level;
/*
* Default constructor
*
* Note that members start and limit of a run instance have different
* meanings depending whether the run is part of the runs array of a Bidi
* object, or if it is a reference returned by getVisualRun() or
* getLogicalRun().
* For a member of the runs array of a Bidi object,
* - start is the first logical position of the run in the source text.
* - limit is one after the last visual position of the run.
* For a reference returned by getLogicalRun() or getVisualRun(),
* - start is the first logical position of the run in the source text.
* - limit is one after the last logical position of the run.
*/
BidiRun()
{
this(0, 0, (byte)0);
}
/*
* Constructor
*/
BidiRun(int start, int limit, byte embeddingLevel)
{
this.start = start;
this.limit = limit;
this.level = embeddingLevel;
}
/*
* Copy the content of a BidiRun instance
*/
void copyFrom(BidiRun run)
{
this.start = run.start;
this.limit = run.limit;
this.level = run.level;
this.insertRemove = run.insertRemove;
}
/**
* Get level of run
*/
public byte getEmbeddingLevel()
{
return level;
}
/**
* Check if run level is even
* @return true if the embedding level of this run is even, i.e. it is a
* left-to-right run.
*/
boolean isEvenRun()
{
return (level & 1) == 0;
}
}

View File

@@ -0,0 +1,349 @@
/*
* Copyright (c) 2005, 2009, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
*******************************************************************************
* (C) Copyright IBM Corp. and others, 1996-2009 - All Rights Reserved *
* *
* The original version of this source code and documentation is copyrighted *
* and owned by IBM, These materials are provided under terms of a License *
* Agreement between IBM and Sun. This technology is protected by multiple *
* US and International patents. This notice and attribution to IBM may not *
* to removed. *
*******************************************************************************
*/
package sun.text.normalizer;
import java.io.InputStream;
import java.io.DataInputStream;
import java.io.IOException;
/**
* Trie implementation which stores data in char, 16 bits.
* @author synwee
* @see com.ibm.icu.impl.Trie
* @since release 2.1, Jan 01 2002
*/
// note that i need to handle the block calculations later, since chartrie
// in icu4c uses the same index array.
public class CharTrie extends Trie
{
// public constructors ---------------------------------------------
/**
* <p>Creates a new Trie with the settings for the trie data.</p>
* <p>Unserialize the 32-bit-aligned input stream and use the data for the
* trie.</p>
* @param inputStream file input stream to a ICU data file, containing
* the trie
* @param dataManipulate object which provides methods to parse the char
* data
* @throws IOException thrown when data reading fails
* @draft 2.1
*/
public CharTrie(InputStream inputStream,
DataManipulate dataManipulate) throws IOException
{
super(inputStream, dataManipulate);
if (!isCharTrie()) {
throw new IllegalArgumentException(
"Data given does not belong to a char trie.");
}
m_friendAgent_ = new FriendAgent();
}
/**
* Make a dummy CharTrie.
* A dummy trie is an empty runtime trie, used when a real data trie cannot
* be loaded.
*
* The trie always returns the initialValue,
* or the leadUnitValue for lead surrogate code points.
* The Latin-1 part is always set up to be linear.
*
* @param initialValue the initial value that is set for all code points
* @param leadUnitValue the value for lead surrogate code _units_ that do not
* have associated supplementary data
* @param dataManipulate object which provides methods to parse the char data
*/
public CharTrie(int initialValue, int leadUnitValue, DataManipulate dataManipulate) {
super(new char[BMP_INDEX_LENGTH+SURROGATE_BLOCK_COUNT], HEADER_OPTIONS_LATIN1_IS_LINEAR_MASK_, dataManipulate);
int dataLength, latin1Length, i, limit;
char block;
/* calculate the actual size of the dummy trie data */
/* max(Latin-1, block 0) */
dataLength=latin1Length= INDEX_STAGE_1_SHIFT_<=8 ? 256 : DATA_BLOCK_LENGTH;
if(leadUnitValue!=initialValue) {
dataLength+=DATA_BLOCK_LENGTH;
}
m_data_=new char[dataLength];
m_dataLength_=dataLength;
m_initialValue_=(char)initialValue;
/* fill the index and data arrays */
/* indexes are preset to 0 (block 0) */
/* Latin-1 data */
for(i=0; i<latin1Length; ++i) {
m_data_[i]=(char)initialValue;
}
if(leadUnitValue!=initialValue) {
/* indexes for lead surrogate code units to the block after Latin-1 */
block=(char)(latin1Length>>INDEX_STAGE_2_SHIFT_);
i=0xd800>>INDEX_STAGE_1_SHIFT_;
limit=0xdc00>>INDEX_STAGE_1_SHIFT_;
for(; i<limit; ++i) {
m_index_[i]=block;
}
/* data for lead surrogate code units */
limit=latin1Length+DATA_BLOCK_LENGTH;
for(i=latin1Length; i<limit; ++i) {
m_data_[i]=(char)leadUnitValue;
}
}
m_friendAgent_ = new FriendAgent();
}
/**
* Java friend implementation
*/
public class FriendAgent
{
/**
* Gives out the index array of the trie
* @return index array of trie
*/
public char[] getPrivateIndex()
{
return m_index_;
}
/**
* Gives out the data array of the trie
* @return data array of trie
*/
public char[] getPrivateData()
{
return m_data_;
}
/**
* Gives out the data offset in the trie
* @return data offset in the trie
*/
public int getPrivateInitialValue()
{
return m_initialValue_;
}
}
// public methods --------------------------------------------------
/**
* Java friend implementation
* To store the index and data array into the argument.
* @param friend java friend UCharacterProperty object to store the array
*/
public void putIndexData(UCharacterProperty friend)
{
friend.setIndexData(m_friendAgent_);
}
/**
* Gets the value associated with the codepoint.
* If no value is associated with the codepoint, a default value will be
* returned.
* @param ch codepoint
* @return offset to data
* @draft 2.1
*/
public final char getCodePointValue(int ch)
{
int offset;
// fastpath for U+0000..U+D7FF
if(0 <= ch && ch < UTF16.LEAD_SURROGATE_MIN_VALUE) {
// copy of getRawOffset()
offset = (m_index_[ch >> INDEX_STAGE_1_SHIFT_] << INDEX_STAGE_2_SHIFT_)
+ (ch & INDEX_STAGE_3_MASK_);
return m_data_[offset];
}
// handle U+D800..U+10FFFF
offset = getCodePointOffset(ch);
// return -1 if there is an error, in this case we return the default
// value: m_initialValue_
return (offset >= 0) ? m_data_[offset] : m_initialValue_;
}
/**
* Gets the value to the data which this lead surrogate character points
* to.
* Returned data may contain folding offset information for the next
* trailing surrogate character.
* This method does not guarantee correct results for trail surrogates.
* @param ch lead surrogate character
* @return data value
* @draft 2.1
*/
public final char getLeadValue(char ch)
{
return m_data_[getLeadOffset(ch)];
}
/**
* Get the value associated with a pair of surrogates.
* @param lead a lead surrogate
* @param trail a trail surrogate
* @draft 2.1
*/
public final char getSurrogateValue(char lead, char trail)
{
int offset = getSurrogateOffset(lead, trail);
if (offset > 0) {
return m_data_[offset];
}
return m_initialValue_;
}
/**
* <p>Get a value from a folding offset (from the value of a lead surrogate)
* and a trail surrogate.</p>
* <p>If the
* @param leadvalue value associated with the lead surrogate which contains
* the folding offset
* @param trail surrogate
* @return trie data value associated with the trail character
* @draft 2.1
*/
public final char getTrailValue(int leadvalue, char trail)
{
if (m_dataManipulate_ == null) {
throw new NullPointerException(
"The field DataManipulate in this Trie is null");
}
int offset = m_dataManipulate_.getFoldingOffset(leadvalue);
if (offset > 0) {
return m_data_[getRawOffset(offset,
(char)(trail & SURROGATE_MASK_))];
}
return m_initialValue_;
}
// protected methods -----------------------------------------------
/**
* <p>Parses the input stream and stores its trie content into a index and
* data array</p>
* @param inputStream data input stream containing trie data
* @exception IOException thrown when data reading fails
*/
protected final void unserialize(InputStream inputStream)
throws IOException
{
DataInputStream input = new DataInputStream(inputStream);
int indexDataLength = m_dataOffset_ + m_dataLength_;
m_index_ = new char[indexDataLength];
for (int i = 0; i < indexDataLength; i ++) {
m_index_[i] = input.readChar();
}
m_data_ = m_index_;
m_initialValue_ = m_data_[m_dataOffset_];
}
/**
* Gets the offset to the data which the surrogate pair points to.
* @param lead lead surrogate
* @param trail trailing surrogate
* @return offset to data
* @draft 2.1
*/
protected final int getSurrogateOffset(char lead, char trail)
{
if (m_dataManipulate_ == null) {
throw new NullPointerException(
"The field DataManipulate in this Trie is null");
}
// get fold position for the next trail surrogate
int offset = m_dataManipulate_.getFoldingOffset(getLeadValue(lead));
// get the real data from the folded lead/trail units
if (offset > 0) {
return getRawOffset(offset, (char)(trail & SURROGATE_MASK_));
}
// return -1 if there is an error, in this case we return the default
// value: m_initialValue_
return -1;
}
/**
* Gets the value at the argument index.
* For use internally in TrieIterator.
* @param index value at index will be retrieved
* @return 32 bit value
* @see com.ibm.icu.impl.TrieIterator
* @draft 2.1
*/
protected final int getValue(int index)
{
return m_data_[index];
}
/**
* Gets the default initial value
* @return 32 bit value
* @draft 2.1
*/
protected final int getInitialValue()
{
return m_initialValue_;
}
// private data members --------------------------------------------
/**
* Default value
*/
private char m_initialValue_;
/**
* Array of char data
*/
private char m_data_[];
/**
* Agent for friends
*/
private FriendAgent m_friendAgent_;
}

View File

@@ -0,0 +1,146 @@
/*
* Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
*******************************************************************************
* (C) Copyright IBM Corp. 1996-2005 - All Rights Reserved *
* *
* The original version of this source code and documentation is copyrighted *
* and owned by IBM, These materials are provided under terms of a License *
* Agreement between IBM and Sun. This technology is protected by multiple *
* US and International patents. This notice and attribution to IBM may not *
* to removed. *
*******************************************************************************
*/
package sun.text.normalizer;
import java.text.CharacterIterator;
/**
* This class is a wrapper around CharacterIterator and implements the
* UCharacterIterator protocol
* @author ram
*/
public class CharacterIteratorWrapper extends UCharacterIterator {
private CharacterIterator iterator;
public CharacterIteratorWrapper(CharacterIterator iter){
if(iter==null){
throw new IllegalArgumentException();
}
iterator = iter;
}
/**
* @see UCharacterIterator#current()
*/
public int current() {
int c = iterator.current();
if(c==CharacterIterator.DONE){
return DONE;
}
return c;
}
/**
* @see UCharacterIterator#getLength()
*/
public int getLength() {
return (iterator.getEndIndex() - iterator.getBeginIndex());
}
/**
* @see UCharacterIterator#getIndex()
*/
public int getIndex() {
return iterator.getIndex();
}
/**
* @see UCharacterIterator#next()
*/
public int next() {
int i = iterator.current();
iterator.next();
if(i==CharacterIterator.DONE){
return DONE;
}
return i;
}
/**
* @see UCharacterIterator#previous()
*/
public int previous() {
int i = iterator.previous();
if(i==CharacterIterator.DONE){
return DONE;
}
return i;
}
/**
* @see UCharacterIterator#setIndex(int)
*/
public void setIndex(int index) {
iterator.setIndex(index);
}
//// for StringPrep
/**
* @see UCharacterIterator#getText(char[])
*/
public int getText(char[] fillIn, int offset){
int length =iterator.getEndIndex() - iterator.getBeginIndex();
int currentIndex = iterator.getIndex();
if(offset < 0 || offset + length > fillIn.length){
throw new IndexOutOfBoundsException(Integer.toString(length));
}
for (char ch = iterator.first(); ch != CharacterIterator.DONE; ch = iterator.next()) {
fillIn[offset++] = ch;
}
iterator.setIndex(currentIndex);
return length;
}
/**
* Creates a clone of this iterator. Clones the underlying character iterator.
* @see UCharacterIterator#clone()
*/
public Object clone(){
try {
CharacterIteratorWrapper result = (CharacterIteratorWrapper) super.clone();
result.iterator = (CharacterIterator)this.iterator.clone();
return result;
} catch (CloneNotSupportedException e) {
return null; // only invoked if bad underlying character iterator
}
}
}

View File

@@ -0,0 +1,189 @@
/*
* Copyright (c) 2003, 2005, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
*******************************************************************************
* (C) Copyright IBM Corp. 1996-2005 - All Rights Reserved *
* *
* The original version of this source code and documentation is copyrighted *
* and owned by IBM, These materials are provided under terms of a License *
* Agreement between IBM and Sun. This technology is protected by multiple *
* US and International patents. This notice and attribution to IBM may not *
* to removed. *
*******************************************************************************
*/
package sun.text.normalizer;
import java.io.InputStream;
import java.io.DataInputStream;
import java.io.IOException;
import java.util.Arrays;
public final class ICUBinary
{
// public inner interface ------------------------------------------------
/**
* Special interface for data authentication
*/
public static interface Authenticate
{
/**
* Method used in ICUBinary.readHeader() to provide data format
* authentication.
* @param version version of the current data
* @return true if dataformat is an acceptable version, false otherwise
*/
public boolean isDataVersionAcceptable(byte version[]);
}
// public methods --------------------------------------------------------
/**
* <p>ICU data header reader method.
* Takes a ICU generated big-endian input stream, parse the ICU standard
* file header and authenticates them.</p>
* <p>Header format:
* <ul>
* <li> Header size (char)
* <li> Magic number 1 (byte)
* <li> Magic number 2 (byte)
* <li> Rest of the header size (char)
* <li> Reserved word (char)
* <li> Big endian indicator (byte)
* <li> Character set family indicator (byte)
* <li> Size of a char (byte) for c++ and c use
* <li> Reserved byte (byte)
* <li> Data format identifier (4 bytes), each ICU data has its own
* identifier to distinguish them. [0] major [1] minor
* [2] milli [3] micro
* <li> Data version (4 bytes), the change version of the ICU data
* [0] major [1] minor [2] milli [3] micro
* <li> Unicode version (4 bytes) this ICU is based on.
* </ul>
* </p>
* <p>
* Example of use:<br>
* <pre>
* try {
* FileInputStream input = new FileInputStream(filename);
* If (Utility.readICUDataHeader(input, dataformat, dataversion,
* unicode) {
* System.out.println("Verified file header, this is a ICU data file");
* }
* } catch (IOException e) {
* System.out.println("This is not a ICU data file");
* }
* </pre>
* </p>
* @param inputStream input stream that contains the ICU data header
* @param dataFormatIDExpected Data format expected. An array of 4 bytes
* information about the data format.
* E.g. data format ID 1.2.3.4. will became an array of
* {1, 2, 3, 4}
* @param authenticate user defined extra data authentication. This value
* can be null, if no extra authentication is needed.
* @exception IOException thrown if there is a read error or
* when header authentication fails.
* @draft 2.1
*/
public static final byte[] readHeader(InputStream inputStream,
byte dataFormatIDExpected[],
Authenticate authenticate)
throws IOException
{
DataInputStream input = new DataInputStream(inputStream);
char headersize = input.readChar();
int readcount = 2;
//reading the header format
byte magic1 = input.readByte();
readcount ++;
byte magic2 = input.readByte();
readcount ++;
if (magic1 != MAGIC1 || magic2 != MAGIC2) {
throw new IOException(MAGIC_NUMBER_AUTHENTICATION_FAILED_);
}
input.readChar(); // reading size
readcount += 2;
input.readChar(); // reading reserved word
readcount += 2;
byte bigendian = input.readByte();
readcount ++;
byte charset = input.readByte();
readcount ++;
byte charsize = input.readByte();
readcount ++;
input.readByte(); // reading reserved byte
readcount ++;
byte dataFormatID[] = new byte[4];
input.readFully(dataFormatID);
readcount += 4;
byte dataVersion[] = new byte[4];
input.readFully(dataVersion);
readcount += 4;
byte unicodeVersion[] = new byte[4];
input.readFully(unicodeVersion);
readcount += 4;
if (headersize < readcount) {
throw new IOException("Internal Error: Header size error");
}
input.skipBytes(headersize - readcount);
if (bigendian != BIG_ENDIAN_ || charset != CHAR_SET_
|| charsize != CHAR_SIZE_
|| !Arrays.equals(dataFormatIDExpected, dataFormatID)
|| (authenticate != null
&& !authenticate.isDataVersionAcceptable(dataVersion))) {
throw new IOException(HEADER_AUTHENTICATION_FAILED_);
}
return unicodeVersion;
}
// private variables -------------------------------------------------
/**
* Magic numbers to authenticate the data file
*/
private static final byte MAGIC1 = (byte)0xda;
private static final byte MAGIC2 = (byte)0x27;
/**
* File format authentication values
*/
private static final byte BIG_ENDIAN_ = 1;
private static final byte CHAR_SET_ = 0;
private static final byte CHAR_SIZE_ = 2;
/**
* Error messages
*/
private static final String MAGIC_NUMBER_AUTHENTICATION_FAILED_ =
"ICU data file error: Not an ICU data file";
private static final String HEADER_AUTHENTICATION_FAILED_ =
"ICU data file error: Header authentication failed, please check if you have a valid ICU data file";
}

View File

@@ -0,0 +1,83 @@
/*
* Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
*******************************************************************************
* (C) Copyright IBM Corp. 1996-2005 - All Rights Reserved *
* *
* The original version of this source code and documentation is copyrighted *
* and owned by IBM, These materials are provided under terms of a License *
* Agreement between IBM and Sun. This technology is protected by multiple *
* US and International patents. This notice and attribution to IBM may not *
* to removed. *
*******************************************************************************
*/
package sun.text.normalizer;
import java.io.InputStream;
import java.net.URL;
import java.security.AccessController;
import java.security.PrivilegedAction;
import java.util.MissingResourceException;
/**
* Provides access to ICU data files as InputStreams. Implements security checking.
*/
public final class ICUData {
private static InputStream getStream(final Class<ICUData> root, final String resourceName, boolean required) {
InputStream i = null;
if (System.getSecurityManager() != null) {
i = AccessController.doPrivileged(new PrivilegedAction<InputStream>() {
public InputStream run() {
return root.getResourceAsStream(resourceName);
}
});
} else {
i = root.getResourceAsStream(resourceName);
}
if (i == null && required) {
throw new MissingResourceException("could not locate data", root.getPackage().getName(), resourceName);
}
return i;
}
/*
* Convenience override that calls getStream(ICUData.class, resourceName, false);
*/
public static InputStream getStream(String resourceName) {
return getStream(ICUData.class, resourceName, false);
}
/*
* Convenience method that calls getStream(ICUData.class, resourceName, true).
*/
public static InputStream getRequiredStream(String resourceName) {
return getStream(ICUData.class, resourceName, true);
}
}

View File

@@ -0,0 +1,229 @@
/*
* Copyright (c) 2003, 2005, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
*******************************************************************************
* (C) Copyright IBM Corp. 1996-2005 - All Rights Reserved *
* *
* The original version of this source code and documentation is copyrighted *
* and owned by IBM, These materials are provided under terms of a License *
* Agreement between IBM and Sun. This technology is protected by multiple *
* US and International patents. This notice and attribution to IBM may not *
* to removed. *
*******************************************************************************
*/
package sun.text.normalizer;
import java.io.InputStream;
import java.io.DataInputStream;
import java.io.IOException;
import java.util.Arrays;
/**
* Trie implementation which stores data in int, 32 bits.
* @author synwee
* @see com.ibm.icu.impl.Trie
* @since release 2.1, Jan 01 2002
*/
public class IntTrie extends Trie
{
// public constructors ---------------------------------------------
/**
* <p>Creates a new Trie with the settings for the trie data.</p>
* <p>Unserialize the 32-bit-aligned input stream and use the data for the
* trie.</p>
* @param inputStream file input stream to a ICU data file, containing
* the trie
* @param dataManipulate object which provides methods to parse the char
* data
* @throws IOException thrown when data reading fails
* @draft 2.1
*/
public IntTrie(InputStream inputStream, DataManipulate datamanipulate)
throws IOException
{
super(inputStream, datamanipulate);
if (!isIntTrie()) {
throw new IllegalArgumentException(
"Data given does not belong to a int trie.");
}
}
// public methods --------------------------------------------------
/**
* Gets the value associated with the codepoint.
* If no value is associated with the codepoint, a default value will be
* returned.
* @param ch codepoint
* @return offset to data
* @draft 2.1
*/
public final int getCodePointValue(int ch)
{
int offset = getCodePointOffset(ch);
return (offset >= 0) ? m_data_[offset] : m_initialValue_;
}
/**
* Gets the value to the data which this lead surrogate character points
* to.
* Returned data may contain folding offset information for the next
* trailing surrogate character.
* This method does not guarantee correct results for trail surrogates.
* @param ch lead surrogate character
* @return data value
* @draft 2.1
*/
public final int getLeadValue(char ch)
{
return m_data_[getLeadOffset(ch)];
}
/**
* Get a value from a folding offset (from the value of a lead surrogate)
* and a trail surrogate.
* @param leadvalue the value of a lead surrogate that contains the
* folding offset
* @param trail surrogate
* @return trie data value associated with the trail character
* @draft 2.1
*/
public final int getTrailValue(int leadvalue, char trail)
{
if (m_dataManipulate_ == null) {
throw new NullPointerException(
"The field DataManipulate in this Trie is null");
}
int offset = m_dataManipulate_.getFoldingOffset(leadvalue);
if (offset > 0) {
return m_data_[getRawOffset(offset,
(char)(trail & SURROGATE_MASK_))];
}
return m_initialValue_;
}
// protected methods -----------------------------------------------
/**
* <p>Parses the input stream and stores its trie content into a index and
* data array</p>
* @param inputStream data input stream containing trie data
* @exception IOException thrown when data reading fails
*/
protected final void unserialize(InputStream inputStream)
throws IOException
{
super.unserialize(inputStream);
// one used for initial value
m_data_ = new int[m_dataLength_];
DataInputStream input = new DataInputStream(inputStream);
for (int i = 0; i < m_dataLength_; i ++) {
m_data_[i] = input.readInt();
}
m_initialValue_ = m_data_[0];
}
/**
* Gets the offset to the data which the surrogate pair points to.
* @param lead lead surrogate
* @param trail trailing surrogate
* @return offset to data
* @draft 2.1
*/
protected final int getSurrogateOffset(char lead, char trail)
{
if (m_dataManipulate_ == null) {
throw new NullPointerException(
"The field DataManipulate in this Trie is null");
}
// get fold position for the next trail surrogate
int offset = m_dataManipulate_.getFoldingOffset(getLeadValue(lead));
// get the real data from the folded lead/trail units
if (offset > 0) {
return getRawOffset(offset, (char)(trail & SURROGATE_MASK_));
}
// return -1 if there is an error, in this case we return the default
// value: m_initialValue_
return -1;
}
/**
* Gets the value at the argument index.
* For use internally in TrieIterator
* @param index value at index will be retrieved
* @return 32 bit value
* @see com.ibm.icu.impl.TrieIterator
* @draft 2.1
*/
protected final int getValue(int index)
{
return m_data_[index];
}
/**
* Gets the default initial value
* @return 32 bit value
* @draft 2.1
*/
protected final int getInitialValue()
{
return m_initialValue_;
}
// package private methods -----------------------------------------
/**
* Internal constructor for builder use
* @param index the index array to be slotted into this trie
* @param data the data array to be slotted into this trie
* @param initialvalue the initial value for this trie
* @param options trie options to use
* @param datamanipulate folding implementation
*/
IntTrie(char index[], int data[], int initialvalue, int options,
DataManipulate datamanipulate)
{
super(index, options, datamanipulate);
m_data_ = data;
m_dataLength_ = m_data_.length;
m_initialValue_ = initialvalue;
}
// private data members --------------------------------------------
/**
* Default value
*/
private int m_initialValue_;
/**
* Array of char data
*/
private int m_data_[];
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,389 @@
/*
* Copyright (c) 2005, 2009, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
*******************************************************************************
* (C) Copyright IBM Corp. and others, 1996-2009 - All Rights Reserved *
* *
* The original version of this source code and documentation is copyrighted *
* and owned by IBM, These materials are provided under terms of a License *
* Agreement between IBM and Sun. This technology is protected by multiple *
* US and International patents. This notice and attribution to IBM may not *
* to removed. *
*******************************************************************************
*/
package sun.text.normalizer;
import java.io.DataInputStream;
import java.io.InputStream;
import java.io.IOException;
/**
* @author Ram Viswanadha
*/
/*
* Description of the format of unorm.icu version 2.1.
*
* Main change from version 1 to version 2:
* Use of new, common Trie instead of normalization-specific tries.
* Change to version 2.1: add third/auxiliary trie with associated data.
*
* For more details of how to use the data structures see the code
* in unorm.cpp (runtime normalization code) and
* in gennorm.c and gennorm/store.c (build-time data generation).
*
* For the serialized format of Trie see Trie.c/TrieHeader.
*
* - Overall partition
*
* unorm.icu customarily begins with a UDataInfo structure, see udata.h and .c.
* After that there are the following structures:
*
* char indexes[INDEX_TOP]; -- INDEX_TOP=32, see enum in this file
*
* Trie normTrie; -- size in bytes=indexes[INDEX_TRIE_SIZE]
*
* char extraData[extraDataTop]; -- extraDataTop=indexes[INDEX_UCHAR_COUNT]
* extraData[0] contains the number of units for
* FC_NFKC_Closure (formatVersion>=2.1)
*
* char combiningTable[combiningTableTop]; -- combiningTableTop=indexes[INDEX_COMBINE_DATA_COUNT]
* combiningTableTop may include one 16-bit padding unit
* to make sure that fcdTrie is 32-bit-aligned
*
* Trie fcdTrie; -- size in bytes=indexes[INDEX_FCD_TRIE_SIZE]
*
* Trie auxTrie; -- size in bytes=indexes[INDEX_AUX_TRIE_SIZE]
*
*
* The indexes array contains lengths and sizes of the following arrays and structures
* as well as the following values:
* indexes[INDEX_COMBINE_FWD_COUNT]=combineFwdTop
* -- one more than the highest combining index computed for forward-only-combining characters
* indexes[INDEX_COMBINE_BOTH_COUNT]=combineBothTop-combineFwdTop
* -- number of combining indexes computed for both-ways-combining characters
* indexes[INDEX_COMBINE_BACK_COUNT]=combineBackTop-combineBothTop
* -- number of combining indexes computed for backward-only-combining characters
*
* indexes[INDEX_MIN_NF*_NO_MAYBE] (where *={ C, D, KC, KD })
* -- first code point with a quick check NF* value of NO/MAYBE
*
*
* - Tries
*
* The main structures are two Trie tables ("compact arrays"),
* each with one index array and one data array.
* See Trie.h and Trie.c.
*
*
* - Tries in unorm.icu
*
* The first trie (normTrie above)
* provides data for the NF* quick checks and normalization.
* The second trie (fcdTrie above) provides data just for FCD checks.
*
*
* - norm32 data words from the first trie
*
* The norm32Table contains one 32-bit word "norm32" per code point.
* It contains the following bit fields:
* 31..16 extra data index, EXTRA_SHIFT is used to shift this field down
* if this index is <EXTRA_INDEX_TOP then it is an index into
* extraData[] where variable-length normalization data for this
* code point is found
* if this index is <EXTRA_INDEX_TOP+EXTRA_SURROGATE_TOP
* then this is a norm32 for a leading surrogate, and the index
* value is used together with the following trailing surrogate
* code unit in the second trie access
* if this index is >=EXTRA_INDEX_TOP+EXTRA_SURROGATE_TOP
* then this is a norm32 for a "special" character,
* i.e., the character is a Hangul syllable or a Jamo
* see EXTRA_HANGUL etc.
* generally, instead of extracting this index from the norm32 and
* comparing it with the above constants,
* the normalization code compares the entire norm32 value
* with MIN_SPECIAL, SURROGATES_TOP, MIN_HANGUL etc.
*
* 15..8 combining class (cc) according to UnicodeData.txt
*
* 7..6 COMBINES_ANY flags, used in composition to see if a character
* combines with any following or preceding character(s)
* at all
* 7 COMBINES_BACK
* 6 COMBINES_FWD
*
* 5..0 quick check flags, set for "no" or "maybe", with separate flags for
* each normalization form
* the higher bits are "maybe" flags; for NF*D there are no such flags
* the lower bits are "no" flags for all forms, in the same order
* as the "maybe" flags,
* which is (MSB to LSB): NFKD NFD NFKC NFC
* 5..4 QC_ANY_MAYBE
* 3..0 QC_ANY_NO
* see further related constants
*
*
* - Extra data per code point
*
* "Extra data" is referenced by the index in norm32.
* It is variable-length data. It is only present, and only those parts
* of it are, as needed for a given character.
* The norm32 extra data index is added to the beginning of extraData[]
* to get to a vector of 16-bit words with data at the following offsets:
*
* [-1] Combining index for composition.
* Stored only if norm32&COMBINES_ANY .
* [0] Lengths of the canonical and compatibility decomposition strings.
* Stored only if there are decompositions, i.e.,
* if norm32&(QC_NFD|QC_NFKD)
* High byte: length of NFKD, or 0 if none
* Low byte: length of NFD, or 0 if none
* Each length byte also has another flag:
* Bit 7 of a length byte is set if there are non-zero
* combining classes (cc's) associated with the respective
* decomposition. If this flag is set, then the decomposition
* is preceded by a 16-bit word that contains the
* leading and trailing cc's.
* Bits 6..0 of a length byte are the length of the
* decomposition string, not counting the cc word.
* [1..n] NFD
* [n+1..] NFKD
*
* Each of the two decompositions consists of up to two parts:
* - The 16-bit words with the leading and trailing cc's.
* This is only stored if bit 7 of the corresponding length byte
* is set. In this case, at least one of the cc's is not zero.
* High byte: leading cc==cc of the first code point in the decomposition string
* Low byte: trailing cc==cc of the last code point in the decomposition string
* - The decomposition string in UTF-16, with length code units.
*
*
* - Combining indexes and combiningTable[]
*
* Combining indexes are stored at the [-1] offset of the extra data
* if the character combines forward or backward with any other characters.
* They are used for (re)composition in NF*C.
* Values of combining indexes are arranged according to whether a character
* combines forward, backward, or both ways:
* forward-only < both ways < backward-only
*
* The index values for forward-only and both-ways combining characters
* are indexes into the combiningTable[].
* The index values for backward-only combining characters are simply
* incremented from the preceding index values to be unique.
*
* In the combiningTable[], a variable-length list
* of variable-length (back-index, code point) pair entries is stored
* for each forward-combining character.
*
* These back-indexes are the combining indexes of both-ways or backward-only
* combining characters that the forward-combining character combines with.
*
* Each list is sorted in ascending order of back-indexes.
* Each list is terminated with the last back-index having bit 15 set.
*
* Each pair (back-index, code point) takes up either 2 or 3
* 16-bit words.
* The first word of a list entry is the back-index, with its bit 15 set if
* this is the last pair in the list.
*
* The second word contains flags in bits 15..13 that determine
* if there is a third word and how the combined character is encoded:
* 15 set if there is a third word in this list entry
* 14 set if the result is a supplementary character
* 13 set if the result itself combines forward
*
* According to these bits 15..14 of the second word,
* the result character is encoded as follows:
* 00 or 01 The result is <=0x1fff and stored in bits 12..0 of
* the second word.
* 10 The result is 0x2000..0xffff and stored in the third word.
* Bits 12..0 of the second word are not used.
* 11 The result is a supplementary character.
* Bits 9..0 of the leading surrogate are in bits 9..0 of
* the second word.
* Add 0xd800 to these bits to get the complete surrogate.
* Bits 12..10 of the second word are not used.
* The trailing surrogate is stored in the third word.
*
*
* - FCD trie
*
* The FCD trie is very simple.
* It is a folded trie with 16-bit data words.
* In each word, the high byte contains the leading cc of the character,
* and the low byte contains the trailing cc of the character.
* These cc's are the cc's of the first and last code points in the
* canonical decomposition of the character.
*
* Since all 16 bits are used for cc's, lead surrogates must be tested
* by checking the code unit instead of the trie data.
* This is done only if the 16-bit data word is not zero.
* If the code unit is a leading surrogate and the data word is not zero,
* then instead of cc's it contains the offset for the second trie lookup.
*
*
* - Auxiliary trie and data
*
*
* The auxiliary 16-bit trie contains data for additional properties.
* Bits
* 15..13 reserved
* 12 not NFC_Skippable (f) (formatVersion>=2.2)
* 11 flag: not a safe starter for canonical closure
* 10 composition exclusion
* 9.. 0 index into extraData[] to FC_NFKC_Closure string
* (not for lead surrogate),
* or lead surrogate offset (for lead surrogate, if 9..0 not zero)
*
* Conditions for "NF* Skippable" from Mark Davis' com.ibm.text.UCD.NFSkippable:
* (used in NormalizerTransliterator)
*
* A skippable character is
* a) unassigned, or ALL of the following:
* b) of combining class 0.
* c) not decomposed by this normalization form.
* AND if NFC or NFKC,
* d) can never compose with a previous character.
* e) can never compose with a following character.
* f) can never change if another character is added.
* Example: a-breve might satisfy all but f, but if you
* add an ogonek it changes to a-ogonek + breve
*
* a)..e) must be tested from norm32.
* Since f) is more complicated, the (not-)NFC_Skippable flag (f) is built
* into the auxiliary trie.
* The same bit is used for NFC and NFKC; (c) differs for them.
* As usual, we build the "not skippable" flags so that unassigned
* code points get a 0 bit.
* This bit is only valid after (a)..(e) test FALSE; test NFD_NO before (f) as well.
* Test Hangul LV syllables entirely in code.
*
*
* - FC_NFKC_Closure strings in extraData[]
*
* Strings are either stored as a single code unit or as the length
* followed by that many units.
*
*/
final class NormalizerDataReader implements ICUBinary.Authenticate {
/**
* <p>Protected constructor.</p>
* @param inputStream ICU uprop.dat file input stream
* @exception IOException throw if data file fails authentication
* @draft 2.1
*/
protected NormalizerDataReader(InputStream inputStream)
throws IOException{
unicodeVersion = ICUBinary.readHeader(inputStream, DATA_FORMAT_ID, this);
dataInputStream = new DataInputStream(inputStream);
}
// protected methods -------------------------------------------------
protected int[] readIndexes(int length)throws IOException{
int[] indexes = new int[length];
//Read the indexes
for (int i = 0; i <length ; i++) {
indexes[i] = dataInputStream.readInt();
}
return indexes;
}
/**
* <p>Reads unorm.icu, parse it into blocks of data to be stored in
* NormalizerImpl.</P
* @param normBytes
* @param fcdBytes
* @param auxBytes
* @param extraData
* @param combiningTable
* @exception thrown when data reading fails
* @draft 2.1
*/
protected void read(byte[] normBytes, byte[] fcdBytes, byte[] auxBytes,
char[] extraData, char[] combiningTable)
throws IOException{
//Read the bytes that make up the normTrie
dataInputStream.readFully(normBytes);
//normTrieStream= new ByteArrayInputStream(normBytes);
//Read the extra data
for(int i=0;i<extraData.length;i++){
extraData[i]=dataInputStream.readChar();
}
//Read the combining class table
for(int i=0; i<combiningTable.length; i++){
combiningTable[i]=dataInputStream.readChar();
}
//Read the fcdTrie
dataInputStream.readFully(fcdBytes);
//Read the AuxTrie
dataInputStream.readFully(auxBytes);
}
public byte[] getDataFormatVersion(){
return DATA_FORMAT_VERSION;
}
public boolean isDataVersionAcceptable(byte version[])
{
return version[0] == DATA_FORMAT_VERSION[0]
&& version[2] == DATA_FORMAT_VERSION[2]
&& version[3] == DATA_FORMAT_VERSION[3];
}
public byte[] getUnicodeVersion(){
return unicodeVersion;
}
// private data members -------------------------------------------------
/**
* ICU data file input stream
*/
private DataInputStream dataInputStream;
private byte[] unicodeVersion;
/**
* File format version that this class understands.
* No guarantees are made if a older version is used
* see store.c of gennorm for more information and values
*/
private static final byte DATA_FORMAT_ID[] = {(byte)0x4E, (byte)0x6F,
(byte)0x72, (byte)0x6D};
private static final byte DATA_FORMAT_VERSION[] = {(byte)0x2, (byte)0x2,
(byte)0x5, (byte)0x2};
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,140 @@
/*
* Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
*******************************************************************************
* (C) Copyright IBM Corp. 1996-2005 - All Rights Reserved *
* *
* The original version of this source code and documentation is copyrighted *
* and owned by IBM, These materials are provided under terms of a License *
* Agreement between IBM and Sun. This technology is protected by multiple *
* US and International patents. This notice and attribution to IBM may not *
* to removed. *
*******************************************************************************
*/
package sun.text.normalizer;
/**
* <p>Interface for enabling iteration over sets of <int index, int value>,
* where index is the sorted integer index in ascending order and value, its
* associated integer value.</p>
* <p>The result for each iteration is the consecutive range of
* <int index, int value> with the same value. Result is represented by
* <start, limit, value> where</p>
* <ul>
* <li> start is the starting integer of the result range
* <li> limit is 1 after the maximum integer that follows start, such that
* all integers between start and (limit - 1), inclusive, have the same
* associated integer value.
* <li> value is the integer value that all integers from start to (limit - 1)
* share in common.
* </ul>
* <p>
* Hence value(start) = value(start + 1) = .... = value(start + n) = .... =
* value(limit - 1). However value(start -1) != value(start) and
* value(limit) != value(start).
* </p>
* <p>Most implementations will be created by factory methods, such as the
* character type iterator in UCharacter.getTypeIterator. See example below.
* </p>
* Example of use:<br>
* <pre>
* RangeValueIterator iterator = UCharacter.getTypeIterator();
* RangeValueIterator.Element result = new RangeValueIterator.Element();
* while (iterator.next(result)) {
* System.out.println("Codepoint \\u" +
* Integer.toHexString(result.start) +
* " to codepoint \\u" +
* Integer.toHexString(result.limit - 1) +
* " has the character type " + result.value);
* }
* </pre>
* @author synwee
* @stable ICU 2.6
*/
public interface RangeValueIterator
{
// public inner class ---------------------------------------------
/**
* Return result wrapper for com.ibm.icu.util.RangeValueIterator.
* Stores the start and limit of the continous result range and the
* common value all integers between [start, limit - 1] has.
* @stable ICU 2.6
*/
public class Element
{
// public data member ---------------------------------------------
/**
* Starting integer of the continuous result range that has the same
* value
* @stable ICU 2.6
*/
public int start;
/**
* (End + 1) integer of continuous result range that has the same
* value
* @stable ICU 2.6
*/
public int limit;
/**
* Gets the common value of the continous result range
* @stable ICU 2.6
*/
public int value;
// public constructor --------------------------------------------
/**
* Empty default constructor to make javadoc happy
* @stable ICU 2.4
*/
public Element()
{
}
}
// public methods -------------------------------------------------
/**
* <p>Gets the next maximal result range with a common value and returns
* true if we are not at the end of the iteration, false otherwise.</p>
* <p>If the return boolean is a false, the contents of elements will not
* be updated.</p>
* @param element for storing the result range and value
* @return true if we are not at the end of the iteration, false otherwise.
* @see Element
* @stable ICU 2.6
*/
public boolean next(Element element);
/**
* Resets the iterator to the beginning of the iteration.
* @stable ICU 2.6
*/
public void reset();
}

View File

@@ -0,0 +1,123 @@
/*
* Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
*******************************************************************************
* (C) Copyright IBM Corp. 1996-2005 - All Rights Reserved *
* *
* The original version of this source code and documentation is copyrighted *
* and owned by IBM, These materials are provided under terms of a License *
* Agreement between IBM and Sun. This technology is protected by multiple *
* US and International patents. This notice and attribution to IBM may not *
* to removed. *
*******************************************************************************
*/
package sun.text.normalizer;
/**
* <code>Replaceable</code> is an interface representing a
* string of characters that supports the replacement of a range of
* itself with a new string of characters. It is used by APIs that
* change a piece of text while retaining metadata. Metadata is data
* other than the Unicode characters returned by char32At(). One
* example of metadata is style attributes; another is an edit
* history, marking each character with an author and revision number.
*
* <p>An implicit aspect of the <code>Replaceable</code> API is that
* during a replace operation, new characters take on the metadata of
* the old characters. For example, if the string "the <b>bold</b>
* font" has range (4, 8) replaced with "strong", then it becomes "the
* <b>strong</b> font".
*
* <p><code>Replaceable</code> specifies ranges using a start
* offset and a limit offset. The range of characters thus specified
* includes the characters at offset start..limit-1. That is, the
* start offset is inclusive, and the limit offset is exclusive.
*
* <p><code>Replaceable</code> also includes API to access characters
* in the string: <code>length()</code>, <code>charAt()</code>,
* <code>char32At()</code>, and <code>extractBetween()</code>.
*
* <p>For a subclass to support metadata, typical behavior of
* <code>replace()</code> is the following:
* <ul>
* <li>Set the metadata of the new text to the metadata of the first
* character replaced</li>
* <li>If no characters are replaced, use the metadata of the
* previous character</li>
* <li>If there is no previous character (i.e. start == 0), use the
* following character</li>
* <li>If there is no following character (i.e. the replaceable was
* empty), use default metadata<br>
* <li>If the code point U+FFFF is seen, it should be interpreted as
* a special marker having no metadata<li>
* </li>
* </ul>
* If this is not the behavior, the subclass should document any differences.
*
* <p>Copyright &copy; IBM Corporation 1999. All rights reserved.
*
* @author Alan Liu
* @stable ICU 2.0
*/
public interface Replaceable {
/**
* Returns the number of 16-bit code units in the text.
* @return number of 16-bit code units in text
* @stable ICU 2.0
*/
int length();
/**
* Returns the 16-bit code unit at the given offset into the text.
* @param offset an integer between 0 and <code>length()</code>-1
* inclusive
* @return 16-bit code unit of text at given offset
* @stable ICU 2.0
*/
char charAt(int offset);
//// for StringPrep
/**
* Copies characters from this object into the destination
* character array. The first character to be copied is at index
* <code>srcStart</code>; the last character to be copied is at
* index <code>srcLimit-1</code> (thus the total number of
* characters to be copied is <code>srcLimit-srcStart</code>). The
* characters are copied into the subarray of <code>dst</code>
* starting at index <code>dstStart</code> and ending at index
* <code>dstStart + (srcLimit-srcStart) - 1</code>.
*
* @param srcStart the beginning index to copy, inclusive; <code>0
* <= start <= limit</code>.
* @param srcLimit the ending index to copy, exclusive;
* <code>start <= limit <= length()</code>.
* @param dst the destination array.
* @param dstStart the start offset in the destination array.
* @stable ICU 2.0
*/
void getChars(int srcStart, int srcLimit, char dst[], int dstStart);
}

View File

@@ -0,0 +1,123 @@
/*
* Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
*******************************************************************************
* (C) Copyright IBM Corp. 1996-2005 - All Rights Reserved *
* *
* The original version of this source code and documentation is copyrighted *
* and owned by IBM, These materials are provided under terms of a License *
* Agreement between IBM and Sun. This technology is protected by multiple *
* US and International patents. This notice and attribution to IBM may not *
* to removed. *
*******************************************************************************
*/
package sun.text.normalizer;
/**
* <code>ReplaceableString</code> is an adapter class that implements the
* <code>Replaceable</code> API around an ordinary <code>StringBuffer</code>.
*
* <p><em>Note:</em> This class does not support attributes and is not
* intended for general use. Most clients will need to implement
* {@link Replaceable} in their text representation class.
*
* <p>Copyright &copy; IBM Corporation 1999. All rights reserved.
*
* @see Replaceable
* @author Alan Liu
* @stable ICU 2.0
*/
public class ReplaceableString implements Replaceable {
private StringBuffer buf;
/**
* Construct a new object with the given initial contents.
* @param str initial contents
* @stable ICU 2.0
*/
public ReplaceableString(String str) {
buf = new StringBuffer(str);
}
//// for StringPrep
/**
* Construct a new object using <code>buf</code> for internal
* storage. The contents of <code>buf</code> at the time of
* construction are used as the initial contents. <em>Note!
* Modifications to <code>buf</code> will modify this object, and
* vice versa.</em>
* @param buf object to be used as internal storage
* @stable ICU 2.0
*/
public ReplaceableString(StringBuffer buf) {
this.buf = buf;
}
/**
* Return the number of characters contained in this object.
* <code>Replaceable</code> API.
* @stable ICU 2.0
*/
public int length() {
return buf.length();
}
/**
* Return the character at the given position in this object.
* <code>Replaceable</code> API.
* @param offset offset into the contents, from 0 to
* <code>length()</code> - 1
* @stable ICU 2.0
*/
public char charAt(int offset) {
return buf.charAt(offset);
}
//// for StringPrep
/**
* Copies characters from this object into the destination
* character array. The first character to be copied is at index
* <code>srcStart</code>; the last character to be copied is at
* index <code>srcLimit-1</code> (thus the total number of
* characters to be copied is <code>srcLimit-srcStart</code>). The
* characters are copied into the subarray of <code>dst</code>
* starting at index <code>dstStart</code> and ending at index
* <code>dstStart + (srcLimit-srcStart) - 1</code>.
*
* @param srcStart the beginning index to copy, inclusive; <code>0
* <= start <= limit</code>.
* @param srcLimit the ending index to copy, exclusive;
* <code>start <= limit <= length()</code>.
* @param dst the destination array.
* @param dstStart the start offset in the destination array.
* @stable ICU 2.0
*/
public void getChars(int srcStart, int srcLimit, char dst[], int dstStart) {
Utility.getChars(buf, srcStart, srcLimit, dst, dstStart);
}
}

View File

@@ -0,0 +1,190 @@
/*
* Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
*******************************************************************************
* (C) Copyright IBM Corp. 1996-2005 - All Rights Reserved *
* *
* The original version of this source code and documentation is copyrighted *
* and owned by IBM, These materials are provided under terms of a License *
* Agreement between IBM and Sun. This technology is protected by multiple *
* US and International patents. This notice and attribution to IBM may not *
* to removed. *
*******************************************************************************
*/
package sun.text.normalizer;
/**
* DLF docs must define behavior when Replaceable is mutated underneath
* the iterator.
*
* This and ICUCharacterIterator share some code, maybe they should share
* an implementation, or the common state and implementation should be
* moved up into UCharacterIterator.
*
* What are first, last, and getBeginIndex doing here?!?!?!
*/
public class ReplaceableUCharacterIterator extends UCharacterIterator {
// public constructor ------------------------------------------------------
/**
* Public constructor
* @param str text which the iterator will be based on
*/
public ReplaceableUCharacterIterator(String str){
if(str==null){
throw new IllegalArgumentException();
}
this.replaceable = new ReplaceableString(str);
this.currentIndex = 0;
}
//// for StringPrep
/**
* Public constructor
* @param buf buffer of text on which the iterator will be based
*/
public ReplaceableUCharacterIterator(StringBuffer buf){
if(buf==null){
throw new IllegalArgumentException();
}
this.replaceable = new ReplaceableString(buf);
this.currentIndex = 0;
}
// public methods ----------------------------------------------------------
/**
* Creates a copy of this iterator, does not clone the underlying
* <code>Replaceable</code>object
* @return copy of this iterator
*/
public Object clone(){
try {
return super.clone();
} catch (CloneNotSupportedException e) {
return null; // never invoked
}
}
/**
* Returns the current UTF16 character.
* @return current UTF16 character
*/
public int current(){
if (currentIndex < replaceable.length()) {
return replaceable.charAt(currentIndex);
}
return DONE;
}
/**
* Returns the length of the text
* @return length of the text
*/
public int getLength(){
return replaceable.length();
}
/**
* Gets the current currentIndex in text.
* @return current currentIndex in text.
*/
public int getIndex(){
return currentIndex;
}
/**
* Returns next UTF16 character and increments the iterator's currentIndex by 1.
* If the resulting currentIndex is greater or equal to the text length, the
* currentIndex is reset to the text length and a value of DONECODEPOINT is
* returned.
* @return next UTF16 character in text or DONE if the new currentIndex is off the
* end of the text range.
*/
public int next(){
if (currentIndex < replaceable.length()) {
return replaceable.charAt(currentIndex++);
}
return DONE;
}
/**
* Returns previous UTF16 character and decrements the iterator's currentIndex by
* 1.
* If the resulting currentIndex is less than 0, the currentIndex is reset to 0 and a
* value of DONECODEPOINT is returned.
* @return next UTF16 character in text or DONE if the new currentIndex is off the
* start of the text range.
*/
public int previous(){
if (currentIndex > 0) {
return replaceable.charAt(--currentIndex);
}
return DONE;
}
/**
* <p>Sets the currentIndex to the specified currentIndex in the text and returns that
* single UTF16 character at currentIndex.
* This assumes the text is stored as 16-bit code units.</p>
* @param currentIndex the currentIndex within the text.
* @exception IllegalArgumentException is thrown if an invalid currentIndex is
* supplied. i.e. currentIndex is out of bounds.
* @return the character at the specified currentIndex or DONE if the specified
* currentIndex is equal to the end of the text.
*/
public void setIndex(int currentIndex) {
if (currentIndex < 0 || currentIndex > replaceable.length()) {
throw new IllegalArgumentException();
}
this.currentIndex = currentIndex;
}
//// for StringPrep
public int getText(char[] fillIn, int offset){
int length = replaceable.length();
if(offset < 0 || offset + length > fillIn.length){
throw new IndexOutOfBoundsException(Integer.toString(length));
}
replaceable.getChars(0,length,fillIn,offset);
return length;
}
// private data members ----------------------------------------------------
/**
* Replaceable object
*/
private Replaceable replaceable;
/**
* Current currentIndex
*/
private int currentIndex;
}

View File

@@ -0,0 +1,367 @@
/*
* Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
*******************************************************************************
* (C) Copyright IBM Corp. 1996-2005 - All Rights Reserved *
* *
* The original version of this source code and documentation is copyrighted *
* and owned by IBM, These materials are provided under terms of a License *
* Agreement between IBM and Sun. This technology is protected by multiple *
* US and International patents. This notice and attribution to IBM may not *
* to removed. *
*******************************************************************************
*/
/*
**********************************************************************
* Author: Alan Liu
* Created: September 23 2003
* Since: ICU 2.8
**********************************************************************
*/
package sun.text.normalizer;
import java.text.ParsePosition;
/**
* An iterator that returns 32-bit code points. This class is deliberately
* <em>not</em> related to any of the JDK or ICU4J character iterator classes
* in order to minimize complexity.
* @author Alan Liu
* @since ICU 2.8
*/
public class RuleCharacterIterator {
// TODO: Ideas for later. (Do not implement if not needed, lest the
// code coverage numbers go down due to unused methods.)
// 1. Add a copy constructor, equals() method, clone() method.
// 2. Rather than return DONE, throw an exception if the end
// is reached -- this is an alternate usage model, probably not useful.
// 3. Return isEscaped from next(). If this happens,
// don't keep an isEscaped member variable.
/**
* Text being iterated.
*/
private String text;
/**
* Position of iterator.
*/
private ParsePosition pos;
/**
* Symbol table used to parse and dereference variables. May be null.
*/
private SymbolTable sym;
/**
* Current variable expansion, or null if none.
*/
private char[] buf;
/**
* Position within buf[]. Meaningless if buf == null.
*/
private int bufPos;
/**
* Flag indicating whether the last character was parsed from an escape.
*/
private boolean isEscaped;
/**
* Value returned when there are no more characters to iterate.
*/
public static final int DONE = -1;
/**
* Bitmask option to enable parsing of variable names. If (options &
* PARSE_VARIABLES) != 0, then an embedded variable will be expanded to
* its value. Variables are parsed using the SymbolTable API.
*/
public static final int PARSE_VARIABLES = 1;
/**
* Bitmask option to enable parsing of escape sequences. If (options &
* PARSE_ESCAPES) != 0, then an embedded escape sequence will be expanded
* to its value. Escapes are parsed using Utility.unescapeAt().
*/
public static final int PARSE_ESCAPES = 2;
/**
* Bitmask option to enable skipping of whitespace. If (options &
* SKIP_WHITESPACE) != 0, then whitespace characters will be silently
* skipped, as if they were not present in the input. Whitespace
* characters are defined by UCharacterProperty.isRuleWhiteSpace().
*/
public static final int SKIP_WHITESPACE = 4;
/**
* Constructs an iterator over the given text, starting at the given
* position.
* @param text the text to be iterated
* @param sym the symbol table, or null if there is none. If sym is null,
* then variables will not be deferenced, even if the PARSE_VARIABLES
* option is set.
* @param pos upon input, the index of the next character to return. If a
* variable has been dereferenced, then pos will <em>not</em> increment as
* characters of the variable value are iterated.
*/
public RuleCharacterIterator(String text, SymbolTable sym,
ParsePosition pos) {
if (text == null || pos.getIndex() > text.length()) {
throw new IllegalArgumentException();
}
this.text = text;
this.sym = sym;
this.pos = pos;
buf = null;
}
/**
* Returns true if this iterator has no more characters to return.
*/
public boolean atEnd() {
return buf == null && pos.getIndex() == text.length();
}
/**
* Returns the next character using the given options, or DONE if there
* are no more characters, and advance the position to the next
* character.
* @param options one or more of the following options, bitwise-OR-ed
* together: PARSE_VARIABLES, PARSE_ESCAPES, SKIP_WHITESPACE.
* @return the current 32-bit code point, or DONE
*/
public int next(int options) {
int c = DONE;
isEscaped = false;
for (;;) {
c = _current();
_advance(UTF16.getCharCount(c));
if (c == SymbolTable.SYMBOL_REF && buf == null &&
(options & PARSE_VARIABLES) != 0 && sym != null) {
String name = sym.parseReference(text, pos, text.length());
// If name == null there was an isolated SYMBOL_REF;
// return it. Caller must be prepared for this.
if (name == null) {
break;
}
bufPos = 0;
buf = sym.lookup(name);
if (buf == null) {
throw new IllegalArgumentException(
"Undefined variable: " + name);
}
// Handle empty variable value
if (buf.length == 0) {
buf = null;
}
continue;
}
if ((options & SKIP_WHITESPACE) != 0 &&
UCharacterProperty.isRuleWhiteSpace(c)) {
continue;
}
if (c == '\\' && (options & PARSE_ESCAPES) != 0) {
int offset[] = new int[] { 0 };
c = Utility.unescapeAt(lookahead(), offset);
jumpahead(offset[0]);
isEscaped = true;
if (c < 0) {
throw new IllegalArgumentException("Invalid escape");
}
}
break;
}
return c;
}
/**
* Returns true if the last character returned by next() was
* escaped. This will only be the case if the option passed in to
* next() included PARSE_ESCAPED and the next character was an
* escape sequence.
*/
public boolean isEscaped() {
return isEscaped;
}
/**
* Returns true if this iterator is currently within a variable expansion.
*/
public boolean inVariable() {
return buf != null;
}
/**
* Returns an object which, when later passed to setPos(), will
* restore this iterator's position. Usage idiom:
*
* RuleCharacterIterator iterator = ...;
* Object pos = iterator.getPos(null); // allocate position object
* for (;;) {
* pos = iterator.getPos(pos); // reuse position object
* int c = iterator.next(...);
* ...
* }
* iterator.setPos(pos);
*
* @param p a position object previously returned by getPos(),
* or null. If not null, it will be updated and returned. If
* null, a new position object will be allocated and returned.
* @return a position object which may be passed to setPos(),
* either `p,' or if `p' == null, a newly-allocated object
*/
public Object getPos(Object p) {
if (p == null) {
return new Object[] {buf, new int[] {pos.getIndex(), bufPos}};
}
Object[] a = (Object[]) p;
a[0] = buf;
int[] v = (int[]) a[1];
v[0] = pos.getIndex();
v[1] = bufPos;
return p;
}
/**
* Restores this iterator to the position it had when getPos()
* returned the given object.
* @param p a position object previously returned by getPos()
*/
public void setPos(Object p) {
Object[] a = (Object[]) p;
buf = (char[]) a[0];
int[] v = (int[]) a[1];
pos.setIndex(v[0]);
bufPos = v[1];
}
/**
* Skips ahead past any ignored characters, as indicated by the given
* options. This is useful in conjunction with the lookahead() method.
*
* Currently, this only has an effect for SKIP_WHITESPACE.
* @param options one or more of the following options, bitwise-OR-ed
* together: PARSE_VARIABLES, PARSE_ESCAPES, SKIP_WHITESPACE.
*/
public void skipIgnored(int options) {
if ((options & SKIP_WHITESPACE) != 0) {
for (;;) {
int a = _current();
if (!UCharacterProperty.isRuleWhiteSpace(a)) break;
_advance(UTF16.getCharCount(a));
}
}
}
/**
* Returns a string containing the remainder of the characters to be
* returned by this iterator, without any option processing. If the
* iterator is currently within a variable expansion, this will only
* extend to the end of the variable expansion. This method is provided
* so that iterators may interoperate with string-based APIs. The typical
* sequence of calls is to call skipIgnored(), then call lookahead(), then
* parse the string returned by lookahead(), then call jumpahead() to
* resynchronize the iterator.
* @return a string containing the characters to be returned by future
* calls to next()
*/
public String lookahead() {
if (buf != null) {
return new String(buf, bufPos, buf.length - bufPos);
} else {
return text.substring(pos.getIndex());
}
}
/**
* Advances the position by the given number of 16-bit code units.
* This is useful in conjunction with the lookahead() method.
* @param count the number of 16-bit code units to jump over
*/
public void jumpahead(int count) {
if (count < 0) {
throw new IllegalArgumentException();
}
if (buf != null) {
bufPos += count;
if (bufPos > buf.length) {
throw new IllegalArgumentException();
}
if (bufPos == buf.length) {
buf = null;
}
} else {
int i = pos.getIndex() + count;
pos.setIndex(i);
if (i > text.length()) {
throw new IllegalArgumentException();
}
}
}
/**
* Returns the current 32-bit code point without parsing escapes, parsing
* variables, or skipping whitespace.
* @return the current 32-bit code point
*/
private int _current() {
if (buf != null) {
return UTF16.charAt(buf, 0, buf.length, bufPos);
} else {
int i = pos.getIndex();
return (i < text.length()) ? UTF16.charAt(text, i) : DONE;
}
}
/**
* Advances the position by the given amount.
* @param count the number of 16-bit code units to advance past
*/
private void _advance(int count) {
if (buf != null) {
bufPos += count;
if (bufPos == buf.length) {
buf = null;
}
} else {
pos.setIndex(pos.getIndex() + count);
if (pos.getIndex() > text.length()) {
pos.setIndex(text.length());
}
}
}
}

View File

@@ -0,0 +1,124 @@
/*
* Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
*******************************************************************************
* (C) Copyright IBM Corp. 1996-2005 - All Rights Reserved *
* *
* The original version of this source code and documentation is copyrighted *
* and owned by IBM, These materials are provided under terms of a License *
* Agreement between IBM and Sun. This technology is protected by multiple *
* US and International patents. This notice and attribution to IBM may not *
* to removed. *
*******************************************************************************
*/
package sun.text.normalizer;
import java.text.ParsePosition;
/**
* An interface that defines both lookup protocol and parsing of
* symbolic names.
*
* <p>A symbol table maintains two kinds of mappings. The first is
* between symbolic names and their values. For example, if the
* variable with the name "start" is set to the value "alpha"
* (perhaps, though not necessarily, through an expression such as
* "$start=alpha"), then the call lookup("start") will return the
* char[] array ['a', 'l', 'p', 'h', 'a'].
*
* <p>The second kind of mapping is between character values and
* UnicodeMatcher objects. This is used by RuleBasedTransliterator,
* which uses characters in the private use area to represent objects
* such as UnicodeSets. If U+E015 is mapped to the UnicodeSet [a-z],
* then lookupMatcher(0xE015) will return the UnicodeSet [a-z].
*
* <p>Finally, a symbol table defines parsing behavior for symbolic
* names. All symbolic names start with the SYMBOL_REF character.
* When a parser encounters this character, it calls parseReference()
* with the position immediately following the SYMBOL_REF. The symbol
* table parses the name, if there is one, and returns it.
*
* @draft ICU 2.8
* @deprecated This is a draft API and might change in a future release of ICU.
*/
@Deprecated
public interface SymbolTable {
/**
* The character preceding a symbol reference name.
* @draft ICU 2.8
* @deprecated This is a draft API and might change in a future release of ICU.
*/
@Deprecated
static final char SYMBOL_REF = '$';
/**
* Lookup the characters associated with this string and return it.
* Return <tt>null</tt> if no such name exists. The resultant
* array may have length zero.
* @param s the symbolic name to lookup
* @return a char array containing the name's value, or null if
* there is no mapping for s.
* @draft ICU 2.8
* @deprecated This is a draft API and might change in a future release of ICU.
*/
@Deprecated
char[] lookup(String s);
/**
* Lookup the UnicodeMatcher associated with the given character, and
* return it. Return <tt>null</tt> if not found.
* @param ch a 32-bit code point from 0 to 0x10FFFF inclusive.
* @return the UnicodeMatcher object represented by the given
* character, or null if there is no mapping for ch.
* @draft ICU 2.8
* @deprecated This is a draft API and might change in a future release of ICU.
*/
@Deprecated
UnicodeMatcher lookupMatcher(int ch);
/**
* Parse a symbol reference name from the given string, starting
* at the given position. If no valid symbol reference name is
* found, return null and leave pos unchanged. That is, if the
* character at pos cannot start a name, or if pos is at or after
* text.length(), then return null. This indicates an isolated
* SYMBOL_REF character.
* @param text the text to parse for the name
* @param pos on entry, the index of the first character to parse.
* This is the character following the SYMBOL_REF character. On
* exit, the index after the last parsed character. If the parse
* failed, pos is unchanged on exit.
* @param limit the index after the last character to be parsed.
* @return the parsed name, or null if there is no valid symbolic
* name at the given position.
* @draft ICU 2.8
* @deprecated This is a draft API and might change in a future release of ICU.
*/
@Deprecated
String parseReference(String text, ParsePosition pos, int limit);
}

View File

@@ -0,0 +1,419 @@
/*
* Copyright (c) 2005, 2009, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
*******************************************************************************
* (C) Copyright IBM Corp. and others, 1996-2009 - All Rights Reserved *
* *
* The original version of this source code and documentation is copyrighted *
* and owned by IBM, These materials are provided under terms of a License *
* Agreement between IBM and Sun. This technology is protected by multiple *
* US and International patents. This notice and attribution to IBM may not *
* to removed. *
*******************************************************************************
*/
package sun.text.normalizer;
import java.io.DataInputStream;
import java.io.InputStream;
import java.io.IOException;
/**
* <p>A trie is a kind of compressed, serializable table of values
* associated with Unicode code points (0..0x10ffff).</p>
* <p>This class defines the basic structure of a trie and provides methods
* to <b>retrieve the offsets to the actual data</b>.</p>
* <p>Data will be the form of an array of basic types, char or int.</p>
* <p>The actual data format will have to be specified by the user in the
* inner static interface com.ibm.icu.impl.Trie.DataManipulate.</p>
* <p>This trie implementation is optimized for getting offset while walking
* forward through a UTF-16 string.
* Therefore, the simplest and fastest access macros are the
* fromLead() and fromOffsetTrail() methods.
* The fromBMP() method are a little more complicated; they get offsets even
* for lead surrogate codepoints, while the fromLead() method get special
* "folded" offsets for lead surrogate code units if there is relevant data
* associated with them.
* From such a folded offsets, an offset needs to be extracted to supply
* to the fromOffsetTrail() methods.
* To handle such supplementary codepoints, some offset information are kept
* in the data.</p>
* <p>Methods in com.ibm.icu.impl.Trie.DataManipulate are called to retrieve
* that offset from the folded value for the lead surrogate unit.</p>
* <p>For examples of use, see com.ibm.icu.impl.CharTrie or
* com.ibm.icu.impl.IntTrie.</p>
* @author synwee
* @see com.ibm.icu.impl.CharTrie
* @see com.ibm.icu.impl.IntTrie
* @since release 2.1, Jan 01 2002
*/
public abstract class Trie
{
// public class declaration ----------------------------------------
/**
* Character data in com.ibm.impl.Trie have different user-specified format
* for different purposes.
* This interface specifies methods to be implemented in order for
* com.ibm.impl.Trie, to surrogate offset information encapsulated within
* the data.
*/
public static interface DataManipulate
{
/**
* Called by com.ibm.icu.impl.Trie to extract from a lead surrogate's
* data
* the index array offset of the indexes for that lead surrogate.
* @param value data value for a surrogate from the trie, including the
* folding offset
* @return data offset or 0 if there is no data for the lead surrogate
*/
public int getFoldingOffset(int value);
}
// default implementation
private static class DefaultGetFoldingOffset implements DataManipulate {
public int getFoldingOffset(int value) {
return value;
}
}
// protected constructor -------------------------------------------
/**
* Trie constructor for CharTrie use.
* @param inputStream ICU data file input stream which contains the
* trie
* @param dataManipulate object containing the information to parse the
* trie data
* @throws IOException thrown when input stream does not have the
* right header.
*/
protected Trie(InputStream inputStream,
DataManipulate dataManipulate) throws IOException
{
DataInputStream input = new DataInputStream(inputStream);
// Magic number to authenticate the data.
int signature = input.readInt();
m_options_ = input.readInt();
if (!checkHeader(signature)) {
throw new IllegalArgumentException("ICU data file error: Trie header authentication failed, please check if you have the most updated ICU data file");
}
if(dataManipulate != null) {
m_dataManipulate_ = dataManipulate;
} else {
m_dataManipulate_ = new DefaultGetFoldingOffset();
}
m_isLatin1Linear_ = (m_options_ &
HEADER_OPTIONS_LATIN1_IS_LINEAR_MASK_) != 0;
m_dataOffset_ = input.readInt();
m_dataLength_ = input.readInt();
unserialize(inputStream);
}
/**
* Trie constructor
* @param index array to be used for index
* @param options used by the trie
* @param dataManipulate object containing the information to parse the
* trie data
*/
protected Trie(char index[], int options, DataManipulate dataManipulate)
{
m_options_ = options;
if(dataManipulate != null) {
m_dataManipulate_ = dataManipulate;
} else {
m_dataManipulate_ = new DefaultGetFoldingOffset();
}
m_isLatin1Linear_ = (m_options_ &
HEADER_OPTIONS_LATIN1_IS_LINEAR_MASK_) != 0;
m_index_ = index;
m_dataOffset_ = m_index_.length;
}
// protected data members ------------------------------------------
/**
* Lead surrogate code points' index displacement in the index array.
* 0x10000-0xd800=0x2800
* 0x2800 >> INDEX_STAGE_1_SHIFT_
*/
protected static final int LEAD_INDEX_OFFSET_ = 0x2800 >> 5;
/**
* Shift size for shifting right the input index. 1..9
*/
protected static final int INDEX_STAGE_1_SHIFT_ = 5;
/**
* Shift size for shifting left the index array values.
* Increases possible data size with 16-bit index values at the cost
* of compactability.
* This requires blocks of stage 2 data to be aligned by
* DATA_GRANULARITY.
* 0..INDEX_STAGE_1_SHIFT
*/
protected static final int INDEX_STAGE_2_SHIFT_ = 2;
/**
* Number of data values in a stage 2 (data array) block.
*/
protected static final int DATA_BLOCK_LENGTH=1<<INDEX_STAGE_1_SHIFT_;
/**
* Mask for getting the lower bits from the input index.
* DATA_BLOCK_LENGTH - 1.
*/
protected static final int INDEX_STAGE_3_MASK_ = DATA_BLOCK_LENGTH - 1;
/** Number of bits of a trail surrogate that are used in index table lookups. */
protected static final int SURROGATE_BLOCK_BITS=10-INDEX_STAGE_1_SHIFT_;
/**
* Number of index (stage 1) entries per lead surrogate.
* Same as number of index entries for 1024 trail surrogates,
* ==0x400>>INDEX_STAGE_1_SHIFT_
*/
protected static final int SURROGATE_BLOCK_COUNT=(1<<SURROGATE_BLOCK_BITS);
/** Length of the BMP portion of the index (stage 1) array. */
protected static final int BMP_INDEX_LENGTH=0x10000>>INDEX_STAGE_1_SHIFT_;
/**
* Surrogate mask to use when shifting offset to retrieve supplementary
* values
*/
protected static final int SURROGATE_MASK_ = 0x3FF;
/**
* Index or UTF16 characters
*/
protected char m_index_[];
/**
* Internal TrieValue which handles the parsing of the data value.
* This class is to be implemented by the user
*/
protected DataManipulate m_dataManipulate_;
/**
* Start index of the data portion of the trie. CharTrie combines
* index and data into a char array, so this is used to indicate the
* initial offset to the data portion.
* Note this index always points to the initial value.
*/
protected int m_dataOffset_;
/**
* Length of the data array
*/
protected int m_dataLength_;
// protected methods -----------------------------------------------
/**
* Gets the offset to the data which the surrogate pair points to.
* @param lead lead surrogate
* @param trail trailing surrogate
* @return offset to data
*/
protected abstract int getSurrogateOffset(char lead, char trail);
/**
* Gets the value at the argument index
* @param index value at index will be retrieved
* @return 32 bit value
*/
protected abstract int getValue(int index);
/**
* Gets the default initial value
* @return 32 bit value
*/
protected abstract int getInitialValue();
/**
* Gets the offset to the data which the index ch after variable offset
* points to.
* Note for locating a non-supplementary character data offset, calling
* <p>
* getRawOffset(0, ch);
* </p>
* will do. Otherwise if it is a supplementary character formed by
* surrogates lead and trail. Then we would have to call getRawOffset()
* with getFoldingIndexOffset(). See getSurrogateOffset().
* @param offset index offset which ch is to start from
* @param ch index to be used after offset
* @return offset to the data
*/
protected final int getRawOffset(int offset, char ch)
{
return (m_index_[offset + (ch >> INDEX_STAGE_1_SHIFT_)]
<< INDEX_STAGE_2_SHIFT_)
+ (ch & INDEX_STAGE_3_MASK_);
}
/**
* Gets the offset to data which the BMP character points to
* Treats a lead surrogate as a normal code point.
* @param ch BMP character
* @return offset to data
*/
protected final int getBMPOffset(char ch)
{
return (ch >= UTF16.LEAD_SURROGATE_MIN_VALUE
&& ch <= UTF16.LEAD_SURROGATE_MAX_VALUE)
? getRawOffset(LEAD_INDEX_OFFSET_, ch)
: getRawOffset(0, ch);
// using a getRawOffset(ch) makes no diff
}
/**
* Gets the offset to the data which this lead surrogate character points
* to.
* Data at the returned offset may contain folding offset information for
* the next trailing surrogate character.
* @param ch lead surrogate character
* @return offset to data
*/
protected final int getLeadOffset(char ch)
{
return getRawOffset(0, ch);
}
/**
* Internal trie getter from a code point.
* Could be faster(?) but longer with
* if((c32)<=0xd7ff) { (result)=_TRIE_GET_RAW(trie, data, 0, c32); }
* Gets the offset to data which the codepoint points to
* @param ch codepoint
* @return offset to data
*/
protected final int getCodePointOffset(int ch)
{
// if ((ch >> 16) == 0) slower
if (ch < 0) {
return -1;
} else if (ch < UTF16.LEAD_SURROGATE_MIN_VALUE) {
// fastpath for the part of the BMP below surrogates (D800) where getRawOffset() works
return getRawOffset(0, (char)ch);
} else if (ch < UTF16.SUPPLEMENTARY_MIN_VALUE) {
// BMP codepoint
return getBMPOffset((char)ch);
} else if (ch <= UCharacter.MAX_VALUE) {
// look at the construction of supplementary characters
// trail forms the ends of it.
return getSurrogateOffset(UTF16.getLeadSurrogate(ch),
(char)(ch & SURROGATE_MASK_));
} else {
// return -1 // if there is an error, in this case we return
return -1;
}
}
/**
* <p>Parses the inputstream and creates the trie index with it.</p>
* <p>This is overwritten by the child classes.
* @param inputStream input stream containing the trie information
* @exception IOException thrown when data reading fails.
*/
protected void unserialize(InputStream inputStream) throws IOException
{
//indexLength is a multiple of 1024 >> INDEX_STAGE_2_SHIFT_
m_index_ = new char[m_dataOffset_];
DataInputStream input = new DataInputStream(inputStream);
for (int i = 0; i < m_dataOffset_; i ++) {
m_index_[i] = input.readChar();
}
}
/**
* Determines if this is a 32 bit trie
* @return true if options specifies this is a 32 bit trie
*/
protected final boolean isIntTrie()
{
return (m_options_ & HEADER_OPTIONS_DATA_IS_32_BIT_) != 0;
}
/**
* Determines if this is a 16 bit trie
* @return true if this is a 16 bit trie
*/
protected final boolean isCharTrie()
{
return (m_options_ & HEADER_OPTIONS_DATA_IS_32_BIT_) == 0;
}
// private data members --------------------------------------------
/**
* Latin 1 option mask
*/
protected static final int HEADER_OPTIONS_LATIN1_IS_LINEAR_MASK_ = 0x200;
/**
* Constant number to authenticate the byte block
*/
protected static final int HEADER_SIGNATURE_ = 0x54726965;
/**
* Header option formatting
*/
private static final int HEADER_OPTIONS_SHIFT_MASK_ = 0xF;
protected static final int HEADER_OPTIONS_INDEX_SHIFT_ = 4;
protected static final int HEADER_OPTIONS_DATA_IS_32_BIT_ = 0x100;
/**
* Flag indicator for Latin quick access data block
*/
private boolean m_isLatin1Linear_;
/**
* <p>Trie options field.</p>
* <p>options bit field:<br>
* 9 1 = Latin-1 data is stored linearly at data + DATA_BLOCK_LENGTH<br>
* 8 0 = 16-bit data, 1=32-bit data<br>
* 7..4 INDEX_STAGE_1_SHIFT // 0..INDEX_STAGE_2_SHIFT<br>
* 3..0 INDEX_STAGE_2_SHIFT // 1..9<br>
*/
private int m_options_;
// private methods ---------------------------------------------------
/**
* Authenticates raw data header.
* Checking the header information, signature and options.
* @param signature This contains the options and type of a Trie
* @return true if the header is authenticated valid
*/
private final boolean checkHeader(int signature)
{
// check the signature
// Trie in big-endian US-ASCII (0x54726965).
// Magic number to authenticate the data.
if (signature != HEADER_SIGNATURE_) {
return false;
}
if ((m_options_ & HEADER_OPTIONS_SHIFT_MASK_) !=
INDEX_STAGE_1_SHIFT_ ||
((m_options_ >> HEADER_OPTIONS_INDEX_SHIFT_) &
HEADER_OPTIONS_SHIFT_MASK_)
!= INDEX_STAGE_2_SHIFT_) {
return false;
}
return true;
}
}

View File

@@ -0,0 +1,548 @@
/*
* Copyright (c) 2005, 2009, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
*******************************************************************************
* (C) Copyright IBM Corp. and others, 1996-2009 - All Rights Reserved *
* *
* The original version of this source code and documentation is copyrighted *
* and owned by IBM, These materials are provided under terms of a License *
* Agreement between IBM and Sun. This technology is protected by multiple *
* US and International patents. This notice and attribution to IBM may not *
* to removed. *
*******************************************************************************
*/
package sun.text.normalizer;
/**
* <p>Class enabling iteration of the values in a Trie.</p>
* <p>Result of each iteration contains the interval of codepoints that have
* the same value type and the value type itself.</p>
* <p>The comparison of each codepoint value is done via extract(), which the
* default implementation is to return the value as it is.</p>
* <p>Method extract() can be overwritten to perform manipulations on
* codepoint values in order to perform specialized comparison.</p>
* <p>TrieIterator is designed to be a generic iterator for the CharTrie
* and the IntTrie, hence to accommodate both types of data, the return
* result will be in terms of int (32 bit) values.</p>
* <p>See com.ibm.icu.text.UCharacterTypeIterator for examples of use.</p>
* <p>Notes for porting utrie_enum from icu4c to icu4j:<br>
* Internally, icu4c's utrie_enum performs all iterations in its body. In Java
* sense, the caller will have to pass a object with a callback function
* UTrieEnumRange(const void *context, UChar32 start, UChar32 limit,
* uint32_t value) into utrie_enum. utrie_enum will then find ranges of
* codepoints with the same value as determined by
* UTrieEnumValue(const void *context, uint32_t value). for each range,
* utrie_enum calls the callback function to perform a task. In this way,
* icu4c performs the iteration within utrie_enum.
* To follow the JDK model, icu4j is slightly different from icu4c.
* Instead of requesting the caller to implement an object for a callback.
* The caller will have to implement a subclass of TrieIterator, fleshing out
* the method extract(int) (equivalent to UTrieEnumValue). Independent of icu4j,
* the caller will have to code his own iteration and flesh out the task
* (equivalent to UTrieEnumRange) to be performed in the iteration loop.
* </p>
* <p>There are basically 3 usage scenarios for porting:</p>
* <p>1) UTrieEnumValue is the only implemented callback then just implement a
* subclass of TrieIterator and override the extract(int) method. The
* extract(int) method is analogus to UTrieEnumValue callback.
* </p>
* <p>2) UTrieEnumValue and UTrieEnumRange both are implemented then implement
* a subclass of TrieIterator, override the extract method and iterate, e.g
* </p>
* <p>utrie_enum(&normTrie, _enumPropertyStartsValue, _enumPropertyStartsRange,
* set);<br>
* In Java :<br>
* <pre>
* class TrieIteratorImpl extends TrieIterator{
* public TrieIteratorImpl(Trie data){
* super(data);
* }
* public int extract(int value){
* // port the implementation of _enumPropertyStartsValue here
* }
* }
* ....
* TrieIterator fcdIter = new TrieIteratorImpl(fcdTrieImpl.fcdTrie);
* while(fcdIter.next(result)) {
* // port the implementation of _enumPropertyStartsRange
* }
* </pre>
* </p>
* <p>3) UTrieEnumRange is the only implemented callback then just implement
* the while loop, when utrie_enum is called
* <pre>
* // utrie_enum(&fcdTrie, NULL, _enumPropertyStartsRange, set);
* TrieIterator fcdIter = new TrieIterator(fcdTrieImpl.fcdTrie);
* while(fcdIter.next(result)){
* set.add(result.start);
* }
* </pre>
* </p>
* @author synwee
* @see com.ibm.icu.impl.Trie
* @see com.ibm.icu.lang.UCharacterTypeIterator
* @since release 2.1, Jan 17 2002
*/
public class TrieIterator implements RangeValueIterator
{
// public constructor ---------------------------------------------
/**
* TrieEnumeration constructor
* @param trie to be used
* @exception IllegalArgumentException throw when argument is null.
*/
public TrieIterator(Trie trie)
{
if (trie == null) {
throw new IllegalArgumentException(
"Argument trie cannot be null");
}
m_trie_ = trie;
// synwee: check that extract belongs to the child class
m_initialValue_ = extract(m_trie_.getInitialValue());
reset();
}
// public methods -------------------------------------------------
/**
* <p>Returns true if we are not at the end of the iteration, false
* otherwise.</p>
* <p>The next set of codepoints with the same value type will be
* calculated during this call and returned in the arguement element.</p>
* @param element return result
* @return true if we are not at the end of the iteration, false otherwise.
* @exception NoSuchElementException - if no more elements exist.
* @see com.ibm.icu.util.RangeValueIterator.Element
*/
public final boolean next(Element element)
{
if (m_nextCodepoint_ > UCharacter.MAX_VALUE) {
return false;
}
if (m_nextCodepoint_ < UCharacter.SUPPLEMENTARY_MIN_VALUE &&
calculateNextBMPElement(element)) {
return true;
}
calculateNextSupplementaryElement(element);
return true;
}
/**
* Resets the iterator to the beginning of the iteration
*/
public final void reset()
{
m_currentCodepoint_ = 0;
m_nextCodepoint_ = 0;
m_nextIndex_ = 0;
m_nextBlock_ = m_trie_.m_index_[0] << Trie.INDEX_STAGE_2_SHIFT_;
if (m_nextBlock_ == 0) {
m_nextValue_ = m_initialValue_;
}
else {
m_nextValue_ = extract(m_trie_.getValue(m_nextBlock_));
}
m_nextBlockIndex_ = 0;
m_nextTrailIndexOffset_ = TRAIL_SURROGATE_INDEX_BLOCK_LENGTH_;
}
// protected methods ----------------------------------------------
/**
* Called by next() to extracts a 32 bit value from a trie value
* used for comparison.
* This method is to be overwritten if special manipulation is to be done
* to retrieve a relevant comparison.
* The default function is to return the value as it is.
* @param value a value from the trie
* @return extracted value
*/
protected int extract(int value)
{
return value;
}
// private methods ------------------------------------------------
/**
* Set the result values
* @param element return result object
* @param start codepoint of range
* @param limit (end + 1) codepoint of range
* @param value common value of range
*/
private final void setResult(Element element, int start, int limit,
int value)
{
element.start = start;
element.limit = limit;
element.value = value;
}
/**
* Finding the next element.
* This method is called just before returning the result of
* next().
* We always store the next element before it is requested.
* In the case that we have to continue calculations into the
* supplementary planes, a false will be returned.
* @param element return result object
* @return true if the next range is found, false if we have to proceed to
* the supplementary range.
*/
private final boolean calculateNextBMPElement(Element element)
{
int currentBlock = m_nextBlock_;
int currentValue = m_nextValue_;
m_currentCodepoint_ = m_nextCodepoint_;
m_nextCodepoint_ ++;
m_nextBlockIndex_ ++;
if (!checkBlockDetail(currentValue)) {
setResult(element, m_currentCodepoint_, m_nextCodepoint_,
currentValue);
return true;
}
// synwee check that next block index == 0 here
// enumerate BMP - the main loop enumerates data blocks
while (m_nextCodepoint_ < UCharacter.SUPPLEMENTARY_MIN_VALUE) {
m_nextIndex_ ++;
// because of the way the character is split to form the index
// the lead surrogate and trail surrogate can not be in the
// mid of a block
if (m_nextCodepoint_ == LEAD_SURROGATE_MIN_VALUE_) {
// skip lead surrogate code units,
// go to lead surrogate codepoints
m_nextIndex_ = BMP_INDEX_LENGTH_;
}
else if (m_nextCodepoint_ == TRAIL_SURROGATE_MIN_VALUE_) {
// go back to regular BMP code points
m_nextIndex_ = m_nextCodepoint_ >> Trie.INDEX_STAGE_1_SHIFT_;
}
m_nextBlockIndex_ = 0;
if (!checkBlock(currentBlock, currentValue)) {
setResult(element, m_currentCodepoint_, m_nextCodepoint_,
currentValue);
return true;
}
}
m_nextCodepoint_ --; // step one back since this value has not been
m_nextBlockIndex_ --; // retrieved yet.
return false;
}
/**
* Finds the next supplementary element.
* For each entry in the trie, the value to be delivered is passed through
* extract().
* We always store the next element before it is requested.
* Called after calculateNextBMP() completes its round of BMP characters.
* There is a slight difference in the usage of m_currentCodepoint_
* here as compared to calculateNextBMP(). Though both represents the
* lower bound of the next element, in calculateNextBMP() it gets set
* at the start of any loop, where-else, in calculateNextSupplementary()
* since m_currentCodepoint_ already contains the lower bound of the
* next element (passed down from calculateNextBMP()), we keep it till
* the end before resetting it to the new value.
* Note, if there are no more iterations, it will never get to here.
* Blocked out by next().
* @param element return result object
*/
private final void calculateNextSupplementaryElement(Element element)
{
int currentValue = m_nextValue_;
int currentBlock = m_nextBlock_;
m_nextCodepoint_ ++;
m_nextBlockIndex_ ++;
if (UTF16.getTrailSurrogate(m_nextCodepoint_)
!= UTF16.TRAIL_SURROGATE_MIN_VALUE) {
// this piece is only called when we are in the middle of a lead
// surrogate block
if (!checkNullNextTrailIndex() && !checkBlockDetail(currentValue)) {
setResult(element, m_currentCodepoint_, m_nextCodepoint_,
currentValue);
m_currentCodepoint_ = m_nextCodepoint_;
return;
}
// we have cleared one block
m_nextIndex_ ++;
m_nextTrailIndexOffset_ ++;
if (!checkTrailBlock(currentBlock, currentValue)) {
setResult(element, m_currentCodepoint_, m_nextCodepoint_,
currentValue);
m_currentCodepoint_ = m_nextCodepoint_;
return;
}
}
int nextLead = UTF16.getLeadSurrogate(m_nextCodepoint_);
// enumerate supplementary code points
while (nextLead < TRAIL_SURROGATE_MIN_VALUE_) {
// lead surrogate access
int leadBlock =
m_trie_.m_index_[nextLead >> Trie.INDEX_STAGE_1_SHIFT_] <<
Trie.INDEX_STAGE_2_SHIFT_;
if (leadBlock == m_trie_.m_dataOffset_) {
// no entries for a whole block of lead surrogates
if (currentValue != m_initialValue_) {
m_nextValue_ = m_initialValue_;
m_nextBlock_ = 0;
m_nextBlockIndex_ = 0;
setResult(element, m_currentCodepoint_, m_nextCodepoint_,
currentValue);
m_currentCodepoint_ = m_nextCodepoint_;
return;
}
nextLead += DATA_BLOCK_LENGTH_;
// number of total affected supplementary codepoints in one
// block
// this is not a simple addition of
// DATA_BLOCK_SUPPLEMENTARY_LENGTH since we need to consider
// that we might have moved some of the codepoints
m_nextCodepoint_ = UCharacterProperty.getRawSupplementary(
(char)nextLead,
(char)UTF16.TRAIL_SURROGATE_MIN_VALUE);
continue;
}
if (m_trie_.m_dataManipulate_ == null) {
throw new NullPointerException(
"The field DataManipulate in this Trie is null");
}
// enumerate trail surrogates for this lead surrogate
m_nextIndex_ = m_trie_.m_dataManipulate_.getFoldingOffset(
m_trie_.getValue(leadBlock +
(nextLead & Trie.INDEX_STAGE_3_MASK_)));
if (m_nextIndex_ <= 0) {
// no data for this lead surrogate
if (currentValue != m_initialValue_) {
m_nextValue_ = m_initialValue_;
m_nextBlock_ = 0;
m_nextBlockIndex_ = 0;
setResult(element, m_currentCodepoint_, m_nextCodepoint_,
currentValue);
m_currentCodepoint_ = m_nextCodepoint_;
return;
}
m_nextCodepoint_ += TRAIL_SURROGATE_COUNT_;
} else {
m_nextTrailIndexOffset_ = 0;
if (!checkTrailBlock(currentBlock, currentValue)) {
setResult(element, m_currentCodepoint_, m_nextCodepoint_,
currentValue);
m_currentCodepoint_ = m_nextCodepoint_;
return;
}
}
nextLead ++;
}
// deliver last range
setResult(element, m_currentCodepoint_, UCharacter.MAX_VALUE + 1,
currentValue);
}
/**
* Internal block value calculations
* Performs calculations on a data block to find codepoints in m_nextBlock_
* after the index m_nextBlockIndex_ that has the same value.
* Note m_*_ variables at this point is the next codepoint whose value
* has not been calculated.
* But when returned with false, it will be the last codepoint whose
* value has been calculated.
* @param currentValue the value which other codepoints are tested against
* @return true if the whole block has the same value as currentValue or if
* the whole block has been calculated, false otherwise.
*/
private final boolean checkBlockDetail(int currentValue)
{
while (m_nextBlockIndex_ < DATA_BLOCK_LENGTH_) {
m_nextValue_ = extract(m_trie_.getValue(m_nextBlock_ +
m_nextBlockIndex_));
if (m_nextValue_ != currentValue) {
return false;
}
++ m_nextBlockIndex_;
++ m_nextCodepoint_;
}
return true;
}
/**
* Internal block value calculations
* Performs calculations on a data block to find codepoints in m_nextBlock_
* that has the same value.
* Will call checkBlockDetail() if highlevel check fails.
* Note m_*_ variables at this point is the next codepoint whose value
* has not been calculated.
* @param currentBlock the initial block containing all currentValue
* @param currentValue the value which other codepoints are tested against
* @return true if the whole block has the same value as currentValue or if
* the whole block has been calculated, false otherwise.
*/
private final boolean checkBlock(int currentBlock, int currentValue)
{
m_nextBlock_ = m_trie_.m_index_[m_nextIndex_] <<
Trie.INDEX_STAGE_2_SHIFT_;
if (m_nextBlock_ == currentBlock &&
(m_nextCodepoint_ - m_currentCodepoint_) >= DATA_BLOCK_LENGTH_) {
// the block is the same as the previous one, filled with
// currentValue
m_nextCodepoint_ += DATA_BLOCK_LENGTH_;
}
else if (m_nextBlock_ == 0) {
// this is the all-initial-value block
if (currentValue != m_initialValue_) {
m_nextValue_ = m_initialValue_;
m_nextBlockIndex_ = 0;
return false;
}
m_nextCodepoint_ += DATA_BLOCK_LENGTH_;
}
else {
if (!checkBlockDetail(currentValue)) {
return false;
}
}
return true;
}
/**
* Internal block value calculations
* Performs calculations on multiple data blocks for a set of trail
* surrogates to find codepoints in m_nextBlock_ that has the same value.
* Will call checkBlock() for internal block checks.
* Note m_*_ variables at this point is the next codepoint whose value
* has not been calculated.
* @param currentBlock the initial block containing all currentValue
* @param currentValue the value which other codepoints are tested against
* @return true if the whole block has the same value as currentValue or if
* the whole block has been calculated, false otherwise.
*/
private final boolean checkTrailBlock(int currentBlock,
int currentValue)
{
// enumerate code points for this lead surrogate
while (m_nextTrailIndexOffset_ < TRAIL_SURROGATE_INDEX_BLOCK_LENGTH_)
{
// if we ever reach here, we are at the start of a new block
m_nextBlockIndex_ = 0;
// copy of most of the body of the BMP loop
if (!checkBlock(currentBlock, currentValue)) {
return false;
}
m_nextTrailIndexOffset_ ++;
m_nextIndex_ ++;
}
return true;
}
/**
* Checks if we are beginning at the start of a initial block.
* If we are then the rest of the codepoints in this initial block
* has the same values.
* We increment m_nextCodepoint_ and relevant data members if so.
* This is used only in for the supplementary codepoints because
* the offset to the trail indexes could be 0.
* @return true if we are at the start of a initial block.
*/
private final boolean checkNullNextTrailIndex()
{
if (m_nextIndex_ <= 0) {
m_nextCodepoint_ += TRAIL_SURROGATE_COUNT_ - 1;
int nextLead = UTF16.getLeadSurrogate(m_nextCodepoint_);
int leadBlock =
m_trie_.m_index_[nextLead >> Trie.INDEX_STAGE_1_SHIFT_] <<
Trie.INDEX_STAGE_2_SHIFT_;
if (m_trie_.m_dataManipulate_ == null) {
throw new NullPointerException(
"The field DataManipulate in this Trie is null");
}
m_nextIndex_ = m_trie_.m_dataManipulate_.getFoldingOffset(
m_trie_.getValue(leadBlock +
(nextLead & Trie.INDEX_STAGE_3_MASK_)));
m_nextIndex_ --;
m_nextBlockIndex_ = DATA_BLOCK_LENGTH_;
return true;
}
return false;
}
// private data members --------------------------------------------
/**
* Size of the stage 1 BMP indexes
*/
private static final int BMP_INDEX_LENGTH_ =
0x10000 >> Trie.INDEX_STAGE_1_SHIFT_;
/**
* Lead surrogate minimum value
*/
private static final int LEAD_SURROGATE_MIN_VALUE_ = 0xD800;
/**
* Trail surrogate minimum value
*/
private static final int TRAIL_SURROGATE_MIN_VALUE_ = 0xDC00;
/**
* Number of trail surrogate
*/
private static final int TRAIL_SURROGATE_COUNT_ = 0x400;
/**
* Number of stage 1 indexes for supplementary calculations that maps to
* each lead surrogate character.
* See second pass into getRawOffset for the trail surrogate character.
* 10 for significant number of bits for trail surrogates, 5 for what we
* discard during shifting.
*/
private static final int TRAIL_SURROGATE_INDEX_BLOCK_LENGTH_ =
1 << (10 - Trie.INDEX_STAGE_1_SHIFT_);
/**
* Number of data values in a stage 2 (data array) block.
*/
private static final int DATA_BLOCK_LENGTH_ =
1 << Trie.INDEX_STAGE_1_SHIFT_;
/**
* Trie instance
*/
private Trie m_trie_;
/**
* Initial value for trie values
*/
private int m_initialValue_;
/**
* Next element results and data.
*/
private int m_currentCodepoint_;
private int m_nextCodepoint_;
private int m_nextValue_;
private int m_nextIndex_;
private int m_nextBlock_;
private int m_nextBlockIndex_;
private int m_nextTrailIndexOffset_;
}

View File

@@ -0,0 +1,179 @@
/*
* Copyright (c) 2005, 2009, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
*******************************************************************************
* (C) Copyright IBM Corp. and others, 1996-2009 - All Rights Reserved *
* *
* The original version of this source code and documentation is copyrighted *
* and owned by IBM, These materials are provided under terms of a License *
* Agreement between IBM and Sun. This technology is protected by multiple *
* US and International patents. This notice and attribution to IBM may not *
* to removed. *
*******************************************************************************
* file name: UBiDiProps.java
* encoding: US-ASCII
* tab size: 8 (not used)
* indentation:4
*
* created on: 2005jan16
* created by: Markus W. Scherer
*
* Low-level Unicode bidi/shaping properties access.
* Java port of ubidi_props.h/.c.
*/
package sun.text.normalizer;
import java.io.BufferedInputStream;
import java.io.DataInputStream;
import java.io.InputStream;
import java.io.IOException;
public final class UBiDiProps {
// constructors etc. --------------------------------------------------- ***
// port of ubidi_openProps()
public UBiDiProps() throws IOException{
InputStream is=ICUData.getStream(DATA_FILE_NAME);
BufferedInputStream b=new BufferedInputStream(is, 4096 /* data buffer size */);
readData(b);
b.close();
is.close();
}
private void readData(InputStream is) throws IOException {
DataInputStream inputStream=new DataInputStream(is);
// read the header
ICUBinary.readHeader(inputStream, FMT, new IsAcceptable());
// read indexes[]
int i, count;
count=inputStream.readInt();
if(count<IX_INDEX_TOP) {
throw new IOException("indexes[0] too small in "+DATA_FILE_NAME);
}
indexes=new int[count];
indexes[0]=count;
for(i=1; i<count; ++i) {
indexes[i]=inputStream.readInt();
}
// read the trie
trie=new CharTrie(inputStream, null);
// read mirrors[]
count=indexes[IX_MIRROR_LENGTH];
if(count>0) {
mirrors=new int[count];
for(i=0; i<count; ++i) {
mirrors[i]=inputStream.readInt();
}
}
// read jgArray[]
count=indexes[IX_JG_LIMIT]-indexes[IX_JG_START];
jgArray=new byte[count];
for(i=0; i<count; ++i) {
jgArray[i]=inputStream.readByte();
}
}
// implement ICUBinary.Authenticate
private final class IsAcceptable implements ICUBinary.Authenticate {
public boolean isDataVersionAcceptable(byte version[]) {
return version[0]==1 &&
version[2]==Trie.INDEX_STAGE_1_SHIFT_ && version[3]==Trie.INDEX_STAGE_2_SHIFT_;
}
}
// UBiDiProps singleton
private static UBiDiProps gBdp=null;
// port of ubidi_getSingleton()
public static final synchronized UBiDiProps getSingleton() throws IOException {
if(gBdp==null) {
gBdp=new UBiDiProps();
}
return gBdp;
}
// UBiDiProps dummy singleton
private static UBiDiProps gBdpDummy=null;
private UBiDiProps(boolean makeDummy) { // ignore makeDummy, only creates a unique signature
indexes=new int[IX_TOP];
indexes[0]=IX_TOP;
trie=new CharTrie(0, 0, null); // dummy trie, always returns 0
}
/**
* Get a singleton dummy object, one that works with no real data.
* This can be used when the real data is not available.
* Using the dummy can reduce checks for available data after an initial failure.
* Port of ucase_getDummy().
*/
public static final synchronized UBiDiProps getDummy() {
if(gBdpDummy==null) {
gBdpDummy=new UBiDiProps(true);
}
return gBdpDummy;
}
public final int getClass(int c) {
return getClassFromProps(trie.getCodePointValue(c));
}
// data members -------------------------------------------------------- ***
private int indexes[];
private int mirrors[];
private byte jgArray[];
private CharTrie trie;
// data format constants ----------------------------------------------- ***
private static final String DATA_FILE_NAME = "/sun/text/resources/ubidi.icu";
/* format "BiDi" */
private static final byte FMT[]={ 0x42, 0x69, 0x44, 0x69 };
/* indexes into indexes[] */
private static final int IX_INDEX_TOP=0;
private static final int IX_MIRROR_LENGTH=3;
private static final int IX_JG_START=4;
private static final int IX_JG_LIMIT=5;
private static final int IX_TOP=16;
private static final int CLASS_MASK= 0x0000001f;
private static final int getClassFromProps(int props) {
return props&CLASS_MASK;
}
}

View File

@@ -0,0 +1,431 @@
/*
* Copyright (c) 2009, 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
*******************************************************************************
* (C) Copyright IBM Corp. and others, 1996-2009 - All Rights Reserved *
* *
* The original version of this source code and documentation is copyrighted *
* and owned by IBM, These materials are provided under terms of a License *
* Agreement between IBM and Sun. This technology is protected by multiple *
* US and International patents. This notice and attribution to IBM may not *
* to removed. *
*******************************************************************************
*/
package sun.text.normalizer;
import java.io.IOException;
import java.util.MissingResourceException;
/**
* <p>
* The UCharacter class provides extensions to the
* <a href="https://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Character.html">
* java.lang.Character</a> class. These extensions provide support for
* more Unicode properties and together with the <a href=../text/UTF16.html>UTF16</a>
* class, provide support for supplementary characters (those with code
* points above U+FFFF).
* Each ICU release supports the latest version of Unicode available at that time.
* </p>
* <p>
* Code points are represented in these API using ints. While it would be
* more convenient in Java to have a separate primitive datatype for them,
* ints suffice in the meantime.
* </p>
* <p>
* To use this class please add the jar file name icu4j.jar to the
* class path, since it contains data files which supply the information used
* by this file.<br>
* E.g. In Windows <br>
* <code>set CLASSPATH=%CLASSPATH%;$JAR_FILE_PATH/ucharacter.jar</code>.<br>
* Otherwise, another method would be to copy the files uprops.dat and
* unames.icu from the icu4j source subdirectory
* <i>$ICU4J_SRC/src/com.ibm.icu.impl.data</i> to your class directory
* <i>$ICU4J_CLASS/com.ibm.icu.impl.data</i>.
* </p>
* <p>
* Aside from the additions for UTF-16 support, and the updated Unicode
* properties, the main differences between UCharacter and Character are:
* <ul>
* <li> UCharacter is not designed to be a char wrapper and does not have
* APIs to which involves management of that single char.<br>
* These include:
* <ul>
* <li> char charValue(),
* <li> int compareTo(java.lang.Character, java.lang.Character), etc.
* </ul>
* <li> UCharacter does not include Character APIs that are deprecated, nor
* does it include the Java-specific character information, such as
* boolean isJavaIdentifierPart(char ch).
* <li> Character maps characters 'A' - 'Z' and 'a' - 'z' to the numeric
* values '10' - '35'. UCharacter also does this in digit and
* getNumericValue, to adhere to the java semantics of these
* methods. New methods unicodeDigit, and
* getUnicodeNumericValue do not treat the above code points
* as having numeric values. This is a semantic change from ICU4J 1.3.1.
* </ul>
* <p>
* Further detail differences can be determined from the program
* <a href="http://source.icu-project.org/repos/icu/icu4j/trunk/src/com/ibm/icu/dev/test/lang/UCharacterCompare.java">
* com.ibm.icu.dev.test.lang.UCharacterCompare</a>
* </p>
* <p>
* In addition to Java compatibility functions, which calculate derived properties,
* this API provides low-level access to the Unicode Character Database.
* </p>
* <p>
* Unicode assigns each code point (not just assigned character) values for
* many properties.
* Most of them are simple boolean flags, or constants from a small enumerated list.
* For some properties, values are strings or other relatively more complex types.
* </p>
* <p>
* For more information see
* "About the Unicode Character Database" (http://www.unicode.org/ucd/)
* and the ICU User Guide chapter on Properties (http://www.icu-project.org/userguide/properties.html).
* </p>
* <p>
* There are also functions that provide easy migration from C/POSIX functions
* like isblank(). Their use is generally discouraged because the C/POSIX
* standards do not define their semantics beyond the ASCII range, which means
* that different implementations exhibit very different behavior.
* Instead, Unicode properties should be used directly.
* </p>
* <p>
* There are also only a few, broad C/POSIX character classes, and they tend
* to be used for conflicting purposes. For example, the "isalpha()" class
* is sometimes used to determine word boundaries, while a more sophisticated
* approach would at least distinguish initial letters from continuation
* characters (the latter including combining marks).
* (In ICU, BreakIterator is the most sophisticated API for word boundaries.)
* Another example: There is no "istitle()" class for titlecase characters.
* </p>
* <p>
* ICU 3.4 and later provides API access for all twelve C/POSIX character classes.
* ICU implements them according to the Standard Recommendations in
* Annex C: Compatibility Properties of UTS #18 Unicode Regular Expressions
* (http://www.unicode.org/reports/tr18/#Compatibility_Properties).
* </p>
* <p>
* API access for C/POSIX character classes is as follows:
* - alpha: isUAlphabetic(c) or hasBinaryProperty(c, UProperty.ALPHABETIC)
* - lower: isULowercase(c) or hasBinaryProperty(c, UProperty.LOWERCASE)
* - upper: isUUppercase(c) or hasBinaryProperty(c, UProperty.UPPERCASE)
* - punct: ((1<<getType(c)) & ((1<<DASH_PUNCTUATION)|(1<<START_PUNCTUATION)|(1<<END_PUNCTUATION)|(1<<CONNECTOR_PUNCTUATION)|(1<<OTHER_PUNCTUATION)|(1<<INITIAL_PUNCTUATION)|(1<<FINAL_PUNCTUATION)))!=0
* - digit: isDigit(c) or getType(c)==DECIMAL_DIGIT_NUMBER
* - xdigit: hasBinaryProperty(c, UProperty.POSIX_XDIGIT)
* - alnum: hasBinaryProperty(c, UProperty.POSIX_ALNUM)
* - space: isUWhiteSpace(c) or hasBinaryProperty(c, UProperty.WHITE_SPACE)
* - blank: hasBinaryProperty(c, UProperty.POSIX_BLANK)
* - cntrl: getType(c)==CONTROL
* - graph: hasBinaryProperty(c, UProperty.POSIX_GRAPH)
* - print: hasBinaryProperty(c, UProperty.POSIX_PRINT)
* </p>
* <p>
* The C/POSIX character classes are also available in UnicodeSet patterns,
* using patterns like [:graph:] or \p{graph}.
* </p>
* <p>
* Note: There are several ICU (and Java) whitespace functions.
* Comparison:
* - isUWhiteSpace=UCHAR_WHITE_SPACE: Unicode White_Space property;
* most of general categories "Z" (separators) + most whitespace ISO controls
* (including no-break spaces, but excluding IS1..IS4 and ZWSP)
* - isWhitespace: Java isWhitespace; Z + whitespace ISO controls but excluding no-break spaces
* - isSpaceChar: just Z (including no-break spaces)
* </p>
* <p>
* This class is not subclassable
* </p>
* @author Syn Wee Quek
* @stable ICU 2.1
* @see com.ibm.icu.lang.UCharacterEnums
*/
public final class UCharacter
{
/**
* Numeric Type constants.
* @see UProperty#NUMERIC_TYPE
* @stable ICU 2.4
*/
public static interface NumericType
{
/**
* @stable ICU 2.4
*/
public static final int DECIMAL = 1;
}
// public data members -----------------------------------------------
/**
* The lowest Unicode code point value.
* @stable ICU 2.1
*/
public static final int MIN_VALUE = UTF16.CODEPOINT_MIN_VALUE;
/**
* The highest Unicode code point value (scalar value) according to the
* Unicode Standard.
* This is a 21-bit value (21 bits, rounded up).<br>
* Up-to-date Unicode implementation of java.lang.Character.MIN_VALUE
* @stable ICU 2.1
*/
public static final int MAX_VALUE = UTF16.CODEPOINT_MAX_VALUE;
/**
* The minimum value for Supplementary code points
* @stable ICU 2.1
*/
public static final int SUPPLEMENTARY_MIN_VALUE =
UTF16.SUPPLEMENTARY_MIN_VALUE;
// public methods ----------------------------------------------------
/**
* Retrieves the numeric value of a decimal digit code point.
* <br>This method observes the semantics of
* <code>java.lang.Character.digit()</code>. Note that this
* will return positive values for code points for which isDigit
* returns false, just like java.lang.Character.
* <br><em>Semantic Change:</em> In release 1.3.1 and
* prior, this did not treat the European letters as having a
* digit value, and also treated numeric letters and other numbers as
* digits.
* This has been changed to conform to the java semantics.
* <br>A code point is a valid digit if and only if:
* <ul>
* <li>ch is a decimal digit or one of the european letters, and
* <li>the value of ch is less than the specified radix.
* </ul>
* @param ch the code point to query
* @param radix the radix
* @return the numeric value represented by the code point in the
* specified radix, or -1 if the code point is not a decimal digit
* or if its value is too large for the radix
* @stable ICU 2.1
*/
public static int digit(int ch, int radix)
{
// when ch is out of bounds getProperty == 0
int props = getProperty(ch);
int value;
if (getNumericType(props) == NumericType.DECIMAL) {
value = UCharacterProperty.getUnsignedValue(props);
} else {
value = getEuropeanDigit(ch);
}
return (0 <= value && value < radix) ? value : -1;
}
/**
* Returns the Bidirection property of a code point.
* For example, 0x0041 (letter A) has the LEFT_TO_RIGHT directional
* property.<br>
* Result returned belongs to the interface
* <a href=UCharacterDirection.html>UCharacterDirection</a>
* @param ch the code point to be determined its direction
* @return direction constant from UCharacterDirection.
* @stable ICU 2.1
*/
public static int getDirection(int ch)
{
return gBdp.getClass(ch);
}
/**
* Returns a code point corresponding to the two UTF16 characters.
* @param lead the lead char
* @param trail the trail char
* @return code point if surrogate characters are valid.
* @exception IllegalArgumentException thrown when argument characters do
* not form a valid codepoint
* @stable ICU 2.1
*/
public static int getCodePoint(char lead, char trail)
{
if (UTF16.isLeadSurrogate(lead) && UTF16.isTrailSurrogate(trail)) {
return UCharacterProperty.getRawSupplementary(lead, trail);
}
throw new IllegalArgumentException("Illegal surrogate characters");
}
/**
* <p>Get the "age" of the code point.</p>
* <p>The "age" is the Unicode version when the code point was first
* designated (as a non-character or for Private Use) or assigned a
* character.
* <p>This can be useful to avoid emitting code points to receiving
* processes that do not accept newer characters.</p>
* <p>The data is from the UCD file DerivedAge.txt.</p>
* @param ch The code point.
* @return the Unicode version number
* @stable ICU 2.6
*/
public static VersionInfo getAge(int ch)
{
if (ch < MIN_VALUE || ch > MAX_VALUE) {
throw new IllegalArgumentException("Codepoint out of bounds");
}
return PROPERTY_.getAge(ch);
}
// private variables -------------------------------------------------
/**
* Database storing the sets of character property
*/
private static final UCharacterProperty PROPERTY_;
/**
* For optimization
*/
private static final char[] PROPERTY_TRIE_INDEX_;
private static final char[] PROPERTY_TRIE_DATA_;
private static final int PROPERTY_INITIAL_VALUE_;
private static final UBiDiProps gBdp;
// block to initialise character property database
static
{
try
{
PROPERTY_ = UCharacterProperty.getInstance();
PROPERTY_TRIE_INDEX_ = PROPERTY_.m_trieIndex_;
PROPERTY_TRIE_DATA_ = PROPERTY_.m_trieData_;
PROPERTY_INITIAL_VALUE_ = PROPERTY_.m_trieInitialValue_;
}
catch (Exception e)
{
throw new MissingResourceException(e.getMessage(),"","");
}
UBiDiProps bdp;
try {
bdp=UBiDiProps.getSingleton();
} catch(IOException e) {
bdp=UBiDiProps.getDummy();
}
gBdp=bdp;
}
/**
* Shift to get numeric type
*/
private static final int NUMERIC_TYPE_SHIFT_ = 5;
/**
* Mask to get numeric type
*/
private static final int NUMERIC_TYPE_MASK_ = 0x7 << NUMERIC_TYPE_SHIFT_;
// private methods ---------------------------------------------------
/**
* Getting the digit values of characters like 'A' - 'Z', normal,
* half-width and full-width. This method assumes that the other digit
* characters are checked by the calling method.
* @param ch character to test
* @return -1 if ch is not a character of the form 'A' - 'Z', otherwise
* its corresponding digit will be returned.
*/
private static int getEuropeanDigit(int ch) {
if ((ch > 0x7a && ch < 0xff21)
|| ch < 0x41 || (ch > 0x5a && ch < 0x61)
|| ch > 0xff5a || (ch > 0xff3a && ch < 0xff41)) {
return -1;
}
if (ch <= 0x7a) {
// ch >= 0x41 or ch < 0x61
return ch + 10 - ((ch <= 0x5a) ? 0x41 : 0x61);
}
// ch >= 0xff21
if (ch <= 0xff3a) {
return ch + 10 - 0xff21;
}
// ch >= 0xff41 && ch <= 0xff5a
return ch + 10 - 0xff41;
}
/**
* Gets the numeric type of the property argument
* @param props 32 bit property
* @return the numeric type
*/
private static int getNumericType(int props)
{
return (props & NUMERIC_TYPE_MASK_) >> NUMERIC_TYPE_SHIFT_;
}
/**
* Gets the property value at the index.
* This is optimized.
* Note this is alittle different from CharTrie the index m_trieData_
* is never negative.
* This is a duplicate of UCharacterProperty.getProperty. For optimization
* purposes, this method calls the trie data directly instead of through
* UCharacterProperty.getProperty.
* @param ch code point whose property value is to be retrieved
* @return property value of code point
* @stable ICU 2.6
*/
private static final int getProperty(int ch)
{
if (ch < UTF16.LEAD_SURROGATE_MIN_VALUE
|| (ch > UTF16.LEAD_SURROGATE_MAX_VALUE
&& ch < UTF16.SUPPLEMENTARY_MIN_VALUE)) {
// BMP codepoint 0000..D7FF or DC00..FFFF
try { // using try for ch < 0 is faster than using an if statement
return PROPERTY_TRIE_DATA_[
(PROPERTY_TRIE_INDEX_[ch >> 5] << 2)
+ (ch & 0x1f)];
} catch (ArrayIndexOutOfBoundsException e) {
return PROPERTY_INITIAL_VALUE_;
}
}
if (ch <= UTF16.LEAD_SURROGATE_MAX_VALUE) {
// lead surrogate D800..DBFF
return PROPERTY_TRIE_DATA_[
(PROPERTY_TRIE_INDEX_[(0x2800 >> 5) + (ch >> 5)] << 2)
+ (ch & 0x1f)];
}
// for optimization
if (ch <= UTF16.CODEPOINT_MAX_VALUE) {
// supplementary code point 10000..10FFFF
// look at the construction of supplementary characters
// trail forms the ends of it.
return PROPERTY_.m_trie_.getSurrogateValue(
UTF16.getLeadSurrogate(ch),
(char)(ch & 0x3ff));
}
// return m_dataOffset_ if there is an error, in this case we return
// the default value: m_initialValue_
// we cannot assume that m_initialValue_ is at offset 0
// this is for optimization.
return PROPERTY_INITIAL_VALUE_;
}
}

View File

@@ -0,0 +1,292 @@
/*
* Copyright (c) 2003, 2006, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
*******************************************************************************
* (C) Copyright IBM Corp. 1996-2005 - All Rights Reserved *
* *
* The original version of this source code and documentation is copyrighted *
* and owned by IBM, These materials are provided under terms of a License *
* Agreement between IBM and Sun. This technology is protected by multiple *
* US and International patents. This notice and attribution to IBM may not *
* to removed. *
*******************************************************************************
*/
package sun.text.normalizer;
import java.text.CharacterIterator;
/**
* Abstract class that defines an API for iteration on text objects.This is an
* interface for forward and backward iteration and random access into a text
* object. Forward iteration is done with post-increment and backward iteration
* is done with pre-decrement semantics, while the
* <code>java.text.CharacterIterator</code> interface methods provided forward
* iteration with "pre-increment" and backward iteration with pre-decrement
* semantics. This API is more efficient for forward iteration over code points.
* The other major difference is that this API can do both code unit and code point
* iteration, <code>java.text.CharacterIterator</code> can only iterate over
* code units and is limited to BMP (0 - 0xFFFF)
* @author Ram
* @stable ICU 2.4
*/
public abstract class UCharacterIterator
implements Cloneable {
/**
* Protected default constructor for the subclasses
* @stable ICU 2.4
*/
protected UCharacterIterator(){
}
/**
* Indicator that we have reached the ends of the UTF16 text.
* Moved from UForwardCharacterIterator.java
* @stable ICU 2.4
*/
public static final int DONE = -1;
// static final methods ----------------------------------------------------
/**
* Returns a <code>UCharacterIterator</code> object given a
* source string.
* @param source a string
* @return UCharacterIterator object
* @exception IllegalArgumentException if the argument is null
* @stable ICU 2.4
*/
public static final UCharacterIterator getInstance(String source){
return new ReplaceableUCharacterIterator(source);
}
//// for StringPrep
/**
* Returns a <code>UCharacterIterator</code> object given a
* source StringBuffer.
* @param source an string buffer of UTF-16 code units
* @return UCharacterIterator object
* @exception IllegalArgumentException if the argument is null
* @stable ICU 2.4
*/
public static final UCharacterIterator getInstance(StringBuffer source){
return new ReplaceableUCharacterIterator(source);
}
/**
* Returns a <code>UCharacterIterator</code> object given a
* CharacterIterator.
* @param source a valid CharacterIterator object.
* @return UCharacterIterator object
* @exception IllegalArgumentException if the argument is null
* @stable ICU 2.4
*/
public static final UCharacterIterator getInstance(CharacterIterator source){
return new CharacterIteratorWrapper(source);
}
// public methods ----------------------------------------------------------
/**
* Returns the code unit at the current index. If index is out
* of range, returns DONE. Index is not changed.
* @return current code unit
* @stable ICU 2.4
*/
public abstract int current();
/**
* Returns the length of the text
* @return length of the text
* @stable ICU 2.4
*/
public abstract int getLength();
/**
* Gets the current index in text.
* @return current index in text.
* @stable ICU 2.4
*/
public abstract int getIndex();
/**
* Returns the UTF16 code unit at index, and increments to the next
* code unit (post-increment semantics). If index is out of
* range, DONE is returned, and the iterator is reset to the limit
* of the text.
* @return the next UTF16 code unit, or DONE if the index is at the limit
* of the text.
* @stable ICU 2.4
*/
public abstract int next();
/**
* Returns the code point at index, and increments to the next code
* point (post-increment semantics). If index does not point to a
* valid surrogate pair, the behavior is the same as
* <code>next()</code>. Otherwise the iterator is incremented past
* the surrogate pair, and the code point represented by the pair
* is returned.
* @return the next codepoint in text, or DONE if the index is at
* the limit of the text.
* @stable ICU 2.4
*/
public int nextCodePoint(){
int ch1 = next();
if(UTF16.isLeadSurrogate((char)ch1)){
int ch2 = next();
if(UTF16.isTrailSurrogate((char)ch2)){
return UCharacterProperty.getRawSupplementary((char)ch1,
(char)ch2);
}else if (ch2 != DONE) {
// unmatched surrogate so back out
previous();
}
}
return ch1;
}
/**
* Decrement to the position of the previous code unit in the
* text, and return it (pre-decrement semantics). If the
* resulting index is less than 0, the index is reset to 0 and
* DONE is returned.
* @return the previous code unit in the text, or DONE if the new
* index is before the start of the text.
* @stable ICU 2.4
*/
public abstract int previous();
/**
* Sets the index to the specified index in the text.
* @param index the index within the text.
* @exception IndexOutOfBoundsException is thrown if an invalid index is
* supplied
* @stable ICU 2.4
*/
public abstract void setIndex(int index);
//// for StringPrep
/**
* Fills the buffer with the underlying text storage of the iterator
* If the buffer capacity is not enough a exception is thrown. The capacity
* of the fill in buffer should at least be equal to length of text in the
* iterator obtained by calling <code>getLength()</code>.
* <b>Usage:</b>
*
* <code>
* <pre>
* UChacterIterator iter = new UCharacterIterator.getInstance(text);
* char[] buf = new char[iter.getLength()];
* iter.getText(buf);
*
* OR
* char[] buf= new char[1];
* int len = 0;
* for(;;){
* try{
* len = iter.getText(buf);
* break;
* }catch(IndexOutOfBoundsException e){
* buf = new char[iter.getLength()];
* }
* }
* </pre>
* </code>
*
* @param fillIn an array of chars to fill with the underlying UTF-16 code
* units.
* @param offset the position within the array to start putting the data.
* @return the number of code units added to fillIn, as a convenience
* @exception IndexOutOfBounds exception if there is not enough
* room after offset in the array, or if offset < 0.
* @stable ICU 2.4
*/
public abstract int getText(char[] fillIn, int offset);
//// for StringPrep
/**
* Convenience override for <code>getText(char[], int)</code> that provides
* an offset of 0.
* @param fillIn an array of chars to fill with the underlying UTF-16 code
* units.
* @return the number of code units added to fillIn, as a convenience
* @exception IndexOutOfBounds exception if there is not enough
* room in the array.
* @stable ICU 2.4
*/
public final int getText(char[] fillIn) {
return getText(fillIn, 0);
}
//// for StringPrep
/**
* Convenience method for returning the underlying text storage as as string
* @return the underlying text storage in the iterator as a string
* @stable ICU 2.4
*/
public String getText() {
char[] text = new char[getLength()];
getText(text);
return new String(text);
}
/**
* Moves the current position by the number of code units
* specified, either forward or backward depending on the sign
* of delta (positive or negative respectively). If the resulting
* index would be less than zero, the index is set to zero, and if
* the resulting index would be greater than limit, the index is
* set to limit.
*
* @param delta the number of code units to move the current
* index.
* @return the new index.
* @exception IndexOutOfBoundsException is thrown if an invalid index is
* supplied
* @stable ICU 2.4
*
*/
public int moveIndex(int delta) {
int x = Math.max(0, Math.min(getIndex() + delta, getLength()));
setIndex(x);
return x;
}
/**
* Creates a copy of this iterator, independent from other iterators.
* If it is not possible to clone the iterator, returns null.
* @return copy of this iterator
* @stable ICU 2.4
*/
public Object clone() throws CloneNotSupportedException{
return super.clone();
}
}

View File

@@ -0,0 +1,369 @@
/*
* Copyright (c) 2005, 2009, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
*******************************************************************************
* (C) Copyright IBM Corp. and others, 1996-2009 - All Rights Reserved *
* *
* The original version of this source code and documentation is copyrighted *
* and owned by IBM, These materials are provided under terms of a License *
* Agreement between IBM and Sun. This technology is protected by multiple *
* US and International patents. This notice and attribution to IBM may not *
* to removed. *
*******************************************************************************
*/
package sun.text.normalizer;
import java.io.BufferedInputStream;
import java.io.InputStream;
import java.io.IOException;
import java.util.MissingResourceException;
/**
* <p>Internal class used for Unicode character property database.</p>
* <p>This classes store binary data read from uprops.icu.
* It does not have the capability to parse the data into more high-level
* information. It only returns bytes of information when required.</p>
* <p>Due to the form most commonly used for retrieval, array of char is used
* to store the binary data.</p>
* <p>UCharacterPropertyDB also contains information on accessing indexes to
* significant points in the binary data.</p>
* <p>Responsibility for molding the binary data into more meaning form lies on
* <a href=UCharacter.html>UCharacter</a>.</p>
* @author Syn Wee Quek
* @since release 2.1, february 1st 2002
*/
public final class UCharacterProperty
{
// public data members -----------------------------------------------
/**
* Trie data
*/
public CharTrie m_trie_;
/**
* Optimization
* CharTrie index array
*/
public char[] m_trieIndex_;
/**
* Optimization
* CharTrie data array
*/
public char[] m_trieData_;
/**
* Optimization
* CharTrie data offset
*/
public int m_trieInitialValue_;
/**
* Unicode version
*/
public VersionInfo m_unicodeVersion_;
// uprops.h enum UPropertySource --------------------------------------- ***
/** From uchar.c/uprops.icu properties vectors trie */
public static final int SRC_PROPSVEC=2;
/** One more than the highest UPropertySource (SRC_) constant. */
public static final int SRC_COUNT=9;
// public methods ----------------------------------------------------
/**
* Java friends implementation
*/
public void setIndexData(CharTrie.FriendAgent friendagent)
{
m_trieIndex_ = friendagent.getPrivateIndex();
m_trieData_ = friendagent.getPrivateData();
m_trieInitialValue_ = friendagent.getPrivateInitialValue();
}
/**
* Gets the property value at the index.
* This is optimized.
* Note this is alittle different from CharTrie the index m_trieData_
* is never negative.
* @param ch code point whose property value is to be retrieved
* @return property value of code point
*/
public final int getProperty(int ch)
{
if (ch < UTF16.LEAD_SURROGATE_MIN_VALUE
|| (ch > UTF16.LEAD_SURROGATE_MAX_VALUE
&& ch < UTF16.SUPPLEMENTARY_MIN_VALUE)) {
// BMP codepoint 0000..D7FF or DC00..FFFF
// optimized
try { // using try for ch < 0 is faster than using an if statement
return m_trieData_[
(m_trieIndex_[ch >> Trie.INDEX_STAGE_1_SHIFT_]
<< Trie.INDEX_STAGE_2_SHIFT_)
+ (ch & Trie.INDEX_STAGE_3_MASK_)];
} catch (ArrayIndexOutOfBoundsException e) {
return m_trieInitialValue_;
}
}
if (ch <= UTF16.LEAD_SURROGATE_MAX_VALUE) {
// lead surrogate D800..DBFF
return m_trieData_[
(m_trieIndex_[Trie.LEAD_INDEX_OFFSET_
+ (ch >> Trie.INDEX_STAGE_1_SHIFT_)]
<< Trie.INDEX_STAGE_2_SHIFT_)
+ (ch & Trie.INDEX_STAGE_3_MASK_)];
}
if (ch <= UTF16.CODEPOINT_MAX_VALUE) {
// supplementary code point 10000..10FFFF
// look at the construction of supplementary characters
// trail forms the ends of it.
return m_trie_.getSurrogateValue(
UTF16.getLeadSurrogate(ch),
(char)(ch & Trie.SURROGATE_MASK_));
}
// ch is out of bounds
// return m_dataOffset_ if there is an error, in this case we return
// the default value: m_initialValue_
// we cannot assume that m_initialValue_ is at offset 0
// this is for optimization.
return m_trieInitialValue_;
// this all is an inlined form of return m_trie_.getCodePointValue(ch);
}
/**
* Getting the unsigned numeric value of a character embedded in the property
* argument
* @param prop the character
* @return unsigned numberic value
*/
public static int getUnsignedValue(int prop)
{
return (prop >> VALUE_SHIFT_) & UNSIGNED_VALUE_MASK_AFTER_SHIFT_;
}
/**
* Gets the unicode additional properties.
* C version getUnicodeProperties.
* @param codepoint codepoint whose additional properties is to be
* retrieved
* @param column
* @return unicode properties
*/
public int getAdditional(int codepoint, int column) {
if (column == -1) {
return getProperty(codepoint);
}
if (column < 0 || column >= m_additionalColumnsCount_) {
return 0;
}
return m_additionalVectors_[
m_additionalTrie_.getCodePointValue(codepoint) + column];
}
/**
* <p>Get the "age" of the code point.</p>
* <p>The "age" is the Unicode version when the code point was first
* designated (as a non-character or for Private Use) or assigned a
* character.</p>
* <p>This can be useful to avoid emitting code points to receiving
* processes that do not accept newer characters.</p>
* <p>The data is from the UCD file DerivedAge.txt.</p>
* <p>This API does not check the validity of the codepoint.</p>
* @param codepoint The code point.
* @return the Unicode version number
*/
public VersionInfo getAge(int codepoint)
{
int version = getAdditional(codepoint, 0) >> AGE_SHIFT_;
return VersionInfo.getInstance(
(version >> FIRST_NIBBLE_SHIFT_) & LAST_NIBBLE_MASK_,
version & LAST_NIBBLE_MASK_, 0, 0);
}
/**
* Forms a supplementary code point from the argument character<br>
* Note this is for internal use hence no checks for the validity of the
* surrogate characters are done
* @param lead lead surrogate character
* @param trail trailing surrogate character
* @return code point of the supplementary character
*/
public static int getRawSupplementary(char lead, char trail)
{
return (lead << LEAD_SURROGATE_SHIFT_) + trail + SURROGATE_OFFSET_;
}
/**
* Loads the property data and initialize the UCharacterProperty instance.
* @throws MissingResourceException when data is missing or data has been corrupted
*/
public static UCharacterProperty getInstance()
{
if(INSTANCE_ == null) {
try {
INSTANCE_ = new UCharacterProperty();
}
catch (Exception e) {
throw new MissingResourceException(e.getMessage(),"","");
}
}
return INSTANCE_;
}
/**
* Checks if the argument c is to be treated as a white space in ICU
* rules. Usually ICU rule white spaces are ignored unless quoted.
* Equivalent to test for Pattern_White_Space Unicode property.
* Stable set of characters, won't change.
* See UAX #31 Identifier and Pattern Syntax: http://www.unicode.org/reports/tr31/
* @param c codepoint to check
* @return true if c is a ICU white space
*/
public static boolean isRuleWhiteSpace(int c)
{
/* "white space" in the sense of ICU rule parsers
This is a FIXED LIST that is NOT DEPENDENT ON UNICODE PROPERTIES.
See UAX #31 Identifier and Pattern Syntax: http://www.unicode.org/reports/tr31/
U+0009..U+000D, U+0020, U+0085, U+200E..U+200F, and U+2028..U+2029
Equivalent to test for Pattern_White_Space Unicode property.
*/
return (c >= 0x0009 && c <= 0x2029 &&
(c <= 0x000D || c == 0x0020 || c == 0x0085 ||
c == 0x200E || c == 0x200F || c >= 0x2028));
}
// protected variables -----------------------------------------------
/**
* Extra property trie
*/
CharTrie m_additionalTrie_;
/**
* Extra property vectors, 1st column for age and second for binary
* properties.
*/
int m_additionalVectors_[];
/**
* Number of additional columns
*/
int m_additionalColumnsCount_;
/**
* Maximum values for block, bits used as in vector word
* 0
*/
int m_maxBlockScriptValue_;
/**
* Maximum values for script, bits used as in vector word
* 0
*/
int m_maxJTGValue_;
// private variables -------------------------------------------------
/**
* UnicodeData.txt property object
*/
private static UCharacterProperty INSTANCE_ = null;
/**
* Default name of the datafile
*/
private static final String DATA_FILE_NAME_ = "/sun/text/resources/uprops.icu";
/**
* Default buffer size of datafile
*/
private static final int DATA_BUFFER_SIZE_ = 25000;
/**
* Numeric value shift
*/
private static final int VALUE_SHIFT_ = 8;
/**
* Mask to be applied after shifting to obtain an unsigned numeric value
*/
private static final int UNSIGNED_VALUE_MASK_AFTER_SHIFT_ = 0xFF;
/**
* Shift value for lead surrogate to form a supplementary character.
*/
private static final int LEAD_SURROGATE_SHIFT_ = 10;
/**
* Offset to add to combined surrogate pair to avoid msking.
*/
private static final int SURROGATE_OFFSET_ =
UTF16.SUPPLEMENTARY_MIN_VALUE -
(UTF16.SURROGATE_MIN_VALUE <<
LEAD_SURROGATE_SHIFT_) -
UTF16.TRAIL_SURROGATE_MIN_VALUE;
// additional properties ----------------------------------------------
/**
* First nibble shift
*/
private static final int FIRST_NIBBLE_SHIFT_ = 0x4;
/**
* Second nibble mask
*/
private static final int LAST_NIBBLE_MASK_ = 0xF;
/**
* Age value shift
*/
private static final int AGE_SHIFT_ = 24;
// private constructors --------------------------------------------------
/**
* Constructor
* @exception IOException thrown when data reading fails or data corrupted
*/
private UCharacterProperty() throws IOException
{
// jar access
InputStream is = ICUData.getRequiredStream(DATA_FILE_NAME_);
BufferedInputStream b = new BufferedInputStream(is, DATA_BUFFER_SIZE_);
UCharacterPropertyReader reader = new UCharacterPropertyReader(b);
reader.read(this);
b.close();
m_trie_.putIndexData(this);
}
public void upropsvec_addPropertyStarts(UnicodeSet set) {
/* add the start code point of each same-value range of the properties vectors trie */
if(m_additionalColumnsCount_>0) {
/* if m_additionalColumnsCount_==0 then the properties vectors trie may not be there at all */
TrieIterator propsVectorsIter = new TrieIterator(m_additionalTrie_);
RangeValueIterator.Element propsVectorsResult = new RangeValueIterator.Element();
while(propsVectorsIter.next(propsVectorsResult)){
set.add(propsVectorsResult.start);
}
}
}
}

View File

@@ -0,0 +1,190 @@
/*
* Copyright (c) 2005, 2009, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
*******************************************************************************
* (C) Copyright IBM Corp. and others, 1996-2009 - All Rights Reserved *
* *
* The original version of this source code and documentation is copyrighted *
* and owned by IBM, These materials are provided under terms of a License *
* Agreement between IBM and Sun. This technology is protected by multiple *
* US and International patents. This notice and attribution to IBM may not *
* to removed. *
*******************************************************************************
*/
package sun.text.normalizer;
import java.io.DataInputStream;
import java.io.InputStream;
import java.io.IOException;
/**
* <p>Internal reader class for ICU data file uprops.icu containing
* Unicode codepoint data.</p>
* <p>This class simply reads uprops.icu, authenticates that it is a valid
* ICU data file and split its contents up into blocks of data for use in
* <a href=UCharacterProperty.html>com.ibm.icu.impl.UCharacterProperty</a>.
* </p>
* <p>uprops.icu which is in big-endian format is jared together with this
* package.</p>
*
* Unicode character properties file format see
* (ICU4C)/source/tools/genprops/store.c
*
* @author Syn Wee Quek
* @since release 2.1, February 1st 2002
*/
final class UCharacterPropertyReader implements ICUBinary.Authenticate
{
// public methods ----------------------------------------------------
public boolean isDataVersionAcceptable(byte version[])
{
return version[0] == DATA_FORMAT_VERSION_[0]
&& version[2] == DATA_FORMAT_VERSION_[2]
&& version[3] == DATA_FORMAT_VERSION_[3];
}
// protected constructor ---------------------------------------------
/**
* <p>Protected constructor.</p>
* @param inputStream ICU uprop.dat file input stream
* @exception IOException throw if data file fails authentication
*/
protected UCharacterPropertyReader(InputStream inputStream)
throws IOException
{
m_unicodeVersion_ = ICUBinary.readHeader(inputStream, DATA_FORMAT_ID_,
this);
m_dataInputStream_ = new DataInputStream(inputStream);
}
// protected methods -------------------------------------------------
/**
* <p>Reads uprops.icu, parse it into blocks of data to be stored in
* UCharacterProperty.</P
* @param ucharppty UCharacterProperty instance
* @exception IOException thrown when data reading fails
*/
protected void read(UCharacterProperty ucharppty) throws IOException
{
// read the indexes
int count = INDEX_SIZE_;
m_propertyOffset_ = m_dataInputStream_.readInt();
count --;
m_exceptionOffset_ = m_dataInputStream_.readInt();
count --;
m_caseOffset_ = m_dataInputStream_.readInt();
count --;
m_additionalOffset_ = m_dataInputStream_.readInt();
count --;
m_additionalVectorsOffset_ = m_dataInputStream_.readInt();
count --;
m_additionalColumnsCount_ = m_dataInputStream_.readInt();
count --;
m_reservedOffset_ = m_dataInputStream_.readInt();
count --;
m_dataInputStream_.skipBytes(3 << 2);
count -= 3;
ucharppty.m_maxBlockScriptValue_ = m_dataInputStream_.readInt();
count --; // 10
ucharppty.m_maxJTGValue_ = m_dataInputStream_.readInt();
count --; // 11
m_dataInputStream_.skipBytes(count << 2);
// read the trie index block
// m_props_index_ in terms of ints
ucharppty.m_trie_ = new CharTrie(m_dataInputStream_, null);
// skip the 32 bit properties block
int size = m_exceptionOffset_ - m_propertyOffset_;
m_dataInputStream_.skipBytes(size * 4);
// reads the 32 bit exceptions block
size = m_caseOffset_ - m_exceptionOffset_;
m_dataInputStream_.skipBytes(size * 4);
// reads the 32 bit case block
size = (m_additionalOffset_ - m_caseOffset_) << 1;
m_dataInputStream_.skipBytes(size * 2);
if(m_additionalColumnsCount_ > 0) {
// reads the additional property block
ucharppty.m_additionalTrie_ = new CharTrie(m_dataInputStream_, null);
// additional properties
size = m_reservedOffset_ - m_additionalVectorsOffset_;
ucharppty.m_additionalVectors_ = new int[size];
for (int i = 0; i < size; i ++) {
ucharppty.m_additionalVectors_[i] = m_dataInputStream_.readInt();
}
}
m_dataInputStream_.close();
ucharppty.m_additionalColumnsCount_ = m_additionalColumnsCount_;
ucharppty.m_unicodeVersion_ = VersionInfo.getInstance(
(int)m_unicodeVersion_[0], (int)m_unicodeVersion_[1],
(int)m_unicodeVersion_[2], (int)m_unicodeVersion_[3]);
}
// private variables -------------------------------------------------
/**
* Index size
*/
private static final int INDEX_SIZE_ = 16;
/**
* ICU data file input stream
*/
private DataInputStream m_dataInputStream_;
/**
* Offset information in the indexes.
*/
private int m_propertyOffset_;
private int m_exceptionOffset_;
private int m_caseOffset_;
private int m_additionalOffset_;
private int m_additionalVectorsOffset_;
private int m_additionalColumnsCount_;
private int m_reservedOffset_;
private byte m_unicodeVersion_[];
/**
* Data format "UPro".
*/
private static final byte DATA_FORMAT_ID_[] = {(byte)0x55, (byte)0x50,
(byte)0x72, (byte)0x6F};
/**
* Format version; this code works with all versions with the same major
* version number and the same Trie bit distribution.
*/
private static final byte DATA_FORMAT_VERSION_[] = {(byte)0x5, (byte)0,
(byte)Trie.INDEX_STAGE_1_SHIFT_,
(byte)Trie.INDEX_STAGE_2_SHIFT_};
}

View File

@@ -0,0 +1,538 @@
/*
* Copyright (c) 2005, 2009, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
*******************************************************************************
* (C) Copyright IBM Corp. and others, 1996-2009 - All Rights Reserved *
* *
* The original version of this source code and documentation is copyrighted *
* and owned by IBM, These materials are provided under terms of a License *
* Agreement between IBM and Sun. This technology is protected by multiple *
* US and International patents. This notice and attribution to IBM may not *
* to removed. *
*******************************************************************************
*/
package sun.text.normalizer;
/**
* <p>Standalone utility class providing UTF16 character conversions and
* indexing conversions.</p>
* <p>Code that uses strings alone rarely need modification.
* By design, UTF-16 does not allow overlap, so searching for strings is a safe
* operation. Similarly, concatenation is always safe. Substringing is safe if
* the start and end are both on UTF-32 boundaries. In normal code, the values
* for start and end are on those boundaries, since they arose from operations
* like searching. If not, the nearest UTF-32 boundaries can be determined
* using <code>bounds()</code>.</p>
* <strong>Examples:</strong>
* <p>The following examples illustrate use of some of these methods.
* <pre>
* // iteration forwards: Original
* for (int i = 0; i &lt; s.length(); ++i) {
* char ch = s.charAt(i);
* doSomethingWith(ch);
* }
*
* // iteration forwards: Changes for UTF-32
* int ch;
* for (int i = 0; i &lt; s.length(); i+=UTF16.getCharCount(ch)) {
* ch = UTF16.charAt(s,i);
* doSomethingWith(ch);
* }
*
* // iteration backwards: Original
* for (int i = s.length() -1; i >= 0; --i) {
* char ch = s.charAt(i);
* doSomethingWith(ch);
* }
*
* // iteration backwards: Changes for UTF-32
* int ch;
* for (int i = s.length() -1; i > 0; i-=UTF16.getCharCount(ch)) {
* ch = UTF16.charAt(s,i);
* doSomethingWith(ch);
* }
* </pre>
* <strong>Notes:</strong>
* <ul>
* <li>
* <strong>Naming:</strong> For clarity, High and Low surrogates are called
* <code>Lead</code> and <code>Trail</code> in the API, which gives a better
* sense of their ordering in a string. <code>offset16</code> and
* <code>offset32</code> are used to distinguish offsets to UTF-16
* boundaries vs offsets to UTF-32 boundaries. <code>int char32</code> is
* used to contain UTF-32 characters, as opposed to <code>char16</code>,
* which is a UTF-16 code unit.
* </li>
* <li>
* <strong>Roundtripping Offsets:</strong> You can always roundtrip from a
* UTF-32 offset to a UTF-16 offset and back. Because of the difference in
* structure, you can roundtrip from a UTF-16 offset to a UTF-32 offset and
* back if and only if <code>bounds(string, offset16) != TRAIL</code>.
* </li>
* <li>
* <strong>Exceptions:</strong> The error checking will throw an exception
* if indices are out of bounds. Other than than that, all methods will
* behave reasonably, even if unmatched surrogates or out-of-bounds UTF-32
* values are present. <code>UCharacter.isLegal()</code> can be used to check
* for validity if desired.
* </li>
* <li>
* <strong>Unmatched Surrogates:</strong> If the string contains unmatched
* surrogates, then these are counted as one UTF-32 value. This matches
* their iteration behavior, which is vital. It also matches common display
* practice as missing glyphs (see the Unicode Standard Section 5.4, 5.5).
* </li>
* <li>
* <strong>Optimization:</strong> The method implementations may need
* optimization if the compiler doesn't fold static final methods. Since
* surrogate pairs will form an exceeding small percentage of all the text
* in the world, the singleton case should always be optimized for.
* </li>
* </ul>
* @author Mark Davis, with help from Markus Scherer
* @stable ICU 2.1
*/
public final class UTF16
{
// public variables ---------------------------------------------------
/**
* The lowest Unicode code point value.
* @stable ICU 2.1
*/
public static final int CODEPOINT_MIN_VALUE = 0;
/**
* The highest Unicode code point value (scalar value) according to the
* Unicode Standard.
* @stable ICU 2.1
*/
public static final int CODEPOINT_MAX_VALUE = 0x10ffff;
/**
* The minimum value for Supplementary code points
* @stable ICU 2.1
*/
public static final int SUPPLEMENTARY_MIN_VALUE = 0x10000;
/**
* Lead surrogate minimum value
* @stable ICU 2.1
*/
public static final int LEAD_SURROGATE_MIN_VALUE = 0xD800;
/**
* Trail surrogate minimum value
* @stable ICU 2.1
*/
public static final int TRAIL_SURROGATE_MIN_VALUE = 0xDC00;
/**
* Lead surrogate maximum value
* @stable ICU 2.1
*/
public static final int LEAD_SURROGATE_MAX_VALUE = 0xDBFF;
/**
* Trail surrogate maximum value
* @stable ICU 2.1
*/
public static final int TRAIL_SURROGATE_MAX_VALUE = 0xDFFF;
/**
* Surrogate minimum value
* @stable ICU 2.1
*/
public static final int SURROGATE_MIN_VALUE = LEAD_SURROGATE_MIN_VALUE;
// public method ------------------------------------------------------
/**
* Extract a single UTF-32 value from a string.
* Used when iterating forwards or backwards (with
* <code>UTF16.getCharCount()</code>, as well as random access. If a
* validity check is required, use
* <code><a href="../lang/UCharacter.html#isLegal(char)">
* UCharacter.isLegal()</a></code> on the return value.
* If the char retrieved is part of a surrogate pair, its supplementary
* character will be returned. If a complete supplementary character is
* not found the incomplete character will be returned
* @param source array of UTF-16 chars
* @param offset16 UTF-16 offset to the start of the character.
* @return UTF-32 value for the UTF-32 value that contains the char at
* offset16. The boundaries of that codepoint are the same as in
* <code>bounds32()</code>.
* @exception IndexOutOfBoundsException thrown if offset16 is out of
* bounds.
* @stable ICU 2.1
*/
public static int charAt(String source, int offset16) {
char single = source.charAt(offset16);
if (single < LEAD_SURROGATE_MIN_VALUE) {
return single;
}
return _charAt(source, offset16, single);
}
private static int _charAt(String source, int offset16, char single) {
if (single > TRAIL_SURROGATE_MAX_VALUE) {
return single;
}
// Convert the UTF-16 surrogate pair if necessary.
// For simplicity in usage, and because the frequency of pairs is
// low, look both directions.
if (single <= LEAD_SURROGATE_MAX_VALUE) {
++offset16;
if (source.length() != offset16) {
char trail = source.charAt(offset16);
if (trail >= TRAIL_SURROGATE_MIN_VALUE && trail <= TRAIL_SURROGATE_MAX_VALUE) {
return UCharacterProperty.getRawSupplementary(single, trail);
}
}
} else {
--offset16;
if (offset16 >= 0) {
// single is a trail surrogate so
char lead = source.charAt(offset16);
if (lead >= LEAD_SURROGATE_MIN_VALUE && lead <= LEAD_SURROGATE_MAX_VALUE) {
return UCharacterProperty.getRawSupplementary(lead, single);
}
}
}
return single; // return unmatched surrogate
}
/**
* Extract a single UTF-32 value from a substring.
* Used when iterating forwards or backwards (with
* <code>UTF16.getCharCount()</code>, as well as random access. If a
* validity check is required, use
* <code><a href="../lang/UCharacter.html#isLegal(char)">UCharacter.isLegal()
* </a></code> on the return value.
* If the char retrieved is part of a surrogate pair, its supplementary
* character will be returned. If a complete supplementary character is
* not found the incomplete character will be returned
* @param source array of UTF-16 chars
* @param start offset to substring in the source array for analyzing
* @param limit offset to substring in the source array for analyzing
* @param offset16 UTF-16 offset relative to start
* @return UTF-32 value for the UTF-32 value that contains the char at
* offset16. The boundaries of that codepoint are the same as in
* <code>bounds32()</code>.
* @exception IndexOutOfBoundsException thrown if offset16 is not within
* the range of start and limit.
* @stable ICU 2.1
*/
public static int charAt(char source[], int start, int limit,
int offset16)
{
offset16 += start;
if (offset16 < start || offset16 >= limit) {
throw new ArrayIndexOutOfBoundsException(offset16);
}
char single = source[offset16];
if (!isSurrogate(single)) {
return single;
}
// Convert the UTF-16 surrogate pair if necessary.
// For simplicity in usage, and because the frequency of pairs is
// low, look both directions.
if (single <= LEAD_SURROGATE_MAX_VALUE) {
offset16 ++;
if (offset16 >= limit) {
return single;
}
char trail = source[offset16];
if (isTrailSurrogate(trail)) {
return UCharacterProperty.getRawSupplementary(single, trail);
}
}
else { // isTrailSurrogate(single), so
if (offset16 == start) {
return single;
}
offset16 --;
char lead = source[offset16];
if (isLeadSurrogate(lead))
return UCharacterProperty.getRawSupplementary(lead, single);
}
return single; // return unmatched surrogate
}
/**
* Determines how many chars this char32 requires.
* If a validity check is required, use <code>
* <a href="../lang/UCharacter.html#isLegal(char)">isLegal()</a></code> on
* char32 before calling.
* @param char32 the input codepoint.
* @return 2 if is in supplementary space, otherwise 1.
* @stable ICU 2.1
*/
public static int getCharCount(int char32)
{
if (char32 < SUPPLEMENTARY_MIN_VALUE) {
return 1;
}
return 2;
}
/**
* Determines whether the code value is a surrogate.
* @param char16 the input character.
* @return true iff the input character is a surrogate.
* @stable ICU 2.1
*/
public static boolean isSurrogate(char char16)
{
return LEAD_SURROGATE_MIN_VALUE <= char16 &&
char16 <= TRAIL_SURROGATE_MAX_VALUE;
}
/**
* Determines whether the character is a trail surrogate.
* @param char16 the input character.
* @return true iff the input character is a trail surrogate.
* @stable ICU 2.1
*/
public static boolean isTrailSurrogate(char char16)
{
return (TRAIL_SURROGATE_MIN_VALUE <= char16 &&
char16 <= TRAIL_SURROGATE_MAX_VALUE);
}
/**
* Determines whether the character is a lead surrogate.
* @param char16 the input character.
* @return true iff the input character is a lead surrogate
* @stable ICU 2.1
*/
public static boolean isLeadSurrogate(char char16)
{
return LEAD_SURROGATE_MIN_VALUE <= char16 &&
char16 <= LEAD_SURROGATE_MAX_VALUE;
}
/**
* Returns the lead surrogate.
* If a validity check is required, use
* <code><a href="../lang/UCharacter.html#isLegal(char)">isLegal()</a></code>
* on char32 before calling.
* @param char32 the input character.
* @return lead surrogate if the getCharCount(ch) is 2; <br>
* and 0 otherwise (note: 0 is not a valid lead surrogate).
* @stable ICU 2.1
*/
public static char getLeadSurrogate(int char32)
{
if (char32 >= SUPPLEMENTARY_MIN_VALUE) {
return (char)(LEAD_SURROGATE_OFFSET_ +
(char32 >> LEAD_SURROGATE_SHIFT_));
}
return 0;
}
/**
* Returns the trail surrogate.
* If a validity check is required, use
* <code><a href="../lang/UCharacter.html#isLegal(char)">isLegal()</a></code>
* on char32 before calling.
* @param char32 the input character.
* @return the trail surrogate if the getCharCount(ch) is 2; <br>otherwise
* the character itself
* @stable ICU 2.1
*/
public static char getTrailSurrogate(int char32)
{
if (char32 >= SUPPLEMENTARY_MIN_VALUE) {
return (char)(TRAIL_SURROGATE_MIN_VALUE +
(char32 & TRAIL_SURROGATE_MASK_));
}
return (char)char32;
}
/**
* Convenience method corresponding to String.valueOf(char). Returns a one
* or two char string containing the UTF-32 value in UTF16 format. If a
* validity check is required, use
* <code><a href="../lang/UCharacter.html#isLegal(char)">isLegal()</a></code>
* on char32 before calling.
* @param char32 the input character.
* @return string value of char32 in UTF16 format
* @exception IllegalArgumentException thrown if char32 is a invalid
* codepoint.
* @stable ICU 2.1
*/
public static String valueOf(int char32)
{
if (char32 < CODEPOINT_MIN_VALUE || char32 > CODEPOINT_MAX_VALUE) {
throw new IllegalArgumentException("Illegal codepoint");
}
return toString(char32);
}
/**
* Append a single UTF-32 value to the end of a StringBuffer.
* If a validity check is required, use
* <code><a href="../lang/UCharacter.html#isLegal(char)">isLegal()</a></code>
* on char32 before calling.
* @param target the buffer to append to
* @param char32 value to append.
* @return the updated StringBuffer
* @exception IllegalArgumentException thrown when char32 does not lie
* within the range of the Unicode codepoints
* @stable ICU 2.1
*/
public static StringBuffer append(StringBuffer target, int char32)
{
// Check for irregular values
if (char32 < CODEPOINT_MIN_VALUE || char32 > CODEPOINT_MAX_VALUE) {
throw new IllegalArgumentException("Illegal codepoint: " + Integer.toHexString(char32));
}
// Write the UTF-16 values
if (char32 >= SUPPLEMENTARY_MIN_VALUE)
{
target.append(getLeadSurrogate(char32));
target.append(getTrailSurrogate(char32));
}
else {
target.append((char)char32);
}
return target;
}
//// for StringPrep
/**
* Shifts offset16 by the argument number of codepoints within a subarray.
* @param source char array
* @param start position of the subarray to be performed on
* @param limit position of the subarray to be performed on
* @param offset16 UTF16 position to shift relative to start
* @param shift32 number of codepoints to shift
* @return new shifted offset16 relative to start
* @exception IndexOutOfBoundsException if the new offset16 is out of
* bounds with respect to the subarray or the subarray bounds
* are out of range.
* @stable ICU 2.1
*/
public static int moveCodePointOffset(char source[], int start, int limit,
int offset16, int shift32)
{
int size = source.length;
int count;
char ch;
int result = offset16 + start;
if (start<0 || limit<start) {
throw new StringIndexOutOfBoundsException(start);
}
if (limit>size) {
throw new StringIndexOutOfBoundsException(limit);
}
if (offset16<0 || result>limit) {
throw new StringIndexOutOfBoundsException(offset16);
}
if (shift32 > 0 ) {
if (shift32 + result > size) {
throw new StringIndexOutOfBoundsException(result);
}
count = shift32;
while (result < limit && count > 0)
{
ch = source[result];
if (isLeadSurrogate(ch) && (result+1 < limit) &&
isTrailSurrogate(source[result+1])) {
result ++;
}
count --;
result ++;
}
} else {
if (result + shift32 < start) {
throw new StringIndexOutOfBoundsException(result);
}
for (count=-shift32; count>0; count--) {
result--;
if (result<start) {
break;
}
ch = source[result];
if (isTrailSurrogate(ch) && result>start && isLeadSurrogate(source[result-1])) {
result--;
}
}
}
if (count != 0) {
throw new StringIndexOutOfBoundsException(shift32);
}
result -= start;
return result;
}
// private data members -------------------------------------------------
/**
* Shift value for lead surrogate to form a supplementary character.
*/
private static final int LEAD_SURROGATE_SHIFT_ = 10;
/**
* Mask to retrieve the significant value from a trail surrogate.
*/
private static final int TRAIL_SURROGATE_MASK_ = 0x3FF;
/**
* Value that all lead surrogate starts with
*/
private static final int LEAD_SURROGATE_OFFSET_ =
LEAD_SURROGATE_MIN_VALUE -
(SUPPLEMENTARY_MIN_VALUE
>> LEAD_SURROGATE_SHIFT_);
// private methods ------------------------------------------------------
/**
* <p>Converts argument code point and returns a String object representing
* the code point's value in UTF16 format.</p>
* <p>This method does not check for the validity of the codepoint, the
* results are not guaranteed if a invalid codepoint is passed as
* argument.</p>
* <p>The result is a string whose length is 1 for non-supplementary code
* points, 2 otherwise.</p>
* @param ch code point
* @return string representation of the code point
*/
private static String toString(int ch)
{
if (ch < SUPPLEMENTARY_MIN_VALUE) {
return String.valueOf((char)ch);
}
StringBuffer result = new StringBuffer();
result.append(getLeadSurrogate(ch));
result.append(getTrailSurrogate(ch));
return result.toString();
}
}

View File

@@ -0,0 +1,58 @@
/*
* Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
*******************************************************************************
* (C) Copyright IBM Corp. 1996-2005 - All Rights Reserved *
* *
* The original version of this source code and documentation is copyrighted *
* and owned by IBM, These materials are provided under terms of a License *
* Agreement between IBM and Sun. This technology is protected by multiple *
* US and International patents. This notice and attribution to IBM may not *
* to removed. *
*******************************************************************************
*/
package sun.text.normalizer;
/**
* <code>UnicodeMatcher</code> defines a protocol for objects that can
* match a range of characters in a Replaceable string.
* @stable ICU 2.0
*/
public interface UnicodeMatcher {
/**
* The character at index i, where i < contextStart || i >= contextLimit,
* is ETHER. This allows explicit matching by rules and UnicodeSets
* of text outside the context. In traditional terms, this allows anchoring
* at the start and/or end.
* @stable ICU 2.0
*/
static final char ETHER = '\uFFFF';
}
//eof

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,219 @@
/*
* Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
*******************************************************************************
* (C) Copyright IBM Corp. and others, 1996-2009 - All Rights Reserved *
* *
* The original version of this source code and documentation is copyrighted *
* and owned by IBM, These materials are provided under terms of a License *
* Agreement between IBM and Sun. This technology is protected by multiple *
* US and International patents. This notice and attribution to IBM may not *
* to removed. *
*******************************************************************************
*/
package sun.text.normalizer;
import java.util.Iterator;
/**
* UnicodeSetIterator iterates over the contents of a UnicodeSet. It
* iterates over either code points or code point ranges. After all
* code points or ranges have been returned, it returns the
* multicharacter strings of the UnicodSet, if any.
*
* <p>To iterate over code points, use a loop like this:
* <pre>
* UnicodeSetIterator it(set);
* while (set.next()) {
* if (set.codepoint != UnicodeSetIterator::IS_STRING) {
* processCodepoint(set.codepoint);
* } else {
* processString(set.string);
* }
* }
* </pre>
*
* <p>To iterate over code point ranges, use a loop like this:
* <pre>
* UnicodeSetIterator it(set);
* while (set.nextRange()) {
* if (set.codepoint != UnicodeSetIterator::IS_STRING) {
* processCodepointRange(set.codepoint, set.codepointEnd);
* } else {
* processString(set.string);
* }
* }
* </pre>
* @author M. Davis
* @stable ICU 2.0
*/
public class UnicodeSetIterator {
/**
* Value of <tt>codepoint</tt> if the iterator points to a string.
* If <tt>codepoint == IS_STRING</tt>, then examine
* <tt>string</tt> for the current iteration result.
* @stable ICU 2.0
*/
public static int IS_STRING = -1;
/**
* Current code point, or the special value <tt>IS_STRING</tt>, if
* the iterator points to a string.
* @stable ICU 2.0
*/
public int codepoint;
/**
* When iterating over ranges using <tt>nextRange()</tt>,
* <tt>codepointEnd</tt> contains the inclusive end of the
* iteration range, if <tt>codepoint != IS_STRING</tt>. If
* iterating over code points using <tt>next()</tt>, or if
* <tt>codepoint == IS_STRING</tt>, then the value of
* <tt>codepointEnd</tt> is undefined.
* @stable ICU 2.0
*/
public int codepointEnd;
/**
* If <tt>codepoint == IS_STRING</tt>, then <tt>string</tt> points
* to the current string. If <tt>codepoint != IS_STRING</tt>, the
* value of <tt>string</tt> is undefined.
* @stable ICU 2.0
*/
public String string;
/**
* Create an iterator over the given set.
* @param set set to iterate over
* @stable ICU 2.0
*/
public UnicodeSetIterator(UnicodeSet set) {
reset(set);
}
/**
* Returns the next element in the set, either a code point range
* or a string. If there are no more elements in the set, return
* false. If <tt>codepoint == IS_STRING</tt>, the value is a
* string in the <tt>string</tt> field. Otherwise the value is a
* range of one or more code points from <tt>codepoint</tt> to
* <tt>codepointeEnd</tt> inclusive.
*
* <p>The order of iteration is all code points ranges in sorted
* order, followed by all strings sorted order. Ranges are
* disjoint and non-contiguous. <tt>string</tt> is undefined
* unless <tt>codepoint == IS_STRING</tt>. Do not mix calls to
* <tt>next()</tt> and <tt>nextRange()</tt> without calling
* <tt>reset()</tt> between them. The results of doing so are
* undefined.
*
* @return true if there was another element in the set and this
* object contains the element.
* @stable ICU 2.0
*/
public boolean nextRange() {
if (nextElement <= endElement) {
codepointEnd = endElement;
codepoint = nextElement;
nextElement = endElement+1;
return true;
}
if (range < endRange) {
loadRange(++range);
codepointEnd = endElement;
codepoint = nextElement;
nextElement = endElement+1;
return true;
}
// stringIterator == null iff there are no string elements remaining
if (stringIterator == null) return false;
codepoint = IS_STRING; // signal that value is actually a string
string = stringIterator.next();
if (!stringIterator.hasNext()) stringIterator = null;
return true;
}
/**
* Sets this iterator to visit the elements of the given set and
* resets it to the start of that set. The iterator is valid only
* so long as <tt>set</tt> is valid.
* @param set the set to iterate over.
* @stable ICU 2.0
*/
public void reset(UnicodeSet uset) {
set = uset;
reset();
}
/**
* Resets this iterator to the start of the set.
* @stable ICU 2.0
*/
public void reset() {
endRange = set.getRangeCount() - 1;
range = 0;
endElement = -1;
nextElement = 0;
if (endRange >= 0) {
loadRange(range);
}
stringIterator = null;
if (set.strings != null) {
stringIterator = set.strings.iterator();
if (!stringIterator.hasNext()) stringIterator = null;
}
}
// ======================= PRIVATES ===========================
private UnicodeSet set;
private int endRange = 0;
private int range = 0;
/**
* @internal
*/
protected int endElement;
/**
* @internal
*/
protected int nextElement;
private Iterator<String> stringIterator = null;
/**
* Invariant: stringIterator is null when there are no (more) strings remaining
*/
/**
* @internal
*/
protected void loadRange(int aRange) {
nextElement = set.getRangeStart(aRange);
endElement = set.getRangeEnd(aRange);
}
}

View File

@@ -0,0 +1,385 @@
/*
* Copyright (c) 2005, 2009, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
*******************************************************************************
* (C) Copyright IBM Corp. and others, 1996-2009 - All Rights Reserved *
* *
* The original version of this source code and documentation is copyrighted *
* and owned by IBM, These materials are provided under terms of a License *
* Agreement between IBM and Sun. This technology is protected by multiple *
* US and International patents. This notice and attribution to IBM may not *
* to removed. *
*******************************************************************************
*/
package sun.text.normalizer;
public final class Utility {
/**
* Convenience utility to compare two Object[]s
* Ought to be in System.
* @param len the length to compare.
* The start indices and start+len must be valid.
*/
public final static boolean arrayRegionMatches(char[] source, int sourceStart,
char[] target, int targetStart,
int len)
{
int sourceEnd = sourceStart + len;
int delta = targetStart - sourceStart;
for (int i = sourceStart; i < sourceEnd; i++) {
if (source[i]!=target[i + delta])
return false;
}
return true;
}
/**
* Convert characters outside the range U+0020 to U+007F to
* Unicode escapes, and convert backslash to a double backslash.
*/
public static final String escape(String s) {
StringBuffer buf = new StringBuffer();
for (int i=0; i<s.length(); ) {
int c = UTF16.charAt(s, i);
i += UTF16.getCharCount(c);
if (c >= ' ' && c <= 0x007F) {
if (c == '\\') {
buf.append("\\\\"); // That is, "\\"
} else {
buf.append((char)c);
}
} else {
boolean four = c <= 0xFFFF;
buf.append(four ? "\\u" : "\\U");
hex(c, four ? 4 : 8, buf);
}
}
return buf.toString();
}
/* This map must be in ASCENDING ORDER OF THE ESCAPE CODE */
static private final char[] UNESCAPE_MAP = {
/*" 0x22, 0x22 */
/*' 0x27, 0x27 */
/*? 0x3F, 0x3F */
/*\ 0x5C, 0x5C */
/*a*/ 0x61, 0x07,
/*b*/ 0x62, 0x08,
/*e*/ 0x65, 0x1b,
/*f*/ 0x66, 0x0c,
/*n*/ 0x6E, 0x0a,
/*r*/ 0x72, 0x0d,
/*t*/ 0x74, 0x09,
/*v*/ 0x76, 0x0b
};
/**
* Convert an escape to a 32-bit code point value. We attempt
* to parallel the icu4c unescapeAt() function.
* @param offset16 an array containing offset to the character
* <em>after</em> the backslash. Upon return offset16[0] will
* be updated to point after the escape sequence.
* @return character value from 0 to 10FFFF, or -1 on error.
*/
public static int unescapeAt(String s, int[] offset16) {
int c;
int result = 0;
int n = 0;
int minDig = 0;
int maxDig = 0;
int bitsPerDigit = 4;
int dig;
int i;
boolean braces = false;
/* Check that offset is in range */
int offset = offset16[0];
int length = s.length();
if (offset < 0 || offset >= length) {
return -1;
}
/* Fetch first UChar after '\\' */
c = UTF16.charAt(s, offset);
offset += UTF16.getCharCount(c);
/* Convert hexadecimal and octal escapes */
switch (c) {
case 'u':
minDig = maxDig = 4;
break;
case 'U':
minDig = maxDig = 8;
break;
case 'x':
minDig = 1;
if (offset < length && UTF16.charAt(s, offset) == 0x7B /*{*/) {
++offset;
braces = true;
maxDig = 8;
} else {
maxDig = 2;
}
break;
default:
dig = UCharacter.digit(c, 8);
if (dig >= 0) {
minDig = 1;
maxDig = 3;
n = 1; /* Already have first octal digit */
bitsPerDigit = 3;
result = dig;
}
break;
}
if (minDig != 0) {
while (offset < length && n < maxDig) {
c = UTF16.charAt(s, offset);
dig = UCharacter.digit(c, (bitsPerDigit == 3) ? 8 : 16);
if (dig < 0) {
break;
}
result = (result << bitsPerDigit) | dig;
offset += UTF16.getCharCount(c);
++n;
}
if (n < minDig) {
return -1;
}
if (braces) {
if (c != 0x7D /*}*/) {
return -1;
}
++offset;
}
if (result < 0 || result >= 0x110000) {
return -1;
}
// If an escape sequence specifies a lead surrogate, see
// if there is a trail surrogate after it, either as an
// escape or as a literal. If so, join them up into a
// supplementary.
if (offset < length &&
UTF16.isLeadSurrogate((char) result)) {
int ahead = offset+1;
c = s.charAt(offset); // [sic] get 16-bit code unit
if (c == '\\' && ahead < length) {
int o[] = new int[] { ahead };
c = unescapeAt(s, o);
ahead = o[0];
}
if (UTF16.isTrailSurrogate((char) c)) {
offset = ahead;
result = UCharacterProperty.getRawSupplementary(
(char) result, (char) c);
}
}
offset16[0] = offset;
return result;
}
/* Convert C-style escapes in table */
for (i=0; i<UNESCAPE_MAP.length; i+=2) {
if (c == UNESCAPE_MAP[i]) {
offset16[0] = offset;
return UNESCAPE_MAP[i+1];
} else if (c < UNESCAPE_MAP[i]) {
break;
}
}
/* Map \cX to control-X: X & 0x1F */
if (c == 'c' && offset < length) {
c = UTF16.charAt(s, offset);
offset16[0] = offset + UTF16.getCharCount(c);
return 0x1F & c;
}
/* If no special forms are recognized, then consider
* the backslash to generically escape the next character. */
offset16[0] = offset;
return c;
}
/**
* Convert a integer to size width hex uppercase digits.
* E.g., hex('a', 4, str) => "0041".
* Append the output to the given StringBuffer.
* If width is too small to fit, nothing will be appended to output.
*/
public static StringBuffer hex(int ch, int width, StringBuffer output) {
return appendNumber(output, ch, 16, width);
}
/**
* Convert a integer to size width (minimum) hex uppercase digits.
* E.g., hex('a', 4, str) => "0041". If the integer requires more
* than width digits, more will be used.
*/
public static String hex(int ch, int width) {
StringBuffer buf = new StringBuffer();
return appendNumber(buf, ch, 16, width).toString();
}
/**
* Skip over a sequence of zero or more white space characters
* at pos. Return the index of the first non-white-space character
* at or after pos, or str.length(), if there is none.
*/
public static int skipWhitespace(String str, int pos) {
while (pos < str.length()) {
int c = UTF16.charAt(str, pos);
if (!UCharacterProperty.isRuleWhiteSpace(c)) {
break;
}
pos += UTF16.getCharCount(c);
}
return pos;
}
static final char DIGITS[] = {
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J',
'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T',
'U', 'V', 'W', 'X', 'Y', 'Z'
};
/**
* Append the digits of a positive integer to the given
* <code>StringBuffer</code> in the given radix. This is
* done recursively since it is easiest to generate the low-
* order digit first, but it must be appended last.
*
* @param result is the <code>StringBuffer</code> to append to
* @param n is the positive integer
* @param radix is the radix, from 2 to 36 inclusive
* @param minDigits is the minimum number of digits to append.
*/
private static void recursiveAppendNumber(StringBuffer result, int n,
int radix, int minDigits)
{
int digit = n % radix;
if (n >= radix || minDigits > 1) {
recursiveAppendNumber(result, n / radix, radix, minDigits - 1);
}
result.append(DIGITS[digit]);
}
/**
* Append a number to the given StringBuffer in the given radix.
* Standard digits '0'-'9' are used and letters 'A'-'Z' for
* radices 11 through 36.
* @param result the digits of the number are appended here
* @param n the number to be converted to digits; may be negative.
* If negative, a '-' is prepended to the digits.
* @param radix a radix from 2 to 36 inclusive.
* @param minDigits the minimum number of digits, not including
* any '-', to produce. Values less than 2 have no effect. One
* digit is always emitted regardless of this parameter.
* @return a reference to result
*/
public static StringBuffer appendNumber(StringBuffer result, int n,
int radix, int minDigits)
throws IllegalArgumentException
{
if (radix < 2 || radix > 36) {
throw new IllegalArgumentException("Illegal radix " + radix);
}
int abs = n;
if (n < 0) {
abs = -n;
result.append("-");
}
recursiveAppendNumber(result, abs, radix, minDigits);
return result;
}
/**
* Return true if the character is NOT printable ASCII. The tab,
* newline and linefeed characters are considered unprintable.
*/
public static boolean isUnprintable(int c) {
return !(c >= 0x20 && c <= 0x7E);
}
/**
* Escape unprintable characters using <backslash>uxxxx notation
* for U+0000 to U+FFFF and <backslash>Uxxxxxxxx for U+10000 and
* above. If the character is printable ASCII, then do nothing
* and return FALSE. Otherwise, append the escaped notation and
* return TRUE.
*/
public static boolean escapeUnprintable(StringBuffer result, int c) {
if (isUnprintable(c)) {
result.append('\\');
if ((c & ~0xFFFF) != 0) {
result.append('U');
result.append(DIGITS[0xF&(c>>28)]);
result.append(DIGITS[0xF&(c>>24)]);
result.append(DIGITS[0xF&(c>>20)]);
result.append(DIGITS[0xF&(c>>16)]);
} else {
result.append('u');
}
result.append(DIGITS[0xF&(c>>12)]);
result.append(DIGITS[0xF&(c>>8)]);
result.append(DIGITS[0xF&(c>>4)]);
result.append(DIGITS[0xF&c]);
return true;
}
return false;
}
/**
* Similar to StringBuffer.getChars, version 1.3.
* Since JDK 1.2 implements StringBuffer.getChars differently, this method
* is here to provide consistent results.
* To be removed after JDK 1.2 ceased to be the reference platform.
* @param src source string buffer
* @param srcBegin offset to the start of the src to retrieve from
* @param srcEnd offset to the end of the src to retrieve from
* @param dst char array to store the retrieved chars
* @param dstBegin offset to the start of the destination char array to
* store the retrieved chars
*/
public static void getChars(StringBuffer src, int srcBegin, int srcEnd,
char dst[], int dstBegin)
{
if (srcBegin == srcEnd) {
return;
}
src.getChars(srcBegin, srcEnd, dst, dstBegin);
}
}

View File

@@ -0,0 +1,185 @@
/*
* Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
*******************************************************************************
* (C) Copyright IBM Corp. and others, 1996-2009 - All Rights Reserved *
* *
* The original version of this source code and documentation is copyrighted *
* and owned by IBM, These materials are provided under terms of a License *
* Agreement between IBM and Sun. This technology is protected by multiple *
* US and International patents. This notice and attribution to IBM may not *
* to removed. *
*******************************************************************************
*/
package sun.text.normalizer;
import java.util.HashMap;
/**
* Class to store version numbers of the form major.minor.milli.micro.
* @author synwee
* @stable ICU 2.6
*/
public final class VersionInfo
{
// public methods ------------------------------------------------------
/**
* Returns an instance of VersionInfo with the argument version.
* @param version version String in the format of "major.minor.milli.micro"
* or "major.minor.milli" or "major.minor" or "major",
* where major, minor, milli, micro are non-negative numbers
* <= 255. If the trailing version numbers are
* not specified they are taken as 0s. E.g. Version "3.1" is
* equivalent to "3.1.0.0".
* @return an instance of VersionInfo with the argument version.
* @exception throws an IllegalArgumentException when the argument version
* is not in the right format
* @stable ICU 2.6
*/
public static VersionInfo getInstance(String version)
{
int length = version.length();
int array[] = {0, 0, 0, 0};
int count = 0;
int index = 0;
while (count < 4 && index < length) {
char c = version.charAt(index);
if (c == '.') {
count ++;
}
else {
c -= '0';
if (c < 0 || c > 9) {
throw new IllegalArgumentException(INVALID_VERSION_NUMBER_);
}
array[count] *= 10;
array[count] += c;
}
index ++;
}
if (index != length) {
throw new IllegalArgumentException(
"Invalid version number: String '" + version + "' exceeds version format");
}
for (int i = 0; i < 4; i ++) {
if (array[i] < 0 || array[i] > 255) {
throw new IllegalArgumentException(INVALID_VERSION_NUMBER_);
}
}
return getInstance(array[0], array[1], array[2], array[3]);
}
/**
* Returns an instance of VersionInfo with the argument version.
* @param major major version, non-negative number <= 255.
* @param minor minor version, non-negative number <= 255.
* @param milli milli version, non-negative number <= 255.
* @param micro micro version, non-negative number <= 255.
* @exception throws an IllegalArgumentException when either arguments are
* negative or > 255
* @stable ICU 2.6
*/
public static VersionInfo getInstance(int major, int minor, int milli,
int micro)
{
// checks if it is in the hashmap
// else
if (major < 0 || major > 255 || minor < 0 || minor > 255 ||
milli < 0 || milli > 255 || micro < 0 || micro > 255) {
throw new IllegalArgumentException(INVALID_VERSION_NUMBER_);
}
int version = getInt(major, minor, milli, micro);
Integer key = Integer.valueOf(version);
Object result = MAP_.get(key);
if (result == null) {
result = new VersionInfo(version);
MAP_.put(key, result);
}
return (VersionInfo)result;
}
/**
* Compares other with this VersionInfo.
* @param other VersionInfo to be compared
* @return 0 if the argument is a VersionInfo object that has version
* information equals to this object.
* Less than 0 if the argument is a VersionInfo object that has
* version information greater than this object.
* Greater than 0 if the argument is a VersionInfo object that
* has version information less than this object.
* @stable ICU 2.6
*/
public int compareTo(VersionInfo other)
{
return m_version_ - other.m_version_;
}
// private data members ----------------------------------------------
/**
* Version number stored as a byte for each of the major, minor, milli and
* micro numbers in the 32 bit int.
* Most significant for the major and the least significant contains the
* micro numbers.
*/
private int m_version_;
/**
* Map of singletons
*/
private static final HashMap<Integer, Object> MAP_ = new HashMap<>();
/**
* Error statement string
*/
private static final String INVALID_VERSION_NUMBER_ =
"Invalid version number: Version number may be negative or greater than 255";
// private constructor -----------------------------------------------
/**
* Constructor with int
* @param compactversion a 32 bit int with each byte representing a number
*/
private VersionInfo(int compactversion)
{
m_version_ = compactversion;
}
/**
* Gets the int from the version numbers
* @param major non-negative version number
* @param minor non-negativeversion number
* @param milli non-negativeversion number
* @param micro non-negativeversion number
*/
private static int getInt(int major, int minor, int milli, int micro)
{
return (major << 24) | (minor << 16) | (milli << 8) | micro;
}
}

View File

@@ -0,0 +1,67 @@
/*
* Copyright (c) 2003, 2005, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
* Licensed Materials - Property of IBM
*
* (C) Copyright IBM Corp. 1999 All Rights Reserved.
* (C) IBM Corp. 1997-1998. All Rights Reserved.
*
* The program is provided "as is" without any warranty express or
* implied, including the warranty of non-infringement and the implied
* warranties of merchantibility and fitness for a particular purpose.
* IBM will not be liable for any damages suffered by you as a result
* of using the Program. In no event will IBM be liable for any
* special, indirect or consequential damages or lost profits even if
* IBM has been advised of the possibility of their occurrence. IBM
* will not be liable for any third party claims against you.
*/
package sun.text.resources;
import java.util.ListResourceBundle;
public class BreakIteratorInfo extends ListResourceBundle {
protected final Object[][] getContents() {
return new Object[][] {
// BreakIteratorClasses lists the class names to instantiate for each
// built-in type of BreakIterator
{"BreakIteratorClasses",
new String[] {
"RuleBasedBreakIterator", // character-break iterator class
"RuleBasedBreakIterator", // word-break iterator class
"RuleBasedBreakIterator", // line-break iterator class
"RuleBasedBreakIterator" // sentence-break iterator class
}
},
// Rules filename for each break-iterator
{"CharacterData", "CharacterBreakIteratorData"},
{"WordData", "WordBreakIteratorData"},
{"LineData", "LineBreakIteratorData"},
{"SentenceData", "SentenceBreakIteratorData"},
};
}
}

View File

@@ -0,0 +1,379 @@
/*
* Copyright (c) 1999, 2007, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
*/
/*
* Licensed Materials - Property of IBM
*
* (C) Copyright IBM Corp. 1999 All Rights Reserved.
* (C) IBM Corp. 1997-1998. All Rights Reserved.
*
* The program is provided "as is" without any warranty express or
* implied, including the warranty of non-infringement and the implied
* warranties of merchantibility and fitness for a particular purpose.
* IBM will not be liable for any damages suffered by you as a result
* of using the Program. In no event will IBM be liable for any
* special, indirect or consequential damages or lost profits even if
* IBM has been advised of the possibility of their occurrence. IBM
* will not be liable for any third party claims against you.
*/
package sun.text.resources;
import java.util.ListResourceBundle;
/**
* Default break-iterator rules. These rules are more or less general for
* all locales, although there are probably a few we're missing. The
* behavior currently mimics the behavior of BreakIterator in JDK 1.2.
* There are known deficiencies in this behavior, including the fact that
* the logic for handling CJK characters works for Japanese but not for
* Chinese, and that we don't currently have an appropriate locale for
* Thai. The resources will eventually be updated to fix these problems.
*/
/* Modified for Hindi 3/1/99. */
/*
* Since JDK 1.5.0, this file no longer goes to runtime and is used at J2SE
* build phase in order to create [Character|Word|Line|Sentence]BreakIteratorData
* files which are used on runtime instead.
*/
public class BreakIteratorRules extends ListResourceBundle {
protected final Object[][] getContents() {
return new Object[][] {
// rules describing how to break between logical characters
{ "CharacterBreakRules",
// ignore non-spacing marks and enclosing marks (since we never
// put a break before ignore characters, this keeps combining
// accents with the base characters they modify)
"<enclosing>=[:Mn::Me:];"
// other category definitions
+ "<choseong>=[\u1100-\u115f];"
+ "<jungseong>=[\u1160-\u11a7];"
+ "<jongseong>=[\u11a8-\u11ff];"
+ "<surr-hi>=[\ud800-\udbff];"
+ "<surr-lo>=[\udc00-\udfff];"
// break after every character, except as follows:
+ ".;"
// keep base and combining characters togethers
+ "<base>=[^<enclosing>^[:Cc::Cf::Zl::Zp:]];"
+ "<base><enclosing><enclosing>*;"
// keep CRLF sequences together
+ "\r\n;"
// keep surrogate pairs together
+ "<surr-hi><surr-lo>;"
// keep Hangul syllables spelled out using conjoining jamo together
+ "<choseong>*<jungseong>*<jongseong>*;"
// various additions for Hindi support
+ "<nukta>=[\u093c];"
+ "<danda>=[\u0964\u0965];"
+ "<virama>=[\u094d];"
+ "<devVowelSign>=[\u093e-\u094c\u0962\u0963];"
+ "<devConsonant>=[\u0915-\u0939];"
+ "<devNuktaConsonant>=[\u0958-\u095f];"
+ "<devCharEnd>=[\u0902\u0903\u0951-\u0954];"
+ "<devCAMN>=(<devConsonant>{<nukta>});"
+ "<devConsonant1>=(<devNuktaConsonant>|<devCAMN>);"
+ "<zwj>=[\u200d];"
+ "<devConjunct>=({<devConsonant1><virama>{<zwj>}}<devConsonant1>);"
+ "<devConjunct>{<devVowelSign>}{<devCharEnd>};"
+ "<danda><nukta>;"
},
// default rules for finding word boundaries
{ "WordBreakRules",
// ignore non-spacing marks, enclosing marks, and format characters,
// all of which should not influence the algorithm
//"<ignore>=[:Mn::Me::Cf:];"
"<ignore>=[:Cf:];"
+ "<enclosing>=[:Mn::Me:];"
// Hindi phrase separator, kanji, katakana, hiragana, CJK diacriticals,
// other letters, and digits
+ "<danda>=[\u0964\u0965];"
+ "<kanji>=[\u3005\u4e00-\u9fa5\uf900-\ufa2d];"
+ "<kata>=[\u30a1-\u30fa\u30fd\u30fe];"
+ "<hira>=[\u3041-\u3094\u309d\u309e];"
+ "<cjk-diacrit>=[\u3099-\u309c\u30fb\u30fc];"
+ "<letter-base>=[:L::Mc:^[<kanji><kata><hira><cjk-diacrit>]];"
+ "<let>=(<letter-base><enclosing>*);"
+ "<digit-base>=[:N:];"
+ "<dgt>=(<digit-base><enclosing>*);"
// punctuation that can occur in the middle of a word: currently
// dashes, apostrophes, quotation marks, and periods
+ "<mid-word>=[:Pd::Pc:\u00ad\u2027\\\"\\\'\\.];"
// punctuation that can occur in the middle of a number: currently
// apostrophes, qoutation marks, periods, commas, and the Arabic
// decimal point
+ "<mid-num>=[\\\"\\\'\\,\u066b\\.];"
// punctuation that can occur at the beginning of a number: currently
// the period, the number sign, and all currency symbols except the cents sign
+ "<pre-num>=[:Sc:\\#\\.^\u00a2];"
// punctuation that can occur at the end of a number: currently
// the percent, per-thousand, per-ten-thousand, and Arabic percent
// signs, the cents sign, and the ampersand
+ "<post-num>=[\\%\\&\u00a2\u066a\u2030\u2031];"
// line separators: currently LF, FF, PS, and LS
+ "<ls>=[\n\u000c\u2028\u2029];"
// whitespace: all space separators and the tab character
+ "<ws-base>=[:Zs:\t];"
+ "<ws>=(<ws-base><enclosing>*);"
// a word is a sequence of letters that may contain internal
// punctuation, as long as it begins and ends with a letter and
// never contains two punctuation marks in a row
+ "<word>=((<let><let>*(<mid-word><let><let>*)*){<danda>});"
// a number is a sequence of digits that may contain internal
// punctuation, as long as it begins and ends with a digit and
// never contains two punctuation marks in a row.
+ "<number>=(<dgt><dgt>*(<mid-num><dgt><dgt>*)*);"
// break after every character, with the following exceptions
// (this will cause punctuation marks that aren't considered
// part of words or numbers to be treated as words unto themselves)
+ ".;"
// keep together any sequence of contiguous words and numbers
// (including just one of either), plus an optional trailing
// number-suffix character
+ "{<word>}(<number><word>)*{<number>{<post-num>}};"
// keep together and sequence of contiguous words and numbers
// that starts with a number-prefix character and a number,
// and may end with a number-suffix character
+ "<pre-num>(<number><word>)*{<number>{<post-num>}};"
// keep together runs of whitespace (optionally with a single trailing
// line separator or CRLF sequence)
+ "<ws>*{\r}{<ls>};"
// keep together runs of Katakana and CJK diacritical marks
+ "[<kata><cjk-diacrit>]*;"
// keep together runs of Hiragana and CJK diacritical marks
+ "[<hira><cjk-diacrit>]*;"
// keep together runs of Kanji
+ "<kanji>*;"
// keep together anything else and an enclosing mark
+ "<base>=[^<enclosing>^[:Cc::Cf::Zl::Zp:]];"
+ "<base><enclosing><enclosing>*;"
},
// default rules for determining legal line-breaking positions
{ "LineBreakRules",
// characters that always cause a break: ETX, tab, LF, FF, LS, and PS
"<break>=[\u0003\t\n\f\u2028\u2029];"
// ignore format characters and control characters EXCEPT for breaking chars
+ "<ignore>=[:Cf:[:Cc:^[<break>\r]]];"
// enclosing marks
+ "<enclosing>=[:Mn::Me:];"
// Hindi phrase separators
+ "<danda>=[\u0964\u0965];"
// characters that always prevent a break: the non-breaking space
// and similar characters
+ "<glue>=[\u00a0\u0f0c\u2007\u2011\u202f\ufeff];"
// whitespace: space separators and control characters, except for
// CR and the other characters mentioned above
+ "<space>=[:Zs::Cc:^[<glue><break>\r]];"
// dashes: dash punctuation and the discretionary hyphen, except for
// non-breaking hyphens
+ "<dash>=[:Pd:\u00ad^<glue>];"
// characters that stick to a word if they precede it: currency symbols
// (except the cents sign) and starting punctuation
+ "<pre-word>=[:Sc::Ps::Pi:^[\u00a2]\\\"\\\'];"
// characters that stick to a word if they follow it: ending punctuation,
// other punctuation that usually occurs at the end of a sentence,
// small Kana characters, some CJK diacritics, etc.
+ "<post-word>=[\\\":Pe::Pf:\\!\\%\\.\\,\\:\\;\\?\u00a2\u00b0\u066a\u2030-\u2034\u2103"
+ "\u2105\u2109\u3001\u3002\u3005\u3041\u3043\u3045\u3047\u3049\u3063"
+ "\u3083\u3085\u3087\u308e\u3099-\u309e\u30a1\u30a3\u30a5\u30a7\u30a9"
+ "\u30c3\u30e3\u30e5\u30e7\u30ee\u30f5\u30f6\u30fc-\u30fe\uff01\uff05"
+ "\uff0c\uff0e\uff1a\uff1b\uff1f];"
// Kanji: actually includes Kanji,Kana and Hangul syllables,
// except for small Kana and CJK diacritics
+ "<kanji>=[\u4e00-\u9fa5\uac00-\ud7a3\uf900-\ufa2d\ufa30-\ufa6a\u3041-\u3094\u30a1-\u30fa^[<post-word><ignore>]];"
// digits
+ "<digit>=[:Nd::No:];"
// punctuation that can occur in the middle of a number: periods and commas
+ "<mid-num>=[\\.\\,];"
// everything not mentioned above
+ "<char>=[^[<break><space><dash><kanji><glue><ignore><pre-word><post-word><mid-num>\r<danda>]];"
// a "number" is a run of prefix characters and dashes, followed by one or
// more digits with isolated number-punctuation characters interspersed
+ "<number>=([<pre-word><dash>]*<digit><digit>*(<mid-num><digit><digit>*)*);"
// the basic core of a word can be either a "number" as defined above, a single
// "Kanji" character, or a run of any number of not-explicitly-mentioned
// characters (this includes Latin letters)
+ "<word-core>=(<char>*|<kanji>|<number>);"
// a word may end with an optional suffix that be either a run of one or
// more dashes or a run of word-suffix characters
+ "<word-suffix>=((<dash><dash>*|<post-word>*));"
// a word, thus, is an optional run of word-prefix characters, followed by
// a word core and a word suffix (the syntax of <word-core> and <word-suffix>
// actually allows either of them to match the empty string, putting a break
// between things like ")(" or "aaa(aaa"
+ "<word>=(<pre-word>*<word-core><word-suffix>);"
+ "<hack1>=[\\(];"
+ "<hack2>=[\\)];"
+ "<hack3>=[\\$\\'];"
// finally, the rule that does the work: Keep together any run of words that
// are joined by runs of one of more non-spacing mark. Also keep a trailing
// line-break character or CRLF combination with the word. (line separators
// "win" over nbsp's)
+ "<word>(((<space>*<glue><glue>*{<space>})|<hack3>)<word>)*<space>*{<enclosing>*}{<hack1><hack2><post-word>*}{<enclosing>*}{\r}{<break>};"
+ "\r<break>;"
},
// default rules for finding sentence boundaries
{ "SentenceBreakRules",
// ignore non-spacing marks, enclosing marks, and format characters
"<ignore>=[:Mn::Me::Cf:];"
// letters
+ "<letter>=[:L:];"
// lowercase letters
+ "<lc>=[:Ll:];"
// uppercase letters
+ "<uc>=[:Lu:];"
// NOT lowercase letters
+ "<notlc>=[<letter>^<lc>];"
// whitespace (line separators are treated as whitespace)
+ "<space>=[\t\r\f\n\u2028:Zs:];"
// punctuation which may occur at the beginning of a sentence: "starting
// punctuation" and quotation marks
+ "<start-punctuation>=[:Ps::Pi:\\\"\\\'];"
// punctuation with may occur at the end of a sentence: "ending punctuation"
// and quotation marks
+ "<end>=[:Pe::Pf:\\\"\\\'];"
// digits
+ "<digit>=[:N:];"
// characters that unambiguously signal the end of a sentence
+ "<term>=[\\!\\?\u3002\uff01\uff1f];"
// periods, which MAY signal the end of a sentence
+ "<period>=[\\.\uff0e];"
// characters that may occur at the beginning of a sentence: basically anything
// not mentioned above (letters and digits are specifically excluded)
+ "<sent-start>=[^[:L:<space><start-punctuation><end><digit><term><period>\u2029<ignore>]];"
// Hindi phrase separator
+ "<danda>=[\u0964\u0965];"
// always break sentences after paragraph separators
+ ".*?{\u2029};"
// always break after a danda, if it's followed by whitespace
+ ".*?<danda><space>*;"
// if you see a period, skip over additional periods and ending punctuation
// and if the next character is a paragraph separator, break after the
// paragraph separator
//+ ".*?<period>[<period><end>]*<space>*\u2029;"
//+ ".*?[<period><end>]*<space>*\u2029;"
// if you see a period, skip over additional periods and ending punctuation,
// followed by optional whitespace, followed by optional starting punctuation,
// and if the next character is something that can start a sentence
// (basically, a capital letter), then put the sentence break between the
// whitespace and the opening punctuation
+ ".*?<period>[<period><end>]*<space><space>*/<notlc>;"
+ ".*?<period>[<period><end>]*<space>*/[<start-punctuation><sent-start>][<start-punctuation><sent-start>]*<letter>;"
// if you see a sentence-terminating character, skip over any additional
// terminators, periods, or ending punctuation, followed by any whitespace,
// followed by a SINGLE optional paragraph separator, and put the break there
+ ".*?<term>[<term><period><end>]*<space>*{\u2029};"
// The following rules are here to aid in backwards iteration. The automatically
// generated backwards state table will rewind to the beginning of the
// paragraph all the time (or all the way to the beginning of the document
// if the document doesn't use the Unicode PS character) because the only
// unambiguous character pairs are those involving paragraph separators.
// These specify a few more unambiguous breaking situations.
// if you see a sentence-starting character, followed by starting punctuation
// (remember, we're iterating backwards), followed by an optional run of
// whitespace, followed by an optional run of ending punctuation, followed
// by a period, this is a safe place to turn around
+ "!<sent-start><start-punctuation>*<space>*<end>*<period>;"
// if you see a letter or a digit, followed by an optional run of
// starting punctuation, followed by an optional run of whitespace,
// followed by an optional run of ending punctuation, followed by
// a sentence terminator, this is a safe place to turn around
+ "![<sent-start><lc><digit>]<start-punctuation>*<space>*<end>*<term>;"
}
};
}
}

View File

@@ -0,0 +1,55 @@
/*
* Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
*/
/*
* (C) Copyright Taligent, Inc. 1996, 1997 - All Rights Reserved
* (C) Copyright IBM Corp. 1996 - 1999 - All Rights Reserved
*
* The original version of this source code and documentation
* is copyrighted and owned by Taligent, Inc., a wholly-owned
* subsidiary of IBM. These materials are provided under terms
* of a License Agreement between Taligent and Sun. This technology
* is protected by multiple US and International patents.
*
* This notice and attribution to Taligent may not be removed.
* Taligent is a registered trademark of Taligent, Inc.
*
*/
package sun.text.resources;
import java.util.ListResourceBundle;
public class CollationData extends ListResourceBundle {
protected final Object[][] getContents() {
return new Object[][] {
{ "Rule", "" },
};
}
}

View File

@@ -0,0 +1,868 @@
/*
* Copyright (c) 1996, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
*/
/*
* (C) Copyright Taligent, Inc. 1996, 1997 - All Rights Reserved
* (C) Copyright IBM Corp. 1996 - 1999 - All Rights Reserved
*
* The original version of this source code and documentation
* is copyrighted and owned by Taligent, Inc., a wholly-owned
* subsidiary of IBM. These materials are provided under terms
* of a License Agreement between Taligent and Sun. This technology
* is protected by multiple US and International patents.
*
* This notice and attribution to Taligent may not be removed.
* Taligent is a registered trademark of Taligent, Inc.
*
*/
/*
* COPYRIGHT AND PERMISSION NOTICE
*
* Copyright (C) 1991-2012 Unicode, Inc. All rights reserved. Distributed under
* the Terms of Use in http://www.unicode.org/copyright.html.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of the Unicode data files and any associated documentation (the "Data
* Files") or Unicode software and any associated documentation (the
* "Software") to deal in the Data Files or Software without restriction,
* including without limitation the rights to use, copy, modify, merge,
* publish, distribute, and/or sell copies of the Data Files or Software, and
* to permit persons to whom the Data Files or Software are furnished to do so,
* provided that (a) the above copyright notice(s) and this permission notice
* appear with all copies of the Data Files or Software, (b) both the above
* copyright notice(s) and this permission notice appear in associated
* documentation, and (c) there is clear notice in each modified Data File or
* in the Software as well as in the documentation associated with the Data
* File(s) or Software that the data or software has been modified.
*
* THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
* KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
* THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
* INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR
* CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THE DATA FILES OR SOFTWARE.
*
* Except as contained in this notice, the name of a copyright holder shall not
* be used in advertising or otherwise to promote the sale, use or other
* dealings in these Data Files or Software without prior written authorization
* of the copyright holder.
*/
package sun.text.resources;
import sun.util.resources.ParallelListResourceBundle;
public class FormatData extends ParallelListResourceBundle {
/**
* Overrides ListResourceBundle
*/
@Override
protected final Object[][] getContents() {
// Julian calendar era strings
final String[] julianEras = {
"BC",
"AD"
};
// Thai Buddhist calendar era strings
final String[] buddhistEras = {
"BC", // BC
"B.E." // Buddhist Era
};
// Japanese imperial calendar era abbreviations
final String[] japaneseEraAbbrs = {
"",
"M",
"T",
"S",
"H",
"R",
};
// Japanese imperial calendar era strings
final String[] japaneseEras = {
"",
"Meiji",
"Taisho",
"Showa",
"Heisei",
"Reiwa",
};
return new Object[][] {
{ "MonthNames",
new String[] {
"January", // january
"February", // february
"March", // march
"April", // april
"May", // may
"June", // june
"July", // july
"August", // august
"September", // september
"October", // october
"November", // november
"December", // december
"" // month 13 if applicable
}
},
{ "MonthAbbreviations",
new String[] {
"Jan", // abb january
"Feb", // abb february
"Mar", // abb march
"Apr", // abb april
"May", // abb may
"Jun", // abb june
"Jul", // abb july
"Aug", // abb august
"Sep", // abb september
"Oct", // abb october
"Nov", // abb november
"Dec", // abb december
"" // abb month 13 if applicable
}
},
{ "MonthNarrows",
new String[] {
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9",
"10",
"11",
"12",
"",
}
},
{ "DayNames",
new String[] {
"Sunday", // Sunday
"Monday", // Monday
"Tuesday", // Tuesday
"Wednesday", // Wednesday
"Thursday", // Thursday
"Friday", // Friday
"Saturday" // Saturday
}
},
{ "DayAbbreviations",
new String[] {
"Sun", // abb Sunday
"Mon", // abb Monday
"Tue", // abb Tuesday
"Wed", // abb Wednesday
"Thu", // abb Thursday
"Fri", // abb Friday
"Sat" // abb Saturday
}
},
{ "DayNarrows",
new String[] {
"S",
"M",
"T",
"W",
"T",
"F",
"S",
}
},
{ "AmPmMarkers",
new String[] {
"AM", // am marker
"PM" // pm marker
}
},
{ "narrow.AmPmMarkers",
new String[] {
"a", // am marker
"p" // pm marker
}
},
{ "Eras",
julianEras },
{ "short.Eras",
julianEras },
{ "narrow.Eras",
new String[] {
"B",
"A",
}
},
{ "buddhist.Eras",
buddhistEras
},
{ "buddhist.short.Eras",
buddhistEras
},
{ "buddhist.narrow.Eras",
buddhistEras
},
{ "japanese.Eras",
japaneseEras },
{ "japanese.short.Eras",
japaneseEraAbbrs
},
{ "japanese.narrow.Eras",
japaneseEraAbbrs
},
{ "japanese.FirstYear",
new String[] { // Japanese imperial calendar year name
// empty in English
}
},
{ "NumberPatterns",
new String[] {
"#,##0.###;-#,##0.###", // decimal pattern
"\u00a4 #,##0.00;-\u00a4 #,##0.00", // currency pattern
"#,##0%" // percent pattern
}
},
{ "DefaultNumberingSystem", "" },
{ "NumberElements",
new String[] {
".", // decimal separator
",", // group (thousands) separator
";", // list separator
"%", // percent sign
"0", // native 0 digit
"#", // pattern digit
"-", // minus sign
"E", // exponential
"\u2030", // per mille
"\u221e", // infinity
"\ufffd" // NaN
}
},
{ "arab.NumberElements",
new String[] {
"\u066b",
"\u066c",
"\u061b",
"\u066a",
"\u0660",
"#",
"-",
"\u0627\u0633",
"\u0609",
"\u221e",
"NaN",
}
},
{ "arabext.NumberElements",
new String[] {
"\u066b",
"\u066c",
"\u061b",
"\u066a",
"\u06f0",
"#",
"-",
"\u00d7\u06f1\u06f0^",
"\u0609",
"\u221e",
"NaN",
}
},
{ "bali.NumberElements",
new String[] {
".",
",",
";",
"%",
"\u1b50",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "beng.NumberElements",
new String[] {
".",
",",
";",
"%",
"\u09e6",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "cham.NumberElements",
new String[] {
".",
",",
";",
"%",
"\uaa50",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "deva.NumberElements",
new String[] {
".",
",",
";",
"%",
"\u0966",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "fullwide.NumberElements",
new String[] {
".",
",",
";",
"%",
"\uff10",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "gujr.NumberElements",
new String[] {
".",
",",
";",
"%",
"\u0ae6",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "guru.NumberElements",
new String[] {
".",
",",
";",
"%",
"\u0a66",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "java.NumberElements",
new String[] {
".",
",",
";",
"%",
"\ua9d0",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "kali.NumberElements",
new String[] {
".",
",",
";",
"%",
"\ua900",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "khmr.NumberElements",
new String[] {
".",
",",
";",
"%",
"\u17e0",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "knda.NumberElements",
new String[] {
".",
",",
";",
"%",
"\u0ce6",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "laoo.NumberElements",
new String[] {
".",
",",
";",
"%",
"\u0ed0",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "lana.NumberElements",
new String[] {
".",
",",
";",
"%",
"\u1a80",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "lanatham.NumberElements",
new String[] {
".",
",",
";",
"%",
"\u1a90",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "latn.NumberElements",
new String[] {
".", // decimal separator
",", // group (thousands) separator
";", // list separator
"%", // percent sign
"0", // native 0 digit
"#", // pattern digit
"-", // minus sign
"E", // exponential
"\u2030", // per mille
"\u221e", // infinity
"\ufffd" // NaN
}
},
{ "lepc.NumberElements",
new String[] {
".",
",",
";",
"%",
"\u1c40",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "limb.NumberElements",
new String[] {
".",
",",
";",
"%",
"\u1946",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "mlym.NumberElements",
new String[] {
".",
",",
";",
"%",
"\u0d66",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "mong.NumberElements",
new String[] {
".",
",",
";",
"%",
"\u1810",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "mtei.NumberElements",
new String[] {
".",
",",
";",
"%",
"\uabf0",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "mymr.NumberElements",
new String[] {
".",
",",
";",
"%",
"\u1040",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "mymrshan.NumberElements",
new String[] {
".",
",",
";",
"%",
"\u1090",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "nkoo.NumberElements",
new String[] {
".",
",",
";",
"%",
"\u07c0",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "olck.NumberElements",
new String[] {
".",
",",
";",
"%",
"\u1c50",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "orya.NumberElements",
new String[] {
".",
",",
";",
"%",
"\u0b66",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "saur.NumberElements",
new String[] {
".",
",",
";",
"%",
"\ua8d0",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "sund.NumberElements",
new String[] {
".",
",",
";",
"%",
"\u1bb0",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "talu.NumberElements",
new String[] {
".",
",",
";",
"%",
"\u19d0",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "tamldec.NumberElements",
new String[] {
".",
",",
";",
"%",
"\u0be6",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "telu.NumberElements",
new String[] {
".",
",",
";",
"%",
"\u0c66",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "thai.NumberElements",
new String[] {
".", // decimal separator
",", // group (thousands) separator
";", // list separator
"%", // percent sign
"\u0E50", // native 0 digit
"#", // pattern digit
"-", // minus sign
"E", // exponential
"\u2030", // per mille
"\u221e", // infinity
"\ufffd" // NaN
}
},
{ "tibt.NumberElements",
new String[] {
".",
",",
";",
"%",
"\u0f20",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "vaii.NumberElements",
new String[] {
".",
",",
";",
"%",
"\ua620",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "TimePatterns",
new String[] {
"h:mm:ss a z", // full time pattern
"h:mm:ss a z", // long time pattern
"h:mm:ss a", // medium time pattern
"h:mm a", // short time pattern
}
},
{ "DatePatterns",
new String[] {
"EEEE, MMMM d, yyyy", // full date pattern
"MMMM d, yyyy", // long date pattern
"MMM d, yyyy", // medium date pattern
"M/d/yy", // short date pattern
}
},
{ "DateTimePatterns",
new String[] {
"{1} {0}" // date-time pattern
}
},
{ "buddhist.TimePatterns",
new String[] {
"H:mm:ss z", // full time pattern
"H:mm:ss z", // long time pattern
"H:mm:ss", // medium time pattern
"H:mm", // short time pattern
}
},
{ "buddhist.DatePatterns",
new String[] {
"EEEE d MMMM G yyyy", // full date pattern
"d MMMM yyyy", // long date pattern
"d MMM yyyy", // medium date pattern
"d/M/yyyy", // short date pattern
}
},
{ "buddhist.DateTimePatterns",
new String[] {
"{1}, {0}" // date-time pattern
}
},
{ "japanese.TimePatterns",
new String[] {
"h:mm:ss a z", // full time pattern
"h:mm:ss a z", // long time pattern
"h:mm:ss a", // medium time pattern
"h:mm a", // short time pattern
}
},
{ "japanese.DatePatterns",
new String[] {
"GGGG yyyy MMMM d (EEEE)", // full date pattern
"GGGG yyyy MMMM d", // long date pattern
"GGGG yyyy MMM d", // medium date pattern
"Gy.MM.dd", // short date pattern
}
},
{ "japanese.DateTimePatterns",
new String[] {
"{1} {0}" // date-time pattern
}
},
{ "DateTimePatternChars", "GyMdkHmsSEDFwWahKzZ" },
// Workaround for islamic-umalqura name support (JDK-8015986)
{ "calendarname.islamic-umalqura", "Islamic Umm al-Qura Calendar" },
};
}
}

View File

@@ -0,0 +1,289 @@
/*
* Copyright (c) 2013, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
* COPYRIGHT AND PERMISSION NOTICE
*
* Copyright (C) 1991-2012 Unicode, Inc. All rights reserved. Distributed under
* the Terms of Use in http://www.unicode.org/copyright.html.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of the Unicode data files and any associated documentation (the "Data
* Files") or Unicode software and any associated documentation (the
* "Software") to deal in the Data Files or Software without restriction,
* including without limitation the rights to use, copy, modify, merge,
* publish, distribute, and/or sell copies of the Data Files or Software, and
* to permit persons to whom the Data Files or Software are furnished to do so,
* provided that (a) the above copyright notice(s) and this permission notice
* appear with all copies of the Data Files or Software, (b) both the above
* copyright notice(s) and this permission notice appear in associated
* documentation, and (c) there is clear notice in each modified Data File or
* in the Software as well as in the documentation associated with the Data
* File(s) or Software that the data or software has been modified.
*
* THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
* KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
* THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
* INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR
* CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THE DATA FILES OR SOFTWARE.
*
* Except as contained in this notice, the name of a copyright holder shall not
* be used in advertising or otherwise to promote the sale, use or other
* dealings in these Data Files or Software without prior written authorization
* of the copyright holder.
*/
// Note: this file has been generated by a tool.
package sun.text.resources;
import sun.util.resources.OpenListResourceBundle;
public class JavaTimeSupplementary extends OpenListResourceBundle {
@Override
protected final Object[][] getContents() {
return new Object[][] {
{ "QuarterAbbreviations",
new String[] {
"Q1",
"Q2",
"Q3",
"Q4",
}
},
{ "QuarterNames",
new String[] {
"Q1",
"Q2",
"Q3",
"Q4",
}
},
{ "QuarterNarrows",
new String[] {
"1",
"2",
"3",
"4",
}
},
{ "calendarname.buddhist",
"Buddhist Calendar" },
{ "calendarname.gregorian",
"Gregorian Calendar" },
{ "calendarname.gregory",
"Gregorian Calendar" },
{ "calendarname.islamic",
"Islamic Calendar" },
{ "calendarname.islamic-civil",
"Islamic-Civil Calendar" },
{ "calendarname.islamicc",
"Islamic-Civil Calendar" },
{ "calendarname.japanese",
"Japanese Calendar" },
{ "calendarname.roc",
"Minguo Calendar" },
{ "field.dayperiod",
"Dayperiod" },
{ "field.era",
"Era" },
{ "field.hour",
"Hour" },
{ "field.minute",
"Minute" },
{ "field.month",
"Month" },
{ "field.second",
"Second" },
{ "field.week",
"Week" },
{ "field.weekday",
"Day of the Week" },
{ "field.year",
"Year" },
{ "field.zone",
"Zone" },
{ "islamic.DatePatterns",
new String[] {
"EEEE, MMMM d, y GGGG",
"MMMM d, y GGGG",
"MMM d, y GGGG",
"M/d/yy GGGG",
}
},
{ "islamic.Eras",
new String[] {
"",
"AH",
}
},
{ "islamic.MonthAbbreviations",
new String[] {
"Muh.",
"Saf.",
"Rab. I",
"Rab. II",
"Jum. I",
"Jum. II",
"Raj.",
"Sha.",
"Ram.",
"Shaw.",
"Dhu\u02bbl-Q.",
"Dhu\u02bbl-H.",
"",
}
},
{ "islamic.MonthNames",
new String[] {
"Muharram",
"Safar",
"Rabi\u02bb I",
"Rabi\u02bb II",
"Jumada I",
"Jumada II",
"Rajab",
"Sha\u02bbban",
"Ramadan",
"Shawwal",
"Dhu\u02bbl-Qi\u02bbdah",
"Dhu\u02bbl-Hijjah",
"",
}
},
{ "islamic.MonthNarrows",
new String[] {
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9",
"10",
"11",
"12",
"",
}
},
{ "islamic.short.Eras",
new String[] {
"",
"AH",
}
},
{ "java.time.buddhist.DatePatterns",
new String[] {
"EEEE, G y MMMM dd",
"G y MMMM d",
"G y MMM d",
"GGGGG yyyy-MM-dd",
}
},
{ "java.time.buddhist.short.Eras",
new String[] {
"BC",
"B.E.",
}
},
{ "java.time.islamic.DatePatterns",
new String[] {
"EEEE, MMMM d, y G",
"MMMM d, y G",
"MMM d, y G",
"M/d/yy G",
}
},
{ "java.time.japanese.DatePatterns",
new String[] {
"G y MMMM d (EEEE)",
"G y MMMM d",
"G y MMM d",
"GGGGGy.MM.dd",
}
},
{ "java.time.japanese.long.Eras",
new String[] {
"",
"Meiji",
"Taisho",
"Showa",
"Heisei",
"Reiwa",
}
},
{ "java.time.japanese.short.Eras",
new String[] {
"",
"Meiji",
"Taisho",
"Showa",
"Heisei",
"Reiwa",
}
},
{ "java.time.roc.DatePatterns",
new String[] {
"EEEE, G y MMMM dd",
"G y MMMM d",
"G y MMM d",
"GGGGG yyy-MM-dd",
}
},
{ "java.time.short.Eras",
new String[] {
"BC",
"AD",
}
},
{ "roc.DatePatterns",
new String[] {
"EEEE, GGGG y MMMM dd",
"GGGG y MMMM d",
"GGGG y MMM d",
"G yyy-MM-dd",
}
},
{ "roc.Eras",
new String[] {
"Before R.O.C.",
"R.O.C.",
}
},
{ "roc.short.Eras",
new String[] {
"Before R.O.C.",
"R.O.C.",
}
},
};
}
}

View File

@@ -0,0 +1,244 @@
/*
* Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
*/
/*
* (C) Copyright Taligent, Inc. 1996, 1997 - All Rights Reserved
* (C) Copyright IBM Corp. 1996 - 1998 - All Rights Reserved
*
* The original version of this source code and documentation
* is copyrighted and owned by Taligent, Inc., a wholly-owned
* subsidiary of IBM. These materials are provided under terms
* of a License Agreement between Taligent and Sun. This technology
* is protected by multiple US and International patents.
*
* This notice and attribution to Taligent may not be removed.
* Taligent is a registered trademark of Taligent, Inc.
*
*/
package sun.text.resources.ar;
import java.util.ListResourceBundle;
public class CollationData_ar extends ListResourceBundle {
protected final Object[][] getContents() {
return new Object[][] {
{ "Rule",
// for ar, the following additions are needed:
"& \u0361 = \u0640"
+ "= \u064b"
+ "= \u064c"
+ "= \u064d"
+ "= \u064e"
+ "= \u064f"
+ "= \u0650"
+ "= \u0652"
+ "= \u066d"
+ "= \u06d6"
+ "= \u06d7"
+ "= \u06d8"
+ "= \u06d9"
+ "= \u06da"
+ "= \u06db"
+ "= \u06dc"
+ "= \u06dd"
+ "= \u06de"
+ "= \u06df"
+ "= \u06e0"
+ "= \u06e1"
+ "= \u06e2"
+ "= \u06e3"
+ "= \u06e4"
+ "= \u06e5"
+ "= \u06e6"
+ "= \u06e7"
+ "= \u06e8"
+ "= \u06e9"
+ "= \u06ea"
+ "= \u06eb"
+ "= \u06ec"
+ "= \u06ed"
// Numerics
+ "& 0 < \u0660 < \u06f0" // 0
+ "& 1 < \u0661 < \u06f1" // 1
+ "& 2 < \u0662 < \u06f2" // 2
+ "& 3 < \u0663 < \u06f3" // 3
+ "& 4 < \u0664 < \u06f4" // 4
+ "& 5 < \u0665 < \u06f5" // 5
+ "& 6 < \u0666 < \u06f6" // 6
+ "& 7 < \u0667 < \u06f7" // 7
+ "& 8 < \u0668 < \u06f8" // 8
+ "& 9 < \u0669 < \u06f9" // 9
// Punctuations
+ "& \u00b5 < \u060c" // retroflex click < arabic comma
+ "< \u061b" // ar semicolon
+ "< \u061f" // ar question mark
+ "< \u066a" // ar percent sign
+ "< \u066b" // ar decimal separator
+ "< \u066c" // ar thousand separator
+ "< \u06d4" // ar full stop
// Arabic script sorts after Z's
+ "& Z < \u0621"
+ "; \u0622"
+ "; \u0623"
+ "; \u0624"
+ "; \u0625"
+ "; \u0626"
+ "< \u0627"
+ "< \u0628"
+ "< \u067e"
+ "< \u0629"
+ "= \u062a"
+ "< \u062b"
+ "< \u062c"
+ "< \u0686"
+ "< \u062d"
+ "< \u062e"
+ "< \u062f"
+ "< \u0630"
+ "< \u0631"
+ "< \u0632"
+ "< \u0698"
+ "< \u0633"
+ "< \u0634"
+ "< \u0635"
+ "< \u0636"
+ "< \u0637"
+ "< \u0638"
+ "< \u0639"
+ "< \u063a"
+ "< \u0641"
+ "< \u0642"
+ "< \u0643"
+ "< \u06af"
+ "< \u0644"
+ "< \u0645"
+ "< \u0646"
+ "< \u0647"
+ "< \u0648"
+ "< \u0649"
+ "; \u064a"
+ "< \u0670"
+ "< \u0671"
+ "< \u0672"
+ "< \u0673"
+ "< \u0674"
+ "< \u0675"
+ "< \u0676"
+ "< \u0677"
+ "< \u0678"
+ "< \u0679"
+ "< \u067a"
+ "< \u067b"
+ "< \u067c"
+ "< \u067d"
+ "< \u067f"
+ "< \u0680"
+ "< \u0681"
+ "< \u0682"
+ "< \u0683"
+ "< \u0684"
+ "< \u0685"
+ "< \u0687"
+ "< \u0688"
+ "< \u0689"
+ "< \u068a"
+ "< \u068b"
+ "< \u068c"
+ "< \u068d"
+ "< \u068e"
+ "< \u068f"
+ "< \u0690"
+ "< \u0691"
+ "< \u0692"
+ "< \u0693"
+ "< \u0694"
+ "< \u0695"
+ "< \u0696"
+ "< \u0697"
+ "< \u0699"
+ "< \u069a"
+ "< \u069b"
+ "< \u069c"
+ "< \u069d"
+ "< \u069e"
+ "< \u069f"
+ "< \u06a0"
+ "< \u06a1"
+ "< \u06a2"
+ "< \u06a3"
+ "< \u06a4"
+ "< \u06a5"
+ "< \u06a6"
+ "< \u06a7"
+ "< \u06a8"
+ "< \u06a9"
+ "< \u06aa"
+ "< \u06ab"
+ "< \u06ac"
+ "< \u06ad"
+ "< \u06ae"
+ "< \u06b0"
+ "< \u06b1"
+ "< \u06b2"
+ "< \u06b3"
+ "< \u06b4"
+ "< \u06b5"
+ "< \u06b6"
+ "< \u06b7"
+ "< \u06ba"
+ "< \u06bb"
+ "< \u06bc"
+ "< \u06bd"
+ "< \u06be"
+ "< \u06c0"
+ "< \u06c1"
+ "< \u06c2"
+ "< \u06c3"
+ "< \u06c4"
+ "< \u06c5"
+ "< \u06c6"
+ "< \u06c7"
+ "< \u06c8"
+ "< \u06c9"
+ "< \u06ca"
+ "< \u06cb"
+ "< \u06cc"
+ "< \u06cd"
+ "< \u06ce"
+ "< \u06d0"
+ "< \u06d1"
+ "< \u06d2"
+ "< \u06d3"
+ "< \u06d5"
+ "< \u0651"
},
};
}
}

View File

@@ -0,0 +1,275 @@
/*
* Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
*/
/*
* (C) Copyright Taligent, Inc. 1996, 1997 - All Rights Reserved
* (C) Copyright IBM Corp. 1996 - 1998 - All Rights Reserved
*
* The original version of this source code and documentation
* is copyrighted and owned by Taligent, Inc., a wholly-owned
* subsidiary of IBM. These materials are provided under terms
* of a License Agreement between Taligent and Sun. This technology
* is protected by multiple US and International patents.
*
* This notice and attribution to Taligent may not be removed.
* Taligent is a registered trademark of Taligent, Inc.
*
*/
/*
* COPYRIGHT AND PERMISSION NOTICE
*
* Copyright (C) 1991-2012 Unicode, Inc. All rights reserved. Distributed under
* the Terms of Use in http://www.unicode.org/copyright.html.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of the Unicode data files and any associated documentation (the "Data
* Files") or Unicode software and any associated documentation (the
* "Software") to deal in the Data Files or Software without restriction,
* including without limitation the rights to use, copy, modify, merge,
* publish, distribute, and/or sell copies of the Data Files or Software, and
* to permit persons to whom the Data Files or Software are furnished to do so,
* provided that (a) the above copyright notice(s) and this permission notice
* appear with all copies of the Data Files or Software, (b) both the above
* copyright notice(s) and this permission notice appear in associated
* documentation, and (c) there is clear notice in each modified Data File or
* in the Software as well as in the documentation associated with the Data
* File(s) or Software that the data or software has been modified.
*
* THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
* KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
* THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
* INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR
* CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THE DATA FILES OR SOFTWARE.
*
* Except as contained in this notice, the name of a copyright holder shall not
* be used in advertising or otherwise to promote the sale, use or other
* dealings in these Data Files or Software without prior written authorization
* of the copyright holder.
*/
package sun.text.resources.ar;
import sun.util.resources.ParallelListResourceBundle;
public class FormatData_ar extends ParallelListResourceBundle {
/**
* Overrides ParallelListResourceBundle
*/
@Override
protected final Object[][] getContents() {
final String[] rocEras = {
"Before R.O.C.",
"\u062c\u0645\u0647\u0648\u0631\u064a\u0629 \u0627\u0644\u0635\u064a",
};
return new Object[][] {
{ "MonthNames",
new String[] {
"\u064a\u0646\u0627\u064a\u0631", // january
"\u0641\u0628\u0631\u0627\u064a\u0631", // february
"\u0645\u0627\u0631\u0633", // march
"\u0623\u0628\u0631\u064a\u0644", // april
"\u0645\u0627\u064a\u0648", // may
"\u064a\u0648\u0646\u064a\u0648", // june
"\u064a\u0648\u0644\u064a\u0648", // july
"\u0623\u063a\u0633\u0637\u0633", // august
"\u0633\u0628\u062a\u0645\u0628\u0631", // september
"\u0623\u0643\u062a\u0648\u0628\u0631", // october
"\u0646\u0648\u0641\u0645\u0628\u0631", // november
"\u062f\u064a\u0633\u0645\u0628\u0631", // december
"" // month 13 if applicable
}
},
{ "MonthAbbreviations",
new String[] {
"\u064a\u0646\u0627", // abb january
"\u0641\u0628\u0631", // abb february
"\u0645\u0627\u0631", // abb march
"\u0623\u0628\u0631", // abb april
"\u0645\u0627\u064a", // abb may
"\u064a\u0648\u0646", // abb june
"\u064a\u0648\u0644", // abb july
"\u0623\u063a\u0633", // abb august
"\u0633\u0628\u062a", // abb september
"\u0623\u0643\u062a", // abb october
"\u0646\u0648\u0641", // abb november
"\u062f\u064a\u0633", // abb december
"" // abb month 13 if applicable
}
},
{ "MonthNarrows",
new String[] {
"\u064a",
"\u0641",
"\u0645",
"\u0623",
"\u0648",
"\u0646",
"\u0644",
"\u063a",
"\u0633",
"\u0643",
"\u0628",
"\u062f",
"",
}
},
{ "DayNames",
new String[] {
"\u0627\u0644\u0623\u062d\u062f", // Sunday
"\u0627\u0644\u0627\u062b\u0646\u064a\u0646", // Monday
"\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621", // Tuesday
"\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621", // Wednesday
"\u0627\u0644\u062e\u0645\u064a\u0633", // Thursday
"\u0627\u0644\u062c\u0645\u0639\u0629", // Friday
"\u0627\u0644\u0633\u0628\u062a" // Saturday
}
},
{ "DayAbbreviations",
new String[] {
"\u062d", // abb Sunday
"\u0646", // abb Monday
"\u062b", // abb Tuesday
"\u0631", // abb Wednesday
"\u062e", // abb Thursday
"\u062c", // abb Friday
"\u0633" // abb Saturday
}
},
{ "standalone.DayAbbreviations",
new String[] {
"\u0627\u0644\u0623\u062d\u062f",
"\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
"\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
"\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
"\u0627\u0644\u062e\u0645\u064a\u0633",
"\u0627\u0644\u062c\u0645\u0639\u0629",
"\u0627\u0644\u0633\u0628\u062a",
}
},
{ "DayNarrows",
new String[] {
"\u062d",
"\u0646",
"\u062b",
"\u0631",
"\u062e",
"\u062c",
"\u0633",
}
},
{ "AmPmMarkers",
new String[] {
"\u0635", // am marker
"\u0645" // pm marker
}
},
{ "Eras",
new String[] { // era strings
"\u0642.\u0645",
"\u0645"
}
},
{ "short.Eras",
new String[] {
"\u0642.\u0645",
"\u0645",
}
},
{ "japanese.Eras",
new String[] {
"\u0645",
"\u0645\u064a\u062c\u064a",
"\u062a\u064a\u0634\u0648",
"\u0634\u0648\u0648\u0627",
"\u0647\u064a\u0633\u064a",
"\u0631\u064a\u0648\u0627",
}
},
{ "japanese.short.Eras",
new String[] {
"\u0645",
"\u0645\u064a\u062c\u064a",
"\u062a\u064a\u0634\u0648",
"\u0634\u0648\u0648\u0627",
"\u0647\u064a\u0633\u064a",
"\u0631\u064a\u0648\u0627",
}
},
{ "buddhist.Eras",
new String[] {
"BC",
"\u0627\u0644\u062a\u0642\u0648\u064a\u0645 \u0627\u0644\u0628\u0648\u0630\u064a",
}
},
{ "buddhist.short.Eras",
new String[] {
"BC",
"\u0627\u0644\u062a\u0642\u0648\u064a\u0645 \u0627\u0644\u0628\u0648\u0630\u064a",
}
},
{ "NumberPatterns",
new String[] {
"#,##0.###;#,##0.###-", // decimal pattern
"\u00A4 #,##0.###;\u00A4 #,##0.###-", // currency pattern
"#,##0%" // percent pattern
}
},
{ "TimePatterns",
new String[] {
"z hh:mm:ss a", // full time pattern
"z hh:mm:ss a", // long time pattern
"hh:mm:ss a", // medium time pattern
"hh:mm a", // short time pattern
}
},
{ "DatePatterns",
new String[] {
"dd MMMM, yyyy", // full date pattern
"dd MMMM, yyyy", // long date pattern
"dd/MM/yyyy", // medium date pattern
"dd/MM/yy", // short date pattern
}
},
{ "DateTimePatterns",
new String[] {
"{1} {0}" // date-time pattern
}
},
{ "DateTimePatternChars", "GanjkHmsSEDFwWxhKzZ" },
// Workaround for islamic-umalqura name support (JDK-8015986)
{ "calendarname.islamic-umalqura",
"\u0644\u062a\u0642\u0648\u064a\u0645 \u0627\u0644\u0647\u062c\u0631\u064a\u060c \u0623\u0645 \u0627\u0644\u0642\u0631\u0649" },
};
}
}

View File

@@ -0,0 +1,100 @@
/*
* Copyright (c) 1998, 2020, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
*/
/*
* (C) Copyright IBM Corp. 1998 - All Rights Reserved
*
* The original version of this source code and documentation
* is copyrighted and owned by Taligent, Inc., a wholly-owned
* subsidiary of IBM. These materials are provided under terms
* of a License Agreement between Taligent and Sun. This technology
* is protected by multiple US and International patents.
*
* This notice and attribution to Taligent may not be removed.
* Taligent is a registered trademark of Taligent, Inc.
*
*/
package sun.text.resources.ar;
import sun.util.resources.ParallelListResourceBundle;
public class FormatData_ar_JO extends ParallelListResourceBundle {
/**
* Overrides ParallelListResourceBundle
*/
protected final Object[][] getContents() {
return new Object[][] {
{ "MonthNames",
new String[] {
"\u0643\u0627\u0646\u0648\u0646\u0020\u0627\u0644\u062b\u0627\u0646\u064a", // january
"\u0634\u0628\u0627\u0637", // february
"\u0622\u0630\u0627\u0631", // march
"\u0646\u064a\u0633\u0627\u0646", // april
"\u0623\u064a\u0627\u0631", // may
"\u062d\u0632\u064a\u0631\u0627\u0646", // june
"\u062a\u0645\u0648\u0632", // july
"\u0622\u0628", // august
"\u0623\u064a\u0644\u0648\u0644", // september
"\u062a\u0634\u0631\u064a\u0646\u0020\u0627\u0644\u0623\u0648\u0644", // october
"\u062a\u0634\u0631\u064a\u0646\u0020\u0627\u0644\u062b\u0627\u0646\u064a", // november
"\u0643\u0627\u0646\u0648\u0646\u0020\u0627\u0644\u0623\u0648\u0644", // december
"" // month 13 if applicable
}
},
{ "MonthAbbreviations",
new String[] {
"\u0643\u0627\u0646\u0648\u0646\u0020\u0627\u0644\u062b\u0627\u0646\u064a", // abb january
"\u0634\u0628\u0627\u0637", // abb february
"\u0622\u0630\u0627\u0631", // abb march
"\u0646\u064a\u0633\u0627\u0646", // abb april
"\u0623\u064a\u0627\u0631", // abb may
"\u062d\u0632\u064a\u0631\u0627\u0646", // abb june
"\u062a\u0645\u0648\u0632", // abb july
"\u0622\u0628", // abb august
"\u0623\u064a\u0644\u0648\u0644", // abb september
"\u062a\u0634\u0631\u064a\u0646\u0020\u0627\u0644\u0623\u0648\u0644", // abb october
"\u062a\u0634\u0631\u064a\u0646\u0020\u0627\u0644\u062b\u0627\u0646\u064a", // abb november
"\u0643\u0627\u0646\u0648\u0646\u0020\u0627\u0644\u0623\u0648\u0644", // abb december
"" // month 13 if applicable
}
},
{ "DayAbbreviations",
new String[] {
"\u0627\u0644\u0623\u062d\u062f", // abb Sunday
"\u0627\u0644\u0627\u062b\u0646\u064a\u0646", // abb Monday
"\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621", // abb Tuesday
"\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621", // abb Wednesday
"\u0627\u0644\u062e\u0645\u064a\u0633", // abb Thursday
"\u0627\u0644\u062c\u0645\u0639\u0629", // abb Friday
"\u0627\u0644\u0633\u0628\u062a" // abb Saturday
}
},
};
}
}

View File

@@ -0,0 +1,100 @@
/*
* Copyright (c) 1998, 2020, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
*/
/*
* (C) Copyright IBM Corp. 1998 - All Rights Reserved
*
* The original version of this source code and documentation
* is copyrighted and owned by Taligent, Inc., a wholly-owned
* subsidiary of IBM. These materials are provided under terms
* of a License Agreement between Taligent and Sun. This technology
* is protected by multiple US and International patents.
*
* This notice and attribution to Taligent may not be removed.
* Taligent is a registered trademark of Taligent, Inc.
*
*/
package sun.text.resources.ar;
import sun.util.resources.ParallelListResourceBundle;
public class FormatData_ar_LB extends ParallelListResourceBundle {
/**
* Overrides ParallelListResourceBundle
*/
protected final Object[][] getContents() {
return new Object[][] {
{ "MonthNames",
new String[] {
"\u0643\u0627\u0646\u0648\u0646\u0020\u0627\u0644\u062b\u0627\u0646\u064a", // january
"\u0634\u0628\u0627\u0637", // february
"\u0622\u0630\u0627\u0631", // march
"\u0646\u064a\u0633\u0627\u0646", // april
"\u0623\u064a\u0627\u0631", // may
"\u062d\u0632\u064a\u0631\u0627\u0646", // june
"\u062a\u0645\u0648\u0632", // july
"\u0622\u0628", // august
"\u0623\u064a\u0644\u0648\u0644", // september
"\u062a\u0634\u0631\u064a\u0646\u0020\u0627\u0644\u0623\u0648\u0644", // october
"\u062a\u0634\u0631\u064a\u0646\u0020\u0627\u0644\u062b\u0627\u0646\u064a", // november
"\u0643\u0627\u0646\u0648\u0646\u0020\u0627\u0644\u0623\u0648\u0644", // december
"" // month 13 if applicable
}
},
{ "MonthAbbreviations",
new String[] {
"\u0643\u0627\u0646\u0648\u0646\u0020\u0627\u0644\u062b\u0627\u0646\u064a", // abb january
"\u0634\u0628\u0627\u0637", // abb february
"\u0622\u0630\u0627\u0631", // abb march
"\u0646\u064a\u0633\u0627\u0646", // abb april
"\u0623\u064a\u0627\u0631", // abb may
"\u062d\u0632\u064a\u0631\u0627\u0646", // abb june
"\u062a\u0645\u0648\u0632", // abb july
"\u0622\u0628", // abb august
"\u0623\u064a\u0644\u0648\u0644", // abb september
"\u062a\u0634\u0631\u064a\u0646\u0020\u0627\u0644\u0623\u0648\u0644", // abb october
"\u062a\u0634\u0631\u064a\u0646\u0020\u0627\u0644\u062b\u0627\u0646\u064a", // abb november
"\u0643\u0627\u0646\u0648\u0646\u0020\u0627\u0644\u0623\u0648\u0644", // abb december
"" // month 13 if applicable
}
},
{ "DayAbbreviations",
new String[] {
"\u0627\u0644\u0623\u062d\u062f", // abb Sunday
"\u0627\u0644\u0627\u062b\u0646\u064a\u0646", // abb Monday
"\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621", // abb Tuesday
"\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621", // abb Wednesday
"\u0627\u0644\u062e\u0645\u064a\u0633", // abb Thursday
"\u0627\u0644\u062c\u0645\u0639\u0629", // abb Friday
"\u0627\u0644\u0633\u0628\u062a" // abb Saturday
}
},
};
}
}

View File

@@ -0,0 +1,100 @@
/*
* Copyright (c) 1998, 2020, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
*/
/*
* (C) Copyright IBM Corp. 1998 - All Rights Reserved
*
* The original version of this source code and documentation
* is copyrighted and owned by Taligent, Inc., a wholly-owned
* subsidiary of IBM. These materials are provided under terms
* of a License Agreement between Taligent and Sun. This technology
* is protected by multiple US and International patents.
*
* This notice and attribution to Taligent may not be removed.
* Taligent is a registered trademark of Taligent, Inc.
*
*/
package sun.text.resources.ar;
import sun.util.resources.ParallelListResourceBundle;
public class FormatData_ar_SY extends ParallelListResourceBundle {
/**
* Overrides ParallelListResourceBundle
*/
protected final Object[][] getContents() {
return new Object[][] {
{ "MonthNames",
new String[] {
"\u0643\u0627\u0646\u0648\u0646\u0020\u0627\u0644\u062b\u0627\u0646\u064a", // january
"\u0634\u0628\u0627\u0637", // february
"\u0622\u0630\u0627\u0631", // march
"\u0646\u064a\u0633\u0627\u0646", // april
"\u0623\u064a\u0627\u0631", // may
"\u062d\u0632\u064a\u0631\u0627\u0646", // june
"\u062a\u0645\u0648\u0632", // july
"\u0622\u0628", // august
"\u0623\u064a\u0644\u0648\u0644", // september
"\u062a\u0634\u0631\u064a\u0646\u0020\u0627\u0644\u0623\u0648\u0644", // october
"\u062a\u0634\u0631\u064a\u0646\u0020\u0627\u0644\u062b\u0627\u0646\u064a", // november
"\u0643\u0627\u0646\u0648\u0646\u0020\u0627\u0644\u0623\u0648\u0644", // december
"" // month 13 if applicable
}
},
{ "MonthAbbreviations",
new String[] {
"\u0643\u0627\u0646\u0648\u0646\u0020\u0627\u0644\u062b\u0627\u0646\u064a", // abb january
"\u0634\u0628\u0627\u0637", // abb february
"\u0622\u0630\u0627\u0631", // abb march
"\u0646\u064a\u0633\u0627\u0646", // abb april
"\u0623\u064a\u0627\u0631", // abb may
"\u062d\u0632\u064a\u0631\u0627\u0646", // abb june
"\u062a\u0645\u0648\u0632", // abb july
"\u0622\u0628", // abb august
"\u0623\u064a\u0644\u0648\u0644", // abb september
"\u062a\u0634\u0631\u064a\u0646\u0020\u0627\u0644\u0623\u0648\u0644", // abb october
"\u062a\u0634\u0631\u064a\u0646\u0020\u0627\u0644\u062b\u0627\u0646\u064a", // abb november
"\u0643\u0627\u0646\u0648\u0646\u0020\u0627\u0644\u0623\u0648\u0644", // abb december
"" // month 13 if applicable
}
},
{ "DayAbbreviations",
new String[] {
"\u0627\u0644\u0623\u062d\u062f", // abb Sunday
"\u0627\u0644\u0627\u062b\u0646\u064a\u0646", // abb Monday
"\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621", // abb Tuesday
"\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621", // abb Wednesday
"\u0627\u0644\u062e\u0645\u064a\u0633", // abb Thursday
"\u0627\u0644\u062c\u0645\u0639\u0629", // abb Friday
"\u0627\u0644\u0633\u0628\u062a" // abb Saturday
}
},
};
}
}

View File

@@ -0,0 +1,287 @@
/*
* Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
* COPYRIGHT AND PERMISSION NOTICE
*
* Copyright (C) 1991-2012 Unicode, Inc. All rights reserved. Distributed under
* the Terms of Use in http://www.unicode.org/copyright.html.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of the Unicode data files and any associated documentation (the "Data
* Files") or Unicode software and any associated documentation (the
* "Software") to deal in the Data Files or Software without restriction,
* including without limitation the rights to use, copy, modify, merge,
* publish, distribute, and/or sell copies of the Data Files or Software, and
* to permit persons to whom the Data Files or Software are furnished to do so,
* provided that (a) the above copyright notice(s) and this permission notice
* appear with all copies of the Data Files or Software, (b) both the above
* copyright notice(s) and this permission notice appear in associated
* documentation, and (c) there is clear notice in each modified Data File or
* in the Software as well as in the documentation associated with the Data
* File(s) or Software that the data or software has been modified.
*
* THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
* KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
* THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
* INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR
* CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THE DATA FILES OR SOFTWARE.
*
* Except as contained in this notice, the name of a copyright holder shall not
* be used in advertising or otherwise to promote the sale, use or other
* dealings in these Data Files or Software without prior written authorization
* of the copyright holder.
*/
// Note: this file has been generated by a tool.
package sun.text.resources.ar;
import sun.util.resources.OpenListResourceBundle;
public class JavaTimeSupplementary_ar extends OpenListResourceBundle {
@Override
protected final Object[][] getContents() {
return new Object[][] {
{ "QuarterNames",
new String[] {
"\u0627\u0644\u0631\u0628\u0639 \u0627\u0644\u0623\u0648\u0644",
"\u0627\u0644\u0631\u0628\u0639 \u0627\u0644\u062b\u0627\u0646\u064a",
"\u0627\u0644\u0631\u0628\u0639 \u0627\u0644\u062b\u0627\u0644\u062b",
"\u0627\u0644\u0631\u0628\u0639 \u0627\u0644\u0631\u0627\u0628\u0639",
}
},
{ "QuarterNarrows",
new String[] {
"\u0661",
"\u0662",
"\u0663",
"\u0664",
}
},
{ "calendarname.buddhist",
"\u0627\u0644\u062a\u0642\u0648\u064a\u0645 \u0627\u0644\u0628\u0648\u0630\u064a" },
{ "calendarname.gregorian",
"\u0627\u0644\u062a\u0642\u0648\u064a\u0645 \u0627\u0644\u0645\u064a\u0644\u0627\u062f\u064a" },
{ "calendarname.gregory",
"\u0627\u0644\u062a\u0642\u0648\u064a\u0645 \u0627\u0644\u0645\u064a\u0644\u0627\u062f\u064a" },
{ "calendarname.islamic",
"\u0627\u0644\u062a\u0642\u0648\u064a\u0645 \u0627\u0644\u0647\u062c\u0631\u064a" },
{ "calendarname.islamic-civil",
"\u062a\u0642\u0648\u064a\u0645 \u0627\u0633\u0644\u0627\u0645\u064a \u0645\u062f\u0646\u064a" },
{ "calendarname.islamicc",
"\u062a\u0642\u0648\u064a\u0645 \u0627\u0633\u0644\u0627\u0645\u064a \u0645\u062f\u0646\u064a" },
{ "calendarname.japanese",
"\u0627\u0644\u062a\u0642\u0648\u064a\u0645 \u0627\u0644\u064a\u0627\u0628\u0627\u0646\u064a" },
{ "calendarname.roc",
"\u062a\u0642\u0648\u064a\u0645 \u0645\u064a\u0646\u062c\u0648" },
{ "field.dayperiod",
"\u0635/\u0645" },
{ "field.era",
"\u0627\u0644\u0639\u0635\u0631" },
{ "field.hour",
"\u0627\u0644\u0633\u0627\u0639\u0627\u062a" },
{ "field.minute",
"\u0627\u0644\u062f\u0642\u0627\u0626\u0642" },
{ "field.month",
"\u0627\u0644\u0634\u0647\u0631" },
{ "field.second",
"\u0627\u0644\u062b\u0648\u0627\u0646\u064a" },
{ "field.week",
"\u0627\u0644\u0623\u0633\u0628\u0648\u0639" },
{ "field.weekday",
"\u0627\u0644\u064a\u0648\u0645" },
{ "field.year",
"\u0627\u0644\u0633\u0646\u0629" },
{ "field.zone",
"\u0627\u0644\u062a\u0648\u0642\u064a\u062a" },
{ "islamic.DatePatterns",
new String[] {
"EEEE\u060c d MMMM y",
"d MMMM y",
"d MMM\u060c y GGGG",
"d\u200f/M\u200f/yyyy",
}
},
{ "islamic.Eras",
new String[] {
"",
"\u0647\u0640",
}
},
{ "islamic.MonthAbbreviations",
new String[] {
"\u0645\u062d\u0631\u0645",
"\u0635\u0641\u0631",
"\u0631\u0628\u064a\u0639 \u0627\u0644\u0623\u0648\u0644",
"\u0631\u0628\u064a\u0639 \u0627\u0644\u0622\u062e\u0631",
"\u062c\u0645\u0627\u062f\u0649 \u0627\u0644\u0623\u0648\u0644\u0649",
"\u062c\u0645\u0627\u062f\u0649 \u0627\u0644\u0622\u062e\u0631\u0629",
"\u0631\u062c\u0628",
"\u0634\u0639\u0628\u0627\u0646",
"\u0631\u0645\u0636\u0627\u0646",
"\u0634\u0648\u0627\u0644",
"\u0630\u0648 \u0627\u0644\u0642\u0639\u062f\u0629",
"\u0630\u0648 \u0627\u0644\u062d\u062c\u0629",
"",
}
},
{ "islamic.MonthNames",
new String[] {
"\u0645\u062d\u0631\u0645",
"\u0635\u0641\u0631",
"\u0631\u0628\u064a\u0639 \u0627\u0644\u0623\u0648\u0644",
"\u0631\u0628\u064a\u0639 \u0627\u0644\u0622\u062e\u0631",
"\u062c\u0645\u0627\u062f\u0649 \u0627\u0644\u0623\u0648\u0644\u0649",
"\u062c\u0645\u0627\u062f\u0649 \u0627\u0644\u0622\u062e\u0631\u0629",
"\u0631\u062c\u0628",
"\u0634\u0639\u0628\u0627\u0646",
"\u0631\u0645\u0636\u0627\u0646",
"\u0634\u0648\u0627\u0644",
"\u0630\u0648 \u0627\u0644\u0642\u0639\u062f\u0629",
"\u0630\u0648 \u0627\u0644\u062d\u062c\u0629",
"",
}
},
{ "islamic.MonthNarrows",
new String[] {
"\u0661",
"\u0662",
"\u0663",
"\u0664",
"\u0665",
"\u0666",
"\u0667",
"\u0668",
"\u0669",
"\u0661\u0660",
"\u0661\u0661",
"\u0661\u0662",
"",
}
},
{ "islamic.short.Eras",
new String[] {
"",
"\u0647\u0640",
}
},
{ "java.time.buddhist.DatePatterns",
new String[] {
"EEEE\u060c d MMMM\u060c y G",
"d MMMM\u060c y G",
"dd\u200f/MM\u200f/y G",
"d\u200f/M\u200f/y G",
}
},
{ "java.time.buddhist.short.Eras",
new String[] {
"BC",
"\u0627\u0644\u062a\u0642\u0648\u064a\u0645 \u0627\u0644\u0628\u0648\u0630\u064a",
}
},
{ "java.time.islamic.DatePatterns",
new String[] {
"EEEE\u060c d MMMM y",
"d MMMM y",
"d MMM\u060c y G",
"d\u200f/M\u200f/yyyy",
}
},
{ "java.time.japanese.DatePatterns",
new String[] {
"EEEE\u060c d MMMM\u060c y G",
"d MMMM\u060c y G",
"dd\u200f/MM\u200f/y G",
"d\u200f/M\u200f/y G",
}
},
{ "java.time.japanese.long.Eras",
new String[] {
"\u0645",
"\u0645\u064a\u062c\u064a",
"\u062a\u064a\u0634\u0648",
"\u0634\u0648\u0648\u0627",
"\u0647\u064a\u0633\u064a",
"\u0631\u064a\u0648\u0627",
}
},
{ "java.time.japanese.short.Eras",
new String[] {
"\u0645",
"\u0645\u064a\u062c\u064a",
"\u062a\u064a\u0634\u0648",
"\u0634\u0648\u0648\u0627",
"\u0647\u064a\u0633\u064a",
"\u0631\u064a\u0648\u0627",
}
},
{ "java.time.long.Eras",
new String[] {
"\u0642\u0628\u0644 \u0627\u0644\u0645\u064a\u0644\u0627\u062f",
"\u0645\u064a\u0644\u0627\u062f\u064a",
}
},
{ "java.time.roc.DatePatterns",
new String[] {
"EEEE\u060c d MMMM\u060c y G",
"d MMMM\u060c y G",
"dd\u200f/MM\u200f/y G",
"d\u200f/M\u200f/y G",
}
},
{ "java.time.short.Eras",
new String[] {
"\u0642.\u0645",
"\u0645",
}
},
{ "roc.DatePatterns",
new String[] {
"EEEE\u060c d MMMM\u060c y GGGG",
"d MMMM\u060c y GGGG",
"dd\u200f/MM\u200f/y GGGG",
"d\u200f/M\u200f/y GGGG",
}
},
{ "roc.Eras",
new String[] {
"Before R.O.C.",
"\u062c\u0645\u0647\u0648\u0631\u064a\u0629 \u0627\u0644\u0635\u064a",
}
},
{ "roc.short.Eras",
new String[] {
"Before R.O.C.",
"\u062c\u0645\u0647\u0648\u0631\u064a\u0629 \u0627\u0644\u0635\u064a",
}
},
};
}
}

View File

@@ -0,0 +1,151 @@
/*
* Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
*/
/*
* (C) Copyright Taligent, Inc. 1996, 1997 - All Rights Reserved
* (C) Copyright IBM Corp. 1996 - 1998 - All Rights Reserved
*
* The original version of this source code and documentation
* is copyrighted and owned by Taligent, Inc., a wholly-owned
* subsidiary of IBM. These materials are provided under terms
* of a License Agreement between Taligent and Sun. This technology
* is protected by multiple US and International patents.
*
* This notice and attribution to Taligent may not be removed.
* Taligent is a registered trademark of Taligent, Inc.
*
*/
package sun.text.resources.be;
import java.util.ListResourceBundle;
public class CollationData_be extends ListResourceBundle {
protected final Object[][] getContents() {
return new Object[][] {
{ "Rule",
"& 9 < \u0482 " + // thousand sign
"& Z " + // Arabic script sorts after Z's
"< \u0430 , \u0410" + // a
"< \u0431 , \u0411" + // be
"< \u0432 , \u0412" + // ve
"< \u0433 , \u0413" + // ghe
"; \u0491 , \u0490" + // ghe-upturn
"; \u0495 , \u0494" + // ghe-mid-hook
"; \u0453 , \u0403" + // gje
"; \u0493 , \u0492" + // ghe-stroke
"< \u0434 , \u0414" + // de
"< \u0452 , \u0402" + // dje
"< \u0435 , \u0415" + // ie
"; \u04bd , \u04bc" + // che
"; \u0451 , \u0401" + // io
"; \u04bf , \u04be" + // che-descender
"< \u0454 , \u0404" + // uk ie
"< \u0436 , \u0416" + // zhe
"; \u0497 , \u0496" + // zhe-descender
"; \u04c2 , \u04c1" + // zhe-breve
"< \u0437 , \u0417" + // ze
"; \u0499 , \u0498" + // zh-descender
"< \u0455 , \u0405" + // dze
"< \u0438 , \u0418" + // i
"< \u0456 , \u0406" + // uk/bg i
"; \u04c0 " + // palochka
"< \u0457 , \u0407" + // uk yi
"< \u0439 , \u0419" + // short i
"< \u0458 , \u0408" + // je
"< \u043a , \u041a" + // ka
"; \u049f , \u049e" + // ka-stroke
"; \u04c4 , \u04c3" + // ka-hook
"; \u049d , \u049c" + // ka-vt-stroke
"; \u04a1 , \u04a0" + // bashkir-ka
"; \u045c , \u040c" + // kje
"; \u049b , \u049a" + // ka-descender
"< \u043b , \u041b" + // el
"< \u0459 , \u0409" + // lje
"< \u043c , \u041c" + // em
"< \u043d , \u041d" + // en
"; \u0463 " + // yat
"; \u04a3 , \u04a2" + // en-descender
"; \u04a5 , \u04a4" + // en-ghe
"; \u04bb , \u04ba" + // shha
"; \u04c8 , \u04c7" + // en-hook
"< \u045a , \u040a" + // nje
"< \u043e , \u041e" + // o
"; \u04a9 , \u04a8" + // ha
"< \u043f , \u041f" + // pe
"; \u04a7 , \u04a6" + // pe-mid-hook
"< \u0440 , \u0420" + // er
"< \u0441 , \u0421" + // es
"; \u04ab , \u04aa" + // es-descender
"< \u0442 , \u0422" + // te
"; \u04ad , \u04ac" + // te-descender
"< \u045b , \u040b" + // tshe
"< \u0443 , \u0423" + // u
"; \u04af , \u04ae" + // straight u
"< \u045e , \u040e" + // short u
"< \u04b1 , \u04b0" + // straight u-stroke
"< \u0444 , \u0424" + // ef
"< \u0445 , \u0425" + // ha
"; \u04b3 , \u04b2" + // ha-descender
"< \u0446 , \u0426" + // tse
"; \u04b5 , \u04b4" + // te tse
"< \u0447 , \u0427" + // che
"; \u04b7 ; \u04b6" + // che-descender
"; \u04b9 , \u04b8" + // che-vt-stroke
"; \u04cc , \u04cb" + // che
"< \u045f , \u040f" + // dzhe
"< \u0448 , \u0428" + // sha
"< \u0449 , \u0429" + // shcha
"< \u044a , \u042a" + // hard sign
"< \u044b , \u042b" + // yeru
"< \u044c , \u042c" + // soft sign
"< \u044d , \u042d" + // e
"< \u044e , \u042e" + // yu
"< \u044f , \u042f" + // ya
"< \u0461 , \u0460" + // omega
"< \u0462 " + // yat
"< \u0465 , \u0464" + // iotified e
"< \u0467 , \u0466" + // little yus
"< \u0469 , \u0468" + // iotified little yus
"< \u046b , \u046a" + // big yus
"< \u046d , \u046c" + // iotified big yus
"< \u046f , \u046e" + // ksi
"< \u0471 , \u0470" + // psi
"< \u0473 , \u0472" + // fita
"< \u0475 , \u0474" + // izhitsa
"; \u0477 , \u0476" + // izhitsa-double-grave
"< \u0479 , \u0478" + // uk
"< \u047b , \u047a" + // round omega
"< \u047d , \u047c" + // omega-titlo
"< \u047f , \u047e" + // ot
"< \u0481 , \u0480" // koppa
}
};
}
}

View File

@@ -0,0 +1,225 @@
/*
* Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
*/
/*
* (C) Copyright Taligent, Inc. 1996, 1997 - All Rights Reserved
* (C) Copyright IBM Corp. 1996 - 1998 - All Rights Reserved
*
* The original version of this source code and documentation
* is copyrighted and owned by Taligent, Inc., a wholly-owned
* subsidiary of IBM. These materials are provided under terms
* of a License Agreement between Taligent and Sun. This technology
* is protected by multiple US and International patents.
*
* This notice and attribution to Taligent may not be removed.
* Taligent is a registered trademark of Taligent, Inc.
*
*/
/*
* COPYRIGHT AND PERMISSION NOTICE
*
* Copyright (C) 1991-2012 Unicode, Inc. All rights reserved. Distributed under
* the Terms of Use in http://www.unicode.org/copyright.html.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of the Unicode data files and any associated documentation (the "Data
* Files") or Unicode software and any associated documentation (the
* "Software") to deal in the Data Files or Software without restriction,
* including without limitation the rights to use, copy, modify, merge,
* publish, distribute, and/or sell copies of the Data Files or Software, and
* to permit persons to whom the Data Files or Software are furnished to do so,
* provided that (a) the above copyright notice(s) and this permission notice
* appear with all copies of the Data Files or Software, (b) both the above
* copyright notice(s) and this permission notice appear in associated
* documentation, and (c) there is clear notice in each modified Data File or
* in the Software as well as in the documentation associated with the Data
* File(s) or Software that the data or software has been modified.
*
* THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
* KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
* THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
* INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR
* CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THE DATA FILES OR SOFTWARE.
*
* Except as contained in this notice, the name of a copyright holder shall not
* be used in advertising or otherwise to promote the sale, use or other
* dealings in these Data Files or Software without prior written authorization
* of the copyright holder.
*/
package sun.text.resources.be;
import sun.util.resources.ParallelListResourceBundle;
public class FormatData_be extends ParallelListResourceBundle {
/**
* Overrides ParallelListResourceBundle
*/
protected final Object[][] getContents() {
return new Object[][] {
{ "MonthNames",
new String[] {
"\u0441\u0442\u0443\u0434\u0437\u0435\u043d\u044f", // january
"\u043b\u044e\u0442\u0430\u0433\u0430", // february
"\u0441\u0430\u043a\u0430\u0432\u0456\u043a\u0430", // march
"\u043a\u0440\u0430\u0441\u0430\u0432\u0456\u043a\u0430", // april
"\u043c\u0430\u044f", // may
"\u0447\u0440\u0432\u0435\u043d\u044f", // june
"\u043b\u0456\u043f\u0435\u043d\u044f", // july
"\u0436\u043d\u0456\u045e\u043d\u044f", // august
"\u0432\u0435\u0440\u0430\u0441\u043d\u044f", // september
"\u043a\u0430\u0441\u0442\u0440\u044b\u0447\u043d\u0456\u043a\u0430", // october
"\u043b\u0456\u0441\u0442\u0430\u043f\u0430\u0434\u0430", // november
"\u0441\u043d\u0435\u0436\u043d\u044f", // december
"" // month 13 if applicable
}
},
{ "MonthAbbreviations",
new String[] {
"\u0441\u0442\u0434", // abb january
"\u043b\u044e\u0442", // abb february
"\u0441\u043a\u0432", // abb march
"\u043a\u0440\u0441", // abb april
"\u043c\u0430\u0439", // abb may
"\u0447\u0440\u0432", // abb june
"\u043b\u043f\u043d", // abb july
"\u0436\u043d\u0432", // abb august
"\u0432\u0440\u0441", // abb september
"\u043a\u0441\u0442", // abb october
"\u043b\u0456\u0441", // abb november
"\u0441\u043d\u0436", // abb december
"" // abb month 13 if applicable
}
},
{ "standalone.MonthNarrows",
new String[] {
"\u0441",
"\u043b",
"\u0441",
"\u043a",
"\u043c",
"\u0447",
"\u043b",
"\u0436",
"\u0432",
"\u043a",
"\u043b",
"\u0441",
"",
}
},
{ "DayNames",
new String[] {
"\u043d\u044f\u0434\u0437\u0435\u043b\u044f", // Sunday
"\u043f\u0430\u043d\u044f\u0434\u0437\u0435\u043b\u0430\u043a", // Monday
"\u0430\u045e\u0442\u043e\u0440\u0430\u043a", // Tuesday
"\u0441\u0435\u0440\u0430\u0434\u0430", // Wednesday
"\u0447\u0430\u0446\u0432\u0435\u0440", // Thursday
"\u043f\u044f\u0442\u043d\u0456\u0446\u0430", // Friday
"\u0441\u0443\u0431\u043e\u0442\u0430" // Saturday
}
},
{ "DayAbbreviations",
new String[] {
"\u043d\u0434", // abb Sunday
"\u043f\u043d", // abb Monday
"\u0430\u0442", // abb Tuesday
"\u0441\u0440", // abb Wednesday
"\u0447\u0446", // abb Thursday
"\u043f\u0442", // abb Friday
"\u0441\u0431" // abb Saturday
}
},
{ "DayNarrows",
new String[] {
"\u043d",
"\u043f",
"\u0430",
"\u0441",
"\u0447",
"\u043f",
"\u0441",
}
},
{ "Eras",
new String[] { // era strings
"\u0434\u0430 \u043d.\u0435.",
"\u043d.\u0435."
}
},
{ "short.Eras",
new String[] {
"\u0434\u0430 \u043d.\u044d.",
"\u043d.\u044d.",
}
},
{ "NumberElements",
new String[] {
",", // decimal separator
"\u00a0", // group (thousands) separator
";", // list separator
"%", // percent sign
"0", // native 0 digit
"#", // pattern digit
"-", // minus sign
"E", // exponential
"\u2030", // per mille
"\u221e", // infinity
"\ufffd" // NaN
}
},
{ "TimePatterns",
new String[] {
"H.mm.ss z", // full time pattern
"H.mm.ss z", // long time pattern
"H.mm.ss", // medium time pattern
"H.mm", // short time pattern
}
},
{ "DatePatterns",
new String[] {
"EEEE, d, MMMM yyyy", // full date pattern
"EEEE, d, MMMM yyyy", // long date pattern
"d.M.yyyy", // medium date pattern
"d.M.yy", // short date pattern
}
},
{ "DateTimePatterns",
new String[] {
"{1} {0}" // date-time pattern
}
},
{ "DateTimePatternChars", "GanjkHmsSEDFwWxhKzZ" },
};
}
}

View File

@@ -0,0 +1,63 @@
/*
* Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
*/
/*
* (C) Copyright Taligent, Inc. 1996, 1997 - All Rights Reserved
* (C) Copyright IBM Corp. 1996 - 1998 - All Rights Reserved
*
* The original version of this source code and documentation
* is copyrighted and owned by Taligent, Inc., a wholly-owned
* subsidiary of IBM. These materials are provided under terms
* of a License Agreement between Taligent and Sun. This technology
* is protected by multiple US and International patents.
*
* This notice and attribution to Taligent may not be removed.
* Taligent is a registered trademark of Taligent, Inc.
*
*/
package sun.text.resources.be;
import sun.util.resources.ParallelListResourceBundle;
public class FormatData_be_BY extends ParallelListResourceBundle {
/**
* Overrides ParallelListResourceBundle
*/
protected final Object[][] getContents() {
return new Object[][] {
{ "NumberPatterns",
new String[] {
"#,##0.###;-#,##0.###", // decimal pattern
"\u00A4#,##0.##;-\u00A4#,##0.##", // currency pattern
"#,##0%" // percent pattern
}
},
};
}
}

View File

@@ -0,0 +1,138 @@
/*
* Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
* COPYRIGHT AND PERMISSION NOTICE
*
* Copyright (C) 1991-2012 Unicode, Inc. All rights reserved. Distributed under
* the Terms of Use in http://www.unicode.org/copyright.html.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of the Unicode data files and any associated documentation (the "Data
* Files") or Unicode software and any associated documentation (the
* "Software") to deal in the Data Files or Software without restriction,
* including without limitation the rights to use, copy, modify, merge,
* publish, distribute, and/or sell copies of the Data Files or Software, and
* to permit persons to whom the Data Files or Software are furnished to do so,
* provided that (a) the above copyright notice(s) and this permission notice
* appear with all copies of the Data Files or Software, (b) both the above
* copyright notice(s) and this permission notice appear in associated
* documentation, and (c) there is clear notice in each modified Data File or
* in the Software as well as in the documentation associated with the Data
* File(s) or Software that the data or software has been modified.
*
* THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
* KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
* THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
* INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR
* CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THE DATA FILES OR SOFTWARE.
*
* Except as contained in this notice, the name of a copyright holder shall not
* be used in advertising or otherwise to promote the sale, use or other
* dealings in these Data Files or Software without prior written authorization
* of the copyright holder.
*/
// Note: this file has been generated by a tool.
package sun.text.resources.be;
import sun.util.resources.OpenListResourceBundle;
public class JavaTimeSupplementary_be extends OpenListResourceBundle {
@Override
protected final Object[][] getContents() {
return new Object[][] {
{ "QuarterAbbreviations",
new String[] {
"1-\u0448\u044b \u043a\u0432.",
"2-\u0433\u0456 \u043a\u0432.",
"3-\u0446\u0456 \u043a\u0432.",
"4-\u0442\u044b \u043a\u0432.",
}
},
{ "QuarterNames",
new String[] {
"1-\u0448\u044b \u043a\u0432\u0430\u0440\u0442\u0430\u043b",
"2-\u0433\u0456 \u043a\u0432\u0430\u0440\u0442\u0430\u043b",
"3-\u0446\u0456 \u043a\u0432\u0430\u0440\u0442\u0430\u043b",
"4-\u0442\u044b \u043a\u0432\u0430\u0440\u0442\u0430\u043b",
}
},
{ "calendarname.buddhist",
"\u0431\u0443\u0434\u044b\u0441\u0446\u043a\u0456 \u043a\u0430\u043b\u044f\u043d\u0434\u0430\u0440" },
{ "calendarname.gregorian",
"\u0433\u0440\u044d\u0433\u0430\u0440\u044b\u044f\u043d\u0441\u043a\u0456 \u043a\u0430\u043b\u044f\u043d\u0434\u0430\u0440" },
{ "calendarname.gregory",
"\u0433\u0440\u044d\u0433\u0430\u0440\u044b\u044f\u043d\u0441\u043a\u0456 \u043a\u0430\u043b\u044f\u043d\u0434\u0430\u0440" },
{ "calendarname.islamic",
"\u043c\u0443\u0441\u0443\u043b\u044c\u043c\u0430\u043d\u0441\u043a\u0456 \u043a\u0430\u043b\u044f\u043d\u0434\u0430\u0440" },
{ "calendarname.islamic-civil",
"\u043c\u0443\u0441\u0443\u043b\u044c\u043c\u0430\u043d\u0441\u043a\u0456 \u0441\u0432\u0435\u0446\u043a\u0456 \u043a\u0430\u043b\u044f\u043d\u0434\u0430\u0440" },
{ "calendarname.islamicc",
"\u043c\u0443\u0441\u0443\u043b\u044c\u043c\u0430\u043d\u0441\u043a\u0456 \u0441\u0432\u0435\u0446\u043a\u0456 \u043a\u0430\u043b\u044f\u043d\u0434\u0430\u0440" },
{ "calendarname.japanese",
"\u044f\u043f\u043e\u043d\u0441\u043a\u0456 \u043a\u0430\u043b\u044f\u043d\u0434\u0430\u0440" },
{ "field.dayperiod",
"\u0414\u041f/\u041f\u041f" },
{ "field.era",
"\u044d\u0440\u0430" },
{ "field.hour",
"\u0433\u0430\u0434\u0437\u0456\u043d\u0430" },
{ "field.minute",
"\u0445\u0432\u0456\u043b\u0456\u043d\u0430" },
{ "field.month",
"\u043c\u0435\u0441\u044f\u0446" },
{ "field.second",
"\u0441\u0435\u043a\u0443\u043d\u0434\u0430" },
{ "field.week",
"\u0442\u044b\u0434\u0437\u0435\u043d\u044c" },
{ "field.weekday",
"\u0434\u0437\u0435\u043d\u044c \u0442\u044b\u0434\u043d\u044f" },
{ "field.year",
"\u0433\u043e\u0434" },
{ "field.zone",
"Zone" },
{ "java.time.buddhist.DatePatterns",
new String[] {
"EEEE, d MMMM y G",
"d MMMM y G",
"d MMM y G",
"d.M.yy",
}
},
{ "java.time.short.Eras",
new String[] {
"\u0434\u0430 \u043d.\u0435.",
"\u043d.\u0435.",
}
},
};
}
}

View File

@@ -0,0 +1,152 @@
/*
* Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
*/
/*
* (C) Copyright Taligent, Inc. 1996, 1997 - All Rights Reserved
* (C) Copyright IBM Corp. 1996 - 1998 - All Rights Reserved
*
* The original version of this source code and documentation
* is copyrighted and owned by Taligent, Inc., a wholly-owned
* subsidiary of IBM. These materials are provided under terms
* of a License Agreement between Taligent and Sun. This technology
* is protected by multiple US and International patents.
*
* This notice and attribution to Taligent may not be removed.
* Taligent is a registered trademark of Taligent, Inc.
*
*/
package sun.text.resources.bg;
import java.util.ListResourceBundle;
public class CollationData_bg extends ListResourceBundle {
protected final Object[][] getContents() {
return new Object[][] {
{ "Rule",
/* for bg, default plus the following */
"& 9 < \u0482 " + // thousand sign
"& Z " + // Arabic script sorts after Z's
"< \u0430 , \u0410" + // a
"< \u0431 , \u0411" + // be
"< \u0432 , \u0412" + // ve
"< \u0433 , \u0413" + // ghe
"; \u0491 , \u0490" + // ghe-upturn
"; \u0495 , \u0494" + // ghe-mid-hook
"; \u0453 , \u0403" + // gje
"; \u0493 , \u0492" + // ghe-stroke
"< \u0434 , \u0414" + // de
"< \u0452 , \u0402" + // dje
"< \u0435 , \u0415" + // ie
"; \u04bd , \u04bc" + // che
"; \u0451 , \u0401" + // io
"; \u04bf , \u04be" + // che-descender
"< \u0454 , \u0404" + // uk ie
"< \u0436 , \u0416" + // zhe
"; \u0497 , \u0496" + // zhe-descender
"; \u04c2 , \u04c1" + // zhe-breve
"< \u0437 , \u0417" + // ze
"; \u0499 , \u0498" + // zh-descender
"< \u0455 , \u0405" + // dze
"< \u0438 , \u0418" + // i
"< \u0456 , \u0406" + // uk/bg i
"; \u04c0 " + // palochka
"< \u0457 , \u0407" + // uk yi
"< \u0439 , \u0419" + // short i
"< \u0458 , \u0408" + // je
"< \u043a , \u041a" + // ka
"; \u049f , \u049e" + // ka-stroke
"; \u04c4 , \u04c3" + // ka-hook
"; \u049d , \u049c" + // ka-vt-stroke
"; \u04a1 , \u04a0" + // bashkir-ka
"; \u045c , \u040c" + // kje
"; \u049b , \u049a" + // ka-descender
"< \u043b , \u041b" + // el
"< \u0459 , \u0409" + // lje
"< \u043c , \u041c" + // em
"< \u043d , \u041d" + // en
"; \u0463 " + // yat
"; \u04a3 , \u04a2" + // en-descender
"; \u04a5 , \u04a4" + // en-ghe
"; \u04bb , \u04ba" + // shha
"; \u04c8 , \u04c7" + // en-hook
"< \u045a , \u040a" + // nje
"< \u043e , \u041e" + // o
"; \u04a9 , \u04a8" + // ha
"< \u043f , \u041f" + // pe
"; \u04a7 , \u04a6" + // pe-mid-hook
"< \u0440 , \u0420" + // er
"< \u0441 , \u0421" + // es
"; \u04ab , \u04aa" + // es-descender
"< \u0442 , \u0422" + // te
"; \u04ad , \u04ac" + // te-descender
"< \u045b , \u040b" + // tshe
"< \u0443 , \u0423" + // u
"; \u04af , \u04ae" + // straight u
"< \u045e , \u040e" + // short u
"< \u04b1 , \u04b0" + // straight u-stroke
"< \u0444 , \u0424" + // ef
"< \u0445 , \u0425" + // ha
"; \u04b3 , \u04b2" + // ha-descender
"< \u0446 , \u0426" + // tse
"; \u04b5 , \u04b4" + // te tse
"< \u0447 , \u0427" + // che
"; \u04b7 ; \u04b6" + // che-descender
"; \u04b9 , \u04b8" + // che-vt-stroke
"; \u04cc , \u04cb" + // che
"< \u045f , \u040f" + // dzhe
"< \u0448 , \u0428" + // sha
"< \u0449 , \u0429" + // shcha
"< \u044a , \u042a" + // hard sign
"< \u044b , \u042b" + // yeru
"< \u044c , \u042c" + // soft sign
"< \u044d , \u042d" + // e
"< \u044e , \u042e" + // yu
"< \u044f , \u042f" + // ya
"< \u0461 , \u0460" + // omega
"< \u0462 " + // yat
"< \u0465 , \u0464" + // iotified e
"< \u0467 , \u0466" + // little yus
"< \u0469 , \u0468" + // iotified little yus
"< \u046b , \u046a" + // big yus
"< \u046d , \u046c" + // iotified big yus
"< \u046f , \u046e" + // ksi
"< \u0471 , \u0470" + // psi
"< \u0473 , \u0472" + // fita
"< \u0475 , \u0474" + // izhitsa
"; \u0477 , \u0476" + // izhitsa-double-grave
"< \u0479 , \u0478" + // uk
"< \u047b , \u047a" + // round omega
"< \u047d , \u047c" + // omega-titlo
"< \u047f , \u047e" + // ot
"< \u0481 , \u0480" // koppa
}
};
}
}

View File

@@ -0,0 +1,225 @@
/*
* Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
*/
/*
* (C) Copyright Taligent, Inc. 1996, 1997 - All Rights Reserved
* (C) Copyright IBM Corp. 1996 - 1998 - All Rights Reserved
*
* The original version of this source code and documentation
* is copyrighted and owned by Taligent, Inc., a wholly-owned
* subsidiary of IBM. These materials are provided under terms
* of a License Agreement between Taligent and Sun. This technology
* is protected by multiple US and International patents.
*
* This notice and attribution to Taligent may not be removed.
* Taligent is a registered trademark of Taligent, Inc.
*
*/
/*
* COPYRIGHT AND PERMISSION NOTICE
*
* Copyright (C) 1991-2012 Unicode, Inc. All rights reserved. Distributed under
* the Terms of Use in http://www.unicode.org/copyright.html.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of the Unicode data files and any associated documentation (the "Data
* Files") or Unicode software and any associated documentation (the
* "Software") to deal in the Data Files or Software without restriction,
* including without limitation the rights to use, copy, modify, merge,
* publish, distribute, and/or sell copies of the Data Files or Software, and
* to permit persons to whom the Data Files or Software are furnished to do so,
* provided that (a) the above copyright notice(s) and this permission notice
* appear with all copies of the Data Files or Software, (b) both the above
* copyright notice(s) and this permission notice appear in associated
* documentation, and (c) there is clear notice in each modified Data File or
* in the Software as well as in the documentation associated with the Data
* File(s) or Software that the data or software has been modified.
*
* THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
* KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
* THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
* INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR
* CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THE DATA FILES OR SOFTWARE.
*
* Except as contained in this notice, the name of a copyright holder shall not
* be used in advertising or otherwise to promote the sale, use or other
* dealings in these Data Files or Software without prior written authorization
* of the copyright holder.
*/
package sun.text.resources.bg;
import sun.util.resources.ParallelListResourceBundle;
public class FormatData_bg extends ParallelListResourceBundle {
/**
* Overrides ParallelListResourceBundle
*/
protected final Object[][] getContents() {
return new Object[][] {
{ "MonthNames",
new String[] {
"\u042f\u043d\u0443\u0430\u0440\u0438", // january
"\u0424\u0435\u0432\u0440\u0443\u0430\u0440\u0438", // february
"\u041c\u0430\u0440\u0442", // march
"\u0410\u043f\u0440\u0438\u043b", // april
"\u041c\u0430\u0439", // may
"\u042e\u043d\u0438", // june
"\u042e\u043b\u0438", // july
"\u0410\u0432\u0433\u0443\u0441\u0442", // august
"\u0421\u0435\u043f\u0442\u0435\u043c\u0432\u0440\u0438", // september
"\u041e\u043a\u0442\u043e\u043c\u0432\u0440\u0438", // october
"\u041d\u043e\u0435\u043c\u0432\u0440\u0438", // november
"\u0414\u0435\u043a\u0435\u043c\u0432\u0440\u0438", // december
"" // month 13 if applicable
}
},
{ "MonthAbbreviations",
new String[] {
"I", // abb january
"II", // abb february
"III", // abb march
"IV", // abb april
"V", // abb may
"VI", // abb june
"VII", // abb july
"VIII", // abb august
"IX", // abb september
"X", // abb october
"XI", // abb november
"XII", // abb december
"" // abb month 13 if applicable
}
},
{ "MonthNarrows",
new String[] {
"\u044f",
"\u0444",
"\u043c",
"\u0430",
"\u043c",
"\u044e",
"\u044e",
"\u0430",
"\u0441",
"\u043e",
"\u043d",
"\u0434",
"",
}
},
{ "DayNames",
new String[] {
"\u041d\u0435\u0434\u0435\u043b\u044f", // Sunday
"\u041f\u043e\u043d\u0435\u0434\u0435\u043b\u043d\u0438\u043a", // Monday
"\u0412\u0442\u043e\u0440\u043d\u0438\u043a", // Tuesday
"\u0421\u0440\u044f\u0434\u0430", // Wednesday
"\u0427\u0435\u0442\u0432\u044a\u0440\u0442\u044a\u043a", // Thursday
"\u041f\u0435\u0442\u044a\u043a", // Friday
"\u0421\u044a\u0431\u043e\u0442\u0430" // Saturday
}
},
{ "DayAbbreviations",
new String[] {
"\u041d\u0434", // abb Sunday
"\u041f\u043d", // abb Monday
"\u0412\u0442", // abb Tuesday
"\u0421\u0440", // abb Wednesday
"\u0427\u0442", // abb Thursday
"\u041f\u0442", // abb Friday
"\u0421\u0431" // abb Saturday
}
},
{ "DayNarrows",
new String[] {
"\u043d",
"\u043f",
"\u0432",
"\u0441",
"\u0447",
"\u043f",
"\u0441",
}
},
{ "Eras",
new String[] { // era strings
"\u043f\u0440.\u043d.\u0435.",
"\u043d.\u0435."
}
},
{ "short.Eras",
new String[] {
"\u043f\u0440. \u043d. \u0435.",
"\u043e\u0442 \u043d. \u0435.",
}
},
{ "NumberElements",
new String[] {
",", // decimal separator
"\u00a0", // group (thousands) separator
";", // list separator
"%", // percent sign
"0", // native 0 digit
"#", // pattern digit
"-", // minus sign
"E", // exponential
"\u2030", // per mille
"\u221e", // infinity
"\ufffd" // NaN
}
},
{ "TimePatterns",
new String[] {
"HH:mm:ss zzzz", // full time pattern
"HH:mm:ss z", // long time pattern
"HH:mm:ss", // medium time pattern
"HH:mm", // short time pattern
}
},
{ "DatePatterns",
new String[] {
"dd MMMM y, EEEE", // full date pattern
"dd MMMM y", // long date pattern
"dd.MM.yyyy", // medium date pattern
"dd.MM.yy", // short date pattern
}
},
{ "DateTimePatterns",
new String[] {
"{1} {0}" // date-time pattern
}
},
{ "DateTimePatternChars", "GanjkHmsSEDFwWxhKzZ" },
};
}
}

View File

@@ -0,0 +1,63 @@
/*
* Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
*/
/*
* (C) Copyright Taligent, Inc. 1996, 1997 - All Rights Reserved
* (C) Copyright IBM Corp. 1996 - 1998 - All Rights Reserved
*
* The original version of this source code and documentation
* is copyrighted and owned by Taligent, Inc., a wholly-owned
* subsidiary of IBM. These materials are provided under terms
* of a License Agreement between Taligent and Sun. This technology
* is protected by multiple US and International patents.
*
* This notice and attribution to Taligent may not be removed.
* Taligent is a registered trademark of Taligent, Inc.
*
*/
package sun.text.resources.bg;
import sun.util.resources.ParallelListResourceBundle;
public class FormatData_bg_BG extends ParallelListResourceBundle {
/**
* Overrides ParallelListResourceBundle
*/
protected final Object[][] getContents() {
return new Object[][] {
{ "NumberPatterns",
new String[] {
"#,##0.###;-#,##0.###", // decimal pattern
"\u00A4#,##0.##;-\u00A4#,##0.##", // currency pattern
"#,##0%" // percent pattern
}
},
};
}
}

View File

@@ -0,0 +1,163 @@
/*
* Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
* COPYRIGHT AND PERMISSION NOTICE
*
* Copyright (C) 1991-2012 Unicode, Inc. All rights reserved. Distributed under
* the Terms of Use in http://www.unicode.org/copyright.html.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of the Unicode data files and any associated documentation (the "Data
* Files") or Unicode software and any associated documentation (the
* "Software") to deal in the Data Files or Software without restriction,
* including without limitation the rights to use, copy, modify, merge,
* publish, distribute, and/or sell copies of the Data Files or Software, and
* to permit persons to whom the Data Files or Software are furnished to do so,
* provided that (a) the above copyright notice(s) and this permission notice
* appear with all copies of the Data Files or Software, (b) both the above
* copyright notice(s) and this permission notice appear in associated
* documentation, and (c) there is clear notice in each modified Data File or
* in the Software as well as in the documentation associated with the Data
* File(s) or Software that the data or software has been modified.
*
* THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
* KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
* THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
* INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR
* CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THE DATA FILES OR SOFTWARE.
*
* Except as contained in this notice, the name of a copyright holder shall not
* be used in advertising or otherwise to promote the sale, use or other
* dealings in these Data Files or Software without prior written authorization
* of the copyright holder.
*/
// Note: this file has been generated by a tool.
package sun.text.resources.bg;
import sun.util.resources.OpenListResourceBundle;
public class JavaTimeSupplementary_bg extends OpenListResourceBundle {
@Override
protected final Object[][] getContents() {
return new Object[][] {
{ "QuarterAbbreviations",
new String[] {
"I \u0442\u0440\u0438\u043c.",
"II \u0442\u0440\u0438\u043c.",
"III \u0442\u0440\u0438\u043c.",
"IV \u0442\u0440\u0438\u043c.",
}
},
{ "QuarterNames",
new String[] {
"1-\u0432\u043e \u0442\u0440\u0438\u043c\u0435\u0441\u0435\u0447\u0438\u0435",
"2-\u0440\u043e \u0442\u0440\u0438\u043c\u0435\u0441\u0435\u0447\u0438\u0435",
"3-\u0442\u043e \u0442\u0440\u0438\u043c\u0435\u0441\u0435\u0447\u0438\u0435",
"4-\u0442\u043e \u0442\u0440\u0438\u043c\u0435\u0441\u0435\u0447\u0438\u0435",
}
},
{ "QuarterNarrows",
new String[] {
"1",
"2",
"3",
"4",
}
},
{ "calendarname.buddhist",
"\u0411\u0443\u0434\u0438\u0441\u0442\u043a\u0438 \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440" },
{ "calendarname.gregorian",
"\u0413\u0440\u0438\u0433\u043e\u0440\u0438\u0430\u043d\u0441\u043a\u0438 \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440" },
{ "calendarname.gregory",
"\u0413\u0440\u0438\u0433\u043e\u0440\u0438\u0430\u043d\u0441\u043a\u0438 \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440" },
{ "calendarname.islamic",
"\u0418\u0441\u043b\u044f\u043c\u0441\u043a\u0438 \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440" },
{ "calendarname.islamic-civil",
"\u0418\u0441\u043b\u044f\u043c\u0441\u043a\u0438 \u0446\u0438\u0432\u0438\u043b\u0435\u043d \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440" },
{ "calendarname.islamicc",
"\u0418\u0441\u043b\u044f\u043c\u0441\u043a\u0438 \u0446\u0438\u0432\u0438\u043b\u0435\u043d \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440" },
{ "calendarname.japanese",
"\u042f\u043f\u043e\u043d\u0441\u043a\u0438 \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440" },
{ "calendarname.roc",
"\u041a\u0430\u043b\u0435\u043d\u0434\u0430\u0440 \u043d\u0430 \u0420\u0435\u043f\u0443\u0431\u043b\u0438\u043a\u0430 \u041a\u0438\u0442\u0430\u0439" },
{ "field.dayperiod",
"\u0434\u0435\u043d" },
{ "field.era",
"\u0435\u0440\u0430" },
{ "field.hour",
"\u0447\u0430\u0441" },
{ "field.minute",
"\u043c\u0438\u043d\u0443\u0442\u0430" },
{ "field.month",
"\u043c\u0435\u0441\u0435\u0446" },
{ "field.second",
"\u0441\u0435\u043a\u0443\u043d\u0434\u0430" },
{ "field.week",
"\u0441\u0435\u0434\u043c\u0438\u0446\u0430" },
{ "field.weekday",
"\u0414\u0435\u043d \u043e\u0442 \u0441\u0435\u0434\u043c\u0438\u0446\u0430\u0442\u0430" },
{ "field.year",
"\u0433\u043e\u0434\u0438\u043d\u0430" },
{ "field.zone",
"\u0437\u043e\u043d\u0430" },
{ "islamic.MonthNames",
new String[] {
"\u043c\u0443\u0445\u0430\u0440\u0430\u043c",
"\u0441\u0430\u0444\u0430\u0440",
"\u0440\u0430\u0431\u0438-1",
"\u0440\u0430\u0431\u0438-2",
"\u0434\u0436\u0443\u043c\u0430\u0434\u0430-1",
"\u0434\u0436\u0443\u043c\u0430\u0434\u0430-2",
"\u0440\u0430\u0434\u0436\u0430\u0431",
"\u0448\u0430\u0431\u0430\u043d",
"\u0440\u0430\u043c\u0430\u0437\u0430\u043d",
"\u0428\u0430\u0432\u0430\u043b",
"\u0414\u0445\u0443\u043b-\u041a\u0430\u0430\u0434\u0430",
"\u0414\u0445\u0443\u043b-\u0445\u0438\u0434\u0436\u0430",
"",
}
},
{ "java.time.long.Eras",
new String[] {
"\u043f\u0440.\u0425\u0440.",
"\u0441\u043b.\u0425\u0440.",
}
},
{ "java.time.short.Eras",
new String[] {
"\u043f\u0440.\u043d.\u0435.",
"\u043d.\u0435.",
}
},
};
}
}

View File

@@ -0,0 +1,55 @@
/*
* Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
*/
/*
* (C) Copyright Taligent, Inc. 1996, 1997 - All Rights Reserved
* (C) Copyright IBM Corp. 1996 - 1998 - All Rights Reserved
*
* The original version of this source code and documentation
* is copyrighted and owned by Taligent, Inc., a wholly-owned
* subsidiary of IBM. These materials are provided under terms
* of a License Agreement between Taligent and Sun. This technology
* is protected by multiple US and International patents.
*
* This notice and attribution to Taligent may not be removed.
* Taligent is a registered trademark of Taligent, Inc.
*
*/
package sun.text.resources.ca;
import java.util.ListResourceBundle;
public class CollationData_ca extends ListResourceBundle {
protected final Object[][] getContents() {
return new Object[][] {
{ "Rule", "@" }
};
}
}

View File

@@ -0,0 +1,303 @@
/*
* Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
*/
/*
* (C) Copyright Taligent, Inc. 1996, 1997 - All Rights Reserved
* (C) Copyright IBM Corp. 1996 - 1998 - All Rights Reserved
*
* The original version of this source code and documentation
* is copyrighted and owned by Taligent, Inc., a wholly-owned
* subsidiary of IBM. These materials are provided under terms
* of a License Agreement between Taligent and Sun. This technology
* is protected by multiple US and International patents.
*
* This notice and attribution to Taligent may not be removed.
* Taligent is a registered trademark of Taligent, Inc.
*
*/
/*
* COPYRIGHT AND PERMISSION NOTICE
*
* Copyright (C) 1991-2012 Unicode, Inc. All rights reserved. Distributed under
* the Terms of Use in http://www.unicode.org/copyright.html.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of the Unicode data files and any associated documentation (the "Data
* Files") or Unicode software and any associated documentation (the
* "Software") to deal in the Data Files or Software without restriction,
* including without limitation the rights to use, copy, modify, merge,
* publish, distribute, and/or sell copies of the Data Files or Software, and
* to permit persons to whom the Data Files or Software are furnished to do so,
* provided that (a) the above copyright notice(s) and this permission notice
* appear with all copies of the Data Files or Software, (b) both the above
* copyright notice(s) and this permission notice appear in associated
* documentation, and (c) there is clear notice in each modified Data File or
* in the Software as well as in the documentation associated with the Data
* File(s) or Software that the data or software has been modified.
*
* THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
* KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
* THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
* INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR
* CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THE DATA FILES OR SOFTWARE.
*
* Except as contained in this notice, the name of a copyright holder shall not
* be used in advertising or otherwise to promote the sale, use or other
* dealings in these Data Files or Software without prior written authorization
* of the copyright holder.
*/
package sun.text.resources.ca;
import sun.util.resources.ParallelListResourceBundle;
public class FormatData_ca extends ParallelListResourceBundle {
/**
* Overrides ParallelListResourceBundle
*/
protected final Object[][] getContents() {
return new Object[][] {
{ "MonthNames",
new String[] {
"de gener",
"de febrer",
"de mar\u00e7",
"d\u2019abril",
"de maig",
"de juny",
"de juliol",
"d\u2019agost",
"de setembre",
"d\u2019octubre",
"de novembre",
"de desembre",
"",
}
},
{ "MonthNarrows",
new String[] {
"G",
"F",
"M",
"A",
"M",
"J",
"G",
"A",
"S",
"O",
"N",
"D",
"",
}
},
{ "standalone.MonthNames",
new String[] {
"gener", // january
"febrer", // february
"mar\u00e7", // march
"abril", // april
"maig", // may
"juny", // june
"juliol", // july
"agost", // august
"setembre", // september
"octubre", // october
"novembre", // november
"desembre", // december
"" // month 13 if applicable
}
},
{ "MonthAbbreviations",
new String[] {
"de gen.",
"de febr.",
"de mar\u00e7",
"d\u2019abr.",
"de maig",
"de juny",
"de jul.",
"d\u2019ag.",
"de set.",
"d\u2019oct.",
"de nov.",
"de des.",
"",
}
},
{ "standalone.MonthAbbreviations",
new String[] {
"gen.", // abb january
"feb.", // abb february
"mar\u00e7", // abb march
"abr.", // abb april
"maig", // abb may
"juny", // abb june
"jul.", // abb july
"ag.", // abb august
"set.", // abb september
"oct.", // abb october
"nov.", // abb november
"des.", // abb december
"" // abb month 13 if applicable
}
},
{ "standalone.MonthNarrows",
new String[] {
"g",
"f",
"m",
"a",
"m",
"j",
"j",
"a",
"s",
"o",
"n",
"d",
"",
}
},
{ "DayNames",
new String[] {
"diumenge", // Sunday
"dilluns", // Monday
"dimarts", // Tuesday
"dimecres", // Wednesday
"dijous", // Thursday
"divendres", // Friday
"dissabte" // Saturday
}
},
{ "standalone.DayNames",
new String[] {
"Diumenge",
"Dilluns",
"Dimarts",
"Dimecres",
"Dijous",
"Divendres",
"Dissabte",
}
},
{ "DayAbbreviations",
new String[] {
"dg.", // abb Sunday
"dl.", // abb Monday
"dt.", // abb Tuesday
"dc.", // abb Wednesday
"dj.", // abb Thursday
"dv.", // abb Friday
"ds." // abb Saturday
}
},
{ "standalone.DayAbbreviations",
new String[] {
"dg",
"dl",
"dt",
"dc",
"dj",
"dv",
"ds",
}
},
{ "DayNarrows",
new String[] {
"G",
"L", // Note: contributed item in CDLR
"T",
"C",
"J",
"V",
"S",
}
},
{ "standalone.DayNarrows",
new String[] {
"g",
"l",
"t",
"c",
"j",
"v",
"s",
}
},
{ "short.Eras",
new String[] {
"aC",
"dC",
}
},
{ "NumberElements",
new String[] {
",", // decimal separator
".", // group (thousands) separator
";", // list separator
"%", // percent sign
"0", // native 0 digit
"#", // pattern digit
"-", // minus sign
"E", // exponential
"\u2030", // per mille
"\u221e", // infinity
"\ufffd" // NaN
}
},
{ "TimePatterns",
new String[] {
"HH:mm:ss z", // full time pattern
"HH:mm:ss z", // long time pattern
"HH:mm:ss", // medium time pattern
"HH:mm", // short time pattern
}
},
{ "DatePatterns",
new String[] {
"EEEE, d' / 'MMMM' / 'yyyy", // full date pattern
"d' / 'MMMM' / 'yyyy", // long date pattern
"dd/MM/yyyy", // medium date pattern
"dd/MM/yy", // short date pattern
}
},
{ "DateTimePatterns",
new String[] {
"{1} {0}" // date-time pattern
}
},
{ "DateTimePatternChars", "GuMtkHmsSEDFwWahKzZ" },
};
}
}

View File

@@ -0,0 +1,63 @@
/*
* Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
*/
/*
* (C) Copyright Taligent, Inc. 1996, 1997 - All Rights Reserved
* (C) Copyright IBM Corp. 1996 - 1998 - All Rights Reserved
*
* The original version of this source code and documentation
* is copyrighted and owned by Taligent, Inc., a wholly-owned
* subsidiary of IBM. These materials are provided under terms
* of a License Agreement between Taligent and Sun. This technology
* is protected by multiple US and International patents.
*
* This notice and attribution to Taligent may not be removed.
* Taligent is a registered trademark of Taligent, Inc.
*
*/
package sun.text.resources.ca;
import sun.util.resources.ParallelListResourceBundle;
public class FormatData_ca_ES extends ParallelListResourceBundle {
/**
* Overrides ParallelListResourceBundle
*/
protected final Object[][] getContents() {
return new Object[][] {
{ "NumberPatterns",
new String[] {
"#,##0.###;-#,##0.###", // decimal pattern
"\u00A4 #,##0;-\u00A4 #,##0", // currency pattern
"#,##0%" // percent pattern
}
},
};
}
}

View File

@@ -0,0 +1,140 @@
/*
* Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
* COPYRIGHT AND PERMISSION NOTICE
*
* Copyright (C) 1991-2012 Unicode, Inc. All rights reserved. Distributed under
* the Terms of Use in http://www.unicode.org/copyright.html.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of the Unicode data files and any associated documentation (the "Data
* Files") or Unicode software and any associated documentation (the
* "Software") to deal in the Data Files or Software without restriction,
* including without limitation the rights to use, copy, modify, merge,
* publish, distribute, and/or sell copies of the Data Files or Software, and
* to permit persons to whom the Data Files or Software are furnished to do so,
* provided that (a) the above copyright notice(s) and this permission notice
* appear with all copies of the Data Files or Software, (b) both the above
* copyright notice(s) and this permission notice appear in associated
* documentation, and (c) there is clear notice in each modified Data File or
* in the Software as well as in the documentation associated with the Data
* File(s) or Software that the data or software has been modified.
*
* THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
* KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
* THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
* INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR
* CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THE DATA FILES OR SOFTWARE.
*
* Except as contained in this notice, the name of a copyright holder shall not
* be used in advertising or otherwise to promote the sale, use or other
* dealings in these Data Files or Software without prior written authorization
* of the copyright holder.
*/
// Note: this file has been generated by a tool.
package sun.text.resources.ca;
import sun.util.resources.OpenListResourceBundle;
public class JavaTimeSupplementary_ca extends OpenListResourceBundle {
@Override
protected final Object[][] getContents() {
return new Object[][] {
{ "QuarterAbbreviations",
new String[] {
"1T",
"2T",
"3T",
"4T",
}
},
{ "QuarterNames",
new String[] {
"1r trimestre",
"2n trimestre",
"3r trimestre",
"4t trimestre",
}
},
{ "QuarterNarrows",
new String[] {
"1",
"2",
"3",
"4",
}
},
{ "calendarname.buddhist",
"calendari budista" },
{ "calendarname.gregorian",
"calendari gregori\u00e0" },
{ "calendarname.gregory",
"calendari gregori\u00e0" },
{ "calendarname.islamic",
"calendari musulm\u00e0" },
{ "calendarname.islamic-civil",
"calendari civil isl\u00e0mic" },
{ "calendarname.islamicc",
"calendari civil isl\u00e0mic" },
{ "calendarname.japanese",
"calendari japon\u00e8s" },
{ "calendarname.roc",
"calendari de la Rep\u00fablica de Xina" },
{ "field.dayperiod",
"a.m./p.m." },
{ "field.era",
"era" },
{ "field.hour",
"hora" },
{ "field.minute",
"minut" },
{ "field.month",
"mes" },
{ "field.second",
"segon" },
{ "field.week",
"setmana" },
{ "field.weekday",
"dia de la setmana" },
{ "field.year",
"any" },
{ "field.zone",
"zona" },
{ "java.time.short.Eras",
new String[] {
"aC",
"dC",
}
},
};
}
}

View File

@@ -0,0 +1,930 @@
/*
* Copyright (c) 2012, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
* COPYRIGHT AND PERMISSION NOTICE
*
* Copyright (C) 1991-2012 Unicode, Inc. All rights reserved. Distributed under
* the Terms of Use in http://www.unicode.org/copyright.html.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of the Unicode data files and any associated documentation (the "Data
* Files") or Unicode software and any associated documentation (the
* "Software") to deal in the Data Files or Software without restriction,
* including without limitation the rights to use, copy, modify, merge,
* publish, distribute, and/or sell copies of the Data Files or Software, and
* to permit persons to whom the Data Files or Software are furnished to do so,
* provided that (a) the above copyright notice(s) and this permission notice
* appear with all copies of the Data Files or Software, (b) both the above
* copyright notice(s) and this permission notice appear in associated
* documentation, and (c) there is clear notice in each modified Data File or
* in the Software as well as in the documentation associated with the Data
* File(s) or Software that the data or software has been modified.
*
* THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
* KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
* THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
* INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR
* CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THE DATA FILES OR SOFTWARE.
*
* Except as contained in this notice, the name of a copyright holder shall not
* be used in advertising or otherwise to promote the sale, use or other
* dealings in these Data Files or Software without prior written authorization
* of the copyright holder.
*/
package sun.text.resources.cldr;
import java.util.ListResourceBundle;
public class FormatData extends ListResourceBundle {
@Override
protected final Object[][] getContents() {
final Object[][] data = new Object[][] {
{ "MonthNames",
new String[] {
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9",
"10",
"11",
"12",
"",
}
},
{ "MonthAbbreviations",
new String[] {
"Jan",
"Feb",
"Mar",
"Apr",
"May",
"Jun",
"Jul",
"Aug",
"Sep",
"Oct",
"Nov",
"Dec",
"",
}
},
{ "MonthNarrows",
new String[] {
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9",
"10",
"11",
"12",
"",
}
},
{ "DayNames",
new String[] {
"1",
"2",
"3",
"4",
"5",
"6",
"7",
}
},
{ "DayAbbreviations",
new String[] {
"Sun",
"Mon",
"Tue",
"Wed",
"Thu",
"Fri",
"Sat",
}
},
{ "DayNarrows",
new String[] {
"1",
"2",
"3",
"4",
"5",
"6",
"7",
}
},
{ "QuarterNames",
new String[] {
"Q1",
"Q2",
"Q3",
"Q4",
}
},
{ "QuarterAbbreviations",
new String[] {
"Q1",
"Q2",
"Q3",
"Q4",
}
},
{ "QuarterNarrows",
new String[] {
"1",
"2",
"3",
"4",
}
},
{ "AmPmMarkers",
new String[] {
"AM",
"PM",
}
},
{ "narrow.AmPmMarkers",
new String[] {
"a",
"p",
}
},
{ "Eras",
new String[] {
"BCE",
"CE",
}
},
{ "field.era", "Era" },
{ "field.year", "Year" },
{ "field.month", "Month" },
{ "field.week", "Week" },
{ "field.weekday", "Day of the Week" },
{ "field.dayperiod", "Dayperiod" },
{ "field.hour", "Hour" },
{ "field.minute", "Minute" },
{ "field.second", "Second" },
{ "field.zone", "Zone" },
{ "TimePatterns",
new String[] {
"HH:mm:ss zzzz",
"HH:mm:ss z",
"HH:mm:ss",
"HH:mm",
}
},
{ "DatePatterns",
new String[] {
"EEEE, y MMMM dd",
"y MMMM d",
"y MMM d",
"yyyy-MM-dd",
}
},
{ "DateTimePatterns",
new String[] {
"{1} {0}",
}
},
{ "DateTimePatternChars", "GyMdkHmsSEDFwWahKzZ" },
{ "buddhist.Eras",
new String[] {
"BC",
"BE",
}
},
{ "java.time.buddhist.DatePatterns",
new String[] {
"EEEE, G y MMMM dd",
"G y MMMM d",
"G y MMM d",
"GGGGG yyyy-MM-dd",
}
},
{ "buddhist.DatePatterns",
new String[] {
"EEEE, GGGG y MMMM dd",
"GGGG y MMMM d",
"GGGG y MMM d",
"G yyyy-MM-dd",
}
},
{ "japanese.Eras",
new String[] {
"CE",
"Meiji",
"Taish\u014d",
"Sh\u014dwa",
"Heisei",
"Reiwa",
}
},
{ "japanese.narrow.Eras",
new String[] {
"",
"M",
"T",
"S",
"H",
"R",
}
},
{ "java.time.japanese.DatePatterns",
new String[] {
"EEEE, G y MMMM dd",
"G y MMMM d",
"G y MMM d",
"GGGGG yy-MM-dd",
}
},
{ "japanese.DatePatterns",
new String[] {
"EEEE, GGGG y MMMM dd",
"GGGG y MMMM d",
"GGGG y MMM d",
"G yy-MM-dd",
}
},
{ "japanese.DateTimePatterns",
new String[] {
"{1} {0}",
}
},
{ "roc.Eras",
new String[] {
"Before R.O.C.",
"R.O.C.",
}
},
{ "java.time.roc.DatePatterns",
new String[] {
"EEEE, G y MMMM dd",
"G y MMMM d",
"G y MMM d",
"GGGGG yyy-MM-dd",
}
},
{ "roc.DatePatterns",
new String[] {
"EEEE, GGGG y MMMM dd",
"GGGG y MMMM d",
"GGGG y MMM d",
"G yyy-MM-dd",
}
},
{ "islamic.MonthNames",
new String[] {
"Muharram",
"Safar",
"Rabi\u02bb I",
"Rabi\u02bb II",
"Jumada I",
"Jumada II",
"Rajab",
"Sha\u02bbban",
"Ramadan",
"Shawwal",
"Dhu\u02bbl-Qi\u02bbdah",
"Dhu\u02bbl-Hijjah",
"",
}
},
{ "islamic.MonthAbbreviations",
new String[] {
"Muh.",
"Saf.",
"Rab. I",
"Rab. II",
"Jum. I",
"Jum. II",
"Raj.",
"Sha.",
"Ram.",
"Shaw.",
"Dhu\u02bbl-Q.",
"Dhu\u02bbl-H.",
"",
}
},
{ "islamic.MonthNarrows",
new String[] {
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9",
"10",
"11",
"12",
"",
}
},
{ "islamic.Eras",
new String[] {
"",
"AH",
}
},
{ "java.time.islamic.DatePatterns",
new String[] {
"EEEE, MMMM d, y G",
"MMMM d, y G",
"MMM d, y G",
"M/d/yy G",
}
},
{ "islamic.DatePatterns",
new String[] {
"EEEE, MMMM d, y GGGG",
"MMMM d, y GGGG",
"MMM d, y GGGG",
"M/d/yy GGGG",
}
},
{ "calendarname.islamic-civil", "Islamic-Civil Calendar" },
{ "calendarname.islamicc", "Islamic-Civil Calendar" },
{ "calendarname.buddhist", "Buddhist Calendar" },
{ "calendarname.islamic", "Islamic Calendar" },
{ "calendarname.gregorian", "Gregorian Calendar" },
{ "calendarname.gregory", "Gregorian Calendar" },
{ "calendarname.roc", "Minguo Calendar" },
{ "calendarname.japanese", "Japanese Calendar" },
{ "DefaultNumberingSystem", "latn" },
{ "arab.NumberElements",
new String[] {
"\u066b",
"\u066c",
"\u061b",
"\u066a",
"\u0660",
"#",
"-",
"\u0627\u0633",
"\u0609",
"\u221e",
"NaN",
}
},
{ "arabext.NumberElements",
new String[] {
"\u066b",
"\u066c",
"\u061b",
"\u066a",
"\u06f0",
"#",
"-",
"\u00d7\u06f1\u06f0^",
"\u0609",
"\u221e",
"NaN",
}
},
{ "bali.NumberElements",
new String[] {
".",
",",
";",
"%",
"\u1b50",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "beng.NumberElements",
new String[] {
".",
",",
";",
"%",
"\u09e6",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "cham.NumberElements",
new String[] {
".",
",",
";",
"%",
"\uaa50",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "deva.NumberElements",
new String[] {
".",
",",
";",
"%",
"\u0966",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "fullwide.NumberElements",
new String[] {
".",
",",
";",
"%",
"\uff10",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "gujr.NumberElements",
new String[] {
".",
",",
";",
"%",
"\u0ae6",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "guru.NumberElements",
new String[] {
".",
",",
";",
"%",
"\u0a66",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "java.NumberElements",
new String[] {
".",
",",
";",
"%",
"\ua9d0",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "kali.NumberElements",
new String[] {
".",
",",
";",
"%",
"\ua900",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "khmr.NumberElements",
new String[] {
".",
",",
";",
"%",
"\u17e0",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "knda.NumberElements",
new String[] {
".",
",",
";",
"%",
"\u0ce6",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "laoo.NumberElements",
new String[] {
".",
",",
";",
"%",
"\u0ed0",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "lana.NumberElements",
new String[] {
".",
",",
";",
"%",
"\u1a80",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "lanatham.NumberElements",
new String[] {
".",
",",
";",
"%",
"\u1a90",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "latn.NumberElements",
new String[] {
".",
",",
";",
"%",
"0",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "lepc.NumberElements",
new String[] {
".",
",",
";",
"%",
"\u1c40",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "limb.NumberElements",
new String[] {
".",
",",
";",
"%",
"\u1946",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "mlym.NumberElements",
new String[] {
".",
",",
";",
"%",
"\u0d66",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "mong.NumberElements",
new String[] {
".",
",",
";",
"%",
"\u1810",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "mtei.NumberElements",
new String[] {
".",
",",
";",
"%",
"\uabf0",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "mymr.NumberElements",
new String[] {
".",
",",
";",
"%",
"\u1040",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "mymrshan.NumberElements",
new String[] {
".",
",",
";",
"%",
"\u1090",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "nkoo.NumberElements",
new String[] {
".",
",",
";",
"%",
"\u07c0",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "olck.NumberElements",
new String[] {
".",
",",
";",
"%",
"\u1c50",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "orya.NumberElements",
new String[] {
".",
",",
";",
"%",
"\u0b66",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "saur.NumberElements",
new String[] {
".",
",",
";",
"%",
"\ua8d0",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "sund.NumberElements",
new String[] {
".",
",",
";",
"%",
"\u1bb0",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "talu.NumberElements",
new String[] {
".",
",",
";",
"%",
"\u19d0",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "tamldec.NumberElements",
new String[] {
".",
",",
";",
"%",
"\u0be6",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "telu.NumberElements",
new String[] {
".",
",",
";",
"%",
"\u0c66",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "thai.NumberElements",
new String[] {
".",
",",
";",
"%",
"\u0e50",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "tibt.NumberElements",
new String[] {
".",
",",
";",
"%",
"\u0f20",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "vaii.NumberElements",
new String[] {
".",
",",
";",
"%",
"\ua620",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "NumberPatterns",
new String[] {
"#,##0.###",
"\u00a4\u00a0#,##0.00",
"#,##0%",
}
},
};
return data;
}
}

View File

@@ -0,0 +1,81 @@
/*
* Copyright (c) 2012, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
* COPYRIGHT AND PERMISSION NOTICE
*
* Copyright (C) 1991-2012 Unicode, Inc. All rights reserved. Distributed under
* the Terms of Use in http://www.unicode.org/copyright.html.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of the Unicode data files and any associated documentation (the "Data
* Files") or Unicode software and any associated documentation (the
* "Software") to deal in the Data Files or Software without restriction,
* including without limitation the rights to use, copy, modify, merge,
* publish, distribute, and/or sell copies of the Data Files or Software, and
* to permit persons to whom the Data Files or Software are furnished to do so,
* provided that (a) the above copyright notice(s) and this permission notice
* appear with all copies of the Data Files or Software, (b) both the above
* copyright notice(s) and this permission notice appear in associated
* documentation, and (c) there is clear notice in each modified Data File or
* in the Software as well as in the documentation associated with the Data
* File(s) or Software that the data or software has been modified.
*
* THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
* KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
* THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
* INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR
* CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THE DATA FILES OR SOFTWARE.
*
* Except as contained in this notice, the name of a copyright holder shall not
* be used in advertising or otherwise to promote the sale, use or other
* dealings in these Data Files or Software without prior written authorization
* of the copyright holder.
*/
package sun.text.resources.cldr.aa;
import java.util.ListResourceBundle;
public class FormatData_aa extends ListResourceBundle {
@Override
protected final Object[][] getContents() {
final Object[][] data = new Object[][] {
{ "TimePatterns",
new String[] {
"h:mm:ss a zzzz",
"h:mm:ss a z",
"h:mm:ss a",
"h:mm a",
}
},
};
return data;
}
}

View File

@@ -0,0 +1,273 @@
/*
* Copyright (c) 2012, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
* COPYRIGHT AND PERMISSION NOTICE
*
* Copyright (C) 1991-2012 Unicode, Inc. All rights reserved. Distributed under
* the Terms of Use in http://www.unicode.org/copyright.html.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of the Unicode data files and any associated documentation (the "Data
* Files") or Unicode software and any associated documentation (the
* "Software") to deal in the Data Files or Software without restriction,
* including without limitation the rights to use, copy, modify, merge,
* publish, distribute, and/or sell copies of the Data Files or Software, and
* to permit persons to whom the Data Files or Software are furnished to do so,
* provided that (a) the above copyright notice(s) and this permission notice
* appear with all copies of the Data Files or Software, (b) both the above
* copyright notice(s) and this permission notice appear in associated
* documentation, and (c) there is clear notice in each modified Data File or
* in the Software as well as in the documentation associated with the Data
* File(s) or Software that the data or software has been modified.
*
* THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
* KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
* THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
* INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR
* CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THE DATA FILES OR SOFTWARE.
*
* Except as contained in this notice, the name of a copyright holder shall not
* be used in advertising or otherwise to promote the sale, use or other
* dealings in these Data Files or Software without prior written authorization
* of the copyright holder.
*/
package sun.text.resources.cldr.af;
import java.util.ListResourceBundle;
public class FormatData_af extends ListResourceBundle {
@Override
protected final Object[][] getContents() {
final Object[][] data = new Object[][] {
{ "MonthNames",
new String[] {
"Januarie",
"Februarie",
"Maart",
"April",
"Mei",
"Junie",
"Julie",
"Augustus",
"September",
"Oktober",
"November",
"Desember",
"",
}
},
{ "standalone.MonthNames",
new String[] {
"",
"",
"",
"April",
"",
"",
"",
"",
"",
"",
"",
"",
"",
}
},
{ "MonthAbbreviations",
new String[] {
"Jan",
"Feb",
"Mar",
"Apr",
"Mei",
"Jun",
"Jul",
"Aug",
"Sep",
"Okt",
"Nov",
"Des",
"",
}
},
{ "MonthNarrows",
new String[] {
"J",
"F",
"M",
"A",
"M",
"J",
"J",
"A",
"S",
"O",
"N",
"D",
"",
}
},
{ "DayNames",
new String[] {
"Sondag",
"Maandag",
"Dinsdag",
"Woensdag",
"Donderdag",
"Vrydag",
"Saterdag",
}
},
{ "DayAbbreviations",
new String[] {
"So",
"Ma",
"Di",
"Wo",
"Do",
"Vr",
"Sa",
}
},
{ "DayNarrows",
new String[] {
"S",
"M",
"D",
"W",
"D",
"V",
"S",
}
},
{ "QuarterNames",
new String[] {
"1ste kwartaal",
"2de kwartaal",
"3de kwartaal",
"4de kwartaal",
}
},
{ "QuarterAbbreviations",
new String[] {
"K1",
"K2",
"K3",
"K4",
}
},
{ "QuarterNarrows",
new String[] {
"1",
"2",
"3",
"4",
}
},
{ "AmPmMarkers",
new String[] {
"vm.",
"nm.",
}
},
{ "long.Eras",
new String[] {
"voor Christus",
"na Christus",
}
},
{ "Eras",
new String[] {
"v.C.",
"n.C.",
}
},
{ "field.era", "Era" },
{ "field.year", "Jaar" },
{ "field.month", "Maand" },
{ "field.week", "Week" },
{ "field.weekday", "Weeksdag" },
{ "field.dayperiod", "AM/PM" },
{ "field.hour", "Uur" },
{ "field.minute", "Minuut" },
{ "field.second", "Sekonde" },
{ "field.zone", "Tydsone" },
{ "TimePatterns",
new String[] {
"h:mm:ss a zzzz",
"h:mm:ss a z",
"h:mm:ss a",
"h:mm a",
}
},
{ "DatePatterns",
new String[] {
"EEEE dd MMMM y",
"dd MMMM y",
"dd MMM y",
"yyyy-MM-dd",
}
},
{ "calendarname.islamic-civil", "Islamitiese siviele kalender" },
{ "calendarname.islamicc", "Islamitiese siviele kalender" },
{ "calendarname.gregorian", "Gregoriese kalender" },
{ "calendarname.gregory", "Gregoriese kalender" },
{ "calendarname.japanese", "Japannese kalender" },
{ "calendarname.buddhist", "Boeddhistiese kalender" },
{ "calendarname.islamic", "Islamitiese kalender" },
{ "calendarname.roc", "Minguo-kalender" },
{ "DefaultNumberingSystem", "latn" },
{ "latn.NumberElements",
new String[] {
",",
"\u00a0",
";",
"%",
"0",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "NumberPatterns",
new String[] {
"#,##0.###",
"\u00a4#,##0.00",
"#,##0%",
}
},
};
return data;
}
}

View File

@@ -0,0 +1,80 @@
/*
* Copyright (c) 2012, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
* COPYRIGHT AND PERMISSION NOTICE
*
* Copyright (C) 1991-2012 Unicode, Inc. All rights reserved. Distributed under
* the Terms of Use in http://www.unicode.org/copyright.html.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of the Unicode data files and any associated documentation (the "Data
* Files") or Unicode software and any associated documentation (the
* "Software") to deal in the Data Files or Software without restriction,
* including without limitation the rights to use, copy, modify, merge,
* publish, distribute, and/or sell copies of the Data Files or Software, and
* to permit persons to whom the Data Files or Software are furnished to do so,
* provided that (a) the above copyright notice(s) and this permission notice
* appear with all copies of the Data Files or Software, (b) both the above
* copyright notice(s) and this permission notice appear in associated
* documentation, and (c) there is clear notice in each modified Data File or
* in the Software as well as in the documentation associated with the Data
* File(s) or Software that the data or software has been modified.
*
* THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
* KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
* THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
* INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR
* CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THE DATA FILES OR SOFTWARE.
*
* Except as contained in this notice, the name of a copyright holder shall not
* be used in advertising or otherwise to promote the sale, use or other
* dealings in these Data Files or Software without prior written authorization
* of the copyright holder.
*/
package sun.text.resources.cldr.af;
import java.util.ListResourceBundle;
public class FormatData_af_NA extends ListResourceBundle {
@Override
protected final Object[][] getContents() {
final Object[][] data = new Object[][] {
{ "NumberPatterns",
new String[] {
"#,##0.###",
"\u00a4\u00a0#,##0.00",
"#,##0%",
}
},
};
return data;
}
}

View File

@@ -0,0 +1,232 @@
/*
* Copyright (c) 2012, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
* COPYRIGHT AND PERMISSION NOTICE
*
* Copyright (C) 1991-2012 Unicode, Inc. All rights reserved. Distributed under
* the Terms of Use in http://www.unicode.org/copyright.html.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of the Unicode data files and any associated documentation (the "Data
* Files") or Unicode software and any associated documentation (the
* "Software") to deal in the Data Files or Software without restriction,
* including without limitation the rights to use, copy, modify, merge,
* publish, distribute, and/or sell copies of the Data Files or Software, and
* to permit persons to whom the Data Files or Software are furnished to do so,
* provided that (a) the above copyright notice(s) and this permission notice
* appear with all copies of the Data Files or Software, (b) both the above
* copyright notice(s) and this permission notice appear in associated
* documentation, and (c) there is clear notice in each modified Data File or
* in the Software as well as in the documentation associated with the Data
* File(s) or Software that the data or software has been modified.
*
* THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
* KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
* THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
* INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR
* CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THE DATA FILES OR SOFTWARE.
*
* Except as contained in this notice, the name of a copyright holder shall not
* be used in advertising or otherwise to promote the sale, use or other
* dealings in these Data Files or Software without prior written authorization
* of the copyright holder.
*/
package sun.text.resources.cldr.agq;
import java.util.ListResourceBundle;
public class FormatData_agq extends ListResourceBundle {
@Override
protected final Object[][] getContents() {
final Object[][] data = new Object[][] {
{ "MonthNames",
new String[] {
"ndz\u0254\u0300\u014b\u0254\u0300n\u00f9m",
"ndz\u0254\u0300\u014b\u0254\u0300k\u0197\u0300z\u00f9\u0294",
"ndz\u0254\u0300\u014b\u0254\u0300t\u0197\u0300d\u0289\u0300gh\u00e0",
"ndz\u0254\u0300\u014b\u0254\u0300t\u01ceaf\u0289\u0304gh\u0101",
"ndz\u0254\u0300\u014b\u00e8s\u00e8e",
"ndz\u0254\u0300\u014b\u0254\u0300nz\u00f9gh\u00f2",
"ndz\u0254\u0300\u014b\u0254\u0300d\u00f9mlo",
"ndz\u0254\u0300\u014b\u0254\u0300kw\u00eef\u0254\u0300e",
"ndz\u0254\u0300\u014b\u0254\u0300t\u0197\u0300f\u0289\u0300gh\u00e0dzugh\u00f9",
"ndz\u0254\u0300\u014b\u0254\u0300gh\u01d4uwel\u0254\u0300m",
"ndz\u0254\u0300\u014b\u0254\u0300chwa\u0294\u00e0kaa wo",
"ndz\u0254\u0300\u014b\u00e8fw\u00f2o",
"",
}
},
{ "MonthAbbreviations",
new String[] {
"n\u00f9m",
"k\u0268z",
"t\u0268d",
"taa",
"see",
"nzu",
"dum",
"f\u0254e",
"dzu",
"l\u0254m",
"kaa",
"fwo",
"",
}
},
{ "MonthNarrows",
new String[] {
"n",
"k",
"t",
"t",
"s",
"z",
"k",
"f",
"d",
"l",
"c",
"f",
"",
}
},
{ "DayNames",
new String[] {
"tsu\u0294nts\u0268",
"tsu\u0294ukp\u00e0",
"tsu\u0294ugh\u0254e",
"tsu\u0294ut\u0254\u0300ml\u00f2",
"tsu\u0294um\u00e8",
"tsu\u0294ugh\u0268\u0302m",
"tsu\u0294ndz\u0268k\u0254\u0294\u0254",
}
},
{ "DayAbbreviations",
new String[] {
"nts",
"kpa",
"gh\u0254",
"t\u0254m",
"ume",
"gh\u0268",
"dzk",
}
},
{ "DayNarrows",
new String[] {
"n",
"k",
"g",
"t",
"u",
"g",
"d",
}
},
{ "QuarterNames",
new String[] {
"k\u0268b\u00e2 k\u0268 1",
"ugb\u00e2 u 2",
"ugb\u00e2 u 3",
"ugb\u00e2 u 4",
}
},
{ "AmPmMarkers",
new String[] {
"a.g",
"a.k",
}
},
{ "long.Eras",
new String[] {
"S\u011be K\u0268\u0300lesto",
"B\u01cea K\u0268\u0300lesto",
}
},
{ "Eras",
new String[] {
"SK",
"BK",
}
},
{ "field.era", "k\u0268t\u00eegh" },
{ "field.year", "k\u0268n\u00fbm" },
{ "field.month", "ndz\u0254\u014b" },
{ "field.week", "ew\u0268n" },
{ "field.weekday", "tsu\u0294u m\u0268\u0300 \u00e8w\u0268\u0304n" },
{ "field.dayperiod", "\u00e2 ts\u0268\u0300" },
{ "field.hour", "t\u00e0m" },
{ "field.minute", "men\u00e8" },
{ "field.second", "s\u025bk\u0254\u0300n" },
{ "field.zone", "d\u0268\u014b\u00f2 k\u0268 en\u0268\u0300gha" },
{ "TimePatterns",
new String[] {
"HH:mm:ss zzzz",
"HH:mm:ss z",
"HH:mm:ss",
"HH:mm",
}
},
{ "DatePatterns",
new String[] {
"EEEE d MMMM y",
"d MMMM y",
"d MMM, y",
"d/M/yyyy",
}
},
{ "DefaultNumberingSystem", "latn" },
{ "latn.NumberElements",
new String[] {
",",
"\u00a0",
";",
"%",
"0",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "NumberPatterns",
new String[] {
"#,##0.###",
"#,##0.00\u00a4",
"#,##0%",
}
},
};
return data;
}
}

View File

@@ -0,0 +1,207 @@
/*
* Copyright (c) 2012, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
* COPYRIGHT AND PERMISSION NOTICE
*
* Copyright (C) 1991-2012 Unicode, Inc. All rights reserved. Distributed under
* the Terms of Use in http://www.unicode.org/copyright.html.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of the Unicode data files and any associated documentation (the "Data
* Files") or Unicode software and any associated documentation (the
* "Software") to deal in the Data Files or Software without restriction,
* including without limitation the rights to use, copy, modify, merge,
* publish, distribute, and/or sell copies of the Data Files or Software, and
* to permit persons to whom the Data Files or Software are furnished to do so,
* provided that (a) the above copyright notice(s) and this permission notice
* appear with all copies of the Data Files or Software, (b) both the above
* copyright notice(s) and this permission notice appear in associated
* documentation, and (c) there is clear notice in each modified Data File or
* in the Software as well as in the documentation associated with the Data
* File(s) or Software that the data or software has been modified.
*
* THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
* KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
* THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
* INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR
* CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THE DATA FILES OR SOFTWARE.
*
* Except as contained in this notice, the name of a copyright holder shall not
* be used in advertising or otherwise to promote the sale, use or other
* dealings in these Data Files or Software without prior written authorization
* of the copyright holder.
*/
package sun.text.resources.cldr.ak;
import java.util.ListResourceBundle;
public class FormatData_ak extends ListResourceBundle {
@Override
protected final Object[][] getContents() {
final Object[][] data = new Object[][] {
{ "MonthNames",
new String[] {
"Sanda-\u0186p\u025bp\u0254n",
"Kwakwar-\u0186gyefuo",
"Eb\u0254w-\u0186benem",
"Eb\u0254bira-Oforisuo",
"Esusow Aketseaba-K\u0254t\u0254nimba",
"Obirade-Ay\u025bwohomumu",
"Ay\u025bwoho-Kitawonsa",
"Difuu-\u0186sandaa",
"Fankwa-\u0190b\u0254",
"\u0186b\u025bs\u025b-Ahinime",
"\u0186ber\u025bf\u025bw-Obubuo",
"Mumu-\u0186p\u025bnimba",
"",
}
},
{ "MonthAbbreviations",
new String[] {
"S-\u0186",
"K-\u0186",
"E-\u0186",
"E-O",
"E-K",
"O-A",
"A-K",
"D-\u0186",
"F-\u0190",
"\u0186-A",
"\u0186-O",
"M-\u0186",
"",
}
},
{ "DayNames",
new String[] {
"Kwesida",
"Dwowda",
"Benada",
"Wukuda",
"Yawda",
"Fida",
"Memeneda",
}
},
{ "DayAbbreviations",
new String[] {
"Kwe",
"Dwo",
"Ben",
"Wuk",
"Yaw",
"Fia",
"Mem",
}
},
{ "DayNarrows",
new String[] {
"K",
"D",
"B",
"W",
"Y",
"F",
"M",
}
},
{ "AmPmMarkers",
new String[] {
"AN",
"EW",
}
},
{ "long.Eras",
new String[] {
"Ansa Kristo",
"Kristo Ekyiri",
}
},
{ "Eras",
new String[] {
"AK",
"KE",
}
},
{ "field.era", "Bere" },
{ "field.year", "Afe" },
{ "field.month", "Bosome" },
{ "field.week", "Dap\u025bn" },
{ "field.weekday", "Dap\u025bn mu da" },
{ "field.dayperiod", "Da bere" },
{ "field.hour", "D\u0254nhwer" },
{ "field.minute", "Sema" },
{ "field.second", "S\u025bk\u025bnd" },
{ "field.zone", "Bere apaamu" },
{ "TimePatterns",
new String[] {
"HH:mm:ss zzzz",
"HH:mm:ss z",
"HH:mm:ss",
"HH:mm",
}
},
{ "DatePatterns",
new String[] {
"EEEE, y MMMM dd",
"y MMMM d",
"y MMM d",
"yy/MM/dd",
}
},
{ "DefaultNumberingSystem", "latn" },
{ "latn.NumberElements",
new String[] {
".",
"\u00a0",
";",
"%",
"0",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "NumberPatterns",
new String[] {
"#,##0.###",
"\u00a4#,##0.00",
"#,##0%",
}
},
};
return data;
}
}

View File

@@ -0,0 +1,257 @@
/*
* Copyright (c) 2012, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
* COPYRIGHT AND PERMISSION NOTICE
*
* Copyright (C) 1991-2012 Unicode, Inc. All rights reserved. Distributed under
* the Terms of Use in http://www.unicode.org/copyright.html.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of the Unicode data files and any associated documentation (the "Data
* Files") or Unicode software and any associated documentation (the
* "Software") to deal in the Data Files or Software without restriction,
* including without limitation the rights to use, copy, modify, merge,
* publish, distribute, and/or sell copies of the Data Files or Software, and
* to permit persons to whom the Data Files or Software are furnished to do so,
* provided that (a) the above copyright notice(s) and this permission notice
* appear with all copies of the Data Files or Software, (b) both the above
* copyright notice(s) and this permission notice appear in associated
* documentation, and (c) there is clear notice in each modified Data File or
* in the Software as well as in the documentation associated with the Data
* File(s) or Software that the data or software has been modified.
*
* THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
* KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
* THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
* INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR
* CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THE DATA FILES OR SOFTWARE.
*
* Except as contained in this notice, the name of a copyright holder shall not
* be used in advertising or otherwise to promote the sale, use or other
* dealings in these Data Files or Software without prior written authorization
* of the copyright holder.
*/
package sun.text.resources.cldr.am;
import java.util.ListResourceBundle;
public class FormatData_am extends ListResourceBundle {
@Override
protected final Object[][] getContents() {
final Object[][] data = new Object[][] {
{ "MonthNames",
new String[] {
"\u1303\u1295\u12e9\u12c8\u122a",
"\u134c\u1265\u1229\u12c8\u122a",
"\u121b\u122d\u127d",
"\u12a4\u1355\u1228\u120d",
"\u121c\u12ed",
"\u1301\u1295",
"\u1301\u120b\u12ed",
"\u12a6\u1308\u1235\u1275",
"\u1234\u1355\u1274\u121d\u1260\u122d",
"\u12a6\u12ad\u1270\u12cd\u1260\u122d",
"\u1296\u126c\u121d\u1260\u122d",
"\u12f2\u1234\u121d\u1260\u122d",
"",
}
},
{ "MonthAbbreviations",
new String[] {
"\u1303\u1295\u12e9",
"\u134c\u1265\u1229",
"\u121b\u122d\u127d",
"\u12a4\u1355\u1228",
"\u121c\u12ed",
"\u1301\u1295",
"\u1301\u120b\u12ed",
"\u12a6\u1308\u1235",
"\u1234\u1355\u1274",
"\u12a6\u12ad\u1270",
"\u1296\u126c\u121d",
"\u12f2\u1234\u121d",
"",
}
},
{ "MonthNarrows",
new String[] {
"\u1303",
"\u134c",
"\u121b",
"\u12a4",
"\u121c",
"\u1301",
"\u1301",
"\u12a6",
"\u1234",
"\u12a6",
"\u1296",
"\u12f2",
"",
}
},
{ "DayNames",
new String[] {
"\u12a5\u1211\u12f5",
"\u1230\u129e",
"\u121b\u12ad\u1230\u129e",
"\u1228\u1261\u12d5",
"\u1210\u1219\u1235",
"\u12d3\u122d\u1265",
"\u1245\u12f3\u121c",
}
},
{ "DayAbbreviations",
new String[] {
"\u12a5\u1211\u12f5",
"\u1230\u129e",
"\u121b\u12ad\u1230",
"\u1228\u1261\u12d5",
"\u1210\u1219\u1235",
"\u12d3\u122d\u1265",
"\u1245\u12f3\u121c",
}
},
{ "DayNarrows",
new String[] {
"\u12a5",
"\u1230",
"\u121b",
"\u1228",
"\u1210",
"\u12d3",
"\u1245",
}
},
{ "QuarterNames",
new String[] {
"1\u129b\u12cd \u1229\u1265",
"\u1201\u1208\u1270\u129b\u12cd \u1229\u1265",
"3\u129b\u12cd \u1229\u1265",
"4\u129b\u12cd \u1229\u1265",
}
},
{ "standalone.QuarterNames",
new String[] {
"1\u129b\u12cd \u1229\u1265",
"2\u129b\u12cd \u1229\u1265",
"3\u129b\u12cd \u1229\u1265",
"4\u129b\u12cd \u1229\u1265",
}
},
{ "QuarterAbbreviations",
new String[] {
"Q1",
"Q2",
"Q3",
"Q4",
}
},
{ "standalone.QuarterAbbreviations",
new String[] {
"Q1",
"Q2",
"Q3",
"Q4",
}
},
{ "QuarterNarrows",
new String[] {
"1",
"2",
"3",
"4",
}
},
{ "AmPmMarkers",
new String[] {
"\u1321\u12cb\u1275",
"\u12a8\u1233\u12d3\u1275",
}
},
{ "long.Eras",
new String[] {
"\u12d3\u1218\u1270 \u12d3\u1208\u121d",
"\u12d3\u1218\u1270 \u121d\u1215\u1228\u1275",
}
},
{ "Eras",
new String[] {
"\u12d3/\u12d3",
"\u12d3/\u121d",
}
},
{ "field.era", "\u12d8\u1218\u1295" },
{ "field.year", "\u12d3\u1218\u1275" },
{ "field.month", "\u12c8\u122d" },
{ "field.week", "\u1233\u121d\u1295\u1275" },
{ "field.weekday", "\u12a0\u12d8\u1266\u1275" },
{ "field.dayperiod", "\u1321\u12ce\u1275/\u12a8\u1230\u12a0\u1275" },
{ "field.hour", "\u1230\u12d3\u1275" },
{ "field.minute", "\u12f0\u1242\u1243" },
{ "field.second", "\u1230\u12a8\u1295\u12f5" },
{ "field.zone", "\u12e8\u1230\u12d3\u1275 \u1230\u1245" },
{ "TimePatterns",
new String[] {
"h:mm:ss a zzzz",
"h:mm:ss a z",
"h:mm:ss a",
"h:mm a",
}
},
{ "DatePatterns",
new String[] {
"EEEE, d MMMM y",
"d MMMM y",
"d MMM y",
"dd/MM/yyyy",
}
},
{ "calendarname.gregorian", "\u12e8\u130d\u122a\u130e\u122a\u12eb\u1295 \u1240\u1295 \u12a0\u1246\u1323\u1320\u122d" },
{ "calendarname.gregory", "\u12e8\u130d\u122a\u130e\u122a\u12eb\u1295 \u1240\u1295 \u12a0\u1246\u1323\u1320\u122d" },
{ "calendarname.roc", "\u12e8\u121a\u1295\u1309 \u12e8\u1240\u1295 \u12a0\u1246\u1323\u1320\u122d" },
{ "calendarname.islamic-civil", "\u12e8\u12a5\u1235\u120b\u121d \u1205\u12dd\u1263\u12ca \u12e8\u1240\u1295 \u12a0\u1246\u1323\u1320\u122d" },
{ "calendarname.islamicc", "\u12e8\u12a5\u1235\u120b\u121d \u1205\u12dd\u1263\u12ca \u12e8\u1240\u1295 \u12a0\u1246\u1323\u1320\u122d" },
{ "calendarname.japanese", "\u12e8\u1303\u1353\u1295 \u12e8\u1240\u1295 \u12a0\u1246\u1323\u1320\u122d" },
{ "calendarname.buddhist", "\u12e8\u1261\u12f2\u1235\u1275 \u1240\u1295 \u12a0\u1246\u1323\u1320\u122d" },
{ "calendarname.islamic", "\u12e8\u12a5\u1235\u120b\u121b\u12ca \u12e8\u1230\u12d3\u1275 \u12a0\u1246\u1323\u1320\u122d" },
{ "DefaultNumberingSystem", "latn" },
{ "NumberPatterns",
new String[] {
"#,##0.###",
"\u00a4#,##0.00;(\u00a4#,##0.00)",
"#,##0%",
}
},
};
return data;
}
}

View File

@@ -0,0 +1,412 @@
/*
* Copyright (c) 2012, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
* COPYRIGHT AND PERMISSION NOTICE
*
* Copyright (C) 1991-2012 Unicode, Inc. All rights reserved. Distributed under
* the Terms of Use in http://www.unicode.org/copyright.html.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of the Unicode data files and any associated documentation (the "Data
* Files") or Unicode software and any associated documentation (the
* "Software") to deal in the Data Files or Software without restriction,
* including without limitation the rights to use, copy, modify, merge,
* publish, distribute, and/or sell copies of the Data Files or Software, and
* to permit persons to whom the Data Files or Software are furnished to do so,
* provided that (a) the above copyright notice(s) and this permission notice
* appear with all copies of the Data Files or Software, (b) both the above
* copyright notice(s) and this permission notice appear in associated
* documentation, and (c) there is clear notice in each modified Data File or
* in the Software as well as in the documentation associated with the Data
* File(s) or Software that the data or software has been modified.
*
* THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
* KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
* THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
* INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR
* CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THE DATA FILES OR SOFTWARE.
*
* Except as contained in this notice, the name of a copyright holder shall not
* be used in advertising or otherwise to promote the sale, use or other
* dealings in these Data Files or Software without prior written authorization
* of the copyright holder.
*/
package sun.text.resources.cldr.ar;
import java.util.ListResourceBundle;
public class FormatData_ar extends ListResourceBundle {
@Override
protected final Object[][] getContents() {
final Object[][] data = new Object[][] {
{ "MonthNames",
new String[] {
"\u064a\u0646\u0627\u064a\u0631",
"\u0641\u0628\u0631\u0627\u064a\u0631",
"\u0645\u0627\u0631\u0633",
"\u0623\u0628\u0631\u064a\u0644",
"\u0645\u0627\u064a\u0648",
"\u064a\u0648\u0646\u064a\u0648",
"\u064a\u0648\u0644\u064a\u0648",
"\u0623\u063a\u0633\u0637\u0633",
"\u0633\u0628\u062a\u0645\u0628\u0631",
"\u0623\u0643\u062a\u0648\u0628\u0631",
"\u0646\u0648\u0641\u0645\u0628\u0631",
"\u062f\u064a\u0633\u0645\u0628\u0631",
"",
}
},
{ "MonthNarrows",
new String[] {
"\u064a",
"\u0641",
"\u0645",
"\u0623",
"\u0648",
"\u0646",
"\u0644",
"\u063a",
"\u0633",
"\u0643",
"\u0628",
"\u062f",
"",
}
},
{ "DayNames",
new String[] {
"\u0627\u0644\u0623\u062d\u062f",
"\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
"\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
"\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
"\u0627\u0644\u062e\u0645\u064a\u0633",
"\u0627\u0644\u062c\u0645\u0639\u0629",
"\u0627\u0644\u0633\u0628\u062a",
}
},
{ "standalone.DayNames",
new String[] {
"",
"\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
"",
"",
"",
"",
"",
}
},
{ "DayAbbreviations",
new String[] {
"\u0627\u0644\u0623\u062d\u062f",
"\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
"\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
"\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
"\u0627\u0644\u062e\u0645\u064a\u0633",
"\u0627\u0644\u062c\u0645\u0639\u0629",
"\u0627\u0644\u0633\u0628\u062a",
}
},
{ "standalone.DayAbbreviations",
new String[] {
"\u0627\u0644\u0623\u062d\u062f",
"\u0627\u0644\u0627\u062b\u0646\u064a\u0646",
"\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621",
"\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621",
"\u0627\u0644\u062e\u0645\u064a\u0633",
"\u0627\u0644\u062c\u0645\u0639\u0629",
"\u0627\u0644\u0633\u0628\u062a",
}
},
{ "DayNarrows",
new String[] {
"\u062d",
"\u0646",
"\u062b",
"\u0631",
"\u062e",
"\u062c",
"\u0633",
}
},
{ "QuarterNames",
new String[] {
"\u0627\u0644\u0631\u0628\u0639 \u0627\u0644\u0623\u0648\u0644",
"\u0627\u0644\u0631\u0628\u0639 \u0627\u0644\u062b\u0627\u0646\u064a",
"\u0627\u0644\u0631\u0628\u0639 \u0627\u0644\u062b\u0627\u0644\u062b",
"\u0627\u0644\u0631\u0628\u0639 \u0627\u0644\u0631\u0627\u0628\u0639",
}
},
{ "QuarterNarrows",
new String[] {
"\u0661",
"\u0662",
"\u0663",
"\u0664",
}
},
{ "AmPmMarkers",
new String[] {
"\u0635",
"\u0645",
}
},
{ "long.Eras",
new String[] {
"\u0642\u0628\u0644 \u0627\u0644\u0645\u064a\u0644\u0627\u062f",
"\u0645\u064a\u0644\u0627\u062f\u064a",
}
},
{ "Eras",
new String[] {
"\u0642.\u0645",
"\u0645",
}
},
{ "field.era", "\u0627\u0644\u0639\u0635\u0631" },
{ "field.year", "\u0627\u0644\u0633\u0646\u0629" },
{ "field.month", "\u0627\u0644\u0634\u0647\u0631" },
{ "field.week", "\u0627\u0644\u0623\u0633\u0628\u0648\u0639" },
{ "field.weekday", "\u0627\u0644\u064a\u0648\u0645" },
{ "field.dayperiod", "\u0635/\u0645" },
{ "field.hour", "\u0627\u0644\u0633\u0627\u0639\u0627\u062a" },
{ "field.minute", "\u0627\u0644\u062f\u0642\u0627\u0626\u0642" },
{ "field.second", "\u0627\u0644\u062b\u0648\u0627\u0646\u064a" },
{ "field.zone", "\u0627\u0644\u062a\u0648\u0642\u064a\u062a" },
{ "TimePatterns",
new String[] {
"zzzz h:mm:ss a",
"z h:mm:ss a",
"h:mm:ss a",
"h:mm a",
}
},
{ "DatePatterns",
new String[] {
"EEEE\u060c d MMMM\u060c y",
"d MMMM\u060c y",
"dd\u200f/MM\u200f/yyyy",
"d\u200f/M\u200f/yyyy",
}
},
{ "buddhist.Eras",
new String[] {
"BC",
"\u0627\u0644\u062a\u0642\u0648\u064a\u0645 \u0627\u0644\u0628\u0648\u0630\u064a",
}
},
{ "java.time.buddhist.DatePatterns",
new String[] {
"EEEE\u060c d MMMM\u060c y G",
"d MMMM\u060c y G",
"dd\u200f/MM\u200f/y G",
"d\u200f/M\u200f/y G",
}
},
{ "buddhist.DatePatterns",
new String[] {
"EEEE\u060c d MMMM\u060c y GGGG",
"d MMMM\u060c y GGGG",
"dd\u200f/MM\u200f/y GGGG",
"d\u200f/M\u200f/y GGGG",
}
},
{ "japanese.Eras",
new String[] {
"\u0645",
"\u0645\u064a\u062c\u064a",
"\u062a\u064a\u0634\u0648",
"\u0634\u0648\u0648\u0627",
"\u0647\u064a\u0633\u064a",
"",
}
},
{ "java.time.japanese.DatePatterns",
new String[] {
"EEEE\u060c d MMMM\u060c y G",
"d MMMM\u060c y G",
"dd\u200f/MM\u200f/y G",
"d\u200f/M\u200f/y G",
}
},
{ "japanese.DatePatterns",
new String[] {
"EEEE\u060c d MMMM\u060c y GGGG",
"d MMMM\u060c y GGGG",
"dd\u200f/MM\u200f/y GGGG",
"d\u200f/M\u200f/y GGGG",
}
},
{ "roc.Eras",
new String[] {
"Before R.O.C.",
"\u062c\u0645\u0647\u0648\u0631\u064a\u0629 \u0627\u0644\u0635\u064a",
}
},
{ "java.time.roc.DatePatterns",
new String[] {
"EEEE\u060c d MMMM\u060c y G",
"d MMMM\u060c y G",
"dd\u200f/MM\u200f/y G",
"d\u200f/M\u200f/y G",
}
},
{ "roc.DatePatterns",
new String[] {
"EEEE\u060c d MMMM\u060c y GGGG",
"d MMMM\u060c y GGGG",
"dd\u200f/MM\u200f/y GGGG",
"d\u200f/M\u200f/y GGGG",
}
},
{ "islamic.MonthNames",
new String[] {
"\u0645\u062d\u0631\u0645",
"\u0635\u0641\u0631",
"\u0631\u0628\u064a\u0639 \u0627\u0644\u0623\u0648\u0644",
"\u0631\u0628\u064a\u0639 \u0627\u0644\u0622\u062e\u0631",
"\u062c\u0645\u0627\u062f\u0649 \u0627\u0644\u0623\u0648\u0644\u0649",
"\u062c\u0645\u0627\u062f\u0649 \u0627\u0644\u0622\u062e\u0631\u0629",
"\u0631\u062c\u0628",
"\u0634\u0639\u0628\u0627\u0646",
"\u0631\u0645\u0636\u0627\u0646",
"\u0634\u0648\u0627\u0644",
"\u0630\u0648 \u0627\u0644\u0642\u0639\u062f\u0629",
"\u0630\u0648 \u0627\u0644\u062d\u062c\u0629",
"",
}
},
{ "islamic.MonthAbbreviations",
new String[] {
"\u0645\u062d\u0631\u0645",
"\u0635\u0641\u0631",
"\u0631\u0628\u064a\u0639 \u0627\u0644\u0623\u0648\u0644",
"\u0631\u0628\u064a\u0639 \u0627\u0644\u0622\u062e\u0631",
"\u062c\u0645\u0627\u062f\u0649 \u0627\u0644\u0623\u0648\u0644\u0649",
"\u062c\u0645\u0627\u062f\u0649 \u0627\u0644\u0622\u062e\u0631\u0629",
"\u0631\u062c\u0628",
"\u0634\u0639\u0628\u0627\u0646",
"\u0631\u0645\u0636\u0627\u0646",
"\u0634\u0648\u0627\u0644",
"\u0630\u0648 \u0627\u0644\u0642\u0639\u062f\u0629",
"\u0630\u0648 \u0627\u0644\u062d\u062c\u0629",
"",
}
},
{ "islamic.MonthNarrows",
new String[] {
"\u0661",
"\u0662",
"\u0663",
"\u0664",
"\u0665",
"\u0666",
"\u0667",
"\u0668",
"\u0669",
"\u0661\u0660",
"\u0661\u0661",
"\u0661\u0662",
"",
}
},
{ "islamic.Eras",
new String[] {
"",
"\u0647\u0640",
}
},
{ "java.time.islamic.DatePatterns",
new String[] {
"EEEE\u060c d MMMM y",
"d MMMM y",
"d MMM\u060c y G",
"d\u200f/M\u200f/yyyy",
}
},
{ "islamic.DatePatterns",
new String[] {
"EEEE\u060c d MMMM y",
"d MMMM y",
"d MMM\u060c y GGGG",
"d\u200f/M\u200f/yyyy",
}
},
{ "calendarname.islamic-umalqura", "\u0627\u0644\u062a\u0642\u0648\u064a\u0645 \u0627\u0644\u0625\u0633\u0644\u0627\u0645\u064a [\u0623\u0645 \u0627\u0644\u0642\u0631\u0649]" },
{ "calendarname.islamic-civil", "\u062a\u0642\u0648\u064a\u0645 \u0627\u0633\u0644\u0627\u0645\u064a \u0645\u062f\u0646\u064a" },
{ "calendarname.islamicc", "\u062a\u0642\u0648\u064a\u0645 \u0627\u0633\u0644\u0627\u0645\u064a \u0645\u062f\u0646\u064a" },
{ "calendarname.buddhist", "\u0627\u0644\u062a\u0642\u0648\u064a\u0645 \u0627\u0644\u0628\u0648\u0630\u064a" },
{ "calendarname.islamic", "\u0627\u0644\u062a\u0642\u0648\u064a\u0645 \u0627\u0644\u0647\u062c\u0631\u064a" },
{ "calendarname.gregorian", "\u0627\u0644\u062a\u0642\u0648\u064a\u0645 \u0627\u0644\u0645\u064a\u0644\u0627\u062f\u064a" },
{ "calendarname.gregory", "\u0627\u0644\u062a\u0642\u0648\u064a\u0645 \u0627\u0644\u0645\u064a\u0644\u0627\u062f\u064a" },
{ "calendarname.roc", "\u062a\u0642\u0648\u064a\u0645 \u0645\u064a\u0646\u062c\u0648" },
{ "calendarname.japanese", "\u0627\u0644\u062a\u0642\u0648\u064a\u0645 \u0627\u0644\u064a\u0627\u0628\u0627\u0646\u064a" },
{ "DefaultNumberingSystem", "arab" },
{ "arab.NumberElements",
new String[] {
"\u066b",
"\u066c",
"\u061b",
"\u066a",
"\u0660",
"#",
"-",
"\u0627\u0633",
"\u0609",
"\u221e",
"\u0644\u064a\u0633 \u0631\u0642\u0645",
}
},
{ "latn.NumberElements",
new String[] {
",",
".",
";",
"%",
"0",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "NumberPatterns",
new String[] {
"#,##0.###;#,##0.###-",
"\u00a4\u00a0#,##0.00;\u00a4\u00a0#,##0.00-",
"#,##0%",
}
},
};
return data;
}
}

View File

@@ -0,0 +1,82 @@
/*
* Copyright (c) 2012, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
* COPYRIGHT AND PERMISSION NOTICE
*
* Copyright (C) 1991-2012 Unicode, Inc. All rights reserved. Distributed under
* the Terms of Use in http://www.unicode.org/copyright.html.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of the Unicode data files and any associated documentation (the "Data
* Files") or Unicode software and any associated documentation (the
* "Software") to deal in the Data Files or Software without restriction,
* including without limitation the rights to use, copy, modify, merge,
* publish, distribute, and/or sell copies of the Data Files or Software, and
* to permit persons to whom the Data Files or Software are furnished to do so,
* provided that (a) the above copyright notice(s) and this permission notice
* appear with all copies of the Data Files or Software, (b) both the above
* copyright notice(s) and this permission notice appear in associated
* documentation, and (c) there is clear notice in each modified Data File or
* in the Software as well as in the documentation associated with the Data
* File(s) or Software that the data or software has been modified.
*
* THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
* KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
* THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
* INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR
* CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THE DATA FILES OR SOFTWARE.
*
* Except as contained in this notice, the name of a copyright holder shall not
* be used in advertising or otherwise to promote the sale, use or other
* dealings in these Data Files or Software without prior written authorization
* of the copyright holder.
*/
package sun.text.resources.cldr.ar;
import java.util.ListResourceBundle;
public class FormatData_ar_DZ extends ListResourceBundle {
@Override
protected final Object[][] getContents() {
final Object[][] data = new Object[][] {
{ "DatePatterns",
new String[] {
"EEEE\u060c d MMMM\u060c y",
"d MMMM\u060c y",
"yyyy/MM/dd",
"yyyy/M/d",
}
},
{ "DefaultNumberingSystem", "latn" },
};
return data;
}
}

View File

@@ -0,0 +1,90 @@
/*
* Copyright (c) 2012, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
* COPYRIGHT AND PERMISSION NOTICE
*
* Copyright (C) 1991-2012 Unicode, Inc. All rights reserved. Distributed under
* the Terms of Use in http://www.unicode.org/copyright.html.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of the Unicode data files and any associated documentation (the "Data
* Files") or Unicode software and any associated documentation (the
* "Software") to deal in the Data Files or Software without restriction,
* including without limitation the rights to use, copy, modify, merge,
* publish, distribute, and/or sell copies of the Data Files or Software, and
* to permit persons to whom the Data Files or Software are furnished to do so,
* provided that (a) the above copyright notice(s) and this permission notice
* appear with all copies of the Data Files or Software, (b) both the above
* copyright notice(s) and this permission notice appear in associated
* documentation, and (c) there is clear notice in each modified Data File or
* in the Software as well as in the documentation associated with the Data
* File(s) or Software that the data or software has been modified.
*
* THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
* KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
* THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
* INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR
* CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THE DATA FILES OR SOFTWARE.
*
* Except as contained in this notice, the name of a copyright holder shall not
* be used in advertising or otherwise to promote the sale, use or other
* dealings in these Data Files or Software without prior written authorization
* of the copyright holder.
*/
package sun.text.resources.cldr.ar;
import java.util.ListResourceBundle;
public class FormatData_ar_JO extends ListResourceBundle {
@Override
protected final Object[][] getContents() {
final Object[][] data = new Object[][] {
{ "MonthNames",
new String[] {
"\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u062b\u0627\u0646\u064a",
"\u0634\u0628\u0627\u0637",
"\u0622\u0630\u0627\u0631",
"\u0646\u064a\u0633\u0627\u0646",
"\u0623\u064a\u0627\u0631",
"\u062d\u0632\u064a\u0631\u0627\u0646",
"\u062a\u0645\u0648\u0632",
"\u0622\u0628",
"\u0623\u064a\u0644\u0648\u0644",
"\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u0623\u0648\u0644",
"\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u062b\u0627\u0646\u064a",
"\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u0623\u0648\u0644",
"",
}
},
};
return data;
}
}

View File

@@ -0,0 +1,90 @@
/*
* Copyright (c) 2012, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
* COPYRIGHT AND PERMISSION NOTICE
*
* Copyright (C) 1991-2012 Unicode, Inc. All rights reserved. Distributed under
* the Terms of Use in http://www.unicode.org/copyright.html.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of the Unicode data files and any associated documentation (the "Data
* Files") or Unicode software and any associated documentation (the
* "Software") to deal in the Data Files or Software without restriction,
* including without limitation the rights to use, copy, modify, merge,
* publish, distribute, and/or sell copies of the Data Files or Software, and
* to permit persons to whom the Data Files or Software are furnished to do so,
* provided that (a) the above copyright notice(s) and this permission notice
* appear with all copies of the Data Files or Software, (b) both the above
* copyright notice(s) and this permission notice appear in associated
* documentation, and (c) there is clear notice in each modified Data File or
* in the Software as well as in the documentation associated with the Data
* File(s) or Software that the data or software has been modified.
*
* THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
* KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
* THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
* INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR
* CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THE DATA FILES OR SOFTWARE.
*
* Except as contained in this notice, the name of a copyright holder shall not
* be used in advertising or otherwise to promote the sale, use or other
* dealings in these Data Files or Software without prior written authorization
* of the copyright holder.
*/
package sun.text.resources.cldr.ar;
import java.util.ListResourceBundle;
public class FormatData_ar_LB extends ListResourceBundle {
@Override
protected final Object[][] getContents() {
final Object[][] data = new Object[][] {
{ "MonthNames",
new String[] {
"\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u062b\u0627\u0646\u064a",
"\u0634\u0628\u0627\u0637",
"\u0622\u0630\u0627\u0631",
"\u0646\u064a\u0633\u0627\u0646",
"\u0623\u064a\u0627\u0631",
"\u062d\u0632\u064a\u0631\u0627\u0646",
"\u062a\u0645\u0648\u0632",
"\u0622\u0628",
"\u0623\u064a\u0644\u0648\u0644",
"\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u0623\u0648\u0644",
"\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u062b\u0627\u0646\u064a",
"\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u0623\u0648\u0644",
"",
}
},
};
return data;
}
}

View File

@@ -0,0 +1,82 @@
/*
* Copyright (c) 2012, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
* COPYRIGHT AND PERMISSION NOTICE
*
* Copyright (C) 1991-2012 Unicode, Inc. All rights reserved. Distributed under
* the Terms of Use in http://www.unicode.org/copyright.html.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of the Unicode data files and any associated documentation (the "Data
* Files") or Unicode software and any associated documentation (the
* "Software") to deal in the Data Files or Software without restriction,
* including without limitation the rights to use, copy, modify, merge,
* publish, distribute, and/or sell copies of the Data Files or Software, and
* to permit persons to whom the Data Files or Software are furnished to do so,
* provided that (a) the above copyright notice(s) and this permission notice
* appear with all copies of the Data Files or Software, (b) both the above
* copyright notice(s) and this permission notice appear in associated
* documentation, and (c) there is clear notice in each modified Data File or
* in the Software as well as in the documentation associated with the Data
* File(s) or Software that the data or software has been modified.
*
* THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
* KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
* THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
* INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR
* CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THE DATA FILES OR SOFTWARE.
*
* Except as contained in this notice, the name of a copyright holder shall not
* be used in advertising or otherwise to promote the sale, use or other
* dealings in these Data Files or Software without prior written authorization
* of the copyright holder.
*/
package sun.text.resources.cldr.ar;
import java.util.ListResourceBundle;
public class FormatData_ar_MA extends ListResourceBundle {
@Override
protected final Object[][] getContents() {
final Object[][] data = new Object[][] {
{ "DatePatterns",
new String[] {
"EEEE\u060c d MMMM\u060c y",
"d MMMM\u060c y",
"yyyy/MM/dd",
"yyyy/M/d",
}
},
{ "DefaultNumberingSystem", "latn" },
};
return data;
}
}

View File

@@ -0,0 +1,80 @@
/*
* Copyright (c) 2012, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
* COPYRIGHT AND PERMISSION NOTICE
*
* Copyright (C) 1991-2012 Unicode, Inc. All rights reserved. Distributed under
* the Terms of Use in http://www.unicode.org/copyright.html.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of the Unicode data files and any associated documentation (the "Data
* Files") or Unicode software and any associated documentation (the
* "Software") to deal in the Data Files or Software without restriction,
* including without limitation the rights to use, copy, modify, merge,
* publish, distribute, and/or sell copies of the Data Files or Software, and
* to permit persons to whom the Data Files or Software are furnished to do so,
* provided that (a) the above copyright notice(s) and this permission notice
* appear with all copies of the Data Files or Software, (b) both the above
* copyright notice(s) and this permission notice appear in associated
* documentation, and (c) there is clear notice in each modified Data File or
* in the Software as well as in the documentation associated with the Data
* File(s) or Software that the data or software has been modified.
*
* THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
* KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
* THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
* INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR
* CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THE DATA FILES OR SOFTWARE.
*
* Except as contained in this notice, the name of a copyright holder shall not
* be used in advertising or otherwise to promote the sale, use or other
* dealings in these Data Files or Software without prior written authorization
* of the copyright holder.
*/
package sun.text.resources.cldr.ar;
import java.util.ListResourceBundle;
public class FormatData_ar_QA extends ListResourceBundle {
@Override
protected final Object[][] getContents() {
final Object[][] data = new Object[][] {
{ "NumberPatterns",
new String[] {
"#0.###;#0.###-",
"\u00a4#0.00",
"#,##0%",
}
},
};
return data;
}
}

View File

@@ -0,0 +1,80 @@
/*
* Copyright (c) 2012, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
* COPYRIGHT AND PERMISSION NOTICE
*
* Copyright (C) 1991-2012 Unicode, Inc. All rights reserved. Distributed under
* the Terms of Use in http://www.unicode.org/copyright.html.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of the Unicode data files and any associated documentation (the "Data
* Files") or Unicode software and any associated documentation (the
* "Software") to deal in the Data Files or Software without restriction,
* including without limitation the rights to use, copy, modify, merge,
* publish, distribute, and/or sell copies of the Data Files or Software, and
* to permit persons to whom the Data Files or Software are furnished to do so,
* provided that (a) the above copyright notice(s) and this permission notice
* appear with all copies of the Data Files or Software, (b) both the above
* copyright notice(s) and this permission notice appear in associated
* documentation, and (c) there is clear notice in each modified Data File or
* in the Software as well as in the documentation associated with the Data
* File(s) or Software that the data or software has been modified.
*
* THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
* KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
* THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
* INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR
* CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THE DATA FILES OR SOFTWARE.
*
* Except as contained in this notice, the name of a copyright holder shall not
* be used in advertising or otherwise to promote the sale, use or other
* dealings in these Data Files or Software without prior written authorization
* of the copyright holder.
*/
package sun.text.resources.cldr.ar;
import java.util.ListResourceBundle;
public class FormatData_ar_SA extends ListResourceBundle {
@Override
protected final Object[][] getContents() {
final Object[][] data = new Object[][] {
{ "NumberPatterns",
new String[] {
"#0.###;#0.###-",
"\u00a4#0.00",
"#,##0%",
}
},
};
return data;
}
}

View File

@@ -0,0 +1,97 @@
/*
* Copyright (c) 2012, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
* COPYRIGHT AND PERMISSION NOTICE
*
* Copyright (C) 1991-2012 Unicode, Inc. All rights reserved. Distributed under
* the Terms of Use in http://www.unicode.org/copyright.html.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of the Unicode data files and any associated documentation (the "Data
* Files") or Unicode software and any associated documentation (the
* "Software") to deal in the Data Files or Software without restriction,
* including without limitation the rights to use, copy, modify, merge,
* publish, distribute, and/or sell copies of the Data Files or Software, and
* to permit persons to whom the Data Files or Software are furnished to do so,
* provided that (a) the above copyright notice(s) and this permission notice
* appear with all copies of the Data Files or Software, (b) both the above
* copyright notice(s) and this permission notice appear in associated
* documentation, and (c) there is clear notice in each modified Data File or
* in the Software as well as in the documentation associated with the Data
* File(s) or Software that the data or software has been modified.
*
* THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
* KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
* THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
* INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR
* CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THE DATA FILES OR SOFTWARE.
*
* Except as contained in this notice, the name of a copyright holder shall not
* be used in advertising or otherwise to promote the sale, use or other
* dealings in these Data Files or Software without prior written authorization
* of the copyright holder.
*/
package sun.text.resources.cldr.ar;
import java.util.ListResourceBundle;
public class FormatData_ar_SY extends ListResourceBundle {
@Override
protected final Object[][] getContents() {
final Object[][] data = new Object[][] {
{ "MonthNames",
new String[] {
"\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u062b\u0627\u0646\u064a",
"\u0634\u0628\u0627\u0637",
"\u0622\u0630\u0627\u0631",
"\u0646\u064a\u0633\u0627\u0646",
"\u0623\u064a\u0627\u0631",
"\u062d\u0632\u064a\u0631\u0627\u0646",
"\u062a\u0645\u0648\u0632",
"\u0622\u0628",
"\u0623\u064a\u0644\u0648\u0644",
"\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u0623\u0648\u0644",
"\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u062b\u0627\u0646\u064a",
"\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u0623\u0648\u0644",
"",
}
},
{ "NumberPatterns",
new String[] {
"#0.###;#0.###-",
"\u00a4#0.00",
"#,##0%",
}
},
};
return data;
}
}

View File

@@ -0,0 +1,89 @@
/*
* Copyright (c) 2012, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
* COPYRIGHT AND PERMISSION NOTICE
*
* Copyright (C) 1991-2012 Unicode, Inc. All rights reserved. Distributed under
* the Terms of Use in http://www.unicode.org/copyright.html.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of the Unicode data files and any associated documentation (the "Data
* Files") or Unicode software and any associated documentation (the
* "Software") to deal in the Data Files or Software without restriction,
* including without limitation the rights to use, copy, modify, merge,
* publish, distribute, and/or sell copies of the Data Files or Software, and
* to permit persons to whom the Data Files or Software are furnished to do so,
* provided that (a) the above copyright notice(s) and this permission notice
* appear with all copies of the Data Files or Software, (b) both the above
* copyright notice(s) and this permission notice appear in associated
* documentation, and (c) there is clear notice in each modified Data File or
* in the Software as well as in the documentation associated with the Data
* File(s) or Software that the data or software has been modified.
*
* THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
* KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
* THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
* INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR
* CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THE DATA FILES OR SOFTWARE.
*
* Except as contained in this notice, the name of a copyright holder shall not
* be used in advertising or otherwise to promote the sale, use or other
* dealings in these Data Files or Software without prior written authorization
* of the copyright holder.
*/
package sun.text.resources.cldr.ar;
import java.util.ListResourceBundle;
public class FormatData_ar_TN extends ListResourceBundle {
@Override
protected final Object[][] getContents() {
final Object[][] data = new Object[][] {
{ "DatePatterns",
new String[] {
"EEEE\u060c d MMMM\u060c y",
"d MMMM\u060c y",
"yyyy/MM/dd",
"yyyy/M/d",
}
},
{ "DefaultNumberingSystem", "latn" },
{ "NumberPatterns",
new String[] {
"#0.###;#0.###-",
"\u00a4#0.00",
"#,##0%",
}
},
};
return data;
}
}

View File

@@ -0,0 +1,80 @@
/*
* Copyright (c) 2012, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
* COPYRIGHT AND PERMISSION NOTICE
*
* Copyright (C) 1991-2012 Unicode, Inc. All rights reserved. Distributed under
* the Terms of Use in http://www.unicode.org/copyright.html.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of the Unicode data files and any associated documentation (the "Data
* Files") or Unicode software and any associated documentation (the
* "Software") to deal in the Data Files or Software without restriction,
* including without limitation the rights to use, copy, modify, merge,
* publish, distribute, and/or sell copies of the Data Files or Software, and
* to permit persons to whom the Data Files or Software are furnished to do so,
* provided that (a) the above copyright notice(s) and this permission notice
* appear with all copies of the Data Files or Software, (b) both the above
* copyright notice(s) and this permission notice appear in associated
* documentation, and (c) there is clear notice in each modified Data File or
* in the Software as well as in the documentation associated with the Data
* File(s) or Software that the data or software has been modified.
*
* THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
* KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
* THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
* INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR
* CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THE DATA FILES OR SOFTWARE.
*
* Except as contained in this notice, the name of a copyright holder shall not
* be used in advertising or otherwise to promote the sale, use or other
* dealings in these Data Files or Software without prior written authorization
* of the copyright holder.
*/
package sun.text.resources.cldr.ar;
import java.util.ListResourceBundle;
public class FormatData_ar_YE extends ListResourceBundle {
@Override
protected final Object[][] getContents() {
final Object[][] data = new Object[][] {
{ "NumberPatterns",
new String[] {
"#0.###;#0.###-",
"\u00a4#0.00",
"#,##0%",
}
},
};
return data;
}
}

View File

@@ -0,0 +1,167 @@
/*
* Copyright (c) 2012, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
* COPYRIGHT AND PERMISSION NOTICE
*
* Copyright (C) 1991-2012 Unicode, Inc. All rights reserved. Distributed under
* the Terms of Use in http://www.unicode.org/copyright.html.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of the Unicode data files and any associated documentation (the "Data
* Files") or Unicode software and any associated documentation (the
* "Software") to deal in the Data Files or Software without restriction,
* including without limitation the rights to use, copy, modify, merge,
* publish, distribute, and/or sell copies of the Data Files or Software, and
* to permit persons to whom the Data Files or Software are furnished to do so,
* provided that (a) the above copyright notice(s) and this permission notice
* appear with all copies of the Data Files or Software, (b) both the above
* copyright notice(s) and this permission notice appear in associated
* documentation, and (c) there is clear notice in each modified Data File or
* in the Software as well as in the documentation associated with the Data
* File(s) or Software that the data or software has been modified.
*
* THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
* KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
* THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
* INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR
* CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THE DATA FILES OR SOFTWARE.
*
* Except as contained in this notice, the name of a copyright holder shall not
* be used in advertising or otherwise to promote the sale, use or other
* dealings in these Data Files or Software without prior written authorization
* of the copyright holder.
*/
package sun.text.resources.cldr.as;
import java.util.ListResourceBundle;
public class FormatData_as extends ListResourceBundle {
@Override
protected final Object[][] getContents() {
final Object[][] data = new Object[][] {
{ "MonthNames",
new String[] {
"\u099c\u09be\u09a8\u09c1\u09f1\u09be\u09f0\u09c0",
"\u09ab\u09c7\u09ac\u09cd\u09f0\u09c1\u09f1\u09be\u09f0\u09c0",
"\u09ae\u09be\u09f0\u09cd\u099a",
"\u098f\u09aa\u09cd\u09f0\u09bf\u09b2",
"\u09ae\u09c7",
"\u099c\u09c1\u09a8",
"\u099c\u09c1\u09b2\u09be\u0987",
"\u0986\u0997\u09b7\u09cd\u099f",
"\u099b\u09c7\u09aa\u09cd\u09a4\u09c7\u09ae\u09cd\u09ac\u09f0",
"\u0985\u0995\u09cd\u099f\u09cb\u09ac\u09f0",
"\u09a8\u09f1\u09c7\u09ae\u09cd\u09ac\u09f0",
"\u09a1\u09bf\u099a\u09c7\u09ae\u09cd\u09ac\u09f0",
"",
}
},
{ "MonthAbbreviations",
new String[] {
"\u099c\u09be\u09a8\u09c1",
"\u09ab\u09c7\u09ac\u09cd\u09f0\u09c1",
"\u09ae\u09be\u09f0\u09cd\u099a",
"\u098f\u09aa\u09cd\u09f0\u09bf\u09b2",
"\u09ae\u09c7",
"\u099c\u09c1\u09a8",
"\u099c\u09c1\u09b2\u09be\u0987",
"\u0986\u0997",
"\u09b8\u09c7\u09aa\u09cd\u099f",
"\u0985\u0995\u09cd\u099f\u09cb",
"\u09a8\u09ad\u09c7",
"\u09a1\u09bf\u09b8\u09c7",
"",
}
},
{ "DayNames",
new String[] {
"\u09a6\u09c7\u0993\u09ac\u09be\u09f0",
"\u09b8\u09cb\u09ae\u09ac\u09be\u09f0",
"\u09ae\u0999\u09cd\u0997\u09b2\u09ac\u09be\u09f0",
"\u09ac\u09c1\u09a7\u09ac\u09be\u09f0",
"\u09ac\u09c3\u09b9\u09b7\u09cd\u09aa\u09a4\u09bf\u09ac\u09be\u09f0",
"\u09b6\u09c1\u0995\u09cd\u09f0\u09ac\u09be\u09f0",
"\u09b6\u09a8\u09bf\u09ac\u09be\u09f0",
}
},
{ "DayAbbreviations",
new String[] {
"\u09f0\u09ac\u09bf",
"\u09b8\u09cb\u09ae",
"\u09ae\u0999\u09cd\u0997\u09b2",
"\u09ac\u09c1\u09a7",
"\u09ac\u09c3\u09b9\u09b7\u09cd\u09aa\u09a4\u09bf",
"\u09b6\u09c1\u0995\u09cd\u09f0",
"\u09b6\u09a8\u09bf",
}
},
{ "QuarterNames",
new String[] {
"\u09aa\u09cd\u09f0\u09a5\u09ae \u09aa\u09cd\u09f0\u09b9\u09f0",
"\u09a6\u09cd\u09ac\u09bf\u09a4\u09c0\u09af\u09bc \u09aa\u09cd\u09f0\u09b9\u09f0",
"\u09a4\u09c3\u09a4\u09c0\u09af\u09bc \u09aa\u09cd\u09f0\u09b9\u09f0",
"\u099a\u09a4\u09c1\u09f0\u09cd\u09a5 \u09aa\u09cd\u09f0\u09b9\u09f0",
}
},
{ "AmPmMarkers",
new String[] {
"\u09aa\u09c2\u09f0\u09cd\u09ac\u09be\u09b9\u09cd\u09a3",
"\u0985\u09aa\u09f0\u09be\u09b9\u09cd\u09a3",
}
},
{ "field.era", "\u09af\u09c1\u0997" },
{ "field.year", "\u09ac\u099b\u09f0" },
{ "field.month", "\u09ae\u09be\u09b9" },
{ "field.week", "\u09b8\u09aa\u09cd\u09a4\u09be\u09b9" },
{ "field.hour", "\u0998\u09a3\u09cd\u099f\u09be" },
{ "field.minute", "\u09ae\u09bf\u09a8\u09bf\u099f" },
{ "field.second", "\u099b\u09c7\u0995\u09c7\u09a3\u09cd\u09a1" },
{ "field.zone", "\u0995\u09cd\u09b7\u09c7\u09a4\u09cd\u09f0" },
{ "calendarname.islamic-civil", "\u0987\u099a\u09b2\u09be\u09ae\u09c0-\u09a8\u09be\u0997\u09f0\u09bf\u0995\u09f0 \u09aa\u099e\u09cd\u099c\u09bf\u0995\u09be" },
{ "calendarname.islamicc", "\u0987\u099a\u09b2\u09be\u09ae\u09c0-\u09a8\u09be\u0997\u09f0\u09bf\u0995\u09f0 \u09aa\u099e\u09cd\u099c\u09bf\u0995\u09be" },
{ "calendarname.japanese", "\u099c\u09be\u09aa\u09be\u09a8\u09c0 \u09aa\u099e\u09cd\u099c\u09bf\u0995\u09be" },
{ "calendarname.roc", "\u099a\u09c0\u09a8\u09be \u0997\u09a3\u09f0\u09be\u099c\u09cd\u09af\u09f0 \u09aa\u099e\u09cd\u099c\u09bf\u0995\u09be" },
{ "calendarname.islamic", "\u0987\u099a\u09b2\u09be\u09ae\u09c0 \u09aa\u099e\u09cd\u099c\u09bf\u0995\u09be" },
{ "calendarname.gregorian", "\u0997\u09cd\u09f0\u09bf\u0997\u09cb\u09f0\u09c0\u09af\u09bc \u09aa\u099e\u09cd\u099c\u09bf\u0995\u09be" },
{ "calendarname.gregory", "\u0997\u09cd\u09f0\u09bf\u0997\u09cb\u09f0\u09c0\u09af\u09bc \u09aa\u099e\u09cd\u099c\u09bf\u0995\u09be" },
{ "calendarname.buddhist", "\u09ac\u09cc\u09a6\u09cd\u09a7 \u09aa\u099e\u09cd\u099c\u09bf\u0995\u09be" },
{ "DefaultNumberingSystem", "latn" },
{ "NumberPatterns",
new String[] {
"#,##,##0.###",
"\u00a4\u00a0#,##,##0.00",
"#,##,##0%",
}
},
};
return data;
}
}

View File

@@ -0,0 +1,224 @@
/*
* Copyright (c) 2012, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
* COPYRIGHT AND PERMISSION NOTICE
*
* Copyright (C) 1991-2012 Unicode, Inc. All rights reserved. Distributed under
* the Terms of Use in http://www.unicode.org/copyright.html.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of the Unicode data files and any associated documentation (the "Data
* Files") or Unicode software and any associated documentation (the
* "Software") to deal in the Data Files or Software without restriction,
* including without limitation the rights to use, copy, modify, merge,
* publish, distribute, and/or sell copies of the Data Files or Software, and
* to permit persons to whom the Data Files or Software are furnished to do so,
* provided that (a) the above copyright notice(s) and this permission notice
* appear with all copies of the Data Files or Software, (b) both the above
* copyright notice(s) and this permission notice appear in associated
* documentation, and (c) there is clear notice in each modified Data File or
* in the Software as well as in the documentation associated with the Data
* File(s) or Software that the data or software has been modified.
*
* THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
* KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
* THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
* INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR
* CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THE DATA FILES OR SOFTWARE.
*
* Except as contained in this notice, the name of a copyright holder shall not
* be used in advertising or otherwise to promote the sale, use or other
* dealings in these Data Files or Software without prior written authorization
* of the copyright holder.
*/
package sun.text.resources.cldr.asa;
import java.util.ListResourceBundle;
public class FormatData_asa extends ListResourceBundle {
@Override
protected final Object[][] getContents() {
final Object[][] data = new Object[][] {
{ "MonthNames",
new String[] {
"Januari",
"Februari",
"Machi",
"Aprili",
"Mei",
"Juni",
"Julai",
"Agosti",
"Septemba",
"Oktoba",
"Novemba",
"Desemba",
"",
}
},
{ "MonthAbbreviations",
new String[] {
"Jan",
"Feb",
"Mac",
"Apr",
"Mei",
"Jun",
"Jul",
"Ago",
"Sep",
"Okt",
"Nov",
"Dec",
"",
}
},
{ "MonthNarrows",
new String[] {
"J",
"F",
"M",
"A",
"M",
"J",
"J",
"A",
"S",
"O",
"N",
"D",
"",
}
},
{ "DayNames",
new String[] {
"Jumapili",
"Jumatatu",
"Jumanne",
"Jumatano",
"Alhamisi",
"Ijumaa",
"Jumamosi",
}
},
{ "DayAbbreviations",
new String[] {
"Jpi",
"Jtt",
"Jnn",
"Jtn",
"Alh",
"Ijm",
"Jmo",
}
},
{ "DayNarrows",
new String[] {
"J",
"J",
"J",
"J",
"A",
"I",
"J",
}
},
{ "QuarterNames",
new String[] {
"Robo 1",
"Robo 2",
"Robo 3",
"Robo 4",
}
},
{ "QuarterAbbreviations",
new String[] {
"R1",
"R2",
"R3",
"R4",
}
},
{ "AmPmMarkers",
new String[] {
"icheheavo",
"ichamthi",
}
},
{ "long.Eras",
new String[] {
"Kabla yakwe Yethu",
"Baada yakwe Yethu",
}
},
{ "Eras",
new String[] {
"KM",
"BM",
}
},
{ "field.era", "Edhi" },
{ "field.year", "Mwaka" },
{ "field.month", "Mweji" },
{ "field.week", "Ndisha" },
{ "field.weekday", "Thiku ya ndisha" },
{ "field.dayperiod", "Marango athiku" },
{ "field.hour", "Thaa" },
{ "field.minute", "Dakika" },
{ "field.second", "Thekunde" },
{ "field.zone", "Majira Athaa" },
{ "TimePatterns",
new String[] {
"h:mm:ss a zzzz",
"h:mm:ss a z",
"h:mm:ss a",
"h:mm a",
}
},
{ "DatePatterns",
new String[] {
"EEEE, d MMMM y",
"d MMMM y",
"d MMM y",
"dd/MM/yyyy",
}
},
{ "NumberPatterns",
new String[] {
"#,##0.###",
"#,##0.00\u00a0\u00a4",
"#,##0%",
}
},
};
return data;
}
}

View File

@@ -0,0 +1,224 @@
/*
* Copyright (c) 2012, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
* COPYRIGHT AND PERMISSION NOTICE
*
* Copyright (C) 1991-2012 Unicode, Inc. All rights reserved. Distributed under
* the Terms of Use in http://www.unicode.org/copyright.html.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of the Unicode data files and any associated documentation (the "Data
* Files") or Unicode software and any associated documentation (the
* "Software") to deal in the Data Files or Software without restriction,
* including without limitation the rights to use, copy, modify, merge,
* publish, distribute, and/or sell copies of the Data Files or Software, and
* to permit persons to whom the Data Files or Software are furnished to do so,
* provided that (a) the above copyright notice(s) and this permission notice
* appear with all copies of the Data Files or Software, (b) both the above
* copyright notice(s) and this permission notice appear in associated
* documentation, and (c) there is clear notice in each modified Data File or
* in the Software as well as in the documentation associated with the Data
* File(s) or Software that the data or software has been modified.
*
* THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
* KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
* THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
* INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR
* CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THE DATA FILES OR SOFTWARE.
*
* Except as contained in this notice, the name of a copyright holder shall not
* be used in advertising or otherwise to promote the sale, use or other
* dealings in these Data Files or Software without prior written authorization
* of the copyright holder.
*/
package sun.text.resources.cldr.az;
import java.util.ListResourceBundle;
public class FormatData_az extends ListResourceBundle {
@Override
protected final Object[][] getContents() {
final Object[][] data = new Object[][] {
{ "MonthNames",
new String[] {
"Yanvar",
"Fevral",
"Mart",
"Aprel",
"May",
"\u0130yun",
"\u0130yul",
"Avqust",
"Sentyabr",
"Oktyabr",
"Noyabr",
"Dekabr",
"",
}
},
{ "MonthAbbreviations",
new String[] {
"yan",
"fev",
"mar",
"apr",
"may",
"iyn",
"iyl",
"avq",
"sen",
"okt",
"noy",
"dek",
"",
}
},
{ "DayNames",
new String[] {
"bazar",
"bazar ert\u0259si",
"\u00e7\u0259r\u015f\u0259nb\u0259 ax\u015fam\u0131",
"\u00e7\u0259r\u015f\u0259nb\u0259",
"c\u00fcm\u0259 ax\u015fam\u0131",
"c\u00fcm\u0259",
"\u015f\u0259nb\u0259",
}
},
{ "DayAbbreviations",
new String[] {
"B.",
"B.E.",
"\u00c7.A.",
"\u00c7.",
"C.A.",
"C",
"\u015e.",
}
},
{ "DayNarrows",
new String[] {
"7",
"1",
"2",
"3",
"4",
"5",
"6",
}
},
{ "QuarterNames",
new String[] {
"1-ci kvartal",
"2-ci kvartal",
"3-c\u00fc kvartal",
"4-c\u00fc kvartal",
}
},
{ "QuarterAbbreviations",
new String[] {
"1-ci kv.",
"2-ci kv.",
"3-c\u00fc kv.",
"4-c\u00fc kv.",
}
},
{ "long.Eras",
new String[] {
"eram\u0131zdan \u0259vv\u0259l",
"bizim eram\u0131z\u0131n",
}
},
{ "Eras",
new String[] {
"e.\u0259.",
"b.e.",
}
},
{ "field.era", "era" },
{ "field.year", "il" },
{ "field.month", "ay" },
{ "field.week", "h\u0259ft\u0259" },
{ "field.weekday", "h\u0259ft\u0259 g\u00fcn\u00fc" },
{ "field.hour", "saat" },
{ "field.minute", "d\u0259qiq\u0259" },
{ "field.second", "saniy\u0259" },
{ "field.zone", "zona" },
{ "TimePatterns",
new String[] {
"HH:mm:ss zzzz",
"HH:mm:ss z",
"HH:mm:ss",
"HH:mm",
}
},
{ "DatePatterns",
new String[] {
"EEEE, d, MMMM, y",
"d MMMM , y",
"d MMM, y",
"yyyy-MM-dd",
}
},
{ "calendarname.gregorian", "Qreqoriy t\u0259qvimi" },
{ "calendarname.gregory", "Qreqoriy t\u0259qvimi" },
{ "calendarname.roc", "\u00c7in respublikas\u0131 t\u0259qvimi" },
{ "calendarname.islamic-civil", "Ivrit t\u0259qvimi" },
{ "calendarname.islamicc", "Ivrit t\u0259qvimi" },
{ "calendarname.japanese", "Yapon t\u0259qvimi" },
{ "calendarname.buddhist", "Budist t\u0259qvimi" },
{ "calendarname.islamic", "M\u00fcs\u0259lman t\u0259qvimi" },
{ "DefaultNumberingSystem", "latn" },
{ "latn.NumberElements",
new String[] {
",",
".",
";",
"%",
"0",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "NumberPatterns",
new String[] {
"#,##0.###",
"\u00a4\u00a0#,##0.00",
"#,##0%",
}
},
};
return data;
}
}

View File

@@ -0,0 +1,140 @@
/*
* Copyright (c) 2012, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
* COPYRIGHT AND PERMISSION NOTICE
*
* Copyright (C) 1991-2012 Unicode, Inc. All rights reserved. Distributed under
* the Terms of Use in http://www.unicode.org/copyright.html.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of the Unicode data files and any associated documentation (the "Data
* Files") or Unicode software and any associated documentation (the
* "Software") to deal in the Data Files or Software without restriction,
* including without limitation the rights to use, copy, modify, merge,
* publish, distribute, and/or sell copies of the Data Files or Software, and
* to permit persons to whom the Data Files or Software are furnished to do so,
* provided that (a) the above copyright notice(s) and this permission notice
* appear with all copies of the Data Files or Software, (b) both the above
* copyright notice(s) and this permission notice appear in associated
* documentation, and (c) there is clear notice in each modified Data File or
* in the Software as well as in the documentation associated with the Data
* File(s) or Software that the data or software has been modified.
*
* THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
* KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
* THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
* INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR
* CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THE DATA FILES OR SOFTWARE.
*
* Except as contained in this notice, the name of a copyright holder shall not
* be used in advertising or otherwise to promote the sale, use or other
* dealings in these Data Files or Software without prior written authorization
* of the copyright holder.
*/
package sun.text.resources.cldr.az;
import java.util.ListResourceBundle;
public class FormatData_az_Cyrl extends ListResourceBundle {
@Override
protected final Object[][] getContents() {
final Object[][] data = new Object[][] {
{ "MonthNames",
new String[] {
"\u0458\u0430\u043d\u0432\u0430\u0440",
"\u0444\u0435\u0432\u0440\u0430\u043b",
"\u043c\u0430\u0440\u0442",
"\u0430\u043f\u0440\u0435\u043b",
"\u043c\u0430\u0439",
"\u0438\u0458\u0443\u043d",
"\u0438\u0458\u0443\u043b",
"\u0430\u0432\u0433\u0443\u0441\u0442",
"\u0441\u0435\u043d\u0442\u0458\u0430\u0431\u0440",
"\u043e\u043a\u0442\u0458\u0430\u0431\u0440",
"\u043d\u043e\u0458\u0430\u0431\u0440",
"\u0434\u0435\u043a\u0430\u0431\u0440",
"",
}
},
{ "DayNames",
new String[] {
"\u0431\u0430\u0437\u0430\u0440",
"\u0431\u0430\u0437\u0430\u0440 \u0435\u0440\u0442\u04d9\u0441\u0438",
"\u0447\u04d9\u0440\u0448\u04d9\u043d\u0431\u04d9 \u0430\u0445\u0448\u0430\u043c\u044b",
"\u0447\u04d9\u0440\u0448\u04d9\u043d\u0431\u04d9",
"\u04b9\u04af\u043c\u04d9 \u0430\u0445\u0448\u0430\u043c\u044b",
"\u04b9\u04af\u043c\u04d9",
"\u0448\u04d9\u043d\u0431\u04d9",
}
},
{ "TimePatterns",
new String[] {
"HH:mm:ss zzzz",
"HH:mm:ss z",
"HH:mm:ss",
"HH:mm",
}
},
{ "DatePatterns",
new String[] {
"EEEE, d, MMMM, y",
"d MMMM , y",
"d MMM, y",
"yyyy-MM-dd",
}
},
{ "DefaultNumberingSystem", "latn" },
{ "latn.NumberElements",
new String[] {
",",
".",
";",
"%",
"0",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "NumberPatterns",
new String[] {
"#,##0.###",
"\u00a4\u00a0#,##0.00",
"#,##0%",
}
},
};
return data;
}
}

View File

@@ -0,0 +1,240 @@
/*
* Copyright (c) 2012, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
* COPYRIGHT AND PERMISSION NOTICE
*
* Copyright (C) 1991-2012 Unicode, Inc. All rights reserved. Distributed under
* the Terms of Use in http://www.unicode.org/copyright.html.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of the Unicode data files and any associated documentation (the "Data
* Files") or Unicode software and any associated documentation (the
* "Software") to deal in the Data Files or Software without restriction,
* including without limitation the rights to use, copy, modify, merge,
* publish, distribute, and/or sell copies of the Data Files or Software, and
* to permit persons to whom the Data Files or Software are furnished to do so,
* provided that (a) the above copyright notice(s) and this permission notice
* appear with all copies of the Data Files or Software, (b) both the above
* copyright notice(s) and this permission notice appear in associated
* documentation, and (c) there is clear notice in each modified Data File or
* in the Software as well as in the documentation associated with the Data
* File(s) or Software that the data or software has been modified.
*
* THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
* KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
* THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
* INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR
* CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THE DATA FILES OR SOFTWARE.
*
* Except as contained in this notice, the name of a copyright holder shall not
* be used in advertising or otherwise to promote the sale, use or other
* dealings in these Data Files or Software without prior written authorization
* of the copyright holder.
*/
package sun.text.resources.cldr.bas;
import java.util.ListResourceBundle;
public class FormatData_bas extends ListResourceBundle {
@Override
protected final Object[][] getContents() {
final Object[][] data = new Object[][] {
{ "MonthNames",
new String[] {
"K\u0254nd\u0254\u014b",
"M\u00e0c\u025b\u0302l",
"M\u00e0t\u00f9mb",
"M\u00e0top",
"M\u0300puy\u025b",
"H\u00ecl\u00f2nd\u025b\u0300",
"Nj\u00e8b\u00e0",
"H\u00ecka\u014b",
"D\u00ecp\u0254\u0300s",
"B\u00ec\u00f2\u00f4m",
"M\u00e0y\u025bs\u00e8p",
"L\u00ecbuy li \u0144y\u00e8e",
"",
}
},
{ "MonthAbbreviations",
new String[] {
"k\u0254n",
"mac",
"mat",
"mto",
"mpu",
"hil",
"nje",
"hik",
"dip",
"bio",
"may",
"li\u0253",
"",
}
},
{ "MonthNarrows",
new String[] {
"k",
"m",
"m",
"m",
"m",
"h",
"n",
"h",
"d",
"b",
"m",
"l",
"",
}
},
{ "DayNames",
new String[] {
"\u014bgw\u00e0 n\u0254\u0302y",
"\u014bgw\u00e0 nja\u014bgumba",
"\u014bgw\u00e0 \u00fbm",
"\u014bgw\u00e0 \u014bg\u00ea",
"\u014bgw\u00e0 mb\u0254k",
"\u014bgw\u00e0 k\u0254\u0254",
"\u014bgw\u00e0 j\u00f4n",
}
},
{ "DayAbbreviations",
new String[] {
"n\u0254y",
"nja",
"uum",
"\u014bge",
"mb\u0254",
"k\u0254\u0254",
"jon",
}
},
{ "DayNarrows",
new String[] {
"n",
"n",
"u",
"\u014b",
"m",
"k",
"j",
}
},
{ "QuarterNames",
new String[] {
"K\u00e8k bisu i so\u014b ia\u00e2",
"K\u00e8k i \u0144yonos bi\u0253a\u00e0 i so\u014b ia\u00e2",
"K\u00e8k i \u0144yonos bia\u00e2 i so\u014b ia\u00e2",
"K\u00e8k i \u0144yonos bin\u00e2 i so\u014b ia\u00e2",
}
},
{ "QuarterAbbreviations",
new String[] {
"K1s3",
"K2s3",
"K3s3",
"K4s3",
}
},
{ "AmPmMarkers",
new String[] {
"I bik\u025b\u0302gl\u00e0",
"I \u0253ugaj\u0254p",
}
},
{ "long.Eras",
new String[] {
"bis\u016b bi Yes\u00f9 Kr\u01d0st\u00f2",
"i mb\u016bs Yes\u00f9 Kr\u01d0st\u00f2",
}
},
{ "Eras",
new String[] {
"b.Y.K",
"m.Y.K",
}
},
{ "field.era", "k\u00e8k" },
{ "field.year", "\u014bw\u00eci" },
{ "field.month", "so\u014b" },
{ "field.week", "s\u0254nd\u025b\u0302" },
{ "field.weekday", "h\u00ecl\u0254 hi s\u0254nd\u025b\u0302" },
{ "field.dayperiod", "nj\u01cem\u00f9ha" },
{ "field.hour", "\u014bg\u025b\u014b" },
{ "field.minute", "\u014bget" },
{ "field.second", "h\u00ec\u014bge\u014bget" },
{ "field.zone", "komboo i \u014bg\u025b\u014b" },
{ "TimePatterns",
new String[] {
"HH:mm:ss zzzz",
"HH:mm:ss z",
"HH:mm:ss",
"HH:mm",
}
},
{ "DatePatterns",
new String[] {
"EEEE d MMMM y",
"d MMMM y",
"d MMM, y",
"d/M/yyyy",
}
},
{ "DefaultNumberingSystem", "latn" },
{ "latn.NumberElements",
new String[] {
",",
"\u00a0",
";",
"%",
"0",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "NumberPatterns",
new String[] {
"#,##0.###",
"#,##0.00\u00a0\u00a4",
"#,##0\u00a0%",
}
},
};
return data;
}
}

View File

@@ -0,0 +1,308 @@
/*
* Copyright (c) 2012, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
* COPYRIGHT AND PERMISSION NOTICE
*
* Copyright (C) 1991-2012 Unicode, Inc. All rights reserved. Distributed under
* the Terms of Use in http://www.unicode.org/copyright.html.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of the Unicode data files and any associated documentation (the "Data
* Files") or Unicode software and any associated documentation (the
* "Software") to deal in the Data Files or Software without restriction,
* including without limitation the rights to use, copy, modify, merge,
* publish, distribute, and/or sell copies of the Data Files or Software, and
* to permit persons to whom the Data Files or Software are furnished to do so,
* provided that (a) the above copyright notice(s) and this permission notice
* appear with all copies of the Data Files or Software, (b) both the above
* copyright notice(s) and this permission notice appear in associated
* documentation, and (c) there is clear notice in each modified Data File or
* in the Software as well as in the documentation associated with the Data
* File(s) or Software that the data or software has been modified.
*
* THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
* KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
* THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
* INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR
* CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THE DATA FILES OR SOFTWARE.
*
* Except as contained in this notice, the name of a copyright holder shall not
* be used in advertising or otherwise to promote the sale, use or other
* dealings in these Data Files or Software without prior written authorization
* of the copyright holder.
*/
package sun.text.resources.cldr.be;
import java.util.ListResourceBundle;
public class FormatData_be extends ListResourceBundle {
@Override
protected final Object[][] getContents() {
final Object[][] data = new Object[][] {
{ "MonthNames",
new String[] {
"\u0441\u0442\u0443\u0434\u0437\u0435\u043d\u044c",
"\u043b\u044e\u0442\u044b",
"\u0441\u0430\u043a\u0430\u0432\u0456\u043a",
"\u043a\u0440\u0430\u0441\u0430\u0432\u0456\u043a",
"\u043c\u0430\u0439",
"\u0447\u044d\u0440\u0432\u0435\u043d\u044c",
"\u043b\u0456\u043f\u0435\u043d\u044c",
"\u0436\u043d\u0456\u0432\u0435\u043d\u044c",
"\u0432\u0435\u0440\u0430\u0441\u0435\u043d\u044c",
"\u043a\u0430\u0441\u0442\u0440\u044b\u0447\u043d\u0456\u043a",
"\u043b\u0456\u0441\u0442\u0430\u043f\u0430\u0434",
"\u0441\u043d\u0435\u0436\u0430\u043d\u044c",
"",
}
},
{ "standalone.MonthNames",
new String[] {
"",
"",
"",
"",
"\u0442\u0440\u0430\u0432\u0435\u043d\u044c",
"",
"",
"",
"",
"",
"",
"",
"",
}
},
{ "MonthAbbreviations",
new String[] {
"\u0441\u0442\u0443",
"\u043b\u044e\u0442",
"\u0441\u0430\u043a",
"\u043a\u0440\u0430",
"\u043c\u0430\u0439",
"\u0447\u044d\u0440",
"\u043b\u0456\u043f",
"\u0436\u043d\u0456",
"\u0432\u0435\u0440",
"\u043a\u0430\u0441",
"\u043b\u0456\u0441",
"\u0441\u043d\u0435",
"",
}
},
{ "standalone.MonthAbbreviations",
new String[] {
"",
"",
"",
"",
"\u0442\u0440\u0430",
"",
"",
"",
"",
"",
"",
"",
"",
}
},
{ "MonthNarrows",
new String[] {
"",
"",
"",
"",
"\u0442",
"",
"",
"",
"",
"",
"",
"",
"",
}
},
{ "standalone.MonthNarrows",
new String[] {
"\u0441",
"\u043b",
"\u0441",
"\u043a",
"\u043c",
"\u0447",
"\u043b",
"\u0436",
"\u0432",
"\u043a",
"\u043b",
"\u0441",
"",
}
},
{ "DayNames",
new String[] {
"\u043d\u044f\u0434\u0437\u0435\u043b\u044f",
"\u043f\u0430\u043d\u044f\u0434\u0437\u0435\u043b\u0430\u043a",
"\u0430\u045e\u0442\u043e\u0440\u0430\u043a",
"\u0441\u0435\u0440\u0430\u0434\u0430",
"\u0447\u0430\u0446\u0432\u0435\u0440",
"\u043f\u044f\u0442\u043d\u0456\u0446\u0430",
"\u0441\u0443\u0431\u043e\u0442\u0430",
}
},
{ "DayAbbreviations",
new String[] {
"\u043d\u0434",
"\u043f\u043d",
"\u0430\u045e",
"\u0441\u0440",
"\u0447\u0446",
"\u043f\u0442",
"\u0441\u0431",
}
},
{ "DayNarrows",
new String[] {
"\u043d",
"\u043f",
"\u0430",
"\u0441",
"\u0447",
"\u043f",
"\u0441",
}
},
{ "QuarterNames",
new String[] {
"1-\u0448\u044b \u043a\u0432\u0430\u0440\u0442\u0430\u043b",
"2-\u0433\u0456 \u043a\u0432\u0430\u0440\u0442\u0430\u043b",
"3-\u0446\u0456 \u043a\u0432\u0430\u0440\u0442\u0430\u043b",
"4-\u0442\u044b \u043a\u0432\u0430\u0440\u0442\u0430\u043b",
}
},
{ "QuarterAbbreviations",
new String[] {
"1-\u0448\u044b \u043a\u0432.",
"2-\u0433\u0456 \u043a\u0432.",
"3-\u0446\u0456 \u043a\u0432.",
"4-\u0442\u044b \u043a\u0432.",
}
},
{ "AmPmMarkers",
new String[] {
"\u0434\u0430 \u043f\u0430\u043b\u0443\u0434\u043d\u044f",
"\u043f\u0430\u0441\u043b\u044f \u043f\u0430\u043b\u0443\u0434\u043d\u044f",
}
},
{ "Eras",
new String[] {
"\u0434\u0430 \u043d.\u044d.",
"\u043d.\u044d.",
}
},
{ "field.era", "\u044d\u0440\u0430" },
{ "field.year", "\u0433\u043e\u0434" },
{ "field.month", "\u043c\u0435\u0441\u044f\u0446" },
{ "field.week", "\u0442\u044b\u0434\u0437\u0435\u043d\u044c" },
{ "field.weekday", "\u0434\u0437\u0435\u043d\u044c \u0442\u044b\u0434\u043d\u044f" },
{ "field.dayperiod", "\u0414\u041f/\u041f\u041f" },
{ "field.hour", "\u0433\u0430\u0434\u0437\u0456\u043d\u0430" },
{ "field.minute", "\u0445\u0432\u0456\u043b\u0456\u043d\u0430" },
{ "field.second", "\u0441\u0435\u043a\u0443\u043d\u0434\u0430" },
{ "field.zone", "Zone" },
{ "TimePatterns",
new String[] {
"HH.mm.ss zzzz",
"HH.mm.ss z",
"HH.mm.ss",
"HH.mm",
}
},
{ "DatePatterns",
new String[] {
"EEEE, d MMMM y",
"d MMMM y",
"d.M.yyyy",
"d.M.yy",
}
},
{ "java.time.buddhist.DatePatterns",
new String[] {
"EEEE, d MMMM y G",
"d MMMM y G",
"d MMM y G",
"d.M.yy",
}
},
{ "buddhist.DatePatterns",
new String[] {
"EEEE, d MMMM y GGGG",
"d MMMM y GGGG",
"d MMM y GGGG",
"d.M.yy",
}
},
{ "calendarname.islamic-civil", "\u043c\u0443\u0441\u0443\u043b\u044c\u043c\u0430\u043d\u0441\u043a\u0456 \u0441\u0432\u0435\u0446\u043a\u0456 \u043a\u0430\u043b\u044f\u043d\u0434\u0430\u0440" },
{ "calendarname.islamicc", "\u043c\u0443\u0441\u0443\u043b\u044c\u043c\u0430\u043d\u0441\u043a\u0456 \u0441\u0432\u0435\u0446\u043a\u0456 \u043a\u0430\u043b\u044f\u043d\u0434\u0430\u0440" },
{ "calendarname.gregorian", "\u0433\u0440\u044d\u0433\u0430\u0440\u044b\u044f\u043d\u0441\u043a\u0456 \u043a\u0430\u043b\u044f\u043d\u0434\u0430\u0440" },
{ "calendarname.gregory", "\u0433\u0440\u044d\u0433\u0430\u0440\u044b\u044f\u043d\u0441\u043a\u0456 \u043a\u0430\u043b\u044f\u043d\u0434\u0430\u0440" },
{ "calendarname.japanese", "\u044f\u043f\u043e\u043d\u0441\u043a\u0456 \u043a\u0430\u043b\u044f\u043d\u0434\u0430\u0440" },
{ "calendarname.buddhist", "\u0431\u0443\u0434\u044b\u0441\u0446\u043a\u0456 \u043a\u0430\u043b\u044f\u043d\u0434\u0430\u0440" },
{ "calendarname.islamic", "\u043c\u0443\u0441\u0443\u043b\u044c\u043c\u0430\u043d\u0441\u043a\u0456 \u043a\u0430\u043b\u044f\u043d\u0434\u0430\u0440" },
{ "DefaultNumberingSystem", "latn" },
{ "latn.NumberElements",
new String[] {
",",
"\u00a0",
";",
"%",
"0",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "NumberPatterns",
new String[] {
"#,##0.###",
"\u00a4#,##0.00",
"#,##0%",
}
},
};
return data;
}
}

View File

@@ -0,0 +1,185 @@
/*
* Copyright (c) 2012, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
* COPYRIGHT AND PERMISSION NOTICE
*
* Copyright (C) 1991-2012 Unicode, Inc. All rights reserved. Distributed under
* the Terms of Use in http://www.unicode.org/copyright.html.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of the Unicode data files and any associated documentation (the "Data
* Files") or Unicode software and any associated documentation (the
* "Software") to deal in the Data Files or Software without restriction,
* including without limitation the rights to use, copy, modify, merge,
* publish, distribute, and/or sell copies of the Data Files or Software, and
* to permit persons to whom the Data Files or Software are furnished to do so,
* provided that (a) the above copyright notice(s) and this permission notice
* appear with all copies of the Data Files or Software, (b) both the above
* copyright notice(s) and this permission notice appear in associated
* documentation, and (c) there is clear notice in each modified Data File or
* in the Software as well as in the documentation associated with the Data
* File(s) or Software that the data or software has been modified.
*
* THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
* KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
* THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
* INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR
* CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THE DATA FILES OR SOFTWARE.
*
* Except as contained in this notice, the name of a copyright holder shall not
* be used in advertising or otherwise to promote the sale, use or other
* dealings in these Data Files or Software without prior written authorization
* of the copyright holder.
*/
package sun.text.resources.cldr.bem;
import java.util.ListResourceBundle;
public class FormatData_bem extends ListResourceBundle {
@Override
protected final Object[][] getContents() {
final Object[][] data = new Object[][] {
{ "MonthNames",
new String[] {
"Januari",
"Februari",
"Machi",
"Epreo",
"Mei",
"Juni",
"Julai",
"Ogasti",
"Septemba",
"Oktoba",
"Novemba",
"Disemba",
"",
}
},
{ "MonthAbbreviations",
new String[] {
"Jan",
"Feb",
"Mac",
"Epr",
"Mei",
"Jun",
"Jul",
"Oga",
"Sep",
"Okt",
"Nov",
"Dis",
"",
}
},
{ "MonthNarrows",
new String[] {
"J",
"F",
"M",
"E",
"M",
"J",
"J",
"O",
"S",
"O",
"N",
"D",
"",
}
},
{ "DayNames",
new String[] {
"Pa Mulungu",
"Palichimo",
"Palichibuli",
"Palichitatu",
"Palichine",
"Palichisano",
"Pachibelushi",
}
},
{ "AmPmMarkers",
new String[] {
"uluchelo",
"akasuba",
}
},
{ "long.Eras",
new String[] {
"Before Yesu",
"After Yesu",
}
},
{ "Eras",
new String[] {
"BC",
"AD",
}
},
{ "field.era", "Inkulo" },
{ "field.year", "Umwaka" },
{ "field.month", "Umweshi" },
{ "field.week", "Umulungu" },
{ "field.weekday", "Ubushiku" },
{ "field.dayperiod", "Akasuba" },
{ "field.hour", "Insa" },
{ "field.minute", "Mineti" },
{ "field.second", "Sekondi" },
{ "TimePatterns",
new String[] {
"h:mm:ss a zzzz",
"h:mm:ss a z",
"h:mm:ss a",
"h:mm a",
}
},
{ "DatePatterns",
new String[] {
"EEEE, d MMMM y",
"d MMMM y",
"d MMM y",
"dd/MM/yyyy",
}
},
{ "NumberPatterns",
new String[] {
"#,##0.###",
"\u00a4#,##0.00;(\u00a4#,##0.00)",
"#,##0%",
}
},
};
return data;
}
}

View File

@@ -0,0 +1,224 @@
/*
* Copyright (c) 2012, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
* COPYRIGHT AND PERMISSION NOTICE
*
* Copyright (C) 1991-2012 Unicode, Inc. All rights reserved. Distributed under
* the Terms of Use in http://www.unicode.org/copyright.html.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of the Unicode data files and any associated documentation (the "Data
* Files") or Unicode software and any associated documentation (the
* "Software") to deal in the Data Files or Software without restriction,
* including without limitation the rights to use, copy, modify, merge,
* publish, distribute, and/or sell copies of the Data Files or Software, and
* to permit persons to whom the Data Files or Software are furnished to do so,
* provided that (a) the above copyright notice(s) and this permission notice
* appear with all copies of the Data Files or Software, (b) both the above
* copyright notice(s) and this permission notice appear in associated
* documentation, and (c) there is clear notice in each modified Data File or
* in the Software as well as in the documentation associated with the Data
* File(s) or Software that the data or software has been modified.
*
* THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
* KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
* THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
* INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR
* CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THE DATA FILES OR SOFTWARE.
*
* Except as contained in this notice, the name of a copyright holder shall not
* be used in advertising or otherwise to promote the sale, use or other
* dealings in these Data Files or Software without prior written authorization
* of the copyright holder.
*/
package sun.text.resources.cldr.bez;
import java.util.ListResourceBundle;
public class FormatData_bez extends ListResourceBundle {
@Override
protected final Object[][] getContents() {
final Object[][] data = new Object[][] {
{ "MonthNames",
new String[] {
"pa mwedzi gwa hutala",
"pa mwedzi gwa wuvili",
"pa mwedzi gwa wudatu",
"pa mwedzi gwa wutai",
"pa mwedzi gwa wuhanu",
"pa mwedzi gwa sita",
"pa mwedzi gwa saba",
"pa mwedzi gwa nane",
"pa mwedzi gwa tisa",
"pa mwedzi gwa kumi",
"pa mwedzi gwa kumi na moja",
"pa mwedzi gwa kumi na mbili",
"",
}
},
{ "MonthAbbreviations",
new String[] {
"Hut",
"Vil",
"Dat",
"Tai",
"Han",
"Sit",
"Sab",
"Nan",
"Tis",
"Kum",
"Kmj",
"Kmb",
"",
}
},
{ "MonthNarrows",
new String[] {
"H",
"V",
"D",
"T",
"H",
"S",
"S",
"N",
"T",
"K",
"K",
"K",
"",
}
},
{ "DayNames",
new String[] {
"pa mulungu",
"pa shahuviluha",
"pa hivili",
"pa hidatu",
"pa hitayi",
"pa hihanu",
"pa shahulembela",
}
},
{ "DayAbbreviations",
new String[] {
"Mul",
"Vil",
"Hiv",
"Hid",
"Hit",
"Hih",
"Lem",
}
},
{ "DayNarrows",
new String[] {
"M",
"J",
"H",
"H",
"H",
"W",
"J",
}
},
{ "QuarterNames",
new String[] {
"Lobo 1",
"Lobo 2",
"Lobo 3",
"Lobo 4",
}
},
{ "QuarterAbbreviations",
new String[] {
"L1",
"L2",
"L3",
"L4",
}
},
{ "AmPmMarkers",
new String[] {
"pamilau",
"pamunyi",
}
},
{ "long.Eras",
new String[] {
"Kabla ya Mtwaa",
"Baada ya Mtwaa",
}
},
{ "Eras",
new String[] {
"KM",
"BM",
}
},
{ "field.era", "Amajira" },
{ "field.year", "Mwaha" },
{ "field.month", "Mwedzi" },
{ "field.week", "Mlungu gumamfu" },
{ "field.weekday", "Sihudza kasi" },
{ "field.dayperiod", "Lwamelau" },
{ "field.hour", "Saa" },
{ "field.minute", "Dakika" },
{ "field.second", "Sekunde" },
{ "field.zone", "Amajira ga saa" },
{ "TimePatterns",
new String[] {
"h:mm:ss a zzzz",
"h:mm:ss a z",
"h:mm:ss a",
"h:mm a",
}
},
{ "DatePatterns",
new String[] {
"EEEE, d MMMM y",
"d MMMM y",
"d MMM y",
"dd/MM/yyyy",
}
},
{ "NumberPatterns",
new String[] {
"#,##0.###",
"#,##0.00\u00a4",
"#,##0%",
}
},
};
return data;
}
}

View File

@@ -0,0 +1,292 @@
/*
* Copyright (c) 2012, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
* COPYRIGHT AND PERMISSION NOTICE
*
* Copyright (C) 1991-2012 Unicode, Inc. All rights reserved. Distributed under
* the Terms of Use in http://www.unicode.org/copyright.html.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of the Unicode data files and any associated documentation (the "Data
* Files") or Unicode software and any associated documentation (the
* "Software") to deal in the Data Files or Software without restriction,
* including without limitation the rights to use, copy, modify, merge,
* publish, distribute, and/or sell copies of the Data Files or Software, and
* to permit persons to whom the Data Files or Software are furnished to do so,
* provided that (a) the above copyright notice(s) and this permission notice
* appear with all copies of the Data Files or Software, (b) both the above
* copyright notice(s) and this permission notice appear in associated
* documentation, and (c) there is clear notice in each modified Data File or
* in the Software as well as in the documentation associated with the Data
* File(s) or Software that the data or software has been modified.
*
* THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
* KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
* THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
* INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR
* CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THE DATA FILES OR SOFTWARE.
*
* Except as contained in this notice, the name of a copyright holder shall not
* be used in advertising or otherwise to promote the sale, use or other
* dealings in these Data Files or Software without prior written authorization
* of the copyright holder.
*/
package sun.text.resources.cldr.bg;
import java.util.ListResourceBundle;
public class FormatData_bg extends ListResourceBundle {
@Override
protected final Object[][] getContents() {
final Object[][] data = new Object[][] {
{ "MonthNames",
new String[] {
"\u044f\u043d\u0443\u0430\u0440\u0438",
"\u0444\u0435\u0432\u0440\u0443\u0430\u0440\u0438",
"\u043c\u0430\u0440\u0442",
"\u0430\u043f\u0440\u0438\u043b",
"\u043c\u0430\u0439",
"\u044e\u043d\u0438",
"\u044e\u043b\u0438",
"\u0430\u0432\u0433\u0443\u0441\u0442",
"\u0441\u0435\u043f\u0442\u0435\u043c\u0432\u0440\u0438",
"\u043e\u043a\u0442\u043e\u043c\u0432\u0440\u0438",
"\u043d\u043e\u0435\u043c\u0432\u0440\u0438",
"\u0434\u0435\u043a\u0435\u043c\u0432\u0440\u0438",
"",
}
},
{ "MonthAbbreviations",
new String[] {
"\u044f\u043d.",
"\u0444\u0435\u0432\u0440.",
"\u043c\u0430\u0440\u0442",
"\u0430\u043f\u0440.",
"\u043c\u0430\u0439",
"\u044e\u043d\u0438",
"\u044e\u043b\u0438",
"\u0430\u0432\u0433.",
"\u0441\u0435\u043f\u0442.",
"\u043e\u043a\u0442.",
"\u043d\u043e\u0435\u043c.",
"\u0434\u0435\u043a.",
"",
}
},
{ "MonthNarrows",
new String[] {
"\u044f",
"\u0444",
"\u043c",
"\u0430",
"\u043c",
"\u044e",
"\u044e",
"\u0430",
"\u0441",
"\u043e",
"\u043d",
"\u0434",
"",
}
},
{ "DayNames",
new String[] {
"\u043d\u0435\u0434\u0435\u043b\u044f",
"\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u043d\u0438\u043a",
"\u0432\u0442\u043e\u0440\u043d\u0438\u043a",
"\u0441\u0440\u044f\u0434\u0430",
"\u0447\u0435\u0442\u0432\u044a\u0440\u0442\u044a\u043a",
"\u043f\u0435\u0442\u044a\u043a",
"\u0441\u044a\u0431\u043e\u0442\u0430",
}
},
{ "DayAbbreviations",
new String[] {
"\u043d\u0434",
"\u043f\u043d",
"\u0432\u0442",
"\u0441\u0440",
"\u0447\u0442",
"\u043f\u0442",
"\u0441\u0431",
}
},
{ "DayNarrows",
new String[] {
"\u043d",
"\u043f",
"\u0432",
"\u0441",
"\u0447",
"\u043f",
"\u0441",
}
},
{ "QuarterNames",
new String[] {
"1-\u0432\u043e \u0442\u0440\u0438\u043c\u0435\u0441\u0435\u0447\u0438\u0435",
"2-\u0440\u043e \u0442\u0440\u0438\u043c\u0435\u0441\u0435\u0447\u0438\u0435",
"3-\u0442\u043e \u0442\u0440\u0438\u043c\u0435\u0441\u0435\u0447\u0438\u0435",
"4-\u0442\u043e \u0442\u0440\u0438\u043c\u0435\u0441\u0435\u0447\u0438\u0435",
}
},
{ "QuarterAbbreviations",
new String[] {
"I \u0442\u0440\u0438\u043c.",
"II \u0442\u0440\u0438\u043c.",
"III \u0442\u0440\u0438\u043c.",
"IV \u0442\u0440\u0438\u043c.",
}
},
{ "standalone.QuarterAbbreviations",
new String[] {
"1 \u0442\u0440\u0438\u043c.",
"2 \u0442\u0440\u0438\u043c.",
"3 \u0442\u0440\u0438\u043c.",
"4 \u0442\u0440\u0438\u043c.",
}
},
{ "QuarterNarrows",
new String[] {
"1",
"2",
"3",
"4",
}
},
{ "AmPmMarkers",
new String[] {
"\u043f\u0440. \u043e\u0431.",
"\u0441\u043b. \u043e\u0431.",
}
},
{ "long.Eras",
new String[] {
"\u043f\u0440.\u0425\u0440.",
"\u0441\u043b.\u0425\u0440.",
}
},
{ "Eras",
new String[] {
"\u043f\u0440. \u043d. \u0435.",
"\u043e\u0442 \u043d. \u0435.",
}
},
{ "narrow.Eras",
new String[] {
"",
"\u0441\u043b.\u043d.\u0435.",
}
},
{ "field.era", "\u0435\u0440\u0430" },
{ "field.year", "\u0433\u043e\u0434\u0438\u043d\u0430" },
{ "field.month", "\u043c\u0435\u0441\u0435\u0446" },
{ "field.week", "\u0441\u0435\u0434\u043c\u0438\u0446\u0430" },
{ "field.weekday", "\u0414\u0435\u043d \u043e\u0442 \u0441\u0435\u0434\u043c\u0438\u0446\u0430\u0442\u0430" },
{ "field.dayperiod", "\u0434\u0435\u043d" },
{ "field.hour", "\u0447\u0430\u0441" },
{ "field.minute", "\u043c\u0438\u043d\u0443\u0442\u0430" },
{ "field.second", "\u0441\u0435\u043a\u0443\u043d\u0434\u0430" },
{ "field.zone", "\u0437\u043e\u043d\u0430" },
{ "TimePatterns",
new String[] {
"HH:mm:ss zzzz",
"HH:mm:ss z",
"HH:mm:ss",
"HH:mm",
}
},
{ "DatePatterns",
new String[] {
"dd MMMM y, EEEE",
"dd MMMM y",
"dd.MM.yyyy",
"dd.MM.yy",
}
},
{ "DateTimePatterns",
new String[] {
"{1}, {0}",
}
},
{ "islamic.MonthNames",
new String[] {
"\u043c\u0443\u0445\u0430\u0440\u0430\u043c",
"\u0441\u0430\u0444\u0430\u0440",
"\u0440\u0430\u0431\u0438-1",
"\u0440\u0430\u0431\u0438-2",
"\u0434\u0436\u0443\u043c\u0430\u0434\u0430-1",
"\u0434\u0436\u0443\u043c\u0430\u0434\u0430-2",
"\u0440\u0430\u0434\u0436\u0430\u0431",
"\u0448\u0430\u0431\u0430\u043d",
"\u0440\u0430\u043c\u0430\u0437\u0430\u043d",
"\u0428\u0430\u0432\u0430\u043b",
"\u0414\u0445\u0443\u043b-\u041a\u0430\u0430\u0434\u0430",
"\u0414\u0445\u0443\u043b-\u0445\u0438\u0434\u0436\u0430",
"",
}
},
{ "calendarname.islamic-civil", "\u0418\u0441\u043b\u044f\u043c\u0441\u043a\u0438 \u0446\u0438\u0432\u0438\u043b\u0435\u043d \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440" },
{ "calendarname.islamicc", "\u0418\u0441\u043b\u044f\u043c\u0441\u043a\u0438 \u0446\u0438\u0432\u0438\u043b\u0435\u043d \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440" },
{ "calendarname.buddhist", "\u0411\u0443\u0434\u0438\u0441\u0442\u043a\u0438 \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440" },
{ "calendarname.islamic", "\u0418\u0441\u043b\u044f\u043c\u0441\u043a\u0438 \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440" },
{ "calendarname.gregorian", "\u0413\u0440\u0438\u0433\u043e\u0440\u0438\u0430\u043d\u0441\u043a\u0438 \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440" },
{ "calendarname.gregory", "\u0413\u0440\u0438\u0433\u043e\u0440\u0438\u0430\u043d\u0441\u043a\u0438 \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440" },
{ "calendarname.roc", "\u041a\u0430\u043b\u0435\u043d\u0434\u0430\u0440 \u043d\u0430 \u0420\u0435\u043f\u0443\u0431\u043b\u0438\u043a\u0430 \u041a\u0438\u0442\u0430\u0439" },
{ "calendarname.japanese", "\u042f\u043f\u043e\u043d\u0441\u043a\u0438 \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440" },
{ "DefaultNumberingSystem", "latn" },
{ "latn.NumberElements",
new String[] {
",",
"\u00a0",
";",
"%",
"0",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "NumberPatterns",
new String[] {
"#,##0.###",
"#,##0.00\u00a0\u00a4",
"#,##0%",
}
},
};
return data;
}
}

View File

@@ -0,0 +1,218 @@
/*
* Copyright (c) 2012, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
* COPYRIGHT AND PERMISSION NOTICE
*
* Copyright (C) 1991-2012 Unicode, Inc. All rights reserved. Distributed under
* the Terms of Use in http://www.unicode.org/copyright.html.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of the Unicode data files and any associated documentation (the "Data
* Files") or Unicode software and any associated documentation (the
* "Software") to deal in the Data Files or Software without restriction,
* including without limitation the rights to use, copy, modify, merge,
* publish, distribute, and/or sell copies of the Data Files or Software, and
* to permit persons to whom the Data Files or Software are furnished to do so,
* provided that (a) the above copyright notice(s) and this permission notice
* appear with all copies of the Data Files or Software, (b) both the above
* copyright notice(s) and this permission notice appear in associated
* documentation, and (c) there is clear notice in each modified Data File or
* in the Software as well as in the documentation associated with the Data
* File(s) or Software that the data or software has been modified.
*
* THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
* KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
* THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
* INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR
* CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THE DATA FILES OR SOFTWARE.
*
* Except as contained in this notice, the name of a copyright holder shall not
* be used in advertising or otherwise to promote the sale, use or other
* dealings in these Data Files or Software without prior written authorization
* of the copyright holder.
*/
package sun.text.resources.cldr.bm;
import java.util.ListResourceBundle;
public class FormatData_bm extends ListResourceBundle {
@Override
protected final Object[][] getContents() {
final Object[][] data = new Object[][] {
{ "MonthNames",
new String[] {
"zanwuye",
"feburuye",
"marisi",
"awirili",
"m\u025b",
"zuw\u025bn",
"zuluye",
"uti",
"s\u025btanburu",
"\u0254kut\u0254buru",
"nowanburu",
"desanburu",
"",
}
},
{ "MonthAbbreviations",
new String[] {
"zan",
"feb",
"nar",
"awi",
"m\u025b",
"zuw",
"zul",
"uti",
"s\u025bt",
"\u0254ku",
"now",
"des",
"",
}
},
{ "MonthNarrows",
new String[] {
"Z",
"F",
"M",
"A",
"M",
"Z",
"Z",
"U",
"S",
"\u0186",
"N",
"D",
"",
}
},
{ "DayNames",
new String[] {
"kari",
"nt\u025bn\u025b",
"tarata",
"araba",
"alamisa",
"juma",
"sibiri",
}
},
{ "DayAbbreviations",
new String[] {
"kar",
"nt\u025b",
"tar",
"ara",
"ala",
"jum",
"sib",
}
},
{ "DayNarrows",
new String[] {
"K",
"N",
"T",
"A",
"A",
"J",
"S",
}
},
{ "QuarterNames",
new String[] {
"kalo saba f\u0254l\u0254",
"kalo saba filanan",
"kalo saba sabanan",
"kalo saba naaninan",
}
},
{ "QuarterAbbreviations",
new String[] {
"KS1",
"KS2",
"KS3",
"KS4",
}
},
{ "long.Eras",
new String[] {
"jezu krisiti \u0272\u025b",
"jezu krisiti mink\u025b",
}
},
{ "Eras",
new String[] {
"J.-C. \u0272\u025b",
"ni J.-C.",
}
},
{ "field.era", "tile" },
{ "field.year", "san" },
{ "field.month", "kalo" },
{ "field.week", "d\u0254g\u0254kun" },
{ "field.weekday", "don" },
{ "field.dayperiod", "s\u0254g\u0254ma/tile/wula/su" },
{ "field.hour", "l\u025br\u025b" },
{ "field.minute", "miniti" },
{ "field.second", "sekondi" },
{ "field.zone", "sigikun tilena" },
{ "TimePatterns",
new String[] {
"HH:mm:ss zzzz",
"HH:mm:ss z",
"HH:mm:ss",
"HH:mm",
}
},
{ "DatePatterns",
new String[] {
"EEEE d MMMM y",
"d MMMM y",
"d MMM, y",
"d/M/yyyy",
}
},
{ "NumberPatterns",
new String[] {
"#,##0.###",
"\u00a4#,##0.00;(\u00a4#,##0.00)",
"#,##0%",
}
},
};
return data;
}
}

View File

@@ -0,0 +1,304 @@
/*
* Copyright (c) 2012, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
* COPYRIGHT AND PERMISSION NOTICE
*
* Copyright (C) 1991-2012 Unicode, Inc. All rights reserved. Distributed under
* the Terms of Use in http://www.unicode.org/copyright.html.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of the Unicode data files and any associated documentation (the "Data
* Files") or Unicode software and any associated documentation (the
* "Software") to deal in the Data Files or Software without restriction,
* including without limitation the rights to use, copy, modify, merge,
* publish, distribute, and/or sell copies of the Data Files or Software, and
* to permit persons to whom the Data Files or Software are furnished to do so,
* provided that (a) the above copyright notice(s) and this permission notice
* appear with all copies of the Data Files or Software, (b) both the above
* copyright notice(s) and this permission notice appear in associated
* documentation, and (c) there is clear notice in each modified Data File or
* in the Software as well as in the documentation associated with the Data
* File(s) or Software that the data or software has been modified.
*
* THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
* KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
* THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
* INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR
* CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THE DATA FILES OR SOFTWARE.
*
* Except as contained in this notice, the name of a copyright holder shall not
* be used in advertising or otherwise to promote the sale, use or other
* dealings in these Data Files or Software without prior written authorization
* of the copyright holder.
*/
package sun.text.resources.cldr.bn;
import java.util.ListResourceBundle;
public class FormatData_bn extends ListResourceBundle {
@Override
protected final Object[][] getContents() {
final Object[][] data = new Object[][] {
{ "MonthNames",
new String[] {
"\u099c\u09be\u09a8\u09c1\u09af\u09bc\u09be\u09b0\u09c0",
"\u09ab\u09c7\u09ac\u09cd\u09b0\u09c1\u09af\u09bc\u09be\u09b0\u09c0",
"\u09ae\u09be\u09b0\u09cd\u099a",
"\u098f\u09aa\u09cd\u09b0\u09bf\u09b2",
"\u09ae\u09c7",
"\u099c\u09c1\u09a8",
"\u099c\u09c1\u09b2\u09be\u0987",
"\u0986\u0997\u09b8\u09cd\u099f",
"\u09b8\u09c7\u09aa\u09cd\u099f\u09c7\u09ae\u09cd\u09ac\u09b0",
"\u0985\u0995\u09cd\u099f\u09cb\u09ac\u09b0",
"\u09a8\u09ad\u09c7\u09ae\u09cd\u09ac\u09b0",
"\u09a1\u09bf\u09b8\u09c7\u09ae\u09cd\u09ac\u09b0",
"",
}
},
{ "MonthNarrows",
new String[] {
"\u099c\u09be",
"\u09ab\u09c7",
"\u09ae\u09be",
"\u098f",
"\u09ae\u09c7",
"\u099c\u09c1\u09a8",
"\u099c\u09c1",
"\u0986",
"\u09b8\u09c7",
"\u0985",
"\u09a8",
"\u09a1\u09bf",
"",
}
},
{ "DayNames",
new String[] {
"\u09b0\u09ac\u09bf\u09ac\u09be\u09b0",
"\u09b8\u09cb\u09ae\u09ac\u09be\u09b0",
"\u09ae\u0999\u09cd\u0997\u09b2\u09ac\u09be\u09b0",
"\u09ac\u09c1\u09a7\u09ac\u09be\u09b0",
"\u09ac\u09c3\u09b9\u09b7\u09cd\u09aa\u09a4\u09bf\u09ac\u09be\u09b0",
"\u09b6\u09c1\u0995\u09cd\u09b0\u09ac\u09be\u09b0",
"\u09b6\u09a8\u09bf\u09ac\u09be\u09b0",
}
},
{ "DayAbbreviations",
new String[] {
"\u09b0\u09ac\u09bf",
"\u09b8\u09cb\u09ae",
"\u09ae\u0999\u09cd\u0997\u09b2",
"\u09ac\u09c1\u09a7",
"\u09ac\u09c3\u09b9\u09b8\u09cd\u09aa\u09a4\u09bf",
"\u09b6\u09c1\u0995\u09cd\u09b0",
"\u09b6\u09a8\u09bf",
}
},
{ "DayNarrows",
new String[] {
"\u09b0",
"\u09b8\u09cb",
"\u09ae",
"\u09ac\u09c1",
"\u09ac\u09c3",
"\u09b6\u09c1",
"\u09b6",
}
},
{ "QuarterNames",
new String[] {
"\u09aa\u09cd\u09b0\u09a5\u09ae \u099a\u09a4\u09c1\u09b0\u09cd\u09a5\u09be\u0982\u09b6",
"\u09a6\u09cd\u09ac\u09bf\u09a4\u09c0\u09af\u09bc \u099a\u09a4\u09c1\u09b0\u09cd\u09a5\u09be\u0982\u09b6",
"\u09a4\u09c3\u09a4\u09c0\u09af\u09bc \u099a\u09a4\u09c1\u09b0\u09cd\u09a5\u09be\u0982\u09b6",
"\u099a\u09a4\u09c1\u09b0\u09cd\u09a5 \u099a\u09a4\u09c1\u09b0\u09cd\u09a5\u09be\u0982\u09b6",
}
},
{ "QuarterAbbreviations",
new String[] {
"\u099a\u09a4\u09c1\u09b0\u09cd\u09a5\u09be\u0982\u09b6 \u09e7",
"\u099a\u09a4\u09c1\u09b0\u09cd\u09a5\u09be\u0982\u09b6 \u09e8",
"\u099a\u09a4\u09c1\u09b0\u09cd\u09a5\u09be\u0982\u09b6 \u09e9",
"\u099a\u09a4\u09c1\u09b0\u09cd\u09a5\u09be\u0982\u09b6 \u09ea",
}
},
{ "standalone.QuarterAbbreviations",
new String[] {
"Q1",
"Q2",
"Q3",
"Q4",
}
},
{ "QuarterNarrows",
new String[] {
"1",
"2",
"3",
"4",
}
},
{ "standalone.QuarterNarrows",
new String[] {
"\u09e7",
"\u09e8",
"\u09e9",
"\u09ea",
}
},
{ "AmPmMarkers",
new String[] {
"\u09aa\u09c2\u09b0\u09cd\u09ac\u09be\u09b9\u09cd\u09a3",
"\u0985\u09aa\u09b0\u09be\u09b9\u09cd\u09a3",
}
},
{ "Eras",
new String[] {
"\u0996\u09c3\u09b7\u09cd\u099f\u09aa\u09c2\u09b0\u09cd\u09ac",
"\u0996\u09c3\u09b7\u09cd\u099f\u09be\u09ac\u09cd\u09a6",
}
},
{ "field.era", "\u09af\u09c1\u0997" },
{ "field.year", "\u09ac\u099b\u09b0" },
{ "field.month", "\u09ae\u09be\u09b8" },
{ "field.week", "\u09b8\u09aa\u09cd\u09a4\u09be\u09b9" },
{ "field.weekday", "\u09b8\u09aa\u09cd\u09a4\u09be\u09b9\u09c7\u09b0 \u09a6\u09bf\u09a8" },
{ "field.dayperiod", "\u09aa\u09c2\u09b0\u09cd\u09ac\u09be\u09b9\u09cd\u09a3/\u0985\u09aa\u09b0\u09be\u09b9\u09cd\u09a3" },
{ "field.hour", "\u0998\u09a8\u09cd\u099f\u09be" },
{ "field.minute", "\u09ae\u09bf\u09a8\u09bf\u099f" },
{ "field.second", "\u09b8\u09c7\u0995\u09c7\u09a8\u09cd\u09a1" },
{ "field.zone", "\u098f\u09b2\u09be\u0995\u09be" },
{ "TimePatterns",
new String[] {
"h:mm:ss a zzzz",
"h:mm:ss a z",
"h:mm:ss a",
"h:mm a",
}
},
{ "DatePatterns",
new String[] {
"EEEE, d MMMM, y",
"d MMMM, y",
"d MMM, y",
"d/M/yy",
}
},
{ "islamic.MonthNames",
new String[] {
"\u09ae\u09b9\u09b0\u09b0\u09ae",
"\u09b8\u09ab\u09b0",
"\u09b0\u09ac\u09bf\u0989\u09b2 \u0986\u0989\u09af\u09bc\u09be\u09b2",
"\u09b0\u09ac\u09bf\u0989\u09b8 \u09b8\u09be\u09a8\u09bf",
"\u099c\u09ae\u09be\u09a6\u09bf\u0989\u09b2 \u0986\u0989\u09af\u09bc\u09be\u09b2",
"\u099c\u09ae\u09be\u09a6\u09bf\u0989\u09b8 \u09b8\u09be\u09a8\u09bf",
"\u09b0\u099c\u09ac",
"\u09b6\u09be'\u09ac\u09be\u09a8",
"\u09b0\u09ae\u099c\u09be\u09a8",
"\u09b6\u09be\u0993\u09af\u09bc\u09be\u09b2",
"\u099c\u09cd\u09ac\u09bf\u09b2\u0995\u09a6",
"\u099c\u09cd\u09ac\u09bf\u09b2\u09b9\u099c\u09cd\u099c",
"",
}
},
{ "islamic.MonthNarrows",
new String[] {
"\u09e7",
"\u09e8",
"\u09e9",
"\u09ea",
"\u09eb",
"\u09ec",
"\u09ed",
"\u09ee",
"\u09ef",
"\u09e7\u09e6",
"\u09e7\u09e7",
"\u09e7\u09e8",
"",
}
},
{ "islamic.Eras",
new String[] {
"",
"\u09af\u09c1\u0997",
}
},
{ "calendarname.islamic-civil", "\u0987\u09b8\u09b2\u09be\u09ae\u09bf\u0995-\u09b8\u09bf\u09ad\u09bf\u09b2 \u09ac\u09b0\u09cd\u09b7\u09aa\u099e\u09cd\u099c\u09c0" },
{ "calendarname.islamicc", "\u0987\u09b8\u09b2\u09be\u09ae\u09bf\u0995-\u09b8\u09bf\u09ad\u09bf\u09b2 \u09ac\u09b0\u09cd\u09b7\u09aa\u099e\u09cd\u099c\u09c0" },
{ "calendarname.buddhist", "\u09ac\u09cc\u09a6\u09cd\u09a7 \u09ac\u09b0\u09cd\u09b7\u09aa\u099e\u09cd\u099c\u09c0" },
{ "calendarname.islamic", "\u0987\u09b8\u09b2\u09be\u09ae\u09bf\u0995 \u09ac\u09b0\u09cd\u09b7\u09aa\u099e\u09cd\u099c\u09c0" },
{ "calendarname.gregorian", "\u0997\u09cd\u09b0\u09bf\u0997\u09cb\u09b0\u09bf\u09af\u09bc\u09be\u09a8 \u09ac\u09b0\u09cd\u09b7\u09aa\u099e\u09cd\u099c\u09c0" },
{ "calendarname.gregory", "\u0997\u09cd\u09b0\u09bf\u0997\u09cb\u09b0\u09bf\u09af\u09bc\u09be\u09a8 \u09ac\u09b0\u09cd\u09b7\u09aa\u099e\u09cd\u099c\u09c0" },
{ "calendarname.roc", "\u0997\u09a3\u09aa\u09cd\u09b0\u099c\u09be\u09a4\u09a8\u09cd\u09a4\u09cd\u09b0\u09c0 \u099a\u09c0\u09a8\u09be \u09ac\u09b0\u09cd\u09b7\u09aa\u099e\u09cd\u099c\u09c0" },
{ "calendarname.japanese", "\u099c\u09be\u09aa\u09be\u09a8\u09bf \u09ac\u09b0\u09cd\u09b7\u09aa\u099e\u09cd\u099c\u09c0" },
{ "DefaultNumberingSystem", "latn" },
{ "beng.NumberElements",
new String[] {
".",
",",
";",
"%",
"\u09e6",
"#",
"-",
"E",
"\u2030",
"\u221e",
"\u09b8\u0982\u0996\u09cd\u09af\u09be \u09a8\u09be",
}
},
{ "latn.NumberElements",
new String[] {
".",
",",
";",
"%",
"0",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "NumberPatterns",
new String[] {
"#,##,##0.###",
"#,##,##0.00\u00a4;(#,##,##0.00\u00a4)",
"#,##,##0%",
}
},
};
return data;
}
}

View File

@@ -0,0 +1,91 @@
/*
* Copyright (c) 2012, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
* COPYRIGHT AND PERMISSION NOTICE
*
* Copyright (C) 1991-2012 Unicode, Inc. All rights reserved. Distributed under
* the Terms of Use in http://www.unicode.org/copyright.html.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of the Unicode data files and any associated documentation (the "Data
* Files") or Unicode software and any associated documentation (the
* "Software") to deal in the Data Files or Software without restriction,
* including without limitation the rights to use, copy, modify, merge,
* publish, distribute, and/or sell copies of the Data Files or Software, and
* to permit persons to whom the Data Files or Software are furnished to do so,
* provided that (a) the above copyright notice(s) and this permission notice
* appear with all copies of the Data Files or Software, (b) both the above
* copyright notice(s) and this permission notice appear in associated
* documentation, and (c) there is clear notice in each modified Data File or
* in the Software as well as in the documentation associated with the Data
* File(s) or Software that the data or software has been modified.
*
* THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
* KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
* THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
* INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR
* CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THE DATA FILES OR SOFTWARE.
*
* Except as contained in this notice, the name of a copyright holder shall not
* be used in advertising or otherwise to promote the sale, use or other
* dealings in these Data Files or Software without prior written authorization
* of the copyright holder.
*/
package sun.text.resources.cldr.bn;
import java.util.ListResourceBundle;
public class FormatData_bn_IN extends ListResourceBundle {
@Override
protected final Object[][] getContents() {
final Object[][] data = new Object[][] {
{ "QuarterNames",
new String[] {
"\u09a4\u09cd\u09b0\u09c8\u09ae\u09be\u09b8\u09bf\u0995",
"\u09b7\u09be\u09a3\u09cd\u09ae\u09be\u09b8\u09bf\u0995",
"\u09a4\u09c3\u09a4\u09c0\u09af\u09bc \u099a\u09a4\u09c1\u09b0\u09cd\u09a5\u09be\u0982\u09b6",
"\u09ac\u09be\u09b0\u09cd\u09b7\u09bf\u0995",
}
},
{ "QuarterAbbreviations",
new String[] {
"\u09a4\u09cd\u09b0\u09c8\u09ae\u09be\u09b8\u09bf\u0995",
"\u09b7\u09be\u09a3\u09cd\u09ae\u09be\u09b8\u09bf\u0995",
"\u099a\u09a4\u09c1\u09b0\u09cd\u09a5\u09be\u0982\u09b6 \u09e9",
"\u09ac\u09be\u09b0\u09cd\u09b7\u09bf\u0995",
}
},
{ "field.hour", "\u0998\u09a3\u09cd\u099f\u09be" },
{ "field.second", "\u09b8\u09c7\u0995\u09c7\u09a3\u09cd\u09a1" },
};
return data;
}
}

View File

@@ -0,0 +1,204 @@
/*
* Copyright (c) 2012, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
* COPYRIGHT AND PERMISSION NOTICE
*
* Copyright (C) 1991-2012 Unicode, Inc. All rights reserved. Distributed under
* the Terms of Use in http://www.unicode.org/copyright.html.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of the Unicode data files and any associated documentation (the "Data
* Files") or Unicode software and any associated documentation (the
* "Software") to deal in the Data Files or Software without restriction,
* including without limitation the rights to use, copy, modify, merge,
* publish, distribute, and/or sell copies of the Data Files or Software, and
* to permit persons to whom the Data Files or Software are furnished to do so,
* provided that (a) the above copyright notice(s) and this permission notice
* appear with all copies of the Data Files or Software, (b) both the above
* copyright notice(s) and this permission notice appear in associated
* documentation, and (c) there is clear notice in each modified Data File or
* in the Software as well as in the documentation associated with the Data
* File(s) or Software that the data or software has been modified.
*
* THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
* KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
* THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
* INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR
* CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THE DATA FILES OR SOFTWARE.
*
* Except as contained in this notice, the name of a copyright holder shall not
* be used in advertising or otherwise to promote the sale, use or other
* dealings in these Data Files or Software without prior written authorization
* of the copyright holder.
*/
package sun.text.resources.cldr.bo;
import java.util.ListResourceBundle;
public class FormatData_bo extends ListResourceBundle {
@Override
protected final Object[][] getContents() {
final Object[][] data = new Object[][] {
{ "MonthNames",
new String[] {
"\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0f44\u0f0b\u0f54\u0f7c\u0f0b",
"\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f42\u0f49\u0f72\u0f66\u0f0b\u0f54\u0f0b",
"\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f66\u0f74\u0f58\u0f0b\u0f54\u0f0b",
"\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f5e\u0f72\u0f0b\u0f54\u0f0b",
"\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f63\u0f94\u0f0b\u0f54\u0f0b",
"\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0fb2\u0f74\u0f42\u0f0b\u0f54\u0f0b",
"\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f51\u0f74\u0f53\u0f0b\u0f54\u0f0b",
"\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f62\u0f92\u0fb1\u0f51\u0f0b\u0f54\u0f0b",
"\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0f42\u0f74\u0f0b\u0f54\u0f0b",
"\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f54\u0f0b",
"\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f42\u0f45\u0f72\u0f42\u0f0b\u0f54\u0f0b",
"\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f42\u0f49\u0f72\u0f66\u0f0b\u0f54\u0f0b",
"",
}
},
{ "MonthAbbreviations",
new String[] {
"\u0f5f\u0fb3\u0f0b\u0f21",
"\u0f5f\u0fb3\u0f0b\u0f22",
"\u0f5f\u0fb3\u0f0b\u0f23",
"\u0f5f\u0fb3\u0f0b\u0f24",
"\u0f5f\u0fb3\u0f0b\u0f25",
"\u0f5f\u0fb3\u0f0b\u0f26",
"\u0f5f\u0fb3\u0f0b\u0f27",
"\u0f5f\u0fb3\u0f0b\u0f28",
"\u0f5f\u0fb3\u0f0b\u0f29",
"\u0f5f\u0fb3\u0f0b\u0f21\u0f20",
"\u0f5f\u0fb3\u0f0b\u0f21\u0f21",
"\u0f5f\u0fb3\u0f0b\u0f21\u0f22",
"",
}
},
{ "DayNames",
new String[] {
"\u0f42\u0f5f\u0f60\u0f0b\u0f49\u0f72\u0f0b\u0f58\u0f0b",
"\u0f42\u0f5f\u0f60\u0f0b\u0f5f\u0fb3\u0f0b\u0f56\u0f0b",
"\u0f42\u0f5f\u0f60\u0f0b\u0f58\u0f72\u0f42\u0f0b\u0f51\u0f58\u0f62\u0f0b",
"\u0f42\u0f5f\u0f60\u0f0b\u0f67\u0fb3\u0f42\u0f0b\u0f54\u0f0b",
"\u0f42\u0f5f\u0f60\u0f0b\u0f55\u0f74\u0f62\u0f0b\u0f56\u0f74\u0f0b",
"\u0f42\u0f5f\u0f60\u0f0b\u0f66\u0f44\u0f66\u0f0b",
"\u0f42\u0f5f\u0f60\u0f0b\u0f66\u0fa4\u0f7a\u0f53\u0f0b\u0f54\u0f0b",
}
},
{ "DayAbbreviations",
new String[] {
"\u0f49\u0f72\u0f0b\u0f58\u0f0b",
"\u0f5f\u0fb3\u0f0b\u0f56\u0f0b",
"\u0f58\u0f72\u0f42\u0f0b\u0f51\u0f58\u0f62\u0f0b",
"\u0f67\u0fb3\u0f42\u0f0b\u0f54\u0f0b",
"\u0f55\u0f74\u0f62\u0f0b\u0f56\u0f74\u0f0b",
"\u0f66\u0f44\u0f66\u0f0b",
"\u0f66\u0fa4\u0f7a\u0f53\u0f0b\u0f54\u0f0b",
}
},
{ "DayNarrows",
new String[] {
"\u0f49\u0f72",
"\u0f5f\u0fb3",
"\u0f58\u0f72",
"\u0f67\u0fb3",
"\u0f55\u0f74",
"\u0f66",
"\u0f66\u0fa4\u0f7a",
}
},
{ "AmPmMarkers",
new String[] {
"\u0f66\u0f94\u0f0b\u0f51\u0fb2\u0f7c\u0f0b",
"\u0f55\u0fb1\u0f72\u0f0b\u0f51\u0fb2\u0f7c\u0f0b",
}
},
{ "Eras",
new String[] {
"\u0f66\u0fa4\u0fb1\u0f72\u0f0b\u0f63\u0f7c\u0f0b\u0f66\u0f94\u0f7c\u0f53\u0f0d",
"\u0f66\u0fa4\u0fb1\u0f72\u0f0b\u0f63\u0f7c\u0f0d",
}
},
{ "field.year", "\u0f63\u0f7c\u0f0d" },
{ "field.month", "\u0f5f\u0fb3\u0f0b\u0f56\u0f0b" },
{ "field.hour", "\u0f46\u0f74\u0f0b\u0f59\u0f7c\u0f0b" },
{ "field.minute", "\u0f66\u0f90\u0f62\u0f0b\u0f58\u0f0d" },
{ "field.second", "\u0f66\u0f90\u0f62\u0f0b\u0f46\u0f0d" },
{ "field.zone", "\u0f51\u0f74\u0f66\u0f0b\u0f5a\u0f7c\u0f51\u0f0d" },
{ "DatePatterns",
new String[] {
"EEEE, y MMMM dd",
"\u0f66\u0fa6\u0fb1\u0f72\u0f0b\u0f63\u0f7c\u0f0by MMMM\u0f60\u0f72\u0f0b\u0f59\u0f7a\u0f66\u0f0bd\u0f51",
"y \u0f63\u0f7c\u0f0b\u0f60\u0f72\u0f0bMMM\u0f59\u0f7a\u0f66\u0f0bd",
"yyyy-MM-dd",
}
},
{ "DefaultNumberingSystem", "latn" },
{ "latn.NumberElements",
new String[] {
".",
",",
";",
"%",
"0",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "tibt.NumberElements",
new String[] {
".",
",",
";",
"%",
"\u0f20",
"#",
"-",
"E",
"\u2030",
"\u221e",
"\u0f68\u0f44\u0f0b\u0f58\u0f7a\u0f53\u0f0b",
}
},
{ "NumberPatterns",
new String[] {
"#,##0.###",
"\u00a4\u00a0#,##0.00",
"#,##0%",
}
},
};
return data;
}
}

View File

@@ -0,0 +1,236 @@
/*
* Copyright (c) 2012, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
* COPYRIGHT AND PERMISSION NOTICE
*
* Copyright (C) 1991-2012 Unicode, Inc. All rights reserved. Distributed under
* the Terms of Use in http://www.unicode.org/copyright.html.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of the Unicode data files and any associated documentation (the "Data
* Files") or Unicode software and any associated documentation (the
* "Software") to deal in the Data Files or Software without restriction,
* including without limitation the rights to use, copy, modify, merge,
* publish, distribute, and/or sell copies of the Data Files or Software, and
* to permit persons to whom the Data Files or Software are furnished to do so,
* provided that (a) the above copyright notice(s) and this permission notice
* appear with all copies of the Data Files or Software, (b) both the above
* copyright notice(s) and this permission notice appear in associated
* documentation, and (c) there is clear notice in each modified Data File or
* in the Software as well as in the documentation associated with the Data
* File(s) or Software that the data or software has been modified.
*
* THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
* KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
* THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
* INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR
* CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THE DATA FILES OR SOFTWARE.
*
* Except as contained in this notice, the name of a copyright holder shall not
* be used in advertising or otherwise to promote the sale, use or other
* dealings in these Data Files or Software without prior written authorization
* of the copyright holder.
*/
package sun.text.resources.cldr.br;
import java.util.ListResourceBundle;
public class FormatData_br extends ListResourceBundle {
@Override
protected final Object[][] getContents() {
final Object[][] data = new Object[][] {
{ "MonthNames",
new String[] {
"Genver",
"C\u02bchwevrer",
"Meurzh",
"Ebrel",
"Mae",
"Mezheven",
"Gouere",
"Eost",
"Gwengolo",
"Here",
"Du",
"Kerzu",
"",
}
},
{ "standalone.MonthNames",
new String[] {
"Genver",
"C\u02bchwevrer",
"Meurzh",
"Ebrel",
"Mae",
"Mezheven",
"Gouere",
"Eost",
"Gwengolo",
"Here",
"Du",
"Kerzu",
"",
}
},
{ "MonthAbbreviations",
new String[] {
"Gen",
"C\u02bchwe",
"Meur",
"Ebr",
"Mae",
"Mezh",
"Goue",
"Eost",
"Gwen",
"Here",
"Du",
"Ker",
"",
}
},
{ "standalone.MonthAbbreviations",
new String[] {
"Gen",
"C\u02bchwe",
"Meur",
"Ebr",
"Mae",
"Mezh",
"Goue",
"Eost",
"Gwen",
"Here",
"Du",
"Ker",
"",
}
},
{ "DayNames",
new String[] {
"Sul",
"Lun",
"Meurzh",
"Merc\u02bcher",
"Yaou",
"Gwener",
"Sadorn",
}
},
{ "standalone.DayNames",
new String[] {
"Sul",
"Lun",
"Meurzh",
"Merc\u02bcher",
"Yaou",
"Gwener",
"Sadorn",
}
},
{ "DayAbbreviations",
new String[] {
"sul",
"lun",
"meu.",
"mer.",
"yaou",
"gwe.",
"sad.",
}
},
{ "standalone.DayAbbreviations",
new String[] {
"sul",
"lun",
"meu.",
"mer.",
"yaou",
"gwe.",
"sad.",
}
},
{ "DayNarrows",
new String[] {
"su",
"lu",
"mz",
"mc",
"ya",
"gw",
"sa",
}
},
{ "standalone.DayNarrows",
new String[] {
"su",
"lu",
"mz",
"mc",
"ya",
"gw",
"sa",
}
},
{ "field.month", "miz" },
{ "field.week", "sizhun" },
{ "field.hour", "eur" },
{ "field.minute", "munut" },
{ "field.second", "eilenn" },
{ "calendarname.gregorian", "deiziadur gregorian" },
{ "calendarname.gregory", "deiziadur gregorian" },
{ "calendarname.roc", "deiziadur Republik Sina" },
{ "calendarname.islamic-civil", "deiziadur islamek keodedel" },
{ "calendarname.islamicc", "deiziadur islamek keodedel" },
{ "calendarname.japanese", "deiziadur japanat" },
{ "calendarname.buddhist", "deiziadur boudaat" },
{ "calendarname.islamic", "deiziadur islamek" },
{ "DefaultNumberingSystem", "latn" },
{ "latn.NumberElements",
new String[] {
",",
"\u00a0",
";",
"%",
"0",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
};
return data;
}
}

View File

@@ -0,0 +1,217 @@
/*
* Copyright (c) 2012, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
* COPYRIGHT AND PERMISSION NOTICE
*
* Copyright (C) 1991-2012 Unicode, Inc. All rights reserved. Distributed under
* the Terms of Use in http://www.unicode.org/copyright.html.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of the Unicode data files and any associated documentation (the "Data
* Files") or Unicode software and any associated documentation (the
* "Software") to deal in the Data Files or Software without restriction,
* including without limitation the rights to use, copy, modify, merge,
* publish, distribute, and/or sell copies of the Data Files or Software, and
* to permit persons to whom the Data Files or Software are furnished to do so,
* provided that (a) the above copyright notice(s) and this permission notice
* appear with all copies of the Data Files or Software, (b) both the above
* copyright notice(s) and this permission notice appear in associated
* documentation, and (c) there is clear notice in each modified Data File or
* in the Software as well as in the documentation associated with the Data
* File(s) or Software that the data or software has been modified.
*
* THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
* KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
* THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
* INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR
* CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THE DATA FILES OR SOFTWARE.
*
* Except as contained in this notice, the name of a copyright holder shall not
* be used in advertising or otherwise to promote the sale, use or other
* dealings in these Data Files or Software without prior written authorization
* of the copyright holder.
*/
package sun.text.resources.cldr.brx;
import java.util.ListResourceBundle;
public class FormatData_brx extends ListResourceBundle {
@Override
protected final Object[][] getContents() {
final Object[][] data = new Object[][] {
{ "MonthNames",
new String[] {
"\u091c\u093e\u0928\u0941\u0935\u093e\u0930\u0940",
"\u092b\u0947\u092c\u094d\u0930\u0941\u0935\u093e\u0930\u0940",
"\u092e\u093e\u0930\u094d\u0938",
"\u090f\u092b\u094d\u0930\u093f\u0932",
"\u092e\u0947",
"\u091c\u0941\u0928",
"\u091c\u0941\u0932\u093e\u0907",
"\u0906\u0917\u0938\u094d\u0925",
"\u0938\u0947\u092c\u0925\u0947\u091c\u094d\u092c\u093c\u0930",
"\u0905\u0916\u0925\u092c\u0930",
"\u0928\u092c\u0947\u091c\u094d\u092c\u093c\u0930",
"\u0926\u093f\u0938\u0947\u091c\u094d\u092c\u093c\u0930",
"",
}
},
{ "MonthNarrows",
new String[] {
"\u091c",
"\u092b\u0947",
"\u092e\u093e",
"\u090f",
"\u092e\u0947",
"\u091c\u0941",
"\u091c\u0941",
"\u0906",
"\u0938\u0947",
"\u0905",
"\u0928",
"\u0926\u093f",
"",
}
},
{ "DayNames",
new String[] {
"\u0930\u092c\u093f\u092c\u093e\u0930",
"\u0938\u092e\u092c\u093e\u0930",
"\u092e\u0902\u0917\u0932\u092c\u093e\u0930",
"\u092c\u0941\u0926\u092c\u093e\u0930",
"\u092c\u093f\u0938\u0925\u093f\u092c\u093e\u0930",
"\u0938\u0941\u0916\u0941\u0930\u092c\u093e\u0930",
"\u0938\u0941\u0928\u093f\u092c\u093e\u0930",
}
},
{ "DayAbbreviations",
new String[] {
"\u0930\u092c\u093f",
"\u0938\u092e",
"\u092e\u0902\u0917\u0932",
"\u092c\u0941\u0926",
"\u092c\u093f\u0938\u0925\u093f",
"\u0938\u0941\u0916\u0941\u0930",
"\u0938\u0941\u0928\u093f",
}
},
{ "DayNarrows",
new String[] {
"\u0930",
"\u0938",
"\u092e\u0902",
"\u092c\u0941",
"\u092c\u093f",
"\u0938\u0941",
"\u0938\u0941",
}
},
{ "QuarterNames",
new String[] {
"\u0938\u093f\u0925\u093e\u0938\u0947/\u0916\u094b\u0928\u094d\u0926\u094b\u0938\u0947/\u092c\u093e\u0939\u093e\u0917\u094b\u0938\u0947",
"\u0916\u093e\u0935\u0938\u0947/\u0916\u094b\u0928\u094d\u0926\u094b\u0928\u0948/\u092c\u093e\u0939\u093e\u0917\u094b\u0928\u0948",
"\u0916\u093e\u0935\u0925\u093e\u092e/\u0916\u094b\u0928\u094d\u0926\u094b\u0925\u093e\u092e/\u092c\u093e\u0939\u093e\u0917\u094b\u0925\u093e\u092e",
"\u0916\u093e\u0935\u092c\u094d\u0930\u0948/\u0916\u094b\u0928\u094d\u0926\u094b\u092c\u094d\u0930\u0948/\u092b\u0941\u0930\u093e/\u0906\u092c\u0941\u0902",
}
},
{ "AmPmMarkers",
new String[] {
"\u092b\u0941\u0902",
"\u092c\u0947\u0932\u093e\u0938\u0947",
}
},
{ "Eras",
new String[] {
"\u0908\u0938\u093e.\u092a\u0942\u0930\u094d\u0935",
"\u0938\u0928",
}
},
{ "field.era", "\u091c\u094c\u0925\u093e\u092f" },
{ "field.year", "\u092c\u094b\u0938\u094b\u0930" },
{ "field.month", "\u0926\u093e\u0928" },
{ "field.week", "\u0938\u092c\u0925\u093e/\u0939\u092c\u0925\u093e" },
{ "field.weekday", "\u0938\u092a\u094d\u0924\u093e\u0939 \u0915\u0947 \u0926\u093f\u0928" },
{ "field.dayperiod", "\u092b\u0941\u0902/\u092c\u0947\u0932\u093e\u0938\u0947" },
{ "field.hour", "\u0930\u093f\u0902\u0917\u093e" },
{ "field.minute", "\u092e\u093f\u0928\u093f\u0925" },
{ "field.second", "\u0938\u0947\u0916\u0947\u0928\u094d\u0926" },
{ "field.zone", "\u0913\u0928\u0938\u094b\u0932" },
{ "TimePatterns",
new String[] {
"h:mm:ss a zzzz",
"h:mm:ss a z",
"h:mm:ss a",
"h:mm a",
}
},
{ "DatePatterns",
new String[] {
"EEEE, MMMM d, y",
"MMMM d, y",
"MMM d, y",
"M/d/yy",
}
},
{ "calendarname.islamic-civil", "\u0907\u0938\u094d\u0932\u093e\u092e\u0940 \u0928\u093e\u0917\u0930\u093f\u0915 \u092a\u0902\u091a\u093e\u0902\u0917" },
{ "calendarname.islamicc", "\u0907\u0938\u094d\u0932\u093e\u092e\u0940 \u0928\u093e\u0917\u0930\u093f\u0915 \u092a\u0902\u091a\u093e\u0902\u0917" },
{ "calendarname.buddhist", "\u092c\u094c\u0926\u094d\u0927 \u092a\u0902\u091a\u093e\u0902\u0917" },
{ "calendarname.islamic", "\u0907\u0938\u094d\u0932\u093e\u092e\u0940 \u092a\u0902\u091a\u093e\u0902\u0917" },
{ "calendarname.gregorian", "\u0917\u094d\u0930\u0947\u0917\u0930\u0940\u0905\u0928 \u092a\u0902\u091a\u093e\u0902\u0917" },
{ "calendarname.gregory", "\u0917\u094d\u0930\u0947\u0917\u0930\u0940\u0905\u0928 \u092a\u0902\u091a\u093e\u0902\u0917" },
{ "calendarname.roc", "\u091a\u0940\u0928\u0940 \u0917\u0923\u0924\u0902\u0924\u094d\u0930 \u092a\u0902\u091a\u093e\u0902\u0917" },
{ "calendarname.japanese", "\u091c\u093e\u092a\u093e\u0928\u0940 \u092a\u0902\u091a\u093e\u0902\u0917" },
{ "DefaultNumberingSystem", "latn" },
{ "latn.NumberElements",
new String[] {
".",
",",
";",
"%",
"0",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "NumberPatterns",
new String[] {
"#,##,##0.###",
"\u00a4\u00a0#,##,##0.00",
"#,##,##0%",
}
},
};
return data;
}
}

View File

@@ -0,0 +1,252 @@
/*
* Copyright (c) 2012, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
* COPYRIGHT AND PERMISSION NOTICE
*
* Copyright (C) 1991-2012 Unicode, Inc. All rights reserved. Distributed under
* the Terms of Use in http://www.unicode.org/copyright.html.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of the Unicode data files and any associated documentation (the "Data
* Files") or Unicode software and any associated documentation (the
* "Software") to deal in the Data Files or Software without restriction,
* including without limitation the rights to use, copy, modify, merge,
* publish, distribute, and/or sell copies of the Data Files or Software, and
* to permit persons to whom the Data Files or Software are furnished to do so,
* provided that (a) the above copyright notice(s) and this permission notice
* appear with all copies of the Data Files or Software, (b) both the above
* copyright notice(s) and this permission notice appear in associated
* documentation, and (c) there is clear notice in each modified Data File or
* in the Software as well as in the documentation associated with the Data
* File(s) or Software that the data or software has been modified.
*
* THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
* KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
* THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
* INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR
* CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THE DATA FILES OR SOFTWARE.
*
* Except as contained in this notice, the name of a copyright holder shall not
* be used in advertising or otherwise to promote the sale, use or other
* dealings in these Data Files or Software without prior written authorization
* of the copyright holder.
*/
package sun.text.resources.cldr.bs;
import java.util.ListResourceBundle;
public class FormatData_bs extends ListResourceBundle {
@Override
protected final Object[][] getContents() {
final Object[][] data = new Object[][] {
{ "MonthNames",
new String[] {
"januar",
"februar",
"mart",
"april",
"maj",
"juni",
"juli",
"avgust",
"septembar",
"oktobar",
"novembar",
"decembar",
"",
}
},
{ "MonthAbbreviations",
new String[] {
"jan",
"feb",
"mar",
"apr",
"maj",
"jun",
"jul",
"avg",
"sep",
"okt",
"nov",
"dec",
"",
}
},
{ "MonthNarrows",
new String[] {
"j",
"f",
"m",
"a",
"m",
"j",
"j",
"a",
"s",
"o",
"n",
"d",
"",
}
},
{ "DayNames",
new String[] {
"nedjelja",
"ponedjeljak",
"utorak",
"srijeda",
"\u010detvrtak",
"petak",
"subota",
}
},
{ "DayAbbreviations",
new String[] {
"ned",
"pon",
"uto",
"sri",
"\u010det",
"pet",
"sub",
}
},
{ "QuarterNames",
new String[] {
"Prvi kvartal",
"Drugi kvartal",
"Tre\u0107i kvartal",
"\u010cetvrti kvartal",
}
},
{ "QuarterAbbreviations",
new String[] {
"K1",
"K2",
"K3",
"K4",
}
},
{ "AmPmMarkers",
new String[] {
"pre podne",
"popodne",
}
},
{ "long.Eras",
new String[] {
"Pre nove ere",
"Nove ere",
}
},
{ "Eras",
new String[] {
"p. n. e.",
"n. e",
}
},
{ "field.era", "era" },
{ "field.year", "godina" },
{ "field.month", "mesec" },
{ "field.week", "nedelja" },
{ "field.weekday", "dan u nedelji" },
{ "field.dayperiod", "pre podne/ popodne" },
{ "field.hour", "\u010das" },
{ "field.minute", "minut" },
{ "field.second", "sekund" },
{ "field.zone", "zona" },
{ "TimePatterns",
new String[] {
"HH:mm:ss zzzz",
"HH:mm:ss z",
"HH:mm:ss",
"HH:mm",
}
},
{ "DatePatterns",
new String[] {
"EEEE, dd. MMMM y.",
"dd. MMMM y.",
"dd.MM.y.",
"dd.MM.yy.",
}
},
{ "islamic.Eras",
new String[] {
"",
"AH",
}
},
{ "java.time.islamic.DatePatterns",
new String[] {
"EEEE, dd. MMMM y. G",
"dd. MMMM y. G",
"dd.MM.y. G",
"dd.MM.y. G",
}
},
{ "islamic.DatePatterns",
new String[] {
"EEEE, dd. MMMM y. GGGG",
"dd. MMMM y. GGGG",
"dd.MM.y. GGGG",
"dd.MM.y. GGGG",
}
},
{ "calendarname.islamic-civil", "Islamski civilni kalendar" },
{ "calendarname.islamicc", "Islamski civilni kalendar" },
{ "calendarname.buddhist", "Budisti\u010dki kalendar" },
{ "calendarname.islamic", "Islamski kalendar" },
{ "calendarname.gregorian", "Gregorijanski kalendar" },
{ "calendarname.gregory", "Gregorijanski kalendar" },
{ "calendarname.roc", "Kalendar Republike Kine" },
{ "calendarname.japanese", "Japanski kalendar" },
{ "DefaultNumberingSystem", "latn" },
{ "latn.NumberElements",
new String[] {
",",
".",
";",
"%",
"0",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
};
return data;
}
}

View File

@@ -0,0 +1,82 @@
/*
* Copyright (c) 2012, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
* COPYRIGHT AND PERMISSION NOTICE
*
* Copyright (C) 1991-2012 Unicode, Inc. All rights reserved. Distributed under
* the Terms of Use in http://www.unicode.org/copyright.html.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of the Unicode data files and any associated documentation (the "Data
* Files") or Unicode software and any associated documentation (the
* "Software") to deal in the Data Files or Software without restriction,
* including without limitation the rights to use, copy, modify, merge,
* publish, distribute, and/or sell copies of the Data Files or Software, and
* to permit persons to whom the Data Files or Software are furnished to do so,
* provided that (a) the above copyright notice(s) and this permission notice
* appear with all copies of the Data Files or Software, (b) both the above
* copyright notice(s) and this permission notice appear in associated
* documentation, and (c) there is clear notice in each modified Data File or
* in the Software as well as in the documentation associated with the Data
* File(s) or Software that the data or software has been modified.
*
* THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
* KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
* THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
* INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR
* CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THE DATA FILES OR SOFTWARE.
*
* Except as contained in this notice, the name of a copyright holder shall not
* be used in advertising or otherwise to promote the sale, use or other
* dealings in these Data Files or Software without prior written authorization
* of the copyright holder.
*/
package sun.text.resources.cldr.byn;
import java.util.ListResourceBundle;
public class FormatData_byn extends ListResourceBundle {
@Override
protected final Object[][] getContents() {
final Object[][] data = new Object[][] {
{ "TimePatterns",
new String[] {
"h:mm:ss a zzzz",
"HH:mm:ss z",
"HH:mm:ss",
"HH:mm",
}
},
{ "DefaultNumberingSystem", "latn" },
};
return data;
}
}

View File

@@ -0,0 +1,350 @@
/*
* Copyright (c) 2012, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
* COPYRIGHT AND PERMISSION NOTICE
*
* Copyright (C) 1991-2012 Unicode, Inc. All rights reserved. Distributed under
* the Terms of Use in http://www.unicode.org/copyright.html.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of the Unicode data files and any associated documentation (the "Data
* Files") or Unicode software and any associated documentation (the
* "Software") to deal in the Data Files or Software without restriction,
* including without limitation the rights to use, copy, modify, merge,
* publish, distribute, and/or sell copies of the Data Files or Software, and
* to permit persons to whom the Data Files or Software are furnished to do so,
* provided that (a) the above copyright notice(s) and this permission notice
* appear with all copies of the Data Files or Software, (b) both the above
* copyright notice(s) and this permission notice appear in associated
* documentation, and (c) there is clear notice in each modified Data File or
* in the Software as well as in the documentation associated with the Data
* File(s) or Software that the data or software has been modified.
*
* THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
* KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
* THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
* INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR
* CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THE DATA FILES OR SOFTWARE.
*
* Except as contained in this notice, the name of a copyright holder shall not
* be used in advertising or otherwise to promote the sale, use or other
* dealings in these Data Files or Software without prior written authorization
* of the copyright holder.
*/
package sun.text.resources.cldr.ca;
import java.util.ListResourceBundle;
public class FormatData_ca extends ListResourceBundle {
@Override
protected final Object[][] getContents() {
final Object[][] data = new Object[][] {
{ "MonthNames",
new String[] {
"de gener",
"de febrer",
"de mar\u00e7",
"d\u2019abril",
"de maig",
"de juny",
"de juliol",
"d\u2019agost",
"de setembre",
"d\u2019octubre",
"de novembre",
"de desembre",
"",
}
},
{ "standalone.MonthNames",
new String[] {
"gener",
"febrer",
"mar\u00e7",
"abril",
"maig",
"juny",
"juliol",
"agost",
"setembre",
"octubre",
"novembre",
"desembre",
"",
}
},
{ "MonthAbbreviations",
new String[] {
"de gen.",
"de febr.",
"de mar\u00e7",
"d\u2019abr.",
"de maig",
"de juny",
"de jul.",
"d\u2019ag.",
"de set.",
"d\u2019oct.",
"de nov.",
"de des.",
"",
}
},
{ "standalone.MonthAbbreviations",
new String[] {
"gen.",
"febr.",
"mar\u00e7",
"abr.",
"maig",
"juny",
"jul.",
"ag.",
"set.",
"oct.",
"nov.",
"des.",
"",
}
},
{ "MonthNarrows",
new String[] {
"G",
"F",
"M",
"A",
"M",
"J",
"G",
"A",
"S",
"O",
"N",
"D",
"",
}
},
{ "standalone.MonthNarrows",
new String[] {
"g",
"f",
"m",
"a",
"m",
"j",
"j",
"a",
"s",
"o",
"n",
"d",
"",
}
},
{ "DayNames",
new String[] {
"diumenge",
"dilluns",
"dimarts",
"dimecres",
"dijous",
"divendres",
"dissabte",
}
},
{ "standalone.DayNames",
new String[] {
"Diumenge",
"Dilluns",
"Dimarts",
"Dimecres",
"Dijous",
"Divendres",
"Dissabte",
}
},
{ "DayAbbreviations",
new String[] {
"dg.",
"dl.",
"dt.",
"dc.",
"dj.",
"dv.",
"ds.",
}
},
{ "standalone.DayAbbreviations",
new String[] {
"dg",
"dl",
"dt",
"dc",
"dj",
"dv",
"ds",
}
},
{ "DayNarrows",
new String[] {
"G",
"l",
"T",
"C",
"J",
"V",
"S",
}
},
{ "standalone.DayNarrows",
new String[] {
"g",
"l",
"t",
"c",
"j",
"v",
"s",
}
},
{ "QuarterNames",
new String[] {
"1r trimestre",
"2n trimestre",
"3r trimestre",
"4t trimestre",
}
},
{ "standalone.QuarterNames",
new String[] {
"1r trimestre",
"2n trimestre",
"3r trimestre",
"4t trimestre",
}
},
{ "QuarterAbbreviations",
new String[] {
"1T",
"2T",
"3T",
"4T",
}
},
{ "standalone.QuarterAbbreviations",
new String[] {
"1T",
"2T",
"3T",
"4T",
}
},
{ "QuarterNarrows",
new String[] {
"1",
"2",
"3",
"4",
}
},
{ "AmPmMarkers",
new String[] {
"a.m.",
"p.m.",
}
},
{ "Eras",
new String[] {
"aC",
"dC",
}
},
{ "field.era", "era" },
{ "field.year", "any" },
{ "field.month", "mes" },
{ "field.week", "setmana" },
{ "field.weekday", "dia de la setmana" },
{ "field.dayperiod", "a.m./p.m." },
{ "field.hour", "hora" },
{ "field.minute", "minut" },
{ "field.second", "segon" },
{ "field.zone", "zona" },
{ "TimePatterns",
new String[] {
"H:mm:ss zzzz",
"H:mm:ss z",
"H:mm:ss",
"H:mm",
}
},
{ "DatePatterns",
new String[] {
"EEEE d MMMM 'de' y",
"d MMMM 'de' y",
"dd/MM/yyyy",
"dd/MM/yy",
}
},
{ "calendarname.gregorian", "calendari gregori\u00e0" },
{ "calendarname.gregory", "calendari gregori\u00e0" },
{ "calendarname.roc", "calendari de la Rep\u00fablica de Xina" },
{ "calendarname.islamic-civil", "calendari civil isl\u00e0mic" },
{ "calendarname.islamicc", "calendari civil isl\u00e0mic" },
{ "calendarname.japanese", "calendari japon\u00e8s" },
{ "calendarname.buddhist", "calendari budista" },
{ "calendarname.islamic", "calendari musulm\u00e0" },
{ "DefaultNumberingSystem", "latn" },
{ "latn.NumberElements",
new String[] {
",",
".",
";",
"%",
"0",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "NumberPatterns",
new String[] {
"#,##0.###",
"#,##0.00\u00a0\u00a4",
"#,##0%",
}
},
};
return data;
}
}

View File

@@ -0,0 +1,217 @@
/*
* Copyright (c) 2012, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
* COPYRIGHT AND PERMISSION NOTICE
*
* Copyright (C) 1991-2012 Unicode, Inc. All rights reserved. Distributed under
* the Terms of Use in http://www.unicode.org/copyright.html.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of the Unicode data files and any associated documentation (the "Data
* Files") or Unicode software and any associated documentation (the
* "Software") to deal in the Data Files or Software without restriction,
* including without limitation the rights to use, copy, modify, merge,
* publish, distribute, and/or sell copies of the Data Files or Software, and
* to permit persons to whom the Data Files or Software are furnished to do so,
* provided that (a) the above copyright notice(s) and this permission notice
* appear with all copies of the Data Files or Software, (b) both the above
* copyright notice(s) and this permission notice appear in associated
* documentation, and (c) there is clear notice in each modified Data File or
* in the Software as well as in the documentation associated with the Data
* File(s) or Software that the data or software has been modified.
*
* THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
* KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
* THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
* INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR
* CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THE DATA FILES OR SOFTWARE.
*
* Except as contained in this notice, the name of a copyright holder shall not
* be used in advertising or otherwise to promote the sale, use or other
* dealings in these Data Files or Software without prior written authorization
* of the copyright holder.
*/
package sun.text.resources.cldr.cgg;
import java.util.ListResourceBundle;
public class FormatData_cgg extends ListResourceBundle {
@Override
protected final Object[][] getContents() {
final Object[][] data = new Object[][] {
{ "MonthNames",
new String[] {
"Okwokubanza",
"Okwakabiri",
"Okwakashatu",
"Okwakana",
"Okwakataana",
"Okwamukaaga",
"Okwamushanju",
"Okwamunaana",
"Okwamwenda",
"Okwaikumi",
"Okwaikumi na kumwe",
"Okwaikumi na ibiri",
"",
}
},
{ "MonthAbbreviations",
new String[] {
"KBZ",
"KBR",
"KST",
"KKN",
"KTN",
"KMK",
"KMS",
"KMN",
"KMW",
"KKM",
"KNK",
"KNB",
"",
}
},
{ "MonthNarrows",
new String[] {
"J",
"F",
"M",
"A",
"M",
"J",
"J",
"A",
"S",
"O",
"N",
"D",
"",
}
},
{ "DayNames",
new String[] {
"Sande",
"Orwokubanza",
"Orwakabiri",
"Orwakashatu",
"Orwakana",
"Orwakataano",
"Orwamukaaga",
}
},
{ "DayAbbreviations",
new String[] {
"SAN",
"ORK",
"OKB",
"OKS",
"OKN",
"OKT",
"OMK",
}
},
{ "DayNarrows",
new String[] {
"S",
"K",
"R",
"S",
"N",
"T",
"M",
}
},
{ "QuarterNames",
new String[] {
"KWOTA 1",
"KWOTA 2",
"KWOTA 3",
"KWOTA 4",
}
},
{ "QuarterAbbreviations",
new String[] {
"K1",
"K2",
"K3",
"K4",
}
},
{ "long.Eras",
new String[] {
"Kurisito Atakaijire",
"Kurisito Yaijire",
}
},
{ "Eras",
new String[] {
"BC",
"AD",
}
},
{ "field.era", "Obunaku" },
{ "field.year", "Omwaka" },
{ "field.month", "Omwezi" },
{ "field.week", "Esande" },
{ "field.weekday", "Eizooba ry'okukora" },
{ "field.dayperiod", "Nyomushana/nyekiro" },
{ "field.hour", "Shaaha" },
{ "field.minute", "Edakiika" },
{ "field.second", "Obucweka/Esekendi" },
{ "TimePatterns",
new String[] {
"h:mm:ss a zzzz",
"h:mm:ss a z",
"h:mm:ss a",
"h:mm a",
}
},
{ "DatePatterns",
new String[] {
"EEEE, d MMMM y",
"d MMMM y",
"d MMM y",
"dd/MM/yyyy",
}
},
{ "NumberPatterns",
new String[] {
"#,##0.###",
"\u00a4#,##0.00;-#,##0.00\u00a4",
"#,##0%",
}
},
};
return data;
}
}

View File

@@ -0,0 +1,225 @@
/*
* Copyright (c) 2012, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
* COPYRIGHT AND PERMISSION NOTICE
*
* Copyright (C) 1991-2012 Unicode, Inc. All rights reserved. Distributed under
* the Terms of Use in http://www.unicode.org/copyright.html.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of the Unicode data files and any associated documentation (the "Data
* Files") or Unicode software and any associated documentation (the
* "Software") to deal in the Data Files or Software without restriction,
* including without limitation the rights to use, copy, modify, merge,
* publish, distribute, and/or sell copies of the Data Files or Software, and
* to permit persons to whom the Data Files or Software are furnished to do so,
* provided that (a) the above copyright notice(s) and this permission notice
* appear with all copies of the Data Files or Software, (b) both the above
* copyright notice(s) and this permission notice appear in associated
* documentation, and (c) there is clear notice in each modified Data File or
* in the Software as well as in the documentation associated with the Data
* File(s) or Software that the data or software has been modified.
*
* THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
* KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
* THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
* INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR
* CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THE DATA FILES OR SOFTWARE.
*
* Except as contained in this notice, the name of a copyright holder shall not
* be used in advertising or otherwise to promote the sale, use or other
* dealings in these Data Files or Software without prior written authorization
* of the copyright holder.
*/
package sun.text.resources.cldr.chr;
import java.util.ListResourceBundle;
public class FormatData_chr extends ListResourceBundle {
@Override
protected final Object[][] getContents() {
final Object[][] data = new Object[][] {
{ "MonthNames",
new String[] {
"\u13a4\u13c3\u13b8\u13d4\u13c5",
"\u13a7\u13a6\u13b5",
"\u13a0\u13c5\u13f1",
"\u13a7\u13ec\u13c2",
"\u13a0\u13c2\u13cd\u13ac\u13d8",
"\u13d5\u13ad\u13b7\u13f1",
"\u13ab\u13f0\u13c9\u13c2",
"\u13a6\u13b6\u13c2",
"\u13da\u13b5\u13cd\u13d7",
"\u13da\u13c2\u13c5\u13d7",
"\u13c5\u13d3\u13d5\u13c6",
"\u13a4\u13cd\u13a9\u13f1",
"",
}
},
{ "MonthAbbreviations",
new String[] {
"\u13a4\u13c3",
"\u13a7\u13a6",
"\u13a0\u13c5",
"\u13a7\u13ec",
"\u13a0\u13c2",
"\u13d5\u13ad",
"\u13ab\u13f0",
"\u13a6\u13b6",
"\u13da\u13b5",
"\u13da\u13c2",
"\u13c5\u13d3",
"\u13a4\u13cd",
"",
}
},
{ "MonthNarrows",
new String[] {
"\u13a4",
"\u13a7",
"\u13a0",
"\u13a7",
"\u13a0",
"\u13d5",
"\u13ab",
"\u13a6",
"\u13da",
"\u13da",
"\u13c5",
"\u13a4",
"",
}
},
{ "DayNames",
new String[] {
"\u13a4\u13be\u13d9\u13d3\u13c6\u13cd\u13ac",
"\u13a4\u13be\u13d9\u13d3\u13c9\u13c5\u13af",
"\u13d4\u13b5\u13c1\u13a2\u13a6",
"\u13e6\u13a2\u13c1\u13a2\u13a6",
"\u13c5\u13a9\u13c1\u13a2\u13a6",
"\u13e7\u13be\u13a9\u13b6\u13cd\u13d7",
"\u13a4\u13be\u13d9\u13d3\u13c8\u13d5\u13be",
}
},
{ "DayAbbreviations",
new String[] {
"\u13c6\u13cd\u13ac",
"\u13c9\u13c5\u13af",
"\u13d4\u13b5\u13c1",
"\u13e6\u13a2\u13c1",
"\u13c5\u13a9\u13c1",
"\u13e7\u13be\u13a9",
"\u13c8\u13d5\u13be",
}
},
{ "DayNarrows",
new String[] {
"\u13c6",
"\u13c9",
"\u13d4",
"\u13e6",
"\u13c5",
"\u13e7",
"\u13a4",
}
},
{ "AmPmMarkers",
new String[] {
"\u13cc\u13be\u13b4",
"\u13d2\u13af\u13f1\u13a2\u13d7\u13e2",
}
},
{ "long.Eras",
new String[] {
"\u13cf \u13e5\u13cc \u13be\u13d5\u13b2\u13cd\u13ac\u13be",
"\u13a0\u13a9\u13c3\u13ae\u13b5\u13d3\u13cd\u13d7\u13f1 \u13a0\u13d5\u13d8\u13f1\u13cd\u13ac \u13f1\u13b0\u13e9 \u13e7\u13d3\u13c2\u13b8\u13a2\u13cd\u13d7",
}
},
{ "Eras",
new String[] {
"\u13a4\u13d3\u13b7\u13b8",
"\u13a4\u13b6\u13d0\u13c5",
}
},
{ "field.era", "\u13a1\u13b6\u13af \u13a0\u13e3\u13a2\u13b5\u13d2\u13a2" },
{ "field.year", "\u13d1\u13d5\u13d8\u13f4\u13d3" },
{ "field.month", "\u13cf\u13c5\u13d3" },
{ "field.week", "\u13d2\u13be\u13d9\u13d3\u13c6\u13cd\u13d7" },
{ "field.weekday", "\u13d2\u13be\u13d9\u13d3\u13c6\u13cd\u13d7 \u13a0\u13e3\u13a2\u13b5\u13d2" },
{ "field.hour", "\u13d1\u13e3\u13b6\u13d3" },
{ "field.minute", "\u13a2\u13ef\u13d4\u13ec\u13cd\u13d4\u13c5" },
{ "field.second", "\u13a0\u13ce\u13e2" },
{ "field.zone", "\u13a1\u13b6\u13af \u13a0\u13cd\u13d3\u13c5\u13c5" },
{ "TimePatterns",
new String[] {
"h:mm:ss a zzzz",
"h:mm:ss a z",
"h:mm:ss a",
"h:mm a",
}
},
{ "DatePatterns",
new String[] {
"EEEE, MMMM d, y",
"MMMM d, y",
"MMM d, y",
"M/d/yy",
}
},
{ "calendarname.gregorian", "\u13c5\u13d9 \u13d7\u13ce\u13d7" },
{ "calendarname.gregory", "\u13c5\u13d9 \u13d7\u13ce\u13d7" },
{ "DefaultNumberingSystem", "latn" },
{ "latn.NumberElements",
new String[] {
".",
",",
";",
"%",
"0",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "NumberPatterns",
new String[] {
"#,##0.###",
"\u00a4#,##0.00;(\u00a4#,##0.00)",
"#,##0%",
}
},
};
return data;
}
}

View File

@@ -0,0 +1,416 @@
/*
* Copyright (c) 2012, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
* COPYRIGHT AND PERMISSION NOTICE
*
* Copyright (C) 1991-2012 Unicode, Inc. All rights reserved. Distributed under
* the Terms of Use in http://www.unicode.org/copyright.html.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of the Unicode data files and any associated documentation (the "Data
* Files") or Unicode software and any associated documentation (the
* "Software") to deal in the Data Files or Software without restriction,
* including without limitation the rights to use, copy, modify, merge,
* publish, distribute, and/or sell copies of the Data Files or Software, and
* to permit persons to whom the Data Files or Software are furnished to do so,
* provided that (a) the above copyright notice(s) and this permission notice
* appear with all copies of the Data Files or Software, (b) both the above
* copyright notice(s) and this permission notice appear in associated
* documentation, and (c) there is clear notice in each modified Data File or
* in the Software as well as in the documentation associated with the Data
* File(s) or Software that the data or software has been modified.
*
* THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
* KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
* THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
* INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR
* CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THE DATA FILES OR SOFTWARE.
*
* Except as contained in this notice, the name of a copyright holder shall not
* be used in advertising or otherwise to promote the sale, use or other
* dealings in these Data Files or Software without prior written authorization
* of the copyright holder.
*/
package sun.text.resources.cldr.cs;
import java.util.ListResourceBundle;
public class FormatData_cs extends ListResourceBundle {
@Override
protected final Object[][] getContents() {
final Object[][] data = new Object[][] {
{ "MonthNames",
new String[] {
"ledna",
"\u00fanora",
"b\u0159ezna",
"dubna",
"kv\u011btna",
"\u010dervna",
"\u010dervence",
"srpna",
"z\u00e1\u0159\u00ed",
"\u0159\u00edjna",
"listopadu",
"prosince",
"",
}
},
{ "standalone.MonthNames",
new String[] {
"leden",
"\u00fanor",
"b\u0159ezen",
"duben",
"kv\u011bten",
"\u010derven",
"\u010dervenec",
"srpen",
"z\u00e1\u0159\u00ed",
"\u0159\u00edjen",
"listopad",
"prosinec",
"",
}
},
{ "MonthAbbreviations",
new String[] {
"Led",
"\u00dano",
"B\u0159e",
"Dub",
"Kv\u011b",
"\u010cer",
"\u010cvc",
"Srp",
"Z\u00e1\u0159",
"\u0158\u00edj",
"Lis",
"Pro",
"",
}
},
{ "standalone.MonthAbbreviations",
new String[] {
"1.",
"2.",
"3.",
"4.",
"5.",
"6.",
"7.",
"8.",
"9.",
"10.",
"11.",
"12.",
"",
}
},
{ "MonthNarrows",
new String[] {
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9",
"10",
"11",
"12",
"",
}
},
{ "standalone.MonthNarrows",
new String[] {
"l",
"\u00fa",
"b",
"d",
"k",
"\u010d",
"\u010d",
"s",
"z",
"\u0159",
"l",
"p",
"",
}
},
{ "DayNames",
new String[] {
"ned\u011ble",
"pond\u011bl\u00ed",
"\u00fater\u00fd",
"st\u0159eda",
"\u010dtvrtek",
"p\u00e1tek",
"sobota",
}
},
{ "standalone.DayNames",
new String[] {
"ned\u011ble",
"pond\u011bl\u00ed",
"\u00fater\u00fd",
"st\u0159eda",
"\u010dtvrtek",
"p\u00e1tek",
"sobota",
}
},
{ "DayAbbreviations",
new String[] {
"ne",
"po",
"\u00fat",
"st",
"\u010dt",
"p\u00e1",
"so",
}
},
{ "standalone.DayAbbreviations",
new String[] {
"ne",
"po",
"\u00fat",
"st",
"\u010dt",
"p\u00e1",
"so",
}
},
{ "DayNarrows",
new String[] {
"N",
"P",
"\u00da",
"S",
"\u010c",
"P",
"S",
}
},
{ "standalone.DayNarrows",
new String[] {
"N",
"P",
"\u00da",
"S",
"\u010c",
"P",
"S",
}
},
{ "QuarterNames",
new String[] {
"1. \u010dtvrtlet\u00ed",
"2. \u010dtvrtlet\u00ed",
"3. \u010dtvrtlet\u00ed",
"4. \u010dtvrtlet\u00ed",
}
},
{ "standalone.QuarterNames",
new String[] {
"1. \u010dtvrtlet\u00ed",
"2. \u010dtvrtlet\u00ed",
"3. \u010dtvrtlet\u00ed",
"4. \u010dtvrtlet\u00ed",
}
},
{ "QuarterAbbreviations",
new String[] {
"Q1",
"Q2",
"Q3",
"Q4",
}
},
{ "standalone.QuarterAbbreviations",
new String[] {
"Q1",
"Q2",
"Q3",
"Q4",
}
},
{ "QuarterNarrows",
new String[] {
"1",
"2",
"3",
"4",
}
},
{ "AmPmMarkers",
new String[] {
"dop.",
"odp.",
}
},
{ "long.Eras",
new String[] {
"p\u0159. n. l.",
"n. l.",
}
},
{ "Eras",
new String[] {
"p\u0159. n. l.",
"n. l.",
}
},
{ "narrow.Eras",
new String[] {
"p\u0159.n.l.",
"n. l.",
}
},
{ "field.era", "Letopo\u010det" },
{ "field.year", "Rok" },
{ "field.month", "M\u011bs\u00edc" },
{ "field.week", "T\u00fdden" },
{ "field.weekday", "Den v t\u00fddnu" },
{ "field.dayperiod", "AM/PM" },
{ "field.hour", "Hodina" },
{ "field.minute", "Minuta" },
{ "field.second", "Sekunda" },
{ "field.zone", "\u010casov\u00e9 p\u00e1smo" },
{ "TimePatterns",
new String[] {
"H:mm:ss zzzz",
"H:mm:ss z",
"H:mm:ss",
"H:mm",
}
},
{ "DatePatterns",
new String[] {
"EEEE, d. MMMM y",
"d. MMMM y",
"d. M. yyyy",
"dd.MM.yy",
}
},
{ "java.time.buddhist.DatePatterns",
new String[] {
"EEEE, d. MMMM y G",
"d. MMMM y G",
"d. M. y G",
"dd.MM.yy GGGGG",
}
},
{ "buddhist.DatePatterns",
new String[] {
"EEEE, d. MMMM y GGGG",
"d. MMMM y GGGG",
"d. M. y GGGG",
"dd.MM.yy G",
}
},
{ "java.time.japanese.DatePatterns",
new String[] {
"EEEE d. MMMM y G",
"d. MMMM y G",
"d. M. y G",
"dd.MM.yy GGGGG",
}
},
{ "japanese.DatePatterns",
new String[] {
"EEEE d. MMMM y GGGG",
"d. MMMM y GGGG",
"d. M. y GGGG",
"dd.MM.yy G",
}
},
{ "roc.Eras",
new String[] {
"P\u0159ed R. O. C.",
"",
}
},
{ "java.time.roc.DatePatterns",
new String[] {
"EEEE, d. MMMM y G",
"d. MMMM y G",
"d. M. y G",
"dd.MM.yy GGGGG",
}
},
{ "roc.DatePatterns",
new String[] {
"EEEE, d. MMMM y GGGG",
"d. MMMM y GGGG",
"d. M. y GGGG",
"dd.MM.yy G",
}
},
{ "calendarname.islamic-civil", "Muslimsk\u00fd ob\u010dansk\u00fd kalend\u00e1\u0159" },
{ "calendarname.islamicc", "Muslimsk\u00fd ob\u010dansk\u00fd kalend\u00e1\u0159" },
{ "calendarname.buddhist", "Buddhistick\u00fd kalend\u00e1\u0159" },
{ "calendarname.islamic", "Muslimsk\u00fd kalend\u00e1\u0159" },
{ "calendarname.gregorian", "Gregori\u00e1nsk\u00fd kalend\u00e1\u0159" },
{ "calendarname.gregory", "Gregori\u00e1nsk\u00fd kalend\u00e1\u0159" },
{ "calendarname.roc", "Kalend\u00e1\u0159 \u010c\u00ednsk\u00e9 republiky" },
{ "calendarname.japanese", "Japonsk\u00fd kalend\u00e1\u0159" },
{ "DefaultNumberingSystem", "latn" },
{ "latn.NumberElements",
new String[] {
",",
"\u00a0",
";",
"%",
"0",
"#",
"-",
"E",
"\u2030",
"\u221e",
"NaN",
}
},
{ "NumberPatterns",
new String[] {
"#,##0.###",
"#,##0.00\u00a0\u00a4",
"#,##0\u00a0%",
}
},
};
return data;
}
}

View File

@@ -0,0 +1,262 @@
/*
* Copyright (c) 2012, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
* COPYRIGHT AND PERMISSION NOTICE
*
* Copyright (C) 1991-2012 Unicode, Inc. All rights reserved. Distributed under
* the Terms of Use in http://www.unicode.org/copyright.html.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of the Unicode data files and any associated documentation (the "Data
* Files") or Unicode software and any associated documentation (the
* "Software") to deal in the Data Files or Software without restriction,
* including without limitation the rights to use, copy, modify, merge,
* publish, distribute, and/or sell copies of the Data Files or Software, and
* to permit persons to whom the Data Files or Software are furnished to do so,
* provided that (a) the above copyright notice(s) and this permission notice
* appear with all copies of the Data Files or Software, (b) both the above
* copyright notice(s) and this permission notice appear in associated
* documentation, and (c) there is clear notice in each modified Data File or
* in the Software as well as in the documentation associated with the Data
* File(s) or Software that the data or software has been modified.
*
* THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
* KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
* THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
* INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR
* CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THE DATA FILES OR SOFTWARE.
*
* Except as contained in this notice, the name of a copyright holder shall not
* be used in advertising or otherwise to promote the sale, use or other
* dealings in these Data Files or Software without prior written authorization
* of the copyright holder.
*/
package sun.text.resources.cldr.cy;
import java.util.ListResourceBundle;
public class FormatData_cy extends ListResourceBundle {
@Override
protected final Object[][] getContents() {
final Object[][] data = new Object[][] {
{ "MonthNames",
new String[] {
"Ionawr",
"Chwefror",
"Mawrth",
"Ebrill",
"Mai",
"Mehefin",
"Gorffenaf",
"Awst",
"Medi",
"Hydref",
"Tachwedd",
"Rhagfyr",
"",
}
},
{ "standalone.MonthNames",
new String[] {
"",
"",
"",
"",
"",
"",
"Gorffennaf",
"",
"",
"",
"",
"",
"",
}
},
{ "MonthAbbreviations",
new String[] {
"Ion",
"Chwef",
"Mawrth",
"Ebrill",
"Mai",
"Meh",
"Gorff",
"Awst",
"Medi",
"Hyd",
"Tach",
"Rhag",
"",
}
},
{ "standalone.MonthAbbreviations",
new String[] {
"",
"Chwe",
"Maw",
"Ebr",
"",
"",
"Gor",
"",
"",
"",
"",
"",
"",
}
},
{ "MonthNarrows",
new String[] {
"I",
"C",
"M",
"E",
"M",
"M",
"G",
"A",
"M",
"H",
"T",
"R",
"",
}
},
{ "DayNames",
new String[] {
"Dydd Sul",
"Dydd Llun",
"Dydd Mawrth",
"Dydd Mercher",
"Dydd Iau",
"Dydd Gwener",
"Dydd Sadwrn",
}
},
{ "DayAbbreviations",
new String[] {
"Sul",
"Llun",
"Maw",
"Mer",
"Iau",
"Gwen",
"Sad",
}
},
{ "standalone.DayAbbreviations",
new String[] {
"",
"",
"",
"",
"",
"Gwe",
"",
}
},
{ "DayNarrows",
new String[] {
"S",
"L",
"M",
"M",
"I",
"G",
"S",
}
},
{ "QuarterNames",
new String[] {
"Chwarter 1af",
"2il chwarter",
"3ydd chwarter",
"4ydd chwarter",
}
},
{ "QuarterAbbreviations",
new String[] {
"Ch1",
"Ch2",
"Ch3",
"Ch4",
}
},
{ "long.Eras",
new String[] {
"Cyn Crist",
"Oed Crist",
}
},
{ "Eras",
new String[] {
"CC",
"OC",
}
},
{ "narrow.Eras",
new String[] {
"C",
"O",
}
},
{ "field.era", "Oes" },
{ "field.year", "Blwyddyn" },
{ "field.month", "Mis" },
{ "field.week", "Wythnos" },
{ "field.weekday", "Dydd o'r Wythnos" },
{ "field.dayperiod", "AM/PM" },
{ "field.hour", "Awr" },
{ "field.minute", "Munud" },
{ "field.second", "Eiliad" },
{ "field.zone", "Cylchfa" },
{ "TimePatterns",
new String[] {
"HH:mm:ss zzzz",
"HH:mm:ss z",
"HH:mm:ss",
"HH:mm",
}
},
{ "DatePatterns",
new String[] {
"EEEE, d MMMM y",
"d MMMM y",
"d MMM y",
"dd/MM/yyyy",
}
},
};
return data;
}
}

Some files were not shown because too many files have changed in this diff Show More