Skip to content
master
Switch branches/tags
Code

Latest commit

* Squashed commit of the following:

commit 3c47bd496e67a76dbaf07576065b45c3613da37d
Author: Muhammad Usman <muhammad@squareup.com>
Date:   Tue Jul 9 14:23:49 2019 -0700

    Removing sentry secret files

commit ed701c94a1a571eb851cdb2df9553617737a0f77
Author: Muhammad Usman <muhammad@squareup.com>
Date:   Tue Jul 9 14:17:12 2019 -0700

    squash! Merge pull request #233 from visoft/asset-sorting

    Squashed commit of the following:

    commit 987e99a71ecde6e0ed5426cda4ccb759c7313af6
    Merge: fb8fb58f b8dd9a37
    Author: Muhammad Usman <muhammad@squareup.com>
    Date:   Tue Jul 9 14:15:27 2019 -0700

        Merge branch 'master' into gh-internal-merge

        * master: (295 commits)
          Changing when start dates are for yesterday's reports for incoming
          Add a custom date picker where dates can go back up to the past 30 days
          Adding yesterday on reports page
          [SHUTTLE-1131] Update priority in summary page.
          [SHUTTLE-1133] Support searching translations on reviewers.
          remove byebug
          [SHUTTLE-1142] Skip client side format validation for IntlMessageFormat
          Adding reports page with downloadable links
          [SHUTTLE-1088] Add automatic TM migration after commits or articles loaded.
          add name for project instead of project object in db row
          Adding specific methods for each report saving, will refactor once it's working on staging
          Adding Report model for reports
          remove byebug from report generation
          schedule each report generation at 1 hour intervals
          Cleaning up pending job and incoming job to not use job_status
          v1 of completed jobs CSV report, needs some work still
          COMDASH-3272 - fix fencer range issue second attempt
          WIP changing date ranges
          Work in progress: Adding translated lookups for completed report
          COMDASH-3272 - fix the issue with incorrect fencer range & mal format
          ...

    commit b8dd9a37e1b19f23a1da52ace8f13f7c8c0f809b
    Merge: dba66940 7c36f09d
    Author: Muhammad Usman <muhammad@squareup.com>
    Date:   Wed Jul 3 17:59:22 2019 +0000

        Merge pull request #498 in INTL/shuttle from muhammad/add-date-picker-to-reports to master

        * commit '7c36f09d6ba8d2ccf0529bcb7f8914f681318b91':
          Changing when start dates are for yesterday's reports for incoming
          Add a custom date picker where dates can go back up to the past 30 days

    commit 7c36f09d6ba8d2ccf0529bcb7f8914f681318b91
    Author: Muhammad Usman <muhammad@squareup.com>
    Date:   Wed Jul 3 10:18:43 2019 -0700

        Changing when start dates are for yesterday's reports for incoming

    commit dba66940aede4e6040a2e076aac713feee64c94b
    Merge: eca9a94d a9988f63
    Author: Daniel Liu <dliu@squareup.com>
    Date:   Tue Jul 2 23:47:34 2019 +0000

        Merge pull request #497 in INTL/shuttle from dliu/square-edit-priority-summary-page to master

        * commit 'a9988f639984929f4a335aca174d57b0134c1328':
          [SHUTTLE-1131] Update priority in summary page.

    commit 02742905bf52632588a70f1999580dac789c331d
    Author: Muhammad Usman <muhammad@squareup.com>
    Date:   Mon Jul 1 15:34:33 2019 -0700

        Add a custom date picker where dates can go back up to the past 30 days

    commit eca9a94d0bddaba6b7fe5c9f7e61b3a09377ecfc
    Merge: 802d14e7 04fa97c6
    Author: Muhammad Usman <muhammad@squareup.com>
    Date:   Mon Jul 1 20:59:24 2019 +0000

        Merge pull request #470 in INTL/shuttle from muhammad/schedule-daily-report to master

        * commit '04fa97c62b0771a9d440ef2184767d435934c8c7':
          Adding yesterday on reports page
          remove byebug
          Adding reports page with downloadable links
          add name for project instead of project object in db row
          Adding specific methods for each report saving, will refactor once it's working on staging
          Adding Report model for reports
          remove byebug from report generation
          schedule each report generation at 1 hour intervals
          Cleaning up pending job and incoming job to not use job_status
          v1 of completed jobs CSV report, needs some work still
          WIP changing date ranges
          Work in progress: Adding translated lookups for completed report
          Add vscode settings directory to gitignore
          Updating to test against latest 20 day output, works for now
          changing to primary cron for now
          WIP still figuring out how to separate based on locale
          comment out report at 2am for now
          remove 5 day subtraction from yesterday
          updating report to include untranslated strings and words
          work in progress: adding a 2am report generation

    commit 04fa97c62b0771a9d440ef2184767d435934c8c7
    Author: Muhammad Usman <muhammad@squareup.com>
    Date:   Mon Jul 1 13:46:40 2019 -0700

        Adding yesterday on reports page

    commit a9988f639984929f4a335aca174d57b0134c1328
    Author: Daniel Liu <dliu@squareup.com>
    Date:   Thu Jun 27 13:22:04 2019 -0700

        [SHUTTLE-1131] Update priority in summary page.

    commit 802d14e7a29af7aa1d438767394b8a9d08984afb
    Merge: 2a327cc9 360c38af
    Author: Daniel Liu <dliu@squareup.com>
    Date:   Fri Jun 28 19:44:27 2019 +0000

        Merge pull request #496 in INTL/shuttle from dliu/square-support-reviewer-search to master

        * commit '360c38af1f60ecc0eda301984b9be3ea68bb59b4':
          [SHUTTLE-1133] Support searching translations on reviewers.

    commit 360c38af1f60ecc0eda301984b9be3ea68bb59b4
    Author: Daniel Liu <dliu@squareup.com>
    Date:   Wed Jun 26 12:55:14 2019 -0700

        [SHUTTLE-1133] Support searching translations on reviewers.

    commit f5edab259b50fd7aa0f293f189278effc6a12d2d
    Author: Muhammad Usman <muhammad@squareup.com>
    Date:   Thu Jun 27 10:35:20 2019 -0700

        remove byebug

    commit 2a327cc9cb77b0c84262fc6348ef3c62449fa6a1
    Merge: daf5814a 069745a0
    Author: Muhammad Usman <muhammad@squareup.com>
    Date:   Thu Jun 27 17:30:46 2019 +0000

        Merge pull request #494 in INTL/shuttle from spartan-pr-06-26-2019 to master

        * commit '069745a0c7c40cec7cca1d03443b099e87310a02':
          Changes for sorting, gem version, and default for no asset project

    commit daf5814a3dba15311c30bf4e3eae447e349f0e76
    Merge: b9f418e4 075b2678
    Author: Daniel Liu <dliu@squareup.com>
    Date:   Wed Jun 26 19:38:58 2019 +0000

        Merge pull request #495 in INTL/shuttle from dliu/square-fix-intl-message-format to master

        * commit '075b2678b2059df160e6e61218777b58e10eb9ba':
          [SHUTTLE-1142] Skip client side format validation for IntlMessageFormat

    commit 075b2678b2059df160e6e61218777b58e10eb9ba
    Author: Daniel Liu <dliu@squareup.com>
    Date:   Wed Jun 26 11:45:35 2019 -0700

        [SHUTTLE-1142] Skip client side format validation for IntlMessageFormat

         An error message will be returned from server side.

    commit 069745a0c7c40cec7cca1d03443b099e87310a02
    Merge: b9f418e4 6f513c0a
    Author: Muhammad Usman <muhammad@squareup.com>
    Date:   Wed Jun 26 10:40:48 2019 -0700

        Merge remote-tracking branch 'github/master'

        * github/master:
          Changes for sorting, gem version, and default for no asset project

    commit a87b2b2b131fd373f0142ef58df8a2eb52b6661b
    Author: Muhammad Usman <muhammad@squareup.com>
    Date:   Tue Jun 25 16:10:11 2019 -0700

        Adding reports page with downloadable links

    commit b9f418e4b2908273c5946ca4694be97c1fa9f5e5
    Merge: 359b2afa d60d0b14
    Author: Daniel Liu <dliu@squareup.com>
    Date:   Tue Jun 25 19:05:50 2019 +0000

        Merge pull request #493 in INTL/shuttle from dliu/square-auto-tm-migration to master

        * commit 'd60d0b149aa68359c9a2ea00ab6045ae45120b59':
          [SHUTTLE-1088] Add automatic TM migration after commits or articles loaded.

    commit d60d0b149aa68359c9a2ea00ab6045ae45120b59
    Author: Daniel Liu <dliu@squareup.com>
    Date:   Fri Jun 14 15:02:41 2019 -0700

        [SHUTTLE-1088] Add automatic TM migration after commits or articles loaded.

        Summary of changes:
          - Add source string validator to check if source strings pass their fencers.
            If any source strings violate their fencers, an email will be sent to
            both localization team and shuttle team for human check.
          - Add TM automatic migration after loading Commits, Articles or Assets.
            The automatically migrated translations will be put as translated only.
            It still needs human reviewors to confirm.

    commit 64273d6dd76ec6062a3bff7e2361aa5104249148
    Author: Muhammad Usman <muhammad@squareup.com>
    Date:   Mon Jun 24 16:04:48 2019 -0700

        add name for project instead of project object in db row

    commit 45ba80151726707375a5d1e9e918b7cc2449a999
    Author: Muhammad Usman <muhammad@squareup.com>
    Date:   Mon Jun 24 15:39:26 2019 -0700

        Adding specific methods for each report saving, will refactor once it's working on staging

    commit 2488b92c35e052628a6d738869d948800ea5932a
    Author: Muhammad Usman <muhammad@squareup.com>
    Date:   Thu Jun 20 15:21:56 2019 -0700

        Adding Report model for reports

    commit 998b19ff09ce6b09fe8ba94a43d7c1cb3abec5d0
    Author: Muhammad Usman <muhammad@squareup.com>
    Date:   Thu Jun 20 14:28:59 2019 -0700

        remove byebug from report generation

    commit 86afdcf89485fbfbb7d729c9394977028f6167a6
    Author: Muhammad Usman <muhammad@squareup.com>
    Date:   Thu Jun 20 14:28:39 2019 -0700

        schedule each report generation at 1 hour intervals

    commit 416ef0254d4c18067e0831d1f55408172bfbfc33
    Author: Muhammad Usman <muhammad@squareup.com>
    Date:   Thu Jun 20 14:25:50 2019 -0700

        Cleaning up pending job and incoming job to not use job_status

    commit c4be33725495b7ae085cce7ad2f964442b72e0a4
    Author: Muhammad Usman <muhammad@squareup.com>
    Date:   Thu Jun 20 11:37:12 2019 -0700

        v1 of completed jobs CSV report, needs some work still

    commit 359b2afa0ad72e3d58509c8a3f5c8c782bafd748
    Merge: 66353b58 33936086
    Author: Chicheng Ren <cren@squareup.com>
    Date:   Wed Jun 19 22:35:48 2019 +0000

        Merge pull request #492 in INTL/shuttle from cren/fix-fencer-range-issue-second-attempt to master

        * commit '339360865076dc9fbf9af2a5764adac140125a26':
          COMDASH-3272 - fix fencer range issue second attempt

    commit 339360865076dc9fbf9af2a5764adac140125a26
    Author: Chicheng Ren <cren@squareup.com>
    Date:   Wed Jun 19 09:53:38 2019 -0700

        COMDASH-3272 - fix fencer range issue second attempt

    commit d8910fe464e18fb49b01f2b687134f9d2ba837e9
    Author: Muhammad Usman <muhammad@squareup.com>
    Date:   Wed Jun 19 10:13:33 2019 -0700

        WIP changing date ranges

    commit 66353b58fcb49997b14db299628aff1371446a46
    Merge: a5f0441c 69894170
    Author: Daniel Liu <dliu@squareup.com>
    Date:   Tue Jun 18 23:59:36 2019 +0000

        Merge pull request #491 in INTL/shuttle from dliu/sync-github-20190618 to master

        * commit '698941703ecdd7752dcc2ccf1748fd636c22820c':
          Ordered sentences by orginal_key
          Rebuilt paragraphs and took first or hyperlinked text run setting the content

    commit 698941703ecdd7752dcc2ccf1748fd636c22820c
    Merge: a5f0441c 30906dac
    Author: Daniel Liu <dliu@squareup.com>
    Date:   Tue Jun 18 16:53:45 2019 -0700

        Merge remote-tracking branch 'github/master' into dliu/sync-github-20190618

        * github/master:
          Ordered sentences by orginal_key
          Rebuilt paragraphs and took first or hyperlinked text run setting the content

    commit 0e858ca407821b3709e216ef3d6c9ae17616c80e
    Author: Muhammad Usman <muhammad@squareup.com>
    Date:   Tue Jun 18 16:21:17 2019 -0700

        Work in progress: Adding translated lookups for completed report

    commit a5f0441c643da3956ffb71420e10a274e6454bad
    Merge: 8376b20a f598aba5
    Author: Chicheng Ren <cren@squareup.com>
    Date:   Tue Jun 18 22:23:04 2019 +0000

        Merge pull request #490 in INTL/shuttle from cren/shuttle-fix-fencer-range-and-mal-format-issue to master

        * commit 'f598aba52fd397397f461fc4870f7a6ec9376e41':
          COMDASH-3272 - fix the issue with incorrect fencer range & mal format

    commit f598aba52fd397397f461fc4870f7a6ec9376e41
    Author: Chicheng Ren <cren@squareup.com>
    Date:   Mon Jun 17 17:47:54 2019 -0700

        COMDASH-3272 - fix the issue with incorrect fencer range & mal format

    commit bbb3b607feca2830e88810d9221a451ca0eb1ed6
    Author: Muhammad Usman <muhammad@squareup.com>
    Date:   Tue Jun 18 14:06:15 2019 -0700

        Add vscode settings directory to gitignore

    commit 1b91b170552497b6bc3f002d9faff11e934d3e48
    Author: Muhammad Usman <muhammad@squareup.com>
    Date:   Mon Jun 17 16:27:56 2019 -0700

        Updating to test against latest 20 day output, works for now

    commit 8376b20ab949e7ef4eca2bbcd1241db30a9ce865
    Merge: 830dc53b e461618c
    Author: Daniel Liu <dliu@squareup.com>
    Date:   Mon Jun 17 20:45:36 2019 +0000

        Merge pull request #489 in INTL/shuttle from dliu/square-skip-levenshtein-distance-diff to master

        * commit 'e461618c361fcea92886951e4ac3b1654ca5a053':
          [SHUTTLE-1137] Skip Levenshtein distance diff comparison.

    commit e461618c361fcea92886951e4ac3b1654ca5a053
    Author: Daniel Liu <dliu@squareup.com>
    Date:   Mon Jun 17 13:15:39 2019 -0700

        [SHUTTLE-1137] Skip Levenshtein distance diff comparison.

        Lvenshtein distance check works only on recursive mode when the string
        is relatively short. For a long string, the recursive mode drains all
        CPU & memory and basically freezes the web servers.

        We have decided to disable the Levenshtein distance compairson for now.

    commit 11f92194bd4bde8dd2fd51473aaf23620891a684
    Merge: 9b69028d 830dc53b
    Author: Muhammad Usman <muhammad@squareup.com>
    Date:   Mon Jun 17 11:37:16 2019 -0700

        Merge branch 'master' into muhammad/schedule-daily-report

        * master: (37 commits)
          Fixed issue with word-sample3 duplicating text
          Ordered assets in translation workbench Sorted assets by created_at and original_key
          Preferred highlighting over background color
          COMDASH-3272 - introduce complete ICU syntax support for shuttle
          [SHUTTLE-1126] Tune the search performance for translations in commit.
          [SHUTTLE-1119] Fix the commit search page.
          Improves the ES search quality.
          Improve fuzzy match in Elastic Search
          User check again...
          Check before trying to get user email
          user email on committer
          use loop'd item not instance variable
          adding requester info
          [SHUTTLE-1118] ES is not deleted after DB model is deleted.
          Asset fixes - keys and buffer loading for Docx files
          Corrected elimination of duplicate translation_changes, all specs passing
          Changed date to review or translation date, whichever exists
          Use translation and review dates instead of translation_changes.created_at
          Additional logic for highlighting in cells
          Fix for highlighted paragraphs
          ...

    commit 830dc53b7d45213e04a75e80b616ea77562dd214
    Merge: c336d62d ed009bc1
    Author: Muhammad Usman <muhammad@squareup.com>
    Date:   Wed Jun 5 22:53:16 2019 +0000

        Merge pull request #488 in INTL/shuttle from github-merge-june-6th to master

        * commit 'ed009bc17055e25e285d46f2c89b743d85b22906': (26 commits)
          Fixed issue with word-sample3 duplicating text
          Ordered assets in translation workbench Sorted assets by created_at and original_key
          Preferred highlighting over background color
          Asset fixes - keys and buffer loading for Docx files
          Corrected elimination of duplicate translation_changes, all specs passing
          Changed date to review or translation date, whichever exists
          Use translation and review dates instead of translation_changes.created_at
          Additional logic for highlighting in cells
          Fix for highlighted paragraphs
          Hyperlink is now exported to the translation (not position inserted, the whole translation)
          Bit of refactoring
          Initial handling of Url
          Docx Import and Export - First pass
          Asset fixes - keys and buffer loading for Docx files
          Corrected elimination of duplicate translation_changes, all specs passing
          Changed date to review or translation date, whichever exists
          Use translation and review dates instead of translation_changes.created_at
          Additional logic for highlighting in cells
          Fix for highlighted paragraphs
          Hyperlink is now exported to the translation (not position inserted, the whole translation)
          ...

    commit ed009bc17055e25e285d46f2c89b743d85b22906
    Merge: c336d62d 67e6371f
    Author: Muhammad Usman <muhammad@squareup.com>
    Date:   Wed Jun 5 15:28:48 2019 -0700

        Merge branch 'github-master' into deployable

        * github-master: (26 commits)
          Fixed issue with word-sample3 duplicating text
          Ordered assets in translation workbench Sorted assets by created_at and original_key
          Preferred highlighting over background color
          Asset fixes - keys and buffer loading for Docx files
          Corrected elimination of duplicate translation_changes, all specs passing
          Changed date to review or translation date, whichever exists
          Use translation and review dates instead of translation_changes.created_at
          Additional logic for highlighting in cells
          Fix for highlighted paragraphs
          Hyperlink is now exported to the translation (not position inserted, the whole translation)
          Bit of refactoring
          Initial handling of Url
          Docx Import and Export - First pass
          Asset fixes - keys and buffer loading for Docx files
          Corrected elimination of duplicate translation_changes, all specs passing
          Changed date to review or translation date, whichever exists
          Use translation and review dates instead of translation_changes.created_at
          Additional logic for highlighting in cells
          Fix for highlighted paragraphs
          Hyperlink is now exported to the translation (not position inserted, the whole translation)
          ...

    commit 67e6371f8fc64e07c960790ab65e00f39d4c4701
    Merge: 396b27f4 74ebd499
    Author: Muhammad Usman <muhammad@squareup.com>
    Date:   Wed Jun 5 15:11:14 2019 -0700

        Merge remote-tracking branch 'github/master' into github-master

        * github/master: (25 commits)
          Fixed issue with word-sample3 duplicating text
          Ordered assets in translation workbench Sorted assets by created_at and original_key
          Preferred highlighting over background color
          Used modified docx gem to stream the resulting file instead of saving to a temp file
          Asset fixes - keys and buffer loading for Docx files
          Corrected elimination of duplicate translation_changes, all specs passing
          Changed date to review or translation date, whichever exists
          Use translation and review dates instead of translation_changes.created_at
          Additional logic for highlighting in cells
          Fix for highlighted paragraphs
          Hyperlink is now exported to the translation (not position inserted, the whole translation)
          Bit of refactoring
          Initial handling of Url
          Docx Import and Export - First pass
          [SHUTTLE-995] Display Group display_name in translation list view
          Recalculate Group readiness after creation and updates.
          Fix saving blank string translation.
          [SHUTTLE-938] Show and search Group's display_name
          [SHUTTLE-910] Enhance translation update with single quote
          [SHUTTLE-919] Only admin can save single strainght quote translations.
          ...

    commit c336d62d11d42da2b0153f8cf898b7742e7b5203
    Merge: 7ab26c35 8fbdc0c8
    Author: Daniel Liu <dliu@squareup.com>
    Date:   Wed Jun 5 20:23:51 2019 +0000

        Merge pull request #486 in INTL/shuttle from dliu/square-fix-broken-commit-summary-page to master

        * commit '8fbdc0c83abc03ba682bb992fb0a08bf4edfe7de':
          [SHUTTLE-1119] Fix the commit search page.

    commit 7ab26c35ac3953eb13f2f9f489f01902ff406883
    Merge: 4cc68810 985d2081
    Author: Daniel Liu <dliu@squareup.com>
    Date:   Wed Jun 5 20:23:15 2019 +0000

        Merge pull request #487 in INTL/shuttle from dliu/square-fix-locale-project-search-performance to master

        * commit '985d208109e09663fbd1ccc46a69c57595ffc4c1':
          [SHUTTLE-1126] Tune the search performance for translations in commit.

    commit 4cc6881079e1cffed9d9ace822ec5752f7f1744e
    Merge: 097a9382 087ae2ce
    Author: Muhammad Usman <muhammad@squareup.com>
    Date:   Wed Jun 5 18:53:02 2019 +0000

        Merge pull request #484 in INTL/shuttle from muhammad/csv-requester-email to master

        * commit '087ae2ce99665c2fdab8a3c9b4e334600c246f87':
          User check again...
          Check before trying to get user email
          user email on committer
          use loop'd item not instance variable
          adding requester info

    commit 097a938242306a4f9da96acafad96ebfbce1137b
    Merge: 05d698b6 f824a83e
    Author: Chicheng Ren <cren@squareup.com>
    Date:   Wed Jun 5 16:40:21 2019 +0000

        Merge pull request #473 in INTL/shuttle from cren/introduce-full-icu-syntax-support-for-shuttle to master

        * commit 'f824a83ed0269cfd967bae486fa1b039c1d95d35':
          COMDASH-3272 - introduce complete ICU syntax support for shuttle

    commit f824a83ed0269cfd967bae486fa1b039c1d95d35
    Author: Chicheng Ren <cren@squareup.com>
    Date:   Tue May 14 14:32:45 2019 -0700

        COMDASH-3272 - introduce complete ICU syntax support for shuttle

    commit 985d208109e09663fbd1ccc46a69c57595ffc4c1
    Author: Daniel Liu <dliu@squareup.com>
    Date:   Tue Jun 4 12:56:45 2019 -0700

        [SHUTTLE-1126] Tune the search performance for translations in commit.

        Commits and keys are many to many relationships. For bigger commits,
        there are so many keys. As the repo is bigger, there are usually more
        commits (more engineers working on it).

        Remove the prefetch for commits from translations search.

    commit 8fbdc0c83abc03ba682bb992fb0a08bf4edfe7de
    Author: Daniel Liu <dliu@squareup.com>
    Date:   Mon Jun 3 17:30:59 2019 -0700

        [SHUTTLE-1119] Fix the commit search page.

        Summary of changes:
          - When filter string is empty string, don't filter on the empty string.
          - Refactor the code a little bit. It will make the page 10x faster.

    commit 05d698b6b6f5bd2d7fb43e93b7de8cd5a6a4847b
    Merge: f7fa89ac 2e5246ce
    Author: Daniel Liu <dliu@squareup.com>
    Date:   Mon Jun 3 20:02:40 2019 +0000

        Merge pull request #485 in INTL/shuttle from dliu/square-improve-fuzzy-search to master

        * commit '2e5246cee860177edaf7478a7ff5e0faa50c4bf4':
          Improves the ES search quality.
          Improve fuzzy match in Elastic Search

    commit 2e5246cee860177edaf7478a7ff5e0faa50c4bf4
    Author: Daniel Liu <dliu@squareup.com>
    Date:   Fri May 31 17:00:39 2019 -0700

        Improves the ES search quality.

        Summary of changes:
          - Separate Chewy query and filter.
          - Update TranslationsIndex text field mapping to 'classic'
          - Optimize sorting without joining commit_keys

    commit 794f8fc63d98a1adc50405418aebb9a79cbd3157
    Author: Daniel Liu <dliu@squareup.com>
    Date:   Thu May 30 15:50:23 2019 -0700

        Improve fuzzy match in Elastic Search

    commit 087ae2ce99665c2fdab8a3c9b4e334600c246f87
    Author: Muhammad Usman <muhammad@squareup.com>
    Date:   Thu May 30 15:09:41 2019 -0700

        User check again...

    commit c7e41939e89d1e7324a1c7096a44c1ae5b0b0673
    Author: Muhammad Usman <muhammad@squareup.com>
    Date:   Thu May 30 15:06:48 2019 -0700

        Check before trying to get user email

    commit 8bc1745716732808923147a63196051db33c9e39
    Author: Muhammad Usman <muhammad@squareup.com>
    Date:   Thu May 30 15:03:11 2019 -0700

        user email on committer

    commit d81f54b7c6df1289729566dd35c5ad53d959c580
    Author: Muhammad Usman <muhammad@squareup.com>
    Date:   Thu May 30 14:59:45 2019 -0700

        use loop'd item not instance variable

    commit 46835718d0df6d798d18b9661b00c0370c7bf335
    Author: Muhammad Usman <muhammad@squareup.com>
    Date:   Thu May 30 14:48:39 2019 -0700

        adding requester info

    commit f7fa89ac15bdceea6b01666f4f418540df577331
    Merge: ef671a58 faec3721
    Author: Daniel Liu <dliu@squareup.com>
    Date:   Thu May 30 18:26:27 2019 +0000

        Merge pull request #482 in INTL/shuttle from dliu/square-fix-es-sync-on-destroy to master

        * commit 'faec372195dd726bdd1987c4ca869ac8a272857c':
          [SHUTTLE-1118] ES is not deleted after DB model is deleted.

    commit faec372195dd726bdd1987c4ca869ac8a272857c
    Author: Daniel Liu <dliu@squareup.com>
    Date:   Wed May 29 14:31:36 2019 -0700

        [SHUTTLE-1118] ES is not deleted after DB model is deleted.

        When a record in database is destroy, ES needs to delete the object too.

    commit 9b69028dd7fc71056c4e65e4cf6f012b94705d2e
    Author: Muhammad Usman <muhammad@squareup.com>
    Date:   Wed May 29 10:59:17 2019 -0700

        changing to primary cron for now

    commit 8e99b31998ebe7221fceecbfa862e9bc2ff83e3b
    Merge: a4be331b ef671a58
    Author: Muhammad Usman <muhammad@squareup.com>
    Date:   Wed May 29 10:17:43 2019 -0700

        Merge branch 'master' into muhammad/schedule-daily-report

        * master: (125 commits)
          Upgrade Ruby and fix broken tests.
          Upgrade Ruby and fix broken tests.
          Move to ES5 and Chewy
          Setup new Shuttle development environment   * Update ruby to 2.4.4   * Update staging hosts to new cluster   * Setup sidekiq on new staging worker host   * Update rugged gem from brandonweeks fork of 0.24.0     to a squarit fork of 0.27.2   * Update rake gem from 12.3.0 to 12.3.1   * Add bundler gem to get around bundler issue   * Update staging to use bitbucket.sqcorp.co
          Add sidekiq locking to the worker.
          fixing newrelic versions
          adding new relic version
          Asset fixes - keys and buffer loading for Docx files
          Corrected elimination of duplicate translation_changes, all specs passing
          Changed date to review or translation date, whichever exists
          Use translation and review dates instead of translation_changes.created_at
          Additional logic for highlighting in cells
          Fix for highlighted paragraphs
          Hyperlink is now exported to the translation (not position inserted, the whole translation)
          Bit of refactoring
          Initial handling of Url
          Docx Import and Export - First pass
          Fix saving blank string translation.
          [SHUTTLE-919] Only admin can save single strainght quote translations.
          Fix article groups
          ...

    commit ef671a5819158823a8b83bf3125ce191e3d829b9
    Merge: 74baaf75 c3acb971
    Author: Daniel Liu <dliu@squareup.com>
    Date:   Tue May 28 18:09:30 2019 +0000

        Merge pull request #390 in INTL/shuttle from tim/es6-chewy to master

        * commit 'c3acb97109caaed0ef1686e86530e9999dc51938':
          Upgrade Ruby and fix broken tests.
          Upgrade Ruby and fix broken tests.
          Move to ES5 and Chewy
          Setup new Shuttle development environment   * Update ruby to 2.4.4   * Update staging hosts to new cluster   * Setup sidekiq on new staging worker host   * Update rugged gem from brandonweeks fork of 0.24.0     to a squarit fork of 0.27.2   * Update rake gem from 12.3.0 to 12.3.1   * Add bundler gem to get around bundler issue   * Update staging to use bitbucket.sqcorp.co

    commit c3acb97109caaed0ef1686e86530e9999dc51938
    Author: Daniel Liu <dliu@squareup.com>
    Date:   Fri May 3 14:28:18 2019 -0700

        Upgrade Ruby and fix broken tests.

        Summary of changes:
          - Up grade Ruby to 2.4.6
          - Fix broken tests.
          - Upgrade ES server to 5.6.16
          - Setup production environment

    commit 88ab23d9c9a3e1c2db2d5b13d45eb4893fa55ffb
    Author: Daniel Liu <dliu@squareup.com>
    Date:   Fri May 3 14:28:18 2019 -0700

        Upgrade Ruby and fix broken tests.

        Summary of changes:
          - Up grade Ruby to 2.4.6
          - Fix broken tests.
          - Upgrade ES server to 5.6.16
          - Setup production environment

    commit e933208b0108ec9f668c7d22fc88010ef428bd95
    Author: Tim Morgan <github@timothymorgan.info>
    Date:   Wed Oct 24 15:13:58 2018 -0700

        Move to ES5 and Chewy

    commit 7d198955386c255108f9cc8abcd561dcc5c7140a
    Author: Huaqing Zheng <huasome@squareup.com>
    Date:   Tue Jun 19 14:02:17 2018 -0700

        Setup new Shuttle development environment
          * Update ruby to 2.4.4
          * Update staging hosts to new cluster
          * Setup sidekiq on new staging worker host
          * Update rugged gem from brandonweeks fork of 0.24.0
            to a squarit fork of 0.27.2
          * Update rake gem from 12.3.0 to 12.3.1
          * Add bundler gem to get around bundler issue
          * Update staging to use bitbucket.sqcorp.co

        Run rvm 2.4.4@shuttle do gem install bundler on the server to
        install bundler outside the @global gemset.

    commit 74baaf758c0d5c1c1872baf659b505d2c3f08512
    Merge: f7ac6526 be81e99b
    Author: Muhammad Usman <muhammad@squareup.com>
    Date:   Thu May 23 21:05:01 2019 +0000

        Merge pull request #464 in INTL/shuttle from muhammad/cleanup-branches-everyday to master

        * commit 'be81e99bd13ce9956fb110256445d5545ba197f3':
          Clean up repos every day instead of every Saturday

    commit f7ac652615792416fc0c83b6449dddc277317d58
    Merge: 6abd39a8 a9cfea4f
    Author: Muhammad Usman <muhammad@squareup.com>
    Date:   Thu May 23 18:13:31 2019 +0000

        Merge pull request #477 in INTL/shuttle from may-22-update to master

        * commit 'a9cfea4fe07f02f3e92a8ee8821cbc88b349638c': (37 commits)
          fixing newrelic versions
          adding new relic version
          Asset fixes - keys and buffer loading for Docx files
          Corrected elimination of duplicate translation_changes, all specs passing
          Changed date to review or translation date, whichever exists
          Use translation and review dates instead of translation_changes.created_at
          Additional logic for highlighting in cells
          Fix for highlighted paragraphs
          Hyperlink is now exported to the translation (not position inserted, the whole translation)
          Bit of refactoring
          Initial handling of Url
          Docx Import and Export - First pass
          Fix saving blank string translation.
          [SHUTTLE-919] Only admin can save single strainght quote translations.
          Fix article groups
          Used modified docx gem to stream the resulting file instead of saving to a temp file
          Asset fixes - keys and buffer loading for Docx files
          Corrected elimination of duplicate translation_changes, all specs passing
          Changed date to review or translation date, whichever exists
          Use translation and review dates instead of translation_changes.created_at
          ...

    commit 6abd39a87bdecfb2425a44c62cbf2b1be8ed59c6
    Merge: f4eb9b9d e56b3834
    Author: Daniel Liu <dliu@squareup.com>
    Date:   Wed May 22 23:25:33 2019 +0000

        Merge pull request #478 in INTL/shuttle from dliu/square-fix-inactive-user-decomissioner to master

        * commit 'e56b38349e2a657005b83dca24a80cb4fc0b18e7':
          Add sidekiq locking to the worker.

    commit e56b38349e2a657005b83dca24a80cb4fc0b18e7
    Author: Daniel Liu <dliu@squareup.com>
    Date:   Wed May 22 16:18:42 2019 -0700

        Add sidekiq locking to the worker.

    commit f4eb9b9de33b26be79b260904b425b3aace3554a
    Merge: 5b698912 2805416a
    Author: Daniel Liu <dliu@squareup.com>
    Date:   Wed May 22 23:04:06 2019 +0000

        Merge pull request #476 in INTL/shuttle from dliu/square-decomission-inactive-users to master

        * commit '2805416af77fda8db9a1609873b79ad1d1ce189c':
          i[SHUTTLE-1069][SHUTTLE-1022][SHUTTLE-1070] Decomission inactive users.

    commit a9cfea4fe07f02f3e92a8ee8821cbc88b349638c
    Author: Muhammad Usman <muhammad@squareup.com>
    Date:   Wed May 22 15:31:06 2019 -0700

        fixing newrelic versions

    commit bce9d215008fd3144d2741d3ec93dbc6f0685820
    Author: Muhammad Usman <muhammad@squareup.com>
    Date:   Wed May 22 14:21:30 2019 -0700

        adding new relic version

    commit 008e316b46dff94ecbad691a6af925055bc343a1
    Merge: 1474bd0b e5d1131c
    Author: Muhammad Usman <muhammad@squareup.com>
    Date:   Wed May 22 13:54:12 2019 -0700

        Merge branch 'may-22-update' into deployable

        * may-22-update: (22 commits)
          Used modified docx gem to stream the resulting file instead of saving to a temp file
          Asset fixes - keys and buffer loading for Docx files
          Corrected elimination of duplicate translation_changes, all specs passing
          Changed date to review or translation date, whichever exists
          Use translation and review dates instead of translation_changes.created_at
          Additional logic for highlighting in cells
          Fix for highlighted paragraphs
          Hyperlink is now exported to the translation (not position inserted, the whole translation)
          Bit of refactoring
          Initial handling of Url
          Docx Import and Export - First pass
          [SHUTTLE-995] Display Group display_name in translation list view
          Recalculate Group readiness after creation and updates.
          Fix saving blank string translation.
          [SHUTTLE-938] Show and search Group's display_name
          [SHUTTLE-910] Enhance translation update with single quote
          [SHUTTLE-919] Only admin can save single strainght quote translations.
          [SHUTTLE-909] Reject translation with single quote.
          Fix article groups
          Fix fencer Printf
          ...

    commit e5d1131cdcaaa282e7f74a842e5ba18d93659d07
    Merge: 1474bd0b 78617c01
    Author: Muhammad Usman <muhammad@squareup.com>
    Date:   Wed May 22 11:49:39 2019 -0700

        update from github on may 22nd

    commit 1474bd0b06a0ffc4617dbb18b9630db589c7214a
    Author: Damien White <damien.white@visoftinc.com>
    Date:   Mon May 13 12:55:09 2019 -0400

        Asset fixes - keys and buffer loading for Docx files

    commit 2eb62b580ad9cf59939e638ff4df8367b8813fac
    Author: Damien White <damien.white@visoftinc.com>
    Date:   Tue May 7 12:35:14 2019 -0400

        Corrected elimination of duplicate translation_changes, all specs passing

    commit 6d7f3ff1130ac573bce9a562c1754e4e97a1a13b
    Author: Damien White <damien.white@visoftinc.com>
    Date:   Mon May 6 09:02:49 2019 -0400

        Changed date to review or translation date, whichever exists

    commit cced25ac4d1e7b326c5e49d0ed1655c51c5df16c
    Author: Damien White <damien.white@visoftinc.com>
    Date:   Thu Apr 18 20:50:32 2019 -0400

        Use translation and review dates instead of translation_changes.created_at

    commit e60abf3601f8243aa231ac10b59fc4e7beaffeb7
    Author: Damien White <damien.white@visoftinc.com>
    Date:   Tue Apr 9 15:52:23 2019 -0400

        Additional logic for highlighting in cells

    commit d3f80e4951772b80b583a14eafeec2e6eff8ef8b
    Author: Damien White <damien.white@visoftinc.com>
    Date:   Tue Apr 9 13:46:19 2019 -0400

        Fix for highlighted paragraphs

    commit 8961bb43e7b4b864796e05940aec1261a1c3299f
    Author: Damien White <damien.white@visoftinc.com>
    Date:   Mon Apr 8 19:25:57 2019 -0400

        Hyperlink is now exported to the translation (not position inserted, the whole translation)

    commit e5c5be964b5d0becb21d76c19d66bc13c5eab4f7
    Author: Damien White <damien.white@visoftinc.com>
    Date:   Tue Apr 2 13:37:02 2019 -0400

        Bit of refactoring

    commit dd8c02ec303b46954f1e549e77869cfbb69d2909
    Author: Damien White <damien.white@visoftinc.com>
    Date:   Thu Mar 14 15:27:43 2019 -0400

        Initial handling of Url

    commit aa0d7089cc56ea8ff5fe1f8061ba52f75a350eb4
    Author: Damien White <damien.white@visoftinc.com>
    Date:   Sun Mar 10 20:06:45 2019 -0400

        Docx Import and Export - First pass

    commit ca31aa1d5e44dfd705417413142d6d06189f8ec9
    Author: Daniel Liu <dliu@squareup.com>
    Date:   Wed Feb 27 17:54:45 2019 -0800

        Fix saving blank string translation.

        Summary of changes:
         - Showing warning messages while user entering single quote (etc).
           The web page allows the user to click Save button to submit no matter if there is a warning.
         - Fix the issue blank string field is not sent to server side.
         - Make the source copy area the same size of copy area.

    commit 508b5e4ce5cda4a8026bb5f86126f823e3b173eb
    Author: Daniel Liu <dliu@squareup.com>
    Date:   Fri Dec 7 16:20:46 2018 -0800

        [SHUTTLE-919] Only admin can save single strainght quote translations.

    commit 2e328595f2a8adca2edc531c9b3ca5acaa35ada4
    Author: Daniel Liu <dliu@squareup.com>
    Date:   Wed Mar 20 17:06:13 2019 -0700

        Fix article groups

        Summary of changes:
          - handle article group project filter
          - update article group readiness based on article readiness

    commit 2805416af77fda8db9a1609873b79ad1d1ce189c
    Author: Daniel Liu <dliu@squareup.com>
    Date:   Thu May 16 15:35:37 2019 -0700

        i[SHUTTLE-1069][SHUTTLE-1022][SHUTTLE-1070] Decomission inactive users.

    commit 396b27f41452c5be1eb4f838b85db1b6c194f7d0
    Merge: ec4cfef9 09a34a28
    Author: Muhammad Usman <muhammad@squareup.com>
    Date:   Wed May 22 10:29:36 2019 -0700

        Merge branch 'master' into github-master

        * master:
          Asset fixes - keys and buffer loading for Docx files
          Corrected elimination of duplicate translation_changes, all specs passing
          Changed date to review or translation date, whichever exists
          Use translation and review dates instead of translation_changes.created_at
          Additional logic for highlighting in cells
          Fix for highlighted paragraphs
          Hyperlink is now exported to the translation (not position inserted, the whole translation)
          Bit of refactoring
          Initial handling of Url
          Docx Import and Export - First pass
          Fix saving blank string translation.
          [SHUTTLE-919] Only admin can save single strainght quote translations.
          Fix article groups

    commit a4be331b962bec727570e00d066251acde762b95
    Author: Muhammad Usman <muhammad@squareup.com>
    Date:   Tue May 21 15:47:19 2019 -0700

        WIP still figuring out how to separate based on locale

    commit ec4cfef98a67f268fcb3bc4469a382f762d7b9aa
    Author: Damien White <damien.white@visoftinc.com>
    Date:   Mon May 13 12:55:09 2019 -0400

        Asset fixes - keys and buffer loading for Docx files

    commit 2a990e27d34dc7a4df816e49372f0baa16b62033
    Author: Damien White <damien.white@visoftinc.com>
    Date:   Tue May 7 12:35:14 2019 -0400

        Corrected elimination of duplicate translation_changes, all specs passing

    commit 405ede8ee5b9e8c8d1c5f6a5e7d37444ebe4b9cf
    Author: Damien White <damien.white@visoftinc.com>
    Date:   Mon May 6 09:02:49 2019 -0400

        Changed date to review or translation date, whichever exists

    commit 5670ee4ac080f1c87d8d83dcf13a259074fff059
    Author: Damien White <damien.white@visoftinc.com>
    Date:   Thu Apr 18 20:50:32 2019 -0400

        Use translation and review dates instead of translation_changes.created_at

    commit ddfe589c500de44190d83f05e0252a19dea48382
    Author: Damien White <damien.white@visoftinc.com>
    Date:   Tue Apr 9 15:52:23 2019 -0400

        Additional logic for highlighting in cells

    commit 99bc308ab1c5c02d6b1fa6327adeeaa05fcaafbe
    Author: Damien White <damien.white@visoftinc.com>
    Date:   Tue Apr 9 13:46:19 2019 -0400

        Fix for highlighted paragraphs

    commit e14e6f37e16952ff022d1b39ba7242c216a61c01
    Author: Damien White <damien.white@visoftinc.com>
    Date:   Mon Apr 8 19:25:57 2019 -0400

        Hyperlink is now exported to the translation (not position inserted, the whole translation)

    commit 94428629feead25c3b84aa07f89ac2744cd73f71
    Author: Damien White <damien.white@visoftinc.com>
    Date:   Tue Apr 2 13:37:02 2019 -0400

        Bit of refactoring

    commit 514d0da4e310a49a654d34cf0c7b2ff7169127b8
    Author: Damien White <damien.white@visoftinc.com>
    Date:   Thu Mar 14 15:27:43 2019 -0400

        Initial handling of Url

    commit a674bb29cb0d14e38b59ada8589eddee0d6d4d40
    Author: Damien White <damien.white@visoftinc.com>
    Date:   Sun Mar 10 20:06:45 2019 -0400

        Docx Import and Export - First pass

    commit 5b6989121f11a077bb47dccc2ba8fb0f923f06d3
    Merge: bf0db364 e7035bf4
    Author: Daniel Liu <dliu@squareup.com>
    Date:   Fri May 17 20:47:59 2019 +0000

        Merge pull request #475 in INTL/shuttle from dliu/square-fix-build-debian to master

        * commit 'e7035bf429e79736e1cffd83c584ff88d4ed37ee':
          Fix the debian error during docker build.

    commit e7035bf429e79736e1cffd83c584ff88d4ed37ee
    Author: Daniel Liu <dliu@squareup.com>
    Date:   Fri May 17 13:33:05 2019 -0700

        Fix the debian error during docker build.

        Docker build failed with the following error:
        Step 9/14 : RUN apt-get update -qq     && apt-get install -y build-essential nodejs libarchive-dev libpq-dev        postgresql-client cmake tidy git     && apt-get clean
         ---> Running in 27a1b97f3fd9
        W: Failed to fetch http://deb.debian.org/debian/dists/jessie-updates/InRelease  Unable to find expected entry 'main/binary-amd64/Packages' in Release file (Wrong sources.list entry or malformed file)

    commit 09a34a28bcd4ba7b34ac03fefc614841dee1e64e
    Author: Damien White <damien.white@visoftinc.com>
    Date:   Mon May 13 12:55:09 2019 -0400

        Asset fixes - keys and buffer loading for Docx files

    commit 85cde4a7a792c19ce26a260f2273e0875c22c97a
    Author: Damien White <damien.white@visoftinc.com>
    Date:   Tue May 7 12:35:14 2019 -0400

        Corrected elimination of duplicate translation_changes, all specs passing

    commit b0b8ea7f1639169fe30d275c03884a49ef7d5469
    Author: Damien White <damien.white@visoftinc.com>
    Date:   Mon May 6 09:02:49 2019 -0400

        Changed date to review or translation date, whichever exists

    commit 6c2826a9c4ba8e480a81274faf5aa8f7e046497d
    Author: Damien White <damien.white@visoftinc.com>
    Date:   Thu Apr 18 20:50:32 2019 -0400

        Use translation and review dates instead of translation_changes.created_at

    commit abe655fc6e794eb883f233ec2135e8d63401d2e9
    Author: Damien White <damien.white@visoftinc.com>
    Date:   Tue Apr 9 15:52:23 2019 -0400

        Additional logic for highlighting in cells

    commit c3702aca540f1d747e36cf623fba70966a541149
    Author: Damien White <damien.white@visoftinc.com>
    Date:   Tue Apr 9 13:46:19 2019 -0400

        Fix for highlighted paragraphs

    commit cc733142706f9da9bb81569a716dea941f302a3f
    Author: Damien White <damien.white@visoftinc.com>
    Date:   Mon Apr 8 19:25:57 2019 -0400

        Hyperlink is now exported to the translation (not position inserted, the whole translation)

    commit a516f9fe6570fbcc6b27ea6ebe150557d21b583f
    Author: Damien White <damien.white@visoftinc.com>
    Date:   Tue Apr 2 13:37:02 2019 -0400

        Bit of refactoring

    commit 73a44dcd1a26d5d40da33a3e8fea3ddd99e662ba
    Author: Damien White <damien.white@visoftinc.com>
    Date:   Thu Mar 14 15:27:43 2019 -0400

        Initial handling of Url

    commit f1fb48f236b7de1395d78f1d585a9cef85c2e51c
    Author: Damien White <damien.white@visoftinc.com>
    Date:   Sun Mar 10 20:06:45 2019 -0400

        Docx Import and Export - First pass

    commit 4f7249e3efb367fc6b54cbbdb1fef5aa27e7ca48
    Author: Daniel Liu <dliu@squareup.com>
    Date:   Wed Feb 27 17:54:45 2019 -0800

        Fix saving blank string translation.

        Summary of changes:
         - Showing warning messages while user entering single quote (etc).
           The web page allows the user to click Save button to submit no matter if there is a warning.
         - Fix the issue blank string field is not sent to server side.
         - Make the source copy area the same size of copy area.

    commit 896f988ad7834f2faca3a7c15f8b2dccf5f26219
    Author: Daniel Liu <dliu@squareup.com>
    Date:   Fri Dec 7 16:20:46 2018 -0800

        [SHUTTLE-919] Only admin can save single strainght quote translations.

    commit 7c95135c3f5e0c6c886d2f99fad8b34f987ac0da
    Author: Daniel Liu <dliu@squareup.com>
    Date:   Wed Mar 20 17:06:13 2019 -0700

        Fix article groups

        Summary of changes:
          - handle article group project filter
          - update article group readiness based on article readiness

    commit bf0db364d5af79dcc05cf7a55b1ccb48f9534065
    Merge: dfdb05da afa41a3b
    Author: Muhammad Usman <muhammad@squareup.com>
    Date:   Fri May 10 20:55:10 2019 +0000

        Merge pull request #429 in INTL/shuttle from muhammad/style-updates to master

        * commit 'afa41a3b7a9c5827c8c50f6ed2545fa2a65d21ae': (77 commits)
          Adding changes for UI based on feedback
          Adding more typographic changes
          added new icons to indicate status and also changed background so no image is loaded on login screen
          a bit of cleaning up on the base styles
          missing merge conflict
          Capitalize save on form pages
          Making navbar less intimidating
          update how SHAs look in multiple places, removed some uppercasing
          Fix group sorting.
          [SHUTTLE-825] Add Group summary page.
          [SHUTTLE-1006] Add linked article and group counts.
          Fix broken deployment.
          Move libsodium for development group only.
          Add awesome_print gem
          Sync github on 03/08/2019
          Fix broken deployment.
          [SHUTTLE-993] Download iOS translations in UTF-8 encoding.
          removing sentry copying from capistrano deploy
          test
          Remove commented out conditional check for sentry's secret_key config
          ...

    commit afa41a3b7a9c5827c8c50f6ed2545fa2a65d21ae
    Author: Muhammad Usman <muhammad@squareup.com>
    Date:   Thu May 9 16:57:15 2019 -0700

        Adding changes for UI based on feedback

    commit dfdb05dad0b385accd2820caaf92d01ba7ec6af2
    Merge: f598f1bb e65766a2
    Author: Daniel Liu <dliu@squareup.com>
    Date:   Thu May 9 21:19:53 2019 +0000

        Merge pull request #472 in INTL/shuttle from dliu/square-string-importer-multilines to master

        * commit 'e65766a2a68b304f0de6ec9286cd1dfff4159295':
          [SHUTTLE-1087] Support multiline translation strings for iOS.

    commit e65766a2a68b304f0de6ec9286cd1dfff4159295
    Author: Daniel Liu <dliu@squareup.com>
    Date:   Thu May 9 14:05:35 2019 -0700

        [SHUTTLE-1087] Support multiline translation strings for iOS.

    commit f598f1bb31c1ef526816c719a2989787202dafaf
    Merge: 2fd10c00 c2b78337
    Author: Muhammad Usman <muhammad@squareup.com>
    Date:   Thu May 9 18:50:54 2019 +0000

        Merge pull request #471 in INTL/shuttle from muhammad/update-reset-script to master

        * commit 'c2b783375ba291ec4852fd75939e8bebc16a2349':
          Fixing the reset script by removing extraneous semi-colons

    commit e1e82f7ca9947e01a30315d9a2faa61693f2fbcc
    Merge: 6c240296 2fd10c00
    Author: Muhammad Usman <muhammad@squareup.com>
    Date:   Thu May 9 11:47:52 2019 -0700

        Merge branch 'master' into muhammad/style-updates

        * master:
          Allow all user types to download CSV
          [SHUTTLE-1066] Fix active record model relationship
          rename script
          Add a script to properly checkout master, delete deployable, and then create a new version of it
          Run branch touchdown jobs every 5 minutes instead of every minute
          Add groups and review counts for CSV download

    commit 6c240296016383e35a597a70c108fde6fc3686d6
    Author: Muhammad Usman <muhammad@squareup.com>
    Date:   Thu May 9 11:32:56 2019 -0700

        Adding more typographic changes

    commit 42a6d7b522a2e93a2c7a48080eb27e5bb3dddaca
    Author: Muhammad Usman <muhammad@squareup.com>
    Date:   Thu May 9 10:38:06 2019 -0700

        added new icons to indicate status and also changed background so no image is loaded on login screen

    commit c2b783375ba291ec4852fd75939e8bebc16a2349
    Author: Muhammad Usman <muhammad@squareup.com>
    Date:   Wed May 8 09:20:43 2019 -0700

        Fixing the reset script by removing extraneous semi-colons

    commit a88fa46db03ba652aa660f4ac94d7aee6c69a5a2
    Author: Muhammad Usman <muhammad@squareup.com>
    Date:   Tue May 7 14:38:21 2019 -0700

        comment out report at 2am for now

    commit 33e55affb866bda05ff7042f97a9cbd10bf96957
    Author: Muhammad Usman <muhammad@squareup.com>
    Date:   Tue May 7 14:37:23 2019 -0700

        remove 5 day subtraction from yesterday

    commit 2d59d47771c609f7dfbeefefb72ff802c84f2daf
    Author: Muhammad Usman <muhammad@squareup.com>
    Date:   Fri May 3 15:21:28 2019 -0700

        updating report to include untranslated strings and words

    commit 2fd10c0036c5c9275b29cbec71c6cf3ea14ea0b5
    Merge: c829ea5a 06516c8c
    Author: Muhammad Usman <muhammad@squareup.com>
    Date:   Wed May 1 23:16:57 2019 +0000

        Merge pull request #468 in INTL/shuttle from muhammad/all-users-can-download-csv to master

        * commit '06516c8ccf24c95048f4b2d7e34291c7cdb5d1a5':
          Allow all user types to download CSV

    commit 06516c8ccf24c95048f4b2d7e34291c7cdb5d1a5
    Author: Muhammad Usman <muhammad@squareup.com>
    Date:   Wed May 1 11:54:32 2019 -0700

        Allow all user types to download CSV

    commit 0d5f365af3581c13f5ef90039ee3dcb967dd713f
    Author: Muhammad Usman <muhammad@squareup.com>
    Date:   Wed May 1 11:16:40 2019 -0700

        work in progress: adding a 2am report generation

    commit c829ea5af23bad9d4b9833deae2afd863dfa51b4
    Merge: 1f816e0e 6ed21353
    Author: Muhammad Usman <muhammad@squareup.com>
    Date:   Mon Apr 29 20:20:22 2019 +0000

        Merge pull request #465 in INTL/shuttle from muhammad/branch-creation-script to master

        * commit '6ed213535045d1321c772884488b77f9ffdd994b':
          rename script
          Add a script to properly checkout master, delete deployable, and then create a new version of it

    commit 1f816e0e80db07fdb3275eacdb0909870bf802cf
    Merge: c8c70c8a 05a414c9
    Author: Daniel Liu <dliu@squareup.com>
    Date:   Fri Apr 26 21:38:13 2019 +0000

        Merge pull request #467 in INTL/shuttle from dliu/square-fix-model-relations to master

        * commit '05a414c9615244cbc5b5e0ed7a05bdcf498dcf88':
          [SHUTTLE-1066] Fix active record model relationship

    commit 05a414c9615244cbc5b5e0ed7a05bdcf498dcf88
    Author: Daniel Liu <dliu@squareup.com>
    Date:   Fri Apr 26 12:44:50 2019 -0700

        [SHUTTLE-1066] Fix active record model relationship

        Summary of changes:
          - Destroy translation_changes on Translation
          - Delete edit_reasons on TranslationChange

    commit 6ed213535045d1321c772884488b77f9ffdd994b
    Author: Muhammad Usman <muhammad@squareup.com>
    Date:   Wed Apr 24 14:28:05 2019 -0700

        rename script

    commit c8c70c8a74406d8207204f6d832381cefbdd9c73
    Merge: e89d9bea b0b78e17
    Author: Muhammad Usman <muhammad@squareup.com>
    Date:   Wed Apr 24 21:26:41 2019 +0000

        Merge pull request #462 in INTL/shuttle from muhammad/csv-download-v2 to master

        * commit 'b0b78e174f6a21fb7e39c2aa330f6840b9eb4918':
          Add groups and review counts for CSV download

    commit e89d9beaa4aeab8c6807ec069abc62ddd8c8f1ad
    Merge: 699549b2 d9fe7d36
    Author: Muhammad Usman <muhammad@squareup.com>
    Date:   Wed Apr 24 21:26:34 2019 +0000

        Merge pull request #463 in INTL/shuttle from muhammad/every-five-mins-touchdown to master

        * commit 'd9fe7d363dca1d62053feddd21c9843ab498bb3c':
          Run branch touchdown jobs every 5 minutes instead of every minute

    commit 10c7a063fa26d09f78b834f9c92aed098d9dd896
    Author: Muhammad Usman <muhammad@squareup.com>
    Date:   Wed Apr 24 11:39:45 2019 -0700

        Add a script to properly checkout master, delete deployable, and then create a new version of it

    commit be81e99bd13ce9956fb110256445d5545ba197f3
    Author: Muhammad Usman <muhammad@squareup.com>
    Date:   Tue Apr 23 14:17:46 2019 -0700

        Clean up repos every day instead of every Saturday

    commit d9fe7d363dca1d62053feddd21c9843ab498bb3c
    Author: Muhammad Usman <muhammad@squareup.com>
    Date:   Tue Apr 23 14:15:44 2019 -0700

        Run branch touchdown jobs every 5 minutes instead of every minute

    commit 80ace1b66eb6d7ded179e531c7cec176991427c1
    Merge: aeec68e9 699549b2
    Author: Muhammad Usman <muhammad@squareup.com>
    Date:   Mon Apr 22 16:13:04 2019 -0700

        Merge branch 'master' into muhammad/style-updates

        * master:
          Check if params are empty.
          move active record's raise in transactional_callbacks option above everything else
          higher level logging in prod, debug was too noisy

    commit b0b78e174f6a21fb7e39c2aa330f6840b9eb4918
    Author: Muhammad Usman <muhammad@squareup.com>
    Date:   Mon Apr 22 14:34:57 2019 -0700

        Add groups and review counts for CSV download

    commit 699549b231e0fc3c3ad241686af0ee2307ca6dec
    Merge: cc96f996 4eeb5a15
    Author: Daniel Liu <dliu@squareup.com>
    Date:   Thu Apr 18 18:52:30 2019 +0000

        Merge pull request #461 in INTL/shuttle from dliu/square-check-empty-params to master

        * commit '4eeb5a1576a1b95183c2960be045aa4f978fb90b':
          Check if params are empty.

    commit 4eeb5a1576a1b95183c2960be045aa4f978fb90b
    Author: Daniel Liu <dliu@squareup.com>
    Date:   Wed Apr 17 18:56:32 2019 -0700

        Check if params are empty.

    commit aeec68e9123d4bd42916dbaf688f51fed57118a1
    Author: Muhammad Usman <muhammad@squareup.com>
    Date:   Mon Apr 15 14:23:01 2019 -0700

        a bit of cleaning up on the base styles

    commit cc96f996faf07d2b237b812124f8b2cfcdb04992
    Merge: 0b17b145 e603f843
    Author: Muhammad Usman <muhammad@squareup.com>
    Date:   Mon Apr 15 21:05:16 2019 +0000

        Merge pull request #453 in INTL/shuttle from muhammad/remove-deprecation-warnings to master

        * commit 'e603f8432f21b1054840fa95e3908195e35f3ea2':
          move active record's raise in transactional_callbacks option above everything else

    commit 0b17b145fb47b8c8fa92189429a16259b49d8924
    Merge: 58a3fbbc ffec5638
    Author: Muhammad Usman <muhammad@squareup.com>
    Date:   Mon Apr 15 21:05:02 2019 +0000

        Merge pull request #451 in INTL/shuttle from muhammad/info-level-logging to master

        * commit 'ffec5638f0b3b2e17f58cd8310cdd0090c6d0936':
          higher level logging in prod, debug was too noisy

    commit 944234e2cfad2946faed3905ee3ca97751499b48
    Author: Muhammad Usman <muhammad@squareup.com>
    Date:   Mon Apr 15 13:33:58 2019 -0700

        missing merge conflict

    commit d65c5b24c8c06d3942df074550f46ae625d5d326
    Merge: 4aa47b32 58a3fbbc
    Author: Muhammad Usman <muhammad@squareup.com>
    Date:   Mon Apr 15 13:28:13 2019 -0700

        Merge branch 'master' into muhammad/style-updates

        * master: (85 commits)
          [SHUTTLE-947] Truncate article names
          [SHUTTLE-947] toggle feature to move between Details view and Translation view
          [SHUTTLE-825] Display pending linked rticles first.
          Add missing 'build' command to test instructions
          Allow passing in custom limit and use that limit in CSV download for number of rows to show
          Add name for IntlMessageFormat fencer
          Fix group sorting.
          [SHUTTLE-825] Add Group summary page.
          [SHUTTLE-1006] Add linked article and group counts.
          Fix broken deployment.
          Adding presenters in csv method to fetch item stats
          [SHUTTLE-1006] Add linked article and group counts.
          Fix broken deployment.
          Move libsodium for development group only.
          Add words to translate column
          Add awesome_print gem
          Sync github on 03/08/2019
          Fix broken deployment.
          [SHUTTLE-993] Download iOS translations in UTF-8 encoding.
          removing sentry copying from capistrano deploy
          ...

    commit 58a3fbbcb60e6c76ccdce47829f55d2adde1ddd2
    Merge: 08d28bcf 592e950e
    Author: Muhammad Usman <muhammad@squareup.com>
    Date:   Mon Apr 15 20:05:25 2019 +0000

        Merge pull request #456 in INTL/shuttle from gino/fix-readme-docker-tests to master

        * commit '592e950ea74beb789a402e899d4a070fb445f615':
          Add missing 'build' command to test instructions

    commit 08d28bcf01f6bc4c57144de962f16402d6f61859
    Merge: c0db8a39 4b3aadd8
    Author: Daniel Liu <dliu@squareup.com>
    Date:   Mon Apr 15 19:52:31 2019 +0000

        Merge pull request #459 in INTL/shuttle from dliu/square-truncate-article-name to master

        * commit '4b3aadd80ade8f9dd02314eed2ede803abfa478c':
          [SHUTTLE-947] Truncate article names

    commit 4b3aadd80ade8f9dd02314eed2ede803abfa478c
    Author: Daniel Liu <dliu@squareup.com>
    Date:   Fri Apr 12 17:00:59 2019 -0700

        [SHUTTLE-947] Truncate article names

    commit c0db8a39e801ac9f973067b848412499e8017d4b
    Merge: 5b2353e0 015e57b5
    Author: Daniel Liu <dliu@squareup.com>
    Date:   Fri Apr 12 23:46:57 2019 +0000

        Merge pull request #457 in INTL/shuttle from dliu/square-toggle-summary-page-transalte-page to master

        * commit '015e57b56bdd14ec4213deddb0d4ee61594ecf9a':
          [SHUTTLE-947] toggle feature to move between Details view and Translation view

    commit 015e57b56bdd14ec4213deddb0d4ee61594ecf9a
    Author: Daniel Liu <dliu@squareup.com>
    Date:   Thu Apr 11 16:36:39 2019 -0700

        [SHUTTLE-947] toggle feature to move between Details view and Translation view

    commit 5b2353e0dd0dfc83e20dfc9d0f11d424559142d5
    Merge: 1ea3c6f2 0eeb9bc8
    Author: Daniel Liu <dliu@squareup.com>
    Date:   Fri Apr 12 22:55:20 2019 +0000

        Merge pull request #458 in INTL/shuttle from dliu/square-sort-articles-in-group-summary-page to master

        * commit '0eeb9bc8aa90c19ff7ec475434efa03692556f54':
          [SHUTTLE-825] Display pending linked rticles first.

    commit 1ea3c6f282a7fdca6959375245ae76b4c251314b
    Merge: f2e46149 992ca6bb
    Author: Muhammad Usman <muhammad@squareup.com>
    Date:   Fri Apr 12 22:47:01 2019 +0000

        Merge pull request #450 in INTL/shuttle from muhammad/csv-update-links to master

        * commit '992ca6bbc1ce1d94960823d91d70a07b90ec6bab':
          Allow passing in custom limit and use that limit in CSV download for number of rows to show
          [SHUTTLE-1006] Add linked article and group counts.
          Fix broken deployment.
          Adding presenters in csv method to fetch item stats
          Add words to translate column

    commit 0eeb9bc8aa90c19ff7ec475434efa03692556f54
    Author: Daniel Liu <dliu@squareup.com>
    Date:   Fri Apr 12 15:39:20 2019 -0700

        [SHUTTLE-825] Display pending linked rticles first.

    commit 592e950ea74beb789a402e899d4a070fb445f615
    Author: Gino Miglio <gino@squareup.com>
    Date:   Fri Apr 12 14:40:25 2019 -0700

        Add missing 'build' command to test instructions

    commit 4aa47b32ba3eec4a50fc9f3c1f69925b97e53bde
    Author: Muhammad Usman <muhammad@squareup.com>
    Date:   Fri Apr 12 14:38:25 2019 -0700

        Capitalize save on form pages

    commit 992ca6bbc1ce1d94960823d91d70a07b90ec6bab
    Author: Muhammad Usman <muhammad@squareup.com>
    Date:   Fri Apr 12 14:18:34 2019 -0700

        Allow passing in custom limit and use that limit in CSV download for number of rows to show

    commit f2e46149160658aaa104c0cdcb46ab25e875dd40
    Merge: fb939028 db2fdee4
    Author: Gino Miglio <gino@squareup.com>
    Date:   Fri Apr 12 20:33:56 2019 +0000

        Merge pull request #455 in INTL/shuttle from gino/add-fencer-name-translation to master

        * commit 'db2fdee4aea67052987ad8755eaa1e63ac08631f':
          Add name for IntlMessageFormat fencer

    commit db2fdee4aea67052987ad8755eaa1e63ac08631f
    Author: Gino Miglio <gino@squareup.com>
    Date:   Fri Apr 12 12:21:37 2019 -0700

        Add name for IntlMessageFormat fencer

        Error messages are showing "translation missing: en.fencer.IntlMessageFormat"
        instead of an actual name, which is pretty confusing.

    commit dac3d89bddc422353131fe9fc45757e833e997a4
    Author: Muhammad Usman <muhammad@squareup.com>
    Date:   Thu Apr 11 17:16:06 2019 -0700

        Making navbar less intimidating

    commit b6afa905b754f52bab9e6d92d913840dc9001073
    Author: Muhammad Usman <muhammad@squareup.com>
    Date:   Thu Apr 11 16:58:21 2019 -0700

        update how SHAs look in multiple places, removed some uppercasing

    commit 2ea363c745a97c9cb4983bd9627052a43ef0824f
    Author: Daniel Liu <dliu@squareup.com>
    Date:   Thu Apr 11 15:20:44 2019 -0700

        Fix group sorting.

    commit a9685b822521ad5e7ee6e9d7171809dbbc9c214b
    Author: Daniel Liu <dliu@squareup.com>
    Date:   Tue Apr 9 18:02:22 2019 -0700

        [SHUTTLE-825] Add Group summary page.

    commit 80047fd8871022bf81e4373d18a1b6650a21a46b
    Author: Daniel Liu <dliu@squareup.com>
    Date:   Thu Apr 4 15:25:50 2019 -0700

        [SHUTTLE-1006] Add linked article and group counts.

    commit 87982a585649115e0d6e9e8c35a8740c3cad1eee
    Author: Daniel Liu <dliu@squareup.com>
    Date:   Thu Apr 4 16:14:07 2019 -0700

        Fix broken deployment.

    commit 9fc0f3e5a23528a31e06f62f27a40599d77ad853
    Author: Daniel Liu <dliu@squareup.com>
    Date:   Mon Apr 8 18:32:09 2019 -0700

        Move libsodium for development group only.

    commit a9c8e4f9d196b4b9e13271d2de22e5596ec25f78
    Author: Daniel Liu <dliu@squareup.com>
    Date:   Mon Apr 8 14:34:22 2019 -0700

        Add awesome_print gem

    commit aa58a7ae0e77c32d0b8a8999ebb0ce94cb908c03
    Author: Daniel Liu <dliu@squareup.com>
    Date:   Mon Apr 8 12:10:18 2019 -0700

        Sync github on 03/08/2019

    commit bc076f06f1360190e3ecb179e48297edd52130c7
    Author: Daniel Liu <dliu@squareup.com>
    Date:   Thu Apr 4 16:14:07 2019 -0700

        Fix broken deployment.

    commit 6261bcb0d1c3cab5950bc4df9967cc4fa0b6210b
    Author: Daniel Liu <dliu@square…
