LocalizeTarget_2DToolKit_Label.cs 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. #if TK2D
  2. using UnityEngine;
  3. namespace I2.Loc
  4. {
  5. #if UNITY_EDITOR
  6. [UnityEditor.InitializeOnLoad]
  7. #endif
  8. public class LocalizeTarget_2DToolKit_Label : LocalizeTarget<tk2dTextMesh>
  9. {
  10. static LocalizeTarget_2DToolKit_Label() { AutoRegister(); }
  11. [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)] static void AutoRegister() { LocalizationManager.RegisterTarget(new LocalizeTargetDesc_Type<tk2dTextMesh, LocalizeTarget_2DToolKit_Label>() { Name = "2DToolKit Label", Priority = 100 }); }
  12. TextAnchor mOriginalAlignment = TextAnchor.MiddleCenter;
  13. bool mInitializeAlignment = true;
  14. public override eTermType GetPrimaryTermType(Localize cmp) { return eTermType.Text; }
  15. public override eTermType GetSecondaryTermType(Localize cmp) { return eTermType.TK2dFont; }
  16. public override bool CanUseSecondaryTerm() { return true; }
  17. public override bool AllowMainTermToBeRTL() { return true; }
  18. public override bool AllowSecondTermToBeRTL() { return false; }
  19. public override void GetFinalTerms(Localize cmp, string Main, string Secondary, out string primaryTerm, out string secondaryTerm)
  20. {
  21. primaryTerm = mTarget ? mTarget.text : null;
  22. secondaryTerm = (mTarget.font != null ? mTarget.font.name : string.Empty);
  23. }
  24. public override void DoLocalize(Localize cmp, string mainTranslation, string secondaryTranslation)
  25. {
  26. //--[ Localize Font Object ]----------
  27. tk2dFont newFont = cmp.GetSecondaryTranslatedObj<tk2dFont>(ref mainTranslation, ref secondaryTranslation);
  28. if (newFont != null && mTarget.font != newFont)
  29. {
  30. mTarget.font = newFont.data;
  31. }
  32. if (mInitializeAlignment)
  33. {
  34. mInitializeAlignment = false;
  35. mOriginalAlignment = mTarget.anchor;
  36. }
  37. if (mainTranslation != null && mTarget.text != mainTranslation)
  38. {
  39. if (Localize.CurrentLocalizeComponent.CorrectAlignmentForRTL)
  40. {
  41. int align = (int)mTarget.anchor;
  42. if (align % 3 == 0)
  43. mTarget.anchor = LocalizationManager.IsRight2Left ? mTarget.anchor + 2 : mOriginalAlignment;
  44. else
  45. if (align % 3 == 2)
  46. mTarget.anchor = LocalizationManager.IsRight2Left ? mTarget.anchor - 2 : mOriginalAlignment;
  47. }
  48. mTarget.text = mainTranslation;
  49. }
  50. }
  51. }
  52. }
  53. #endif