Index: source/common/unicode/uloc.h |
diff --git a/source/common/unicode/uloc.h b/source/common/unicode/uloc.h |
index 28ab902b522293b3320e9e9d07eadf1391658aeb..c305c8b78c8a853b938d65d16a1e1296db7737bb 100644 |
--- a/source/common/unicode/uloc.h |
+++ b/source/common/unicode/uloc.h |
@@ -1,6 +1,6 @@ |
/* |
********************************************************************** |
-* Copyright (C) 1997-2013, International Business Machines |
+* Copyright (C) 1997-2014, International Business Machines |
* Corporation and others. All Rights Reserved. |
********************************************************************** |
* |
@@ -272,7 +272,7 @@ |
* Useful constant for the maximum size of keywords in a locale |
* @stable ICU 2.8 |
*/ |
-#define ULOC_KEYWORDS_CAPACITY 50 |
+#define ULOC_KEYWORDS_CAPACITY 96 |
/** |
* Useful constant for the maximum total size of keywords and their values in a locale |
@@ -886,6 +886,25 @@ uloc_setKeywordValue(const char* keywordName, |
char* buffer, int32_t bufferCapacity, |
UErrorCode* status); |
+#ifndef U_HIDE_DRAFT_API |
+/** |
+ * Returns whether the locale's script is written right-to-left. |
+ * If there is no script subtag, then the likely script is used, see uloc_addLikelySubtags(). |
+ * If no likely script is known, then FALSE is returned. |
+ * |
+ * A script is right-to-left according to the CLDR script metadata |
+ * which corresponds to whether the script's letters have Bidi_Class=R or AL. |
+ * |
+ * Returns TRUE for "ar" and "en-Hebr", FALSE for "zh" and "fa-Cyrl". |
+ * |
+ * @param locale input locale ID |
+ * @return TRUE if the locale's script is written right-to-left |
+ * @draft ICU 54 |
+ */ |
+U_DRAFT UBool U_EXPORT2 |
+uloc_isRightToLeft(const char *locale); |
+#endif /* U_HIDE_DRAFT_API */ |
+ |
/** |
* enums for the return value for the character and line orientation |
* functions. |
@@ -1132,4 +1151,106 @@ uloc_toLanguageTag(const char* localeID, |
UBool strict, |
UErrorCode* err); |
+#ifndef U_HIDE_DRAFT_API |
+/** |
+ * Converts the specified keyword (legacy key, or BCP 47 Unicode locale |
+ * extension key) to the equivalent BCP 47 Unicode locale extension key. |
+ * For example, BCP 47 Unicode locale extension key "co" is returned for |
+ * the input keyword "collation". |
+ * <p> |
+ * When the specified keyword is unknown, but satisfies the BCP syntax, |
+ * then the pointer to the input keyword itself will be returned. |
+ * For example, |
+ * <code>uloc_toUnicodeLocaleKey("ZZ")</code> returns "ZZ". |
+ * |
+ * @param keyword the input locale keyword (either legacy key |
+ * such as "collation" or BCP 47 Unicode locale extension |
+ * key such as "co"). |
+ * @return the well-formed BCP 47 Unicode locale extension key, |
+ * or NULL if the specified locale keyword cannot be |
+ * mapped to a well-formed BCP 47 Unicode locale extension |
+ * key. |
+ * @see uloc_toLegacyKey |
+ * @draft ICU 54 |
+ */ |
+U_DRAFT const char* U_EXPORT2 |
+uloc_toUnicodeLocaleKey(const char* keyword); |
+ |
+/** |
+ * Converts the specified keyword value (legacy type, or BCP 47 |
+ * Unicode locale extension type) to the well-formed BCP 47 Unicode locale |
+ * extension type for the specified keyword (category). For example, BCP 47 |
+ * Unicode locale extension type "phonebk" is returned for the input |
+ * keyword value "phonebook", with the keyword "collation" (or "co"). |
+ * <p> |
+ * When the specified keyword is not recognized, but the specified value |
+ * satisfies the syntax of the BCP 47 Unicode locale extension type, |
+ * or when the specified keyword allows 'variable' type and the specified |
+ * value satisfies the syntax, then the pointer to the input type value itself |
+ * will be returned. |
+ * For example, |
+ * <code>uloc_toUnicodeLocaleType("Foo", "Bar")</code> returns "Bar", |
+ * <code>uloc_toUnicodeLocaleType("variableTop", "00A4")</code> returns "00A4". |
+ * |
+ * @param keyword the locale keyword (either legacy key such as |
+ * "collation" or BCP 47 Unicode locale extension |
+ * key such as "co"). |
+ * @param value the locale keyword value (either legacy type |
+ * such as "phonebook" or BCP 47 Unicode locale extension |
+ * type such as "phonebk"). |
+ * @return the well-formed BCP47 Unicode locale extension type, |
+ * or NULL if the locale keyword value cannot be mapped to |
+ * a well-formed BCP 47 Unicode locale extension type. |
+ * @see uloc_toLegacyType |
+ * @draft ICU 54 |
+ */ |
+U_DRAFT const char* U_EXPORT2 |
+uloc_toUnicodeLocaleType(const char* keyword, const char* value); |
+ |
+/** |
+ * Converts the specified keyword (BCP 47 Unicode locale extension key, or |
+ * legacy key) to the legacy key. For example, legacy key "collation" is |
+ * returned for the input BCP 47 Unicode locale extension key "co". |
+ * |
+ * @param keyword the input locale keyword (either BCP 47 Unicode locale |
+ * extension key or legacy key). |
+ * @return the well-formed legacy key, or NULL if the specified |
+ * keyword cannot be mapped to a well-formed legacy key. |
+ * @see toUnicodeLocaleKey |
+ * @draft ICU 54 |
+ */ |
+U_DRAFT const char* U_EXPORT2 |
+uloc_toLegacyKey(const char* keyword); |
+ |
+/** |
+ * Converts the specified keyword value (BCP 47 Unicode locale extension type, |
+ * or legacy type or type alias) to the canonical legacy type. For example, |
+ * the legacy type "phonebook" is returned for the input BCP 47 Unicode |
+ * locale extension type "phonebk" with the keyword "collation" (or "co"). |
+ * <p> |
+ * When the specified keyword is not recognized, but the specified value |
+ * satisfies the syntax of legacy key, or when the specified keyword |
+ * allows 'variable' type and the specified value satisfies the syntax, |
+ * then the pointer to the input type value itself will be returned. |
+ * For example, |
+ * <code>uloc_toLegacyType("Foo", "Bar")</code> returns "Bar", |
+ * <code>uloc_toLegacyType("vt", "00A4")</code> returns "00A4". |
+ * |
+ * @param keyword the locale keyword (either legacy keyword such as |
+ * "collation" or BCP 47 Unicode locale extension |
+ * key such as "co"). |
+ * @param value the locale keyword value (either BCP 47 Unicode locale |
+ * extension type such as "phonebk" or legacy keyword value |
+ * such as "phonebook"). |
+ * @return the well-formed legacy type, or NULL if the specified |
+ * keyword value cannot be mapped to a well-formed legacy |
+ * type. |
+ * @see toUnicodeLocaleType |
+ * @draft ICU 54 |
+ */ |
+U_DRAFT const char* U_EXPORT2 |
+uloc_toLegacyType(const char* keyword, const char* value); |
+ |
+#endif /* U_HIDE_DRAFT_API */ |
+ |
#endif /*_ULOC*/ |