Skip to content

Instantly share code, notes, and snippets.

@tsnobip
Last active January 6, 2021 14:12

Revisions

  1. tsnobip revised this gist Jan 6, 2021. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion I18n.res
    Original file line number Diff line number Diff line change
    @@ -17,7 +17,7 @@ let localeCodeFromString = x =>
    external toLocaleDateString: (Js.Date.t, string) => string = "toLocaleDateString"
    let toLocaleDateString = (date, locale) => date->toLocaleDateString(locale->localeCodeToString)

    let useLocale = () => En_US
    let useLocale = () => En_US // use context to get locale

    let useMakeString = (makeString: localeCode => string) => {
    let locale = useLocale()
  2. tsnobip created this gist Jan 6, 2021.
    465 changes: 465 additions & 0 deletions I18n.res
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,465 @@
    let intToString = Js.Int.toString

    type localeCode = En_US

    let localeCodeToString = x =>
    switch x {
    | En_US => "en-US"
    }

    let localeCodeFromString = x =>
    switch x {
    | "en-US" => En_US
    | _default => En_US
    }

    @bs.send
    external toLocaleDateString: (Js.Date.t, string) => string = "toLocaleDateString"
    let toLocaleDateString = (date, locale) => date->toLocaleDateString(locale->localeCodeToString)

    let useLocale = () => En_US

    let useMakeString = (makeString: localeCode => string) => {
    let locale = useLocale()
    makeString(locale)->React.string
    }

    module Common = {
    module Button = {
    module Loading = {
    @react.component
    let make = () => {
    let makeString = locale =>
    switch locale {
    | En_US => "loading..."
    }
    useMakeString(makeString)
    }
    }
    module More = {
    @react.component
    let make = () => {
    let makeString = locale =>
    switch locale {
    | En_US => "more"
    }
    useMakeString(makeString)
    }
    }
    }

    module Date = {
    @react.component
    let make = (~date) => {
    let makeString = locale => date->toLocaleDateString(locale)
    useMakeString(makeString)
    }
    }

    module Header = {
    module Children = {
    @react.component
    let make = () => {
    let makeString = locale =>
    switch locale {
    | En_US => "children"
    }
    useMakeString(makeString)
    }
    }
    module CreatedBy = {
    @react.component
    let make = () => {
    let makeString = locale =>
    switch locale {
    | En_US => "created by"
    }
    useMakeString(makeString)
    }
    }
    module CreationDate = {
    @react.component
    let make = () => {
    let makeString = locale =>
    switch locale {
    | En_US => "created on"
    }
    useMakeString(makeString)
    }
    }
    module Description = {
    @react.component
    let make = () => {
    let makeString = locale =>
    switch locale {
    | En_US => "description"
    }
    useMakeString(makeString)
    }
    }
    module MyProjects = {
    @react.component
    let make = () => {
    let makeString = locale =>
    switch locale {
    | En_US => "my projects"
    }
    useMakeString(makeString)
    }
    }
    module Name = {
    @react.component
    let make = () => {
    let makeString = locale =>
    switch locale {
    | En_US => "name"
    }
    useMakeString(makeString)
    }
    }
    module Role = {
    @react.component
    let make = () => {
    let makeString = locale =>
    switch locale {
    | En_US => "role"
    }
    useMakeString(makeString)
    }
    }
    module Roles = {
    @react.component
    let make = () => {
    let makeString = locale =>
    switch locale {
    | En_US => "roles"
    }
    useMakeString(makeString)
    }
    }
    let username = locale =>
    switch locale {
    | En_US => "username"
    }
    module Username = {
    @react.component
    let make = () => {
    let makeString = locale => username(locale)
    useMakeString(makeString)
    }
    }
    }
    }

    module Branch = {
    module BranchChildren = {
    module NoChildren = {
    @react.component
    let make = () => {
    let makeString = locale =>
    switch locale {
    | En_US => "This branch has no children."
    }
    useMakeString(makeString)
    }
    }
    module LoadChildren = {
    @react.component
    let make = () => {
    let makeString = locale =>
    switch locale {
    | En_US => "load children"
    }
    useMakeString(makeString)
    }
    }
    }
    module CommitCount = {
    @react.component
    let make = (~commitCount) => {
    let makeString = locale =>
    switch locale {
    | En_US =>
    `This branch has ${switch commitCount {
    | 0 => "no commits"
    | 1 => "1 commit"
    | n => `${n->intToString} commits`
    }}`
    }
    useMakeString(makeString)
    }
    }
    module JoinBranch = {
    let branchName = (kind: [#PERSONAL | #WORKGROUP], locale) =>
    switch (locale, kind) {
    | (En_US, #PERSONAL) => "personal branch name"
    | (En_US, #WORKGROUP) => "working group name"
    }

    module CreateBranch = {
    @react.component
    let make = (~kind: [#PERSONAL | #WORKGROUP]) => {
    let makeString = locale =>
    switch (locale, kind) {
    | (En_US, #PERSONAL) => "create personal branch"
    | (En_US, #WORKGROUP) => "create working group"
    }
    useMakeString(makeString)
    }
    }

    module OpenEditor = {
    @react.component
    let make = () => {
    let makeString = locale =>
    switch locale {
    | En_US => "open editor"
    }
    useMakeString(makeString)
    }
    }
    }

    module MasterBranch = {
    module Description = {
    @react.component
    let make = (~name, ~created_at, ~updated_at, ~username) => {
    let makeString = locale =>
    switch locale {
    | En_US =>
    `The branch ${name} was created on ${created_at->toLocaleDateString(
    locale,
    )} by ${username}. Last updated on ${updated_at->toLocaleDateString(locale)}.`
    }
    useMakeString(makeString)
    }
    }

    module NoMasterBranch = {
    @react.component
    let make = () => {
    let makeString = locale =>
    switch locale {
    | En_US => "There is no master branch in this project"
    }
    useMakeString(makeString)
    }
    }
    module Title = {
    @react.component
    let make = () => {
    let makeString = locale =>
    switch locale {
    | En_US => "main branch"
    }
    useMakeString(makeString)
    }
    }
    }
    module Personal = {
    module Title = {
    @react.component
    let make = () => {
    let makeString = locale =>
    switch locale {
    | En_US => "personal branch"
    }
    useMakeString(makeString)
    }
    }
    }

    module Role = {
    let makeString = (locale, ~role) =>
    switch (locale, role) {
    | (En_US, #OWNER) => "owner"
    | (En_US, #EDITOR) => "editor"
    | (En_US, other) => j`unknown role ($other)`
    }

    @react.component
    let make = (~role) => useMakeString(makeString(~role))
    }
    module WorkGroup = {
    module Title = {
    @react.component
    let make = () => {
    let makeString = locale =>
    switch locale {
    | En_US => "workgroup"
    }
    useMakeString(makeString)
    }
    }
    }
    }

    module Editor = {
    module EditorPage = {
    module UnknownDoc = {
    @react.component
    let make = () => {
    let makeString = locale =>
    switch locale {
    | En_US => "This document doesn't exist or you don't have the rights to view it."
    }
    useMakeString(makeString)
    }
    }
    }
    module Menu = {
    module AcceptAll = {
    @react.component
    let make = () => {
    let makeString = locale =>
    switch locale {
    | En_US => "accept all"
    }
    useMakeString(makeString)
    }
    }
    module CommitTextHint = {
    let makeString = locale =>
    switch locale {
    | En_US => "explain the changes you've made"
    }
    }
    module PushChanges = {
    @react.component
    let make = () => {
    let makeString = locale =>
    switch locale {
    | En_US => "push changes"
    }
    useMakeString(makeString)
    }
    }
    module RightSideBar = {
    module TabName = {
    @react.component
    let make = (~tab) => {
    let makeString = locale =>
    switch locale {
    | En_US => switch tab {
    | #TrackChange =>"track changes"
    | #History => "history"
    }
    }
    useMakeString(makeString)
    }
    }
    }
    module Share = {
    @react.component
    let make = () => {
    let makeString = locale =>
    switch locale {
    | En_US => "share"
    }
    useMakeString(makeString)
    }
    }
    }
    }

    module Project = {
    module CreateProject = {
    let projectName = locale =>
    switch locale {
    | En_US => "project name"
    }

    module CreateNewProject = {
    @react.component
    let make = () => {
    let makeString = locale =>
    switch locale {
    | En_US => "create new project"
    }
    useMakeString(makeString)
    }
    }
    }
    module ProjectDetails = {
    module Description = {
    @react.component
    let make = (~created_at, ~username) => {
    let makeString = locale =>
    switch locale {
    | En_US => `created on ${created_at->toLocaleDateString(locale)} by ${username}`
    }
    useMakeString(makeString)
    }
    }
    }

    module ProjectPage = {
    module UnknownProject = {
    @react.component
    let make = () => {
    let makeString = locale =>
    switch locale {
    | En_US => "This project doesn't exist or you don't have the rights to view it."
    }
    useMakeString(makeString)
    }
    }
    }

    module ProjectRoles = {
    module RoleSummary = {
    @react.component
    let make = (~count) => {
    let makeString = locale =>
    switch locale {
    | En_US =>
    `${switch count {
    | 0 => "Nobody has"
    | 1 => "One person has"
    | _ => count->intToString
    }} persons have a role in this project`
    }
    useMakeString(makeString)
    }
    }
    }

    module ProjectTable = {
    module NoProjectsToShow = {
    @react.component
    let make = () => {
    let makeString = locale =>
    switch locale {
    | En_US => "no projects to show"
    }
    useMakeString(makeString)
    }
    }
    }

    module Role = {
    let makeString = (locale, ~role) =>
    switch (locale, role) {
    | (En_US, #OWNER) => "owner"
    | (En_US, other) => j`unknown role ($other)`
    }

    @react.component
    let make = (~role) => useMakeString(makeString(~role))
    }
    }

    module User = {
    module CreateUser = {
    module CreateNewUser = {
    @react.component
    let make = () => {
    let makeString = locale =>
    switch locale {
    | En_US => "create new user"
    }
    useMakeString(makeString)
    }
    }
    }
    }