// Copyright (c) Wojciech Figat. All rights reserved. #pragma once #include "Engine/Content/JsonAsset.h" #include "Engine/Core/Collections/Array.h" #include "Engine/Core/Collections/Dictionary.h" #include "Engine/Scripting/SoftObjectReference.h" /// /// Contains localized strings table for a given culture. /// /// API_CLASS(NoSpawn) class FLAXENGINE_API LocalizedStringTable : public JsonAssetBase { DECLARE_ASSET_HEADER(LocalizedStringTable); public: /// /// The locale of the localized string table (eg. pl-PL). /// API_FIELD() String Locale; /// /// The fallback language table to use for missing keys. Eg. table for 'en-GB' can point to 'en' as a fallback to prevent problem of missing localized strings. /// API_FIELD() SoftObjectReference FallbackTable; /// /// The string table. Maps the message id into the localized text. For plural messages the list contains separate items for value numbers. /// API_FIELD() Dictionary> Entries; public: /// /// Adds the localized string to the table. /// /// The message id. Used for lookups. /// The localized text. API_FUNCTION() void AddString(const StringView& id, const StringView& value); /// /// Adds the localized plural string to the table. /// /// The message id. Used for lookups. /// The localized text. /// The plural value (0, 1, 2..). API_FUNCTION() void AddPluralString(const StringView& id, const StringView& value, int32 n); /// /// Gets the localized string by using string id lookup. Uses fallback table if text is not included in this table. /// /// The message identifier. /// The localized text. API_FUNCTION() String GetString(const String& id) const; /// /// Gets the localized plural string by using string id lookup. Uses fallback table if text is not included in this table. /// /// The message identifier. /// The value count for plural message selection. /// The localized text. API_FUNCTION() String GetPluralString(const String& id, int32 n) const; protected: // [JsonAssetBase] LoadResult loadAsset() override; void unload(bool isReloading) override; void OnGetData(rapidjson_flax::StringBuffer& buffer) const override; };