Merge "Add the missing sr-Latn into png files and rename the png locale header" am: 713d915636
am: dc235b5ab9
am:5ec12126f0
Change-Id: Ia6b861c91958d3be23a4a7456d6d5d8e4a1607c8 (cherry picked from commit9166f66eee
)
|
@ -28,7 +28,10 @@ LOCAL_WHOLE_STATIC_LIBRARIES := \
|
||||||
libdrm \
|
libdrm \
|
||||||
libsync_recovery
|
libsync_recovery
|
||||||
|
|
||||||
LOCAL_STATIC_LIBRARIES := libpng
|
LOCAL_STATIC_LIBRARIES := \
|
||||||
|
libpng \
|
||||||
|
libbase
|
||||||
|
|
||||||
LOCAL_CFLAGS := -Werror
|
LOCAL_CFLAGS := -Werror
|
||||||
LOCAL_C_INCLUDES := $(LOCAL_PATH)/include
|
LOCAL_C_INCLUDES := $(LOCAL_PATH)/include
|
||||||
LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH)/include
|
LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH)/include
|
||||||
|
@ -61,7 +64,10 @@ include $(BUILD_STATIC_LIBRARY)
|
||||||
include $(CLEAR_VARS)
|
include $(CLEAR_VARS)
|
||||||
LOCAL_MODULE := libminui
|
LOCAL_MODULE := libminui
|
||||||
LOCAL_WHOLE_STATIC_LIBRARIES += libminui
|
LOCAL_WHOLE_STATIC_LIBRARIES += libminui
|
||||||
LOCAL_SHARED_LIBRARIES := libpng
|
LOCAL_SHARED_LIBRARIES := \
|
||||||
|
libpng \
|
||||||
|
libbase
|
||||||
|
|
||||||
LOCAL_CFLAGS := -Werror
|
LOCAL_CFLAGS := -Werror
|
||||||
LOCAL_C_INCLUDES := $(LOCAL_PATH)/include
|
LOCAL_C_INCLUDES := $(LOCAL_PATH)/include
|
||||||
LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH)/include
|
LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH)/include
|
||||||
|
|
|
@ -20,6 +20,7 @@
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
|
|
||||||
#include <functional>
|
#include <functional>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
//
|
//
|
||||||
// Graphics.
|
// Graphics.
|
||||||
|
@ -93,7 +94,7 @@ int ev_get_epollfd();
|
||||||
// Resources
|
// Resources
|
||||||
//
|
//
|
||||||
|
|
||||||
bool matches_locale(const char* prefix, const char* locale);
|
bool matches_locale(const std::string& prefix, const std::string& locale);
|
||||||
|
|
||||||
// res_create_*_surface() functions return 0 if no error, else
|
// res_create_*_surface() functions return 0 if no error, else
|
||||||
// negative.
|
// negative.
|
||||||
|
|
|
@ -25,8 +25,11 @@
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
|
#include <regex>
|
||||||
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
|
#include <android-base/strings.h>
|
||||||
#include <png.h>
|
#include <png.h>
|
||||||
|
|
||||||
#include "minui/minui.h"
|
#include "minui/minui.h"
|
||||||
|
@ -371,16 +374,26 @@ int res_create_alpha_surface(const char* name, GRSurface** pSurface) {
|
||||||
|
|
||||||
// This function tests if a locale string stored in PNG (prefix) matches
|
// This function tests if a locale string stored in PNG (prefix) matches
|
||||||
// the locale string provided by the system (locale).
|
// the locale string provided by the system (locale).
|
||||||
bool matches_locale(const char* prefix, const char* locale) {
|
bool matches_locale(const std::string& prefix, const std::string& locale) {
|
||||||
if (locale == nullptr) {
|
// According to the BCP 47 format, A locale string may consists of:
|
||||||
return false;
|
// language-{extlang}-{script}-{region}-{variant}
|
||||||
|
// The locale headers in PNG mostly consist of language-{region} except for sr-Latn, and some
|
||||||
|
// android's system locale can have the format language-{script}-{region}.
|
||||||
|
|
||||||
|
// Return true if the whole string of prefix matches the top part of locale. Otherwise try to
|
||||||
|
// match the locale string without the {script} section.
|
||||||
|
// For instance, prefix == "en" matches locale == "en-US", prefix == "sr-Latn" matches locale
|
||||||
|
// == "sr-Latn-BA", and prefix == "zh-CN" matches locale == "zh-Hans-CN".
|
||||||
|
if (android::base::StartsWith(locale, prefix.c_str())) {
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Return true if the whole string of prefix matches the top part of
|
size_t separator = prefix.find('-');
|
||||||
// locale. For instance, prefix == "en" matches locale == "en_US";
|
if (separator == std::string::npos) {
|
||||||
// and prefix == "zh_CN" matches locale == "zh_CN_#Hans".
|
return false;
|
||||||
|
}
|
||||||
return (strncmp(prefix, locale, strlen(prefix)) == 0);
|
std::regex loc_regex(prefix.substr(0, separator) + "-[A-Za-z]*" + prefix.substr(separator));
|
||||||
|
return std::regex_match(locale, loc_regex);
|
||||||
}
|
}
|
||||||
|
|
||||||
int res_create_localized_alpha_surface(const char* name,
|
int res_create_localized_alpha_surface(const char* name,
|
||||||
|
|
|
@ -122,7 +122,7 @@ static const int BATTERY_READ_TIMEOUT_IN_SEC = 10;
|
||||||
static const int BATTERY_OK_PERCENTAGE = 20;
|
static const int BATTERY_OK_PERCENTAGE = 20;
|
||||||
static const int BATTERY_WITH_CHARGER_OK_PERCENTAGE = 15;
|
static const int BATTERY_WITH_CHARGER_OK_PERCENTAGE = 15;
|
||||||
static constexpr const char* RECOVERY_WIPE = "/etc/recovery.wipe";
|
static constexpr const char* RECOVERY_WIPE = "/etc/recovery.wipe";
|
||||||
static constexpr const char* DEFAULT_LOCALE = "en_US";
|
static constexpr const char* DEFAULT_LOCALE = "en-US";
|
||||||
|
|
||||||
static std::string locale;
|
static std::string locale;
|
||||||
static bool has_cache = false;
|
static bool has_cache = false;
|
||||||
|
|
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 49 KiB |
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 35 KiB |
Before Width: | Height: | Size: 111 KiB After Width: | Height: | Size: 110 KiB |
Before Width: | Height: | Size: 102 KiB After Width: | Height: | Size: 102 KiB |
Before Width: | Height: | Size: 61 KiB After Width: | Height: | Size: 60 KiB |
Before Width: | Height: | Size: 29 KiB After Width: | Height: | Size: 29 KiB |
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 68 KiB After Width: | Height: | Size: 68 KiB |
Before Width: | Height: | Size: 60 KiB After Width: | Height: | Size: 60 KiB |
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 34 KiB |
Before Width: | Height: | Size: 72 KiB After Width: | Height: | Size: 71 KiB |
Before Width: | Height: | Size: 51 KiB After Width: | Height: | Size: 51 KiB |
Before Width: | Height: | Size: 192 KiB After Width: | Height: | Size: 192 KiB |
Before Width: | Height: | Size: 172 KiB After Width: | Height: | Size: 172 KiB |
Before Width: | Height: | Size: 85 KiB After Width: | Height: | Size: 85 KiB |
Before Width: | Height: | Size: 119 KiB After Width: | Height: | Size: 119 KiB |
Before Width: | Height: | Size: 83 KiB After Width: | Height: | Size: 83 KiB |
Before Width: | Height: | Size: 437 KiB After Width: | Height: | Size: 437 KiB |
Before Width: | Height: | Size: 406 KiB After Width: | Height: | Size: 406 KiB |
Before Width: | Height: | Size: 237 KiB After Width: | Height: | Size: 238 KiB |
Before Width: | Height: | Size: 258 KiB After Width: | Height: | Size: 258 KiB |
Before Width: | Height: | Size: 173 KiB After Width: | Height: | Size: 174 KiB |
Before Width: | Height: | Size: 596 KiB After Width: | Height: | Size: 596 KiB |
Before Width: | Height: | Size: 554 KiB After Width: | Height: | Size: 555 KiB |
Before Width: | Height: | Size: 323 KiB After Width: | Height: | Size: 324 KiB |
|
@ -19,14 +19,15 @@
|
||||||
#include "minui/minui.h"
|
#include "minui/minui.h"
|
||||||
|
|
||||||
TEST(LocaleTest, Misc) {
|
TEST(LocaleTest, Misc) {
|
||||||
EXPECT_TRUE(matches_locale("zh_CN", "zh_CN_#Hans"));
|
EXPECT_TRUE(matches_locale("zh-CN", "zh-Hans-CN"));
|
||||||
EXPECT_TRUE(matches_locale("zh", "zh_CN_#Hans"));
|
EXPECT_TRUE(matches_locale("zh", "zh-Hans-CN"));
|
||||||
EXPECT_FALSE(matches_locale("zh_HK", "zh_CN_#Hans"));
|
EXPECT_FALSE(matches_locale("zh-HK", "zh-Hans-CN"));
|
||||||
EXPECT_TRUE(matches_locale("en_GB", "en_GB"));
|
EXPECT_TRUE(matches_locale("en-GB", "en-GB"));
|
||||||
EXPECT_TRUE(matches_locale("en", "en_GB"));
|
EXPECT_TRUE(matches_locale("en", "en-GB"));
|
||||||
EXPECT_FALSE(matches_locale("en_GB", "en"));
|
EXPECT_FALSE(matches_locale("en-GB", "en"));
|
||||||
EXPECT_FALSE(matches_locale("en_GB", "en_US"));
|
EXPECT_FALSE(matches_locale("en-GB", "en-US"));
|
||||||
EXPECT_FALSE(matches_locale("en_US", ""));
|
EXPECT_FALSE(matches_locale("en-US", ""));
|
||||||
// Empty locale prefix in the PNG file will match the input locale.
|
// Empty locale prefix in the PNG file will match the input locale.
|
||||||
EXPECT_TRUE(matches_locale("", "en_US"));
|
EXPECT_TRUE(matches_locale("", "en-US"));
|
||||||
|
EXPECT_TRUE(matches_locale("sr-Latn", "sr-Latn-BA"));
|
||||||
}
|
}
|
||||||
|
|