wordsModel.js 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. import * as Localization from "expo-localization";
  2. import { i18n, keys } from "../language";
  3. export default {
  4. state: {
  5. local: "",
  6. },
  7. actions: ({ model, setState }) => ({
  8. getWords() {
  9. const { local } = model();
  10. if (local) {
  11. i18n.locale = local;
  12. } else {
  13. i18n.locale = Localization.locale;
  14. setState({ local: Localization.locale });
  15. }
  16. const words = {};
  17. keys.forEach(item => {
  18. words[item] = i18n.t(item);
  19. });
  20. setState({ ...words });
  21. },
  22. getWordsStr(key) {
  23. const allWords = model();
  24. return allWords[key];
  25. },
  26. weekWords() {
  27. const {
  28. MONDAY,
  29. TUESDAY,
  30. WEDNESDAY,
  31. THURSDAY,
  32. FRIDAY,
  33. SATURDAY,
  34. SUNDAY,
  35. every,
  36. } = model();
  37. return {
  38. MONDAY,
  39. TUESDAY,
  40. WEDNESDAY,
  41. THURSDAY,
  42. FRIDAY,
  43. SATURDAY,
  44. SUNDAY,
  45. all: every,
  46. };
  47. },
  48. changeLocal() {
  49. const { local, getWords } = model();
  50. const list = ["zh", "th", "en"];
  51. const nowIndex = list.findIndex(item => {
  52. return local.indexOf(item) !== -1;
  53. });
  54. if (nowIndex !== -1) {
  55. setState({ local: list[(nowIndex + 1) % 3] });
  56. } else {
  57. setState({ local: Localization.locale });
  58. }
  59. getWords();
  60. },
  61. }),
  62. };
  63. // 国际化