1225545

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
app
 
 
bin
 
 
 
 
 
 
db
 
 
doc
 
 
lib
 
 
log
 
 
 
 
 
 
 
 
tmp
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Shuttle: Magic localization dust Build Status

Shuttle is a website allowing for the automatic extraction and reintegration of localizable strings in a code base. It also provides an API where articles can be submitted for translation and retrieved. In addition, it provides a workflow for translators and reviewers optimized for the efficient processing of many strings. Finally, for project managers, it provides a dashboard allowing them to view and manage the progress of a localization effort.

Shuttle can be thought of as a Continuous Integration system for translations.

One typical Shuttle workflow is as follows:

  1. An engineer makes a commit to a Project, and marks that commit as requiring localization in Shuttle.
  2. Shuttle scans the commit for any localizable strings using its {Importer}s.
  3. New or modified localizable strings are marked as pending translation. They appear on the translators’ dashboard.
  4. Translators translate all these strings. They then appear on the reviewers’ dashboard.
  5. Reviewers review and approve translations.
  6. Once all translations applying to a commit are approved for all of a Project's required localizations, the Commit is marked as ready.
  7. When the commit is deployed, Shuttle provides a manifest of translated strings that is downloaded as part of the deploy artifact.

Another typical Shuttle workflow is as follows:

  1. An engineer makes an API call using a Project's api_token to submit a new {Article} (this can be an Article, Email, or anything else).
  2. Shuttle parses the {Article}, splits it up into small pieces of strings.
  3. Shuttle determines which strings need translation while optimizing for efficiency and accuracy. These strings appear on the translators’ dashboard.
  4. Translators translate all these strings. They then appear on the reviewers’ dashboard.
  5. Reviewers review and approve translations.
  6. Once all translations applying to a {Article} are approved for all of a Project's required localizations, the {Article} is marked as ready.
  7. An engineer makes an API call to retrieve the translated Articles.

