TranslationDatabase.h 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. /*
  2. * Copyright (c) Contributors to the Open 3D Engine Project.
  3. * For complete copyright and license terms please see the LICENSE at the root of this distribution.
  4. *
  5. * SPDX-License-Identifier: Apache-2.0 OR MIT
  6. *
  7. */
  8. #pragma once
  9. #include <Translation/TranslationBus.h>
  10. #include <Translation/TranslationAsset.h>
  11. #include <AzCore/Asset/AssetManagerBus.h>
  12. #include <AzFramework/Asset/GenericAssetHandler.h>
  13. #include <AzFramework/Asset/AssetCatalogBus.h>
  14. #include <AzCore/JSON/stringbuffer.h>
  15. #include <AzCore/JSON/prettywriter.h>
  16. #include <AzCore/JSON/rapidjson.h>
  17. namespace GraphCanvas
  18. {
  19. // This does not get stored as-is, this is built up during editor load
  20. // time and becomes the one source of truth for translated or "pretty named" things.
  21. class TranslationDatabase
  22. : protected TranslationRequestBus::Handler
  23. , protected AZ::Data::AssetBus::MultiHandler
  24. , protected AZ::Data::AssetCatalogRequestBus::Handler
  25. , protected AzFramework::AssetCatalogEventBus::Handler
  26. {
  27. public:
  28. TranslationDatabase();
  29. ~TranslationDatabase();
  30. void Init();
  31. void Restore() override;
  32. void DumpDatabase(const AZStd::string& filename) override;
  33. bool HasKey(const AZStd::string& key) override;
  34. TranslationRequests::Details GetDetails(const AZStd::string& key, const Details& value) override;
  35. bool Get(const AZStd::string& key, AZStd::string& value) override;
  36. bool Add(const TranslationFormat& format) override;
  37. private:
  38. bool IsDuplicate(const AZStd::string& key);
  39. AZStd::unordered_map<AZStd::string, AZStd::string> m_database;
  40. AZStd::recursive_mutex m_mutex;
  41. };
  42. }