Esempio n. 1
0
LanguageManager::LanguageManager() : m_invariant(OS_NEW LanguageCulture()),
    m_root(OS_NEW LanguageFolder())
{
    addFolder(m_root);

    m_dumpKey = false;
}
Esempio n. 2
0
shared_ptr<LanguageCulture> LanguageCulture::addCulture(const String &id)
{
	Cultures::const_iterator i = m_cultures.find(String(id).to_lower());
	if(i != m_cultures.end())
		return i->second;

	shared_ptr<LanguageCulture> culture(OS_NEW LanguageCulture(get_this_ptr()));
	m_cultures[String(id).to_lower()] = culture;

	return culture;
}
Esempio n. 3
0
void LanguageCulture::parse(shared_ptr<XMLNode> node)
{
	if(node->getName() == _S("culture"))
	{
		m_id = node->getAttributeString(_S("id"));

		m_englishName = node->getAttributeString(_S("englishName"));
		m_nativeName = node->getAttributeString(_S("nativeName"));
		m_isNeutralCulture = conversions::from_utf16<bool>(node->getAttributeString(_S("isNeutralCulture")));
		m_defaultNotNeutral = node->getAttributeString(_S("defaultNotNeutral"));
		m_isoName = node->getAttributeString(_S("isoName"));
		m_lcid = conversions::from_utf16<uint32>(node->getAttributeString(_S("LCID")));

		m_defaultTimeOffset = conversions::from_utf16<int32>(node->getAttributeString(_S("defaultTimeOffset")));

		LanguageManager::instance()->getCultures()[String(getID()).to_lower()] = get_this_ptr();

		shared_ptr<XMLNode> nodeCultures = node->getNode(_S("cultures"));
		if(nodeCultures != nullptr)
		{
			shared_ptr<XMLNodes> childs = nodeCultures->getNodes();
			for(XMLNodes::const_iterator i = childs->begin(); i != childs->end(); ++i)
			{
				shared_ptr<XMLNode> subNode = *i;

				OS_ASSERT(subNode->getName() == _S("culture"));

				shared_ptr<LanguageCulture> subCulture(OS_NEW LanguageCulture(get_this_ptr()));
				subCulture->parse(subNode);
				m_cultures[String(subCulture->getID()).to_lower()] = subCulture;
			}
		}

		shared_ptr<XMLNode> nodeDataTimeFormatInfo = node->getNode(_S("dateTimeFormatInfo"));
		if(nodeDataTimeFormatInfo != nullptr)
		{
			//m_calendarWeekRule = nodeDataTimeFormatInfo->getAttributeString(_S("calendarWeekRule"));
			//m_dateSeparator = nodeDataTimeFormatInfo->getAttributeString(_S("dateSeparator"));
			//m_timeSeparator = nodeDataTimeFormatInfo->getAttributeString(_S("timeSeparator"));
			m_amDesignator = nodeDataTimeFormatInfo->getAttributeString(_S("amDesignator"));
			m_pmDesignator = nodeDataTimeFormatInfo->getAttributeString(_S("pmDesignator"));

			m_longDatePattern = nodeDataTimeFormatInfo->getAttributeString(_S("longDatePattern"));
			m_shortDatePattern = nodeDataTimeFormatInfo->getAttributeString(_S("shortDatePattern"));
			m_longTimePattern = nodeDataTimeFormatInfo->getAttributeString(_S("longTimePattern"));
			m_shortTimePattern = nodeDataTimeFormatInfo->getAttributeString(_S("shortTimePattern"));

			shared_ptr<XMLNode> nodeDayNames = nodeDataTimeFormatInfo->getNode(_S("dayNames"));
			if(nodeDayNames != nullptr)
			{
				shared_ptr<XMLNodes> childs = nodeDayNames->getNodes();
				for(XMLNodes::const_iterator i = childs->begin(); i != childs->end(); ++i)
				{
					shared_ptr<XMLNode> nodeDayName = *i;

					uint32 index = conversions::from_utf16<uint32>(nodeDayName->getAttributeString(_S("index")));
					String name = nodeDayName->getAttributeString(_S("name"));
					String abbreviated = nodeDayName->getAttributeString(_S("abbreviated"));

					OS_ASSERT(index < 7);
					m_dayNamesLong[index] = name;
					m_dayNamesShort[index] = abbreviated;
				}
			}

			shared_ptr<XMLNode> nodeMonthNames = nodeDataTimeFormatInfo->getNode(_S("monthNames"));
			{
				shared_ptr<XMLNodes> childs = nodeMonthNames->getNodes();
				for(XMLNodes::const_iterator i = childs->begin(); i != childs->end(); ++i)
				{
					shared_ptr<XMLNode> nodeMonthName = *i;

					uint32 index = conversions::from_utf16<uint32>(nodeMonthName->getAttributeString(_S("index")));
					String name = nodeMonthName->getAttributeString(_S("name"));
					String abbreviated = nodeMonthName->getAttributeString(_S("abbreviated"));

					OS_ASSERT(index < 12);
					m_monthNamesLong[index] = name;
					m_monthNamesShort[index] = abbreviated;
				}
			}

		}
	}
}