The whole process is extremely parallelizable: while one commit might be pending translation or review, an engineer can make additional commits with new copy, and they will also sit in the queue awaiting translation. Once any commit is fully localized, it is marked as ready for release. This is true for Articles as well, except, Shuttle doesn't keep versions for Articles and any new submission will override the contents of the previous submission.

Shuttle will refuse to deliver a manifest for a commit or a Article that has not been fully translated and reviewed. To prevent such deploys, engineers should add a test to their CI script that ensures that the manifest endpoint does not return 404.

Getting Started

The easiest way to use Shuttle is with Docker. You will need to download and install a Docker environment. If you do not wish to use Docker, you can also install and configure all the necessary dependencies on your development environment.

Using Shuttle with Docker

To get set up, run docker-compose build to generate all the necessary images. You only have to do this once, and each time you make a change to the source code.

To run the generated images, run docker-compose up. Use docker-compose down to stop the running images. To initialize your database and ElasticSearch indexes for the first time, run docker-compose run web bin/docker-setup.

The Shuttle development database is stored as a Docker volume called shuttle_postgres_data. ElasticSearch data is stored as a Docker volume called shuttle_es_data.

Visit http://localhost:3000 and log in with the username admin@example.com and the password password123. This user is created by the seed script.

Create and import your first project!

