This project uses a simple i18n system with three main tools:
For most text content. Keys are defined in content.ts.
const t = useTranslations(Astro.currentLocale);
const text = t("home.hero.header"); // "Test"As a 10-year software engineer and active CodeStitch community member, I appreciate the innovation behind Site Crafter but have concerns about its alignment with CodeStitch's core value proposition. This feedback aims to constructively address how Site Crafter may inadvertently undermine what makes CodeStitch uniquely valuable to agencies and their clients.
| name: Build LaTeX document | |
| on: [pull_request] | |
| jobs: | |
| build_latex: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Set up Git repository | |
| uses: actions/checkout@v4 | |
| - name: Compile Resume | |
| uses: xu-cheng/latex-action@v3 |
| <a href="/" class="cs-logo" aria-label="back to home"> | |
| <Image | |
| src={logo} | |
| alt="logo" | |
| width="250" | |
| height="36" | |
| aria-hidden="true" | |
| loading="eager" | |
| /> | |
| </a> |
| declare module "@doist/reactist" { | |
| export declare const ToolTip: React.ComponentType<TooltipProps>; | |
| export interface TooltipProps { | |
| position?: PositionValues; | |
| allowVaguePositioning?: boolean; | |
| text: React.ReactNode; | |
| hideOnScroll?: boolean; | |
| delayShow?: number; | |
| delayHide?: number; | |
| wrapperClassName?: string; |
| // Generate higher order components from contexts | |
| const createContextEnhancer = <P extends any>( | |
| key: string, | |
| context: React.Context<any> | |
| ): InferableComponentEnhancer<P> => BaseComponent => props => { | |
| const contextValue = React.useContext(context); | |
| const newProps = { [key]: contextValue, ...props }; | |
| return <BaseComponent {...newProps} />; | |
| }; |
| openapi: 3.0.1 | |
| info: | |
| version: 4.0.6 | |
| title: Linode API | |
| x-logo: { | |
| url: '/linode-logo.svg', | |
| backgroundColor: '#fafafa' | |
| } | |
| description: | | |
| # Introduction |
| import * as i18n from 'i18next'; | |
| import * as detector from 'i18next-browser-languagedetector'; | |
| import * as backend from 'i18next-xhr-backend'; | |
| const instance = i18n | |
| .createInstance() | |
| .use(backend) | |
| .use(detector) | |
| .init({ | |
| debug: true, |
| import * as React from 'react'; | |
| import { Field } from 'react-final-form'; | |
| import { OnChange } from 'react-final-form-listeners'; | |
| const Condition: React.SFC<{ when: string; is: any; children: React.ReactNode }> = ({ when, is, children }) => ( | |
| <Field name={when} subscription={{ value: true }}> | |
| {({ input: { value } }) => (value === is ? children : null)} | |
| </Field> | |
| ); |
| # Install Homebrew and some Basics | |
| /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" | |
| brew install git coreutils gpg gcc openssh zsh | |
| chsh -s $(which zsh) | |
| # Get some dotfiles | |
| git clone git://github.com/kjrocker/dotfiles.git ~/dotfiles | |
| brew tap thoughtbot/formulae | |
| brew install rcm |