sanity-translations-tab
This is the base module for implementing common translation vendor tasks from a Studio, such as sending content to be translated in some specific languages, importing content back etc. Not useful on its own, but vendor-specific plugins will use this for its chrome.
In-studio development
- Clone this repo into a Studio's
plugins
directory. - Add
"sanity-translations-tab"
to the plugins
key of sanity.json
- Your Studio will need a Desk Structure configuration, here's an example of a schema called
translatable
import S from '@sanity/desk-tool/structure-builder'
import {
TranslationsTab,
DummyAdapter,
} from '../../plugins/sanity-translations-tab/src'
export const getDefaultDocumentNode = ({ schemaType }) => {
if (schemaType === 'translatable') {
return S.document().views([
S.view.form(),
S.view
.component(TranslationsTab)
.title('Translations')
.options({
adapter: DummyAdapter,
exportForTranslation: async props => props,
importTranslation: async props => props,
workflowOptions: [
{
workflowUid: '123',
workflowName: 'Machine Translation (testing)',
},
],
localeIdAdapter: translationVendorId => sanityId,
}),
])
}
return S.document()
}
export default S.defaults()
To work on this module locally, run
npm start
To observe changes to the code, and at the same time run
npx parcel example/index.html
to run the component in a dev server
Isolated development
To develop this plugin as a separate repository (outside of your studio environment) and test it locally in a studio during development, you'll need:
Assuming you already have a studio, the following will get you up and running with a forked repo and symlink:
- Fork or clone this repo locally in its own directory (not as part of a studio)
- Run
npm install
to install the plugin's dependencies. - Run
npm link
from this plugin's directory (eg, ~/code/sanity-translations-tab
) to create a global symlink to this local instance of the sanity-translations-tab
dependency. - Run
npm run build
to compile an initial version. - Run
npm link sanity-translations-tab
inside the directory of the studio you want to use the plugin in (eg, ~/code/my-studio
). This will tell the studio application to use the global symlink to this instance of the dependency. - Add
import { TranslationsTab } from 'sanity-translations-tab'
to deskStructure.js
in the studio. If previously importing TranslationsTab
from an adapter library such as sanity-plugin-smartling-studio
, remove that import statement. - Run
sanity start
to run the studio locally. - Run
npm run start
from the sanity-translations-tab
directory to start a watch task. - Start making changes to the translations tab, as needed, and they should automatically compile in the studio in the browser.