Setting up your development environment without Docker

Developing for Shuttle requires Ruby 2.4.6, PostgreSQL 9.4, Redis, Tidy, Sidekiq Pro ElasticSearch 5.6, and a modern version of libarchive. To run Shuttle for the first time:

  1. Clone this project.

  2. Install Ruby 2.4.6. If you are using RVM, you can do so using the .ruby-version file.

  3. Run brew bundle to install all dependencies available via Homebrew, which are specified in the Brewfile, or install them manually referencing the Brewfile.

  4. Buy Sidekiq Pro and place your private source URL in Gemfile as specified by the Sidekiq Pro documentation.

  5. Create a PostgreSQL user called shuttle, and make it the owner of two PostgreSQL databases, shuttle_development and shuttle_test:

    createuser shuttle
    createdb -O shuttle shuttle_development
    createdb -O shuttle shuttle_test
  6. You will need to tell Bundler where the libarchive install directory is. If you installed libarchive using Homebrew, you can do this by running

    bundle config build.libarchive --with-opt-dir=$(brew --prefix libarchive)
  7. Likewise, for Rugged, you will need to tell Bundler where the libgit2 install directory is. If you installed libgit2 using Homebrew:

    bundle config build.rugged --with-opt-dir=$(brew --prefix libgit2)
  8. Make sure that PostgreSQL, Redis, and ElasticSearch are running. If you installed them via Homebrew, running brew info postgresql@9.6, brew info redis, and brew info elasticsearch will tell you how to run them.

  9. Install the mailcatcher gem, which is used to receive emails sent in development. (This gem is not a part of the Gemfile because it's typically installed as part of a global or system-wide gemset to be used with all projects.)

  10. Optionally, install the foreman gem, which runs all the processes necessary for development.

  11. Install all required gems by running bundle install.

  12. Run rake db:migrate db:seed to migrate and seed the database.

  13. Run RAILS_ENV=test rake db:migrate to setup the test database.

  14. Initialize the ElasticSearch index for development by running rake chewy:reset.

  15. Do the same for the test indexes: RAILS_ENV=test rake chewy:reset

  16. Verify that all specs pass with rspec spec.

Starting the server

To run the development environment, you will need to start the Web server, the mail client, and Sidekiq.

  • Running the Web server: rails server
  • Running the mail client: mailcatcher
  • Running Sidekiq: sidekiq -C config/sidekiq.yml

These processes can be launched together by running foreman start.

Visit http://localhost:3000 and log in with the username admin@example.com and the password password123. This user is created by the seed script.

Create and import your first project!

Adding your first project

You are now an admin user on Shuttle. You can click the "Add Project" button to configure your first project. You will need at least read-only access to this project's Git repository. Set up the locale and importing settings as necessary.

Once the project has been added, you can add a commit for it to import strings from. For starters, try entering "HEAD". Once you click "Add", you should see your Sidekiq server output start to fill up with importers processing all the blobs in your HEAD commit. There may be a delay as the repository is checked out to tmp/repos for the first time.

Refresh the Shuttle home page. When you click on your project name, it should expand to show your commit. The progress bar should be orange and indeterminate, indicating that the commit is being processed. Once processing is finished, the Sidekiq log will quiet down and the progress bar should change to an empty (white) bar, indicating that no translations have been made yet.

Click the progress bar to expand the commit and get detailed status information. You should see three numbers. The badged number on the right is the total number of translatable strings found in your project. Inside the progress bar are two numbers separated by a slash. The first number is the number of finished translations across all required locales (should be zero), and the second number is the total number of required translations (should be the number of translatable strings times the number of required locales, minus any keys that are not applicable to certain locales).

The "Import and approve a localization" field allows you to import an existing localization. For example, if your Rails project already has an "fr.yml" file that you want to import into Shuttle (to save your translators the effort of retyping all those translations), you can use this field to do it.

These are the features typically used by users with the "monitor" role. As an admin you can also explore and use the tools used by translators: The translation/review panel, the global search page, and the glossary. Managing other users is an admin-specific feature.

One last important feature that admins have is the ability to visit the "/sidekiq" URL, which lets them monitor and manage Sidekiq workers.

Deploying to production

Shuttle does not come with a deploy script; you should use whatever deploy system you are comfortable. Your deploy script should, in addition to copying the code and starting the Rails server,

  1. stop and restart the Sidekiq workers (the Sidekiq gem has scripts for this), and
  2. install the cron entries (the Whenever gem has scripts for this).

Documentation

Comprehensive documentation is written in YARD- and Markdown-formatted comments throughout the source. To view this documentation as an HTML site, run rake yard.

CoffeeScript libraries are documented using the YARD format as well, but YARD does not as yet recognize them as documentable files. A .codoopts file is included in case you wish to use Codo to generate the CoffeeScript docs, but as of now Codo does not recognize the ERb files, and does not use the full set of Markdown syntax features used in the documentation.

Architecture

Models

Object Model

Each {Project} has multiple {Commit Commits} or {Article Articles}. When a Commit or Article is created, it is scanned by {Importer Importers} for localizable strings. These strings are represented as {Translation} records. A base Translation is created in the project's base locale, and preapproved, and pending, untranslated Translations are created for each target locale. These families of Translations are grouped under {Key} records, one for each unique key in the Project. The newly created Translations are in the Project's base locale. Future imports reuse the existing Keys if the source copy is unchanged, otherwise generating new Keys and new Translations for the new source copy. {User Users} with the translator role then fill out pending Translations, and reviewers approve them.

When all of a Commit's/Article's Translations in all of a Project's required locales are marked as approved, the Commit/Article is marked as ready. This Commit's/Article's translated copy can then be exported to a manifest file using an {Exporter}, or localized versions of project files can be generated and downloaded using a {Localizer}.

Article keeps an ordered set of {Key Keys} whereas Commit keeps an unordered set, so that the exporter can put the Translations back together in the right order.

Models make extensive use of advanced PostgreSQL features for efficiency and convenience. Cached counters are updated using triggers and rules, foreign key constraints and hooks are enforced at the database level, and validations are backed up by corresponding CHECK triggers. This helps ensure referential and data integrity even in situations where Rails fails, or outside of the Rails stack. See the various migrations to learn more about the triggers, rules, and constraints being used. See the app/models/concerns directory for the Active Record mixins that leverage these PostgreSQL features.

Observers are used for more high-level triggers, such as sending emails. See the classes in app/models/observers for more.

Issues, Comments and Screenshots make up a light-weight issue-tracking system, and can be used by engineers and translators for easy communication and marking issues translations (compare to email communication where you don't see the previously raised issues in a translation unless you search for it on an external system).

Authentication and Authorization

Authentication is handled by Devise. Users log in using their email address and a password.

Shuttle uses a role-based authorization system. See the {User} model for details on the available user roles and their privileges.

Controllers

For information about requests and responses, see {ApplicationController}.

Views

This is a pretty typical Rails website, save for the views, which are written using Erector. The views forgo the traditional Rails concepts of partials and templates in favor of analogous OOP concepts more familiar to software developers: methods and inheritance. All views inherit from an abstract Erector widget which provides layout; and all views have their content split into multiple private methods.

In addition to the usual helpers (in app/helpers), there are view mixins under app/views/additions that simplify view coding.

JavaScript files are organized into four possible locations:

  • Third-party JavaScript libraries are in vendor/assets/javascripts and loaded in the application.js.coffee manifest.
  • JavaScript modules or helpers that are not specific to a particular page or site area are in lib/assets/javascripts and also loaded in application.js.coffee.
  • JavaScript modules or helpers specific to a particular area of the site are in app/assets/javascripts and also loaded in application.js.coffee.
  • Small JavaScript snippets, glue code, or other code intended to add dynamic behavior to a specific page is in a .js file named the same as, and placed alongside, the .html.rb view file. For example, if app/views/projects/new.html.rb needed a bit of JS glue code, it would be placed in app/views/projects/new.js. This code is placed in a <SCRIPT> tag at the end of the view by the application.slim layout.

CSS files are similarly organized:

  • Third-party CSS files are in vendor/assets/stylesheets and loaded in the application.css manifest.
  • CSS styles or helpers global to the entire website are in lib/assets/stylesheets and also loaded in application.css.
  • CSS styles specific to a single page or a related group of pages are placed in app/assets/stylesheets and also loaded in application.css. Each <BODY> tag is given a class name equal to the controller name, and an ID equal to the controller and action name separated with a dash. For instance, the projects/new action's body would be <body class=projects id=projects-new>.

Tasks

Various Rake tasks are available under lib/tasks. These include tasks for importing locale data, bulk-importing trados data, server cleanup and other development tasks.

Others

Shuttle also utilizes other design patterns such as:

  • Presenters (layer between Controllers and Views),
  • Mediators (layer between Controllers and Models),
  • Helpers (for generating views)
  • Services (to interact with other services or data stores such as Redis or ElasticSearch)

Distributed Processing

Worker Interactions

Shuttle is designed to handle large code bases. Fast processing of these code bases is achieved through highly parallelizing common tasks which are expected to take a non-trivial amount of time, using Sidekiq. All Sidekiq workers live in app/workers. Best examples are CommitImporter and ArticleImporter. These both kick off sub-workers in a batch, and run other tasks when all the jobs in the batch are finished.

Importing and Exporting

Shuttle provides a number of importer and exporter libraries that are capable of extracting strings or generating output in formats such as Rails i18n or iOS .strings files. These classes are in lib/importer and lib/exporter.

Some i18n platforms require that localizations be split across multiple files; normally, exporters only export a single file. To get around this restriction, these exporters will export gzip-compressed tarballs that can be expanded into the project's root directory.

Localization of files with inline copy

While importers can scan an entire project for localizable strings, exporters are built on the assumption that the exported file will contain only translated strings, and no other content or metadata. This will not work with, for example, xib files, which must be duplicated in their entirety (with the localized copy substituted for the original copy).

Shuttle handles this process with file localization. Importers that work with localizers (rather than exporters) also record metadata about where in the file the string came from. A localizer (under lib/localizer) recreates the original file and substitutes translated copy using the source information.

Key inclusion and exclusion lists

Certain keys can be excluded by a blacklist or whitelist system. These settings are spread about a couple of different places:

Project-global key exclusions and inclusions: The key_exclusions and key_inclusions metadata fields on Project are used to control global key whitelisting or blacklisting. Only one or the other should be set.

Locale-specific key exclusions and inclusions: The key_locale_exclusions and key_locale_inclusions metadata fields on Project are used to control key whitelisting or blacklisting on a locale-by-locale basis. For each locale, only a whitelist or a blacklist should be set.

Commit-specific key exclusions: If a particular commit has a .shuttle.yml file in the project root, it is read and the value key_exclusions key is used to further filter keys. It should be an array of keys or UNIX-style globs. This allows developers to exclude keys on a certain branch until that branch is ready for translation. Note that Keys belong to a Project and have a many-to-many relationship with Commits. Therefore, keys matching a commit-specific exclusion will still be imported, but will simply not be associated with the commit currently being processed. Because of this, no locale-specific exclusions are supported in this manner.

Project-global path filtering: The only_paths and skip_paths metadata fields on Project are used to prevent the importer from descending into certain paths.

Importer-specific path filtering: The only_importer_paths and skip_importer_paths metadata fields on Project are used to prevent certain importers from descending into specific paths.

See {Project#skip_key?}, {Project#skip_path?}, and {Commit#skip_key?} for more information.

Fencing

Fencing is the act of marking off portions of text as untranslatable (for example, HTML tags). These portions can be moved but not altered or deleted, in most cases. Fencing can also be used to mark off interpolation variables, such as %{count} in the Ruby i18n format.

A variety of fencers for common formats is provided under lib/fencer; they are not subclasses of an abstract superclass, but do all respond to the same informal interface.

Specs

All models, controllers, and library files are unit or integration-tested with RSpec specs under the spec directory. Views and JavaScript files are not specced. Almost all unit tests use factories rather than mocks, putting them somewhat closer to integration tests.

If you are using Docker, first run docker-compose -f docker-compose.test.yml build to build the images. This only has to be done once, and each time you make a change to the source code. Run docker-compose -f docker-compose.test.yml up to start the environment, and docker-compose -f docker-compose.test.yml run tests bin/docker-tests to actual run tests. Run docker-compose -f docker-compose.test.yml down when you are done testing to stop the running images.

If you are not using Docker, run unit tests with the rspec spec command.

About

String extraction, translation and export tools for the 21st century. "Moving strings around so you don't have to"

Resources

License

Releases

No releases published

Packages

No packages published