mirror of
https://github.com/outline/outline.git
synced 2026-06-26 17:54:24 +03:00
1285efc49a
* feat: i18n
* Changing language single source of truth from TEAM to USER
* Changes according to @tommoor comments on PR
* Changed package.json for build:i18n and translation label
* Finished 1st MVP of i18n for outline
* new translation labels & Portuguese from Portugal translation
* Fixes from PR request
* Described language dropdown as an experimental feature
* Set keySeparator to false in order to cowork with html keys
* Added useTranslation to Breadcrumb
* Repositioned <strong> element
* Removed extra space from TemplatesMenu
* Fortified the test suite for i18n
* Fixed trans component problematic
* Check if selected language is available
* Update yarn.lock
* Removed unused Trans
* Removing debug variable from i18n init
* Removed debug variable
* test: update snapshots
* flow: Remove decorator usage to get proper flow typing
It's a shame, but hopefully we'll move to Typescript in the next 6 months and we can forget this whole Flow mistake ever happened
* translate: Drafts
* More translatable strings
* Mo translation strings
* translation: Search
* async translations loading
* cache translations in client
* Revert "cache translations in client"
This reverts commit 08fb61ce36.
* Revert localStorage cache for cache headers
* Update Crowdin configuration file
* Moved translation files to locales folder and fixed english text
* Added CONTRIBUTING File for CrowdIn
* chore: Move translations again to please CrowdIn
* fix: loading paths
chore: Add strings for editor
* fix: Improve validation on documents.import endpoint
* test: mock bull
* fix: Unknown mimetype should fallback to Markdown parsing if markdown extension (#1678)
* closes #1675
* Update CONTRIBUTING
* chore: Add link to translation portal from app UI
* refactor: Centralize language config
* fix: Ensure creation of i18n directory in build
* feat: Add language prompt
* chore: Improve contributing guidelines, add link from README
* chore: Normalize tab header casing
* chore: More string externalization
* fix: Language prompt in dark mode
Co-authored-by: André Glatzl <andreglatzl@gmail.com>
99 lines
2.9 KiB
JavaScript
99 lines
2.9 KiB
JavaScript
/* eslint-disable flowtype/require-valid-file-annotation */
|
|
import i18n from "i18next";
|
|
import de_DE from "./locales/de_DE/translation.json";
|
|
import en_US from "./locales/en_US/translation.json";
|
|
import pt_PT from "./locales/pt_PT/translation.json";
|
|
import { initI18n } from ".";
|
|
|
|
describe("i18n process.env is unset", () => {
|
|
beforeEach(() => {
|
|
delete process.env.DEFAULT_LANGUAGE;
|
|
initI18n()
|
|
.addResources("en_US", "translation", en_US)
|
|
.addResources("de_DE", "translation", de_DE)
|
|
.addResources("pt_PT", "translation", pt_PT);
|
|
});
|
|
|
|
it("translation of key should match", () =>
|
|
expect(i18n.t("Saving…")).toBe("Saving…"));
|
|
|
|
it("translation if changed to de_DE", () => {
|
|
i18n.changeLanguage("de_DE");
|
|
expect(i18n.t("Saving…")).toBe("Speichert…");
|
|
});
|
|
|
|
it("translation if changed to pt_PT", () => {
|
|
i18n.changeLanguage("pt_PT");
|
|
expect(i18n.t("Saving…")).toBe("A guardar…");
|
|
});
|
|
});
|
|
|
|
describe("i18n process.env is en_US", () => {
|
|
beforeEach(() => {
|
|
process.env.DEFAULT_LANGUAGE = "en_US";
|
|
initI18n()
|
|
.addResources("en_US", "translation", en_US)
|
|
.addResources("de_DE", "translation", de_DE)
|
|
.addResources("pt_PT", "translation", pt_PT);
|
|
});
|
|
|
|
it("translation of key should match", () =>
|
|
expect(i18n.t("Saving…")).toBe("Saving…"));
|
|
|
|
it("translation if changed to de_DE", () => {
|
|
i18n.changeLanguage("de_DE");
|
|
expect(i18n.t("Saving…")).toBe("Speichert…");
|
|
});
|
|
|
|
it("translation if changed to pt_PT", () => {
|
|
i18n.changeLanguage("pt_PT");
|
|
expect(i18n.t("Saving…")).toBe("A guardar…");
|
|
});
|
|
});
|
|
|
|
describe("i18n process.env is de_DE", () => {
|
|
beforeEach(() => {
|
|
process.env.DEFAULT_LANGUAGE = "de_DE";
|
|
initI18n()
|
|
.addResources("en_US", "translation", en_US)
|
|
.addResources("de_DE", "translation", de_DE)
|
|
.addResources("pt_PT", "translation", pt_PT);
|
|
});
|
|
|
|
it("translation of key should match", () =>
|
|
expect(i18n.t("Saving…")).toBe("Speichert…"));
|
|
|
|
it("translation if changed to en_US", () => {
|
|
i18n.changeLanguage("en_US");
|
|
expect(i18n.t("Saving…")).toBe("Saving…");
|
|
});
|
|
|
|
it("translation if changed to pt_PT", () => {
|
|
i18n.changeLanguage("pt_PT");
|
|
expect(i18n.t("Saving…")).toBe("A guardar…");
|
|
});
|
|
});
|
|
|
|
describe("i18n process.env is pt_PT", () => {
|
|
beforeEach(() => {
|
|
process.env.DEFAULT_LANGUAGE = "pt_PT";
|
|
initI18n()
|
|
.addResources("en_US", "translation", en_US)
|
|
.addResources("de_DE", "translation", de_DE)
|
|
.addResources("pt_PT", "translation", pt_PT);
|
|
});
|
|
|
|
it("translation of key should match", () =>
|
|
expect(i18n.t("Saving…")).toBe("A guardar…"));
|
|
|
|
it("translation if changed to en_US", () => {
|
|
i18n.changeLanguage("en_US");
|
|
expect(i18n.t("Saving…")).toBe("Saving…");
|
|
});
|
|
|
|
it("translation if changed to de_DE", () => {
|
|
i18n.changeLanguage("de_DE");
|
|
expect(i18n.t("Saving…")).toBe("Speichert…");
|
|
});
|
|
});
|