diff --git a/.gitignore b/.gitignore index fc13812..7c8a7c9 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,6 @@ node_modules /build /.svelte-kit /package +/.idea +/.netlify +/.velcel/output diff --git a/.vercel/output/config.json b/.vercel/output/config.json new file mode 100644 index 0000000..d5d19ab --- /dev/null +++ b/.vercel/output/config.json @@ -0,0 +1 @@ +{"version":3,"routes":[{"src":"^/(?:(.+)/)?index(?:\\.html)?/?$","headers":{"Location":"/$1"},"status":308},{"src":"^/(.*)\\.html/?$","headers":{"Location":"/$1"},"status":308},{"src":"^/(.*)/$","headers":{"Location":"/$1"},"status":308},{"src":"/_app/.+","headers":{"cache-control":"public, immutable, max-age=31536000"}},{"handle":"filesystem"},{"src":"/.*","dest":"/render"}],"overrides":{}} \ No newline at end of file diff --git a/.vercel/output/functions/render.func/.svelte-kit/output/server/chunks/Codeblock.js b/.vercel/output/functions/render.func/.svelte-kit/output/server/chunks/Codeblock.js new file mode 100644 index 0000000..bd02090 --- /dev/null +++ b/.vercel/output/functions/render.func/.svelte-kit/output/server/chunks/Codeblock.js @@ -0,0 +1,14 @@ +import { c as create_ssr_component, h as add_attribute, e as escape } from "./index.js"; +const Codeblock = create_ssr_component(($$result, $$props, $$bindings, slots) => { + let { lang } = $$props; + let { editable = false } = $$props; + if ($$props.lang === void 0 && $$bindings.lang && lang !== void 0) + $$bindings.lang(lang); + if ($$props.editable === void 0 && $$bindings.editable && editable !== void 0) + $$bindings.editable(editable); + return `
${slots.default ? slots.default({}) : ``}
+`; +}); +export { + Codeblock as C +}; diff --git a/.vercel/output/functions/render.func/.svelte-kit/output/server/chunks/DefinitionEntry.js b/.vercel/output/functions/render.func/.svelte-kit/output/server/chunks/DefinitionEntry.js new file mode 100644 index 0000000..34d945d --- /dev/null +++ b/.vercel/output/functions/render.func/.svelte-kit/output/server/chunks/DefinitionEntry.js @@ -0,0 +1,11 @@ +import { c as create_ssr_component, e as escape } from "./index.js"; +const DefinitionEntry = create_ssr_component(($$result, $$props, $$bindings, slots) => { + let { background } = $$props; + if ($$props.background === void 0 && $$bindings.background && background !== void 0) + $$bindings.background(background); + return `
${slots.dt ? slots.dt({}) : ``}
+
${slots.dd ? slots.dd({}) : ``}
`; +}); +export { + DefinitionEntry as D +}; diff --git a/.vercel/output/functions/render.func/.svelte-kit/output/server/chunks/Playground.js b/.vercel/output/functions/render.func/.svelte-kit/output/server/chunks/Playground.js new file mode 100644 index 0000000..0c0f657 --- /dev/null +++ b/.vercel/output/functions/render.func/.svelte-kit/output/server/chunks/Playground.js @@ -0,0 +1,63 @@ +import { c as create_ssr_component, e as escape, h as add_attribute } from "./index.js"; +const Playground = create_ssr_component(($$result, $$props, $$bindings, slots) => { + let output; + let sizeChange; + let translations = JSON.stringify( + { + "header": "Svelte Intl Precompile is {adjective}", + "posted-on": "Posted on {postDate, date, long}", + "invite-friend": "{name} has joined Svelte! Give {gender, select, male {him} female {her} other {your friend}} a warm welcome!", + "friends-msg": "You have {count, plural, zero {no friend} one {just # friend} other {# friends}}", + "show-friend-profile": "Click to show {gender, select, male {his profile} female {her profile} other {the profile}}" + }, + null, + 2 + ); + let transformedTranslations = ""; + let minifiedTranslations = ""; + let showMinified = false; + let timer; + function transform(code) { + fetch("http://github.com/playground", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: code + }).then((r) => { + if (r.ok) { + return r.json(); + } else { + throw new Error("Invalid syntax"); + } + }).then(({ transformed, minified }) => { + [transformedTranslations, minifiedTranslations] = [transformed, minified]; + }).catch(() => { + }); + } + function debouncedTransform(code) { + clearTimeout(timer); + timer = setTimeout(() => transform(code), 750); + } + output = transformedTranslations; + { + transformedTranslations === "" ? transform(translations) : debouncedTransform(translations); + } + sizeChange = Math.round(output.length / translations.length * 100, 0) - 100; + return `
+
${(($$value) => $$value === void 0 ? `		
${escape(translations)}
+ ` : $$value)(translations)}
+ ${escape(translations.length)} bytes +
+ +
+ +
+ +
		
${escape(output)}
+
+ ${escape(output.length)} bytes (${escape(Math.abs(sizeChange))}% ${escape(sizeChange > 0 ? "bigger" : "smaller")} than the source translations) +
`; +}); +export { + Playground as P +}; diff --git a/.vercel/output/functions/render.func/.svelte-kit/output/server/chunks/_layout.js b/.vercel/output/functions/render.func/.svelte-kit/output/server/chunks/_layout.js new file mode 100644 index 0000000..9a533b5 --- /dev/null +++ b/.vercel/output/functions/render.func/.svelte-kit/output/server/chunks/_layout.js @@ -0,0 +1,32 @@ +import { register, init, waitLocale } from "svelte-intl-precompile"; +function registerAll() { + register("en", () => import("./en.js")); + register("es", () => import("./es.js")); + register("gl", () => import("./gl.js")); + register("ja", () => import("./ja.js")); +} +const availableLocales = ["en", "es", "gl", "ja"]; +registerAll(); +let defaultLang = "en"; +let initialized = false; +const localeRegex = new RegExp(`^/(${availableLocales.join("|")})(/|$)`); +function extractLanguageFromPath(path) { + return (localeRegex.exec(path) || [null, defaultLang])[1]; +} +const load = async function({ url: { pathname } }) { + if (!initialized) { + const lang = extractLanguageFromPath(pathname); + init({ + initialLocale: lang, + fallbackLocale: defaultLang + }); + initialized = true; + await waitLocale(); + } +}; +export { + availableLocales as a, + load as b, + extractLanguageFromPath as e, + localeRegex as l +}; diff --git a/.vercel/output/functions/render.func/.svelte-kit/output/server/chunks/en.js b/.vercel/output/functions/render.func/.svelte-kit/output/server/chunks/en.js new file mode 100644 index 0000000..a1ba174 --- /dev/null +++ b/.vercel/output/functions/render.func/.svelte-kit/output/server/chunks/en.js @@ -0,0 +1,222 @@ +import { __interpolate, __plural, __offsetPlural, __select, __date, __time, __number } from "svelte-intl-precompile"; +const en = { + "common.or": "or", + "common.and": "and", + "main.title": "Svelte Intl Precompile", + "main.subtitle": "The i18n library for Svelte that analyzes and compiles your translations at build time", + "playground.title": "Playground", + "introduction.title": "Introduction", + "introduction.subsection.why-use-it": "Why you'd want to use it?", + "introduction.paragraph.why-use-it-1": "Svelte-intl-precompile is an i18n library for Svelte apps that aims to provide all the features your app may need with the smallest possible penalty in both app size and runtime performance.", + "introduction.paragraph.why-use-it-2": "To accomplish that it takes a different approach to most internalization libraries. Much like Svelte.js analyzes and understands your code and at build time compiles it to minimal and efficient javascript, this library inspects your translations defined in the ICU message syntax and compiles them to small and efficient inline functions.", + "introduction.paragraph.why-use-it-3": "If you use each and every feature supported by the ICU message syntax it will add around 2kb to your bundle after minification and compression. If you only use a few, it can go as low as 1kb.", + "introduction.paragraph.why-use-it-4": "Since it doesn't have to parse and tokenize your translations in the browser, it is also faster. Around 4 times faster rendering a translation for the first time, and around 50% faster for already known translations.", + "introduction.subsection.playground": "What? Show me the code", + "introduction.paragraph.playground-preface": "There, play with it. Paste your own translations and see the transformed output.", + "introduction.subsection.features": "What features does it have?", + "introduction.paragraph.features-1": "All the features supported by the ICU message syntax are supported.
It has an API almost completely compatible with", + "introduction.paragraph.features-2": ", another very popular and well designed internationalization library for Svelte.js ", + "introduction.paragraph.features-3": "Its main features include:", + "introduction.list-items.features-1": "Translations with interpolation, selected sub-translations and all ICU features.", + "introduction.list-items.features-2": "Formatters for dates, tims, numbers, ordinals y currencies all leveraging the native Intl API available in modern browsers and node.", + "introduction.list-items.features-3": "A svelte-oriented API providing convenient to use stores that update automatically when locale or translations change.", + "introduction.list-items.features-4": "A range functions to load locales asynchronously when needed or to extract the default locale from the request headers in SSR mode.", + "introduction.list-items.features-5": "Full tree-shaking of all the above features that your app doesn't use.", + "icu-crash-course.title": "ICU syntax crash course", + "icu-crash-course.table-heads.definition": "Entry", + "icu-crash-course.table-heads.values": "Values", + "icu-crash-course.table-heads.output": "Output", + "icu-crash-course.paragraph.main-1": "This library analyzes and compiles the translations authored in the ICU message syntax. While the ICU message syntax is an independent project this is an accelerated course on why it's good and how to use the main features.", + "icu-crash-course.subsection.why": "Why use the ICU message syntax?", + "icu-crash-course.paragraph.why-1": "ICU stands for International Components for Unicode. While its popularity begun in C/C++ and Java, it's the javascript ecosystem where it has become the defacto standard for internationalization, although it's also popular in Python and PHP.", + "icu-crash-course.paragraph.why-2": "Internationalizing apps is a whole lot more than just mapping some keys to the appropriate translated string in a dictionary. Properly internationalized apps must handle all aspects of translation, including the way dates and times are formatted, what delimiters are used in numbers to separate the thousands or the decimals, currencies and support gendered languages.", + "icu-crash-course.paragraph.why-3": "Even something as simple as plurals can get very complex depending on the language. English, German and Spanish have singular and plural, but some slavic languages have 3, and other languages like Arabic have 6 depending on the number of items being pluralized. Sometimes the threshold where we have to change from one plural form to the next varies depending on the regional variant.
English doesn't have many gendered words but French or Italian do, and the adjectives must match the noun's gender. Formatting 123456789 in the US english variant will result in 123,456,789 but in the Indian variant will be 12,34,56,789.
Formatting currencies the $ symbol goes before the amount, but the \u20AC goes after.", + "icu-crash-course.paragraph.why-4": "The ICU syntax abstracts all this complexity from the developers and gives the real professional translators a meta language expressive enough to handle all the subtleties on they side.", + "icu-crash-course.subsection.interpolations": "Interpolations", + "icu-crash-course.paragraph.interpolations-1": `ICU messages support interpolating values, which will be properly sanitized so passing undefined will not interpolate as "undefined".`, + "icu-crash-course.table-cells.interpolations": (chosen) => `Your favorite color is ${__interpolate(chosen)}`, + "icu-crash-course.subsection.plurals": "Plurals", + "icu-crash-course.paragraph.plurals-1": "The second most used feature in any app is pluralization. The ICU syntax has a dedicated plural helper to define plural translations that from very simple to quite complicated, all within the translation itself.", + "icu-crash-course.paragraph.plurals-2": "Each path for the plural is prefixed with the numeric qualifier. The possible qualifiers are:", + "icu-crash-course.paragraph.plurals-3": "Lets see some examples first:", + "icu-crash-course.paragraph.plurals-4": "Some languages like English only leverage one and other but others will be able to use the best plural form. The particular threshold value that divides few and many is heavily cultural.", + "icu-crash-course.paragraph.plurals-5": "You can also specify translations for exact values using =N. When a number is specified that way that translation will supersede the language's default behavior.
For instance, in english you could use =2 or =12 to have different translations specifically for a couple and a dozen instead of using the generic plural.", + "icu-crash-course.paragraph.plurals-6": "Lastly, plurals can also make us of the hashtag to print as number the value being used in the plural, and optionally the helper can receive an offset that will be substracted to the value in the hashtag.", + "icu-crash-course.list-items.one": "(singular)", + "icu-crash-course.list-items.two": "(dual)", + "icu-crash-course.list-items.few": "(paucal)", + "icu-crash-course.list-items.many": "(Also used for fractions)", + "icu-crash-course.list-items.other": "(general plural form. The one used on languages with only one plural)", + "icu-crash-course.table-cells.plurals-simple": (numCats) => `Your have ${__plural(numCats, { + o: "one cat", + h: `${numCats} cats` + })}`, + "icu-crash-course.table-cells.plurals-complex": (numCats) => `Your have ${__plural(numCats, { + 0: "no cats at all", + o: "one single cat", + 2: "a couple cats", + 3: "a trio of cats", + 12: "a dozen cats", + h: `exactly ${numCats} cats` + })}`, + "icu-crash-course.table-cells.plurals-offset": (guest, guestCount) => __offsetPlural(guestCount, 1, { + 0: "Mary does not give a party.", + 1: `Mary invites ${__interpolate(guest)} to her party.`, + 2: `Mary invites ${__interpolate(guest)} and one other person to her party.`, + h: `Mary invites ${__interpolate(guest)} and ${guestCount - 1} other people to her party.` + }), + "icu-crash-course.subsection.select": "Select", + "icu-crash-course.paragraph.select-1": "The select helper is used to choose among several translation paths depending on an argument.
While it has many possible uses the most common one is for having gendered translations.", + "icu-crash-course.table-cells.select": (childGender) => `Your ${__select(childGender, { + male: "son", + female: "daughter", + other: "child" + })} has won an award`, + "icu-crash-course.table-cells.select-value-male": "Male", + "icu-crash-course.table-cells.select-value-female": "Female", + "icu-crash-course.table-cells.select-value-unknown": "Unknown", + "icu-crash-course.subsection.date": "Dates", + "icu-crash-course.paragraph.date-1": "This helper is used to format dates according to the current locale one of the default formats or the custom ones you added when configuring the app.
The default format are:", + "icu-crash-course.list-items.short": ": The most compact date representation", + "icu-crash-course.list-items.medium": ": Abbreviated textual representation", + "icu-crash-course.list-items.long": ": Long textual representation", + "icu-crash-course.list-items.full": ": The most verbose and complete date", + "icu-crash-course.table-cells.date": (holidayStart) => `Your next holidays start on ${__date(holidayStart, "full")}`, + "icu-crash-course.subsection.time": "Times", + "icu-crash-course.paragraph.time": "Just like the date helpers but for formatting only the time part of a date.", + "icu-crash-course.table-cells.time": (appointment) => `Your doctor's appointment is today at ${__time(appointment, "short")}`, + "icu-crash-course.subsection.number": "Numbers", + "icu-crash-course.paragraph.number": "Formats a number according to the rules of the current locale.", + "icu-crash-course.paragraph.number-2": "There's also an advanced feature called Number Skeletons that allow you to customize to great lengths how you want your numbers formatted.", + "icu-crash-course.paragraph.number-3": "The possibilities of number skeletons are limitless.", + "icu-crash-course.table-cells.number": (num) => `Your account balance is ${__number(num)}`, + "icu-crash-course.table-cells.skeletonCurrency": (num) => `Your account balance is ${__number(num, { + style: "currency", + currency: "EUR" + })}`, + "icu-crash-course.table-cells.skeletonCurrencySigned": (num) => `Your account balance is ${__number(num, { + style: "currency", + currency: "EUR", + signDisplay: "always" + })}`, + "icu-crash-course.table-cells.skeletonPercentage": (num) => `Game progress ${__number(num, { + style: "percent" + })}`, + "icu-crash-course.table-cells.skeletonPercentageTwoDecimals": (num) => `Game progress ${__number(num, { + style: "percent", + minimumFractionDigits: 2, + maximumFractionDigits: 2 + })}`, + "icu-crash-course.table-cells.skeletonPercentageScaled": (num) => `Game progress ${__number(num / 100, { + style: "percent", + minimumFractionDigits: 2, + maximumFractionDigits: 2 + })}`, + "icu-crash-course.table-cells.skeletonMeasurementMeter": (num) => `Your destination is ${__number(num, { + style: "unit", + unit: "meter" + })} away`, + "icu-crash-course.table-cells.skeletonMeasurementMeterLong": (num) => `Your destination is ${__number(num, { + style: "unit", + unit: "meter", + currencyDisplay: "name", + unitDisplay: "long" + })} away`, + "icu-crash-course.table-cells.skeletonCompactShort": (num) => `Are you sure you want to bid ${__number(num, { + notation: "compact", + compactDisplay: "short" + })} over asking?`, + "icu-crash-course.table-cells.skeletonCompactLong": (num) => `Are you sure you want to bid ${__number(num, { + notation: "compact", + compactDisplay: "long" + })} over asking?`, + "icu-crash-course.table-cells.skeletonScientific": (num) => `The chances of winning the lottery are 1 in ${__number(num, { + notation: "scientific" + })}`, + "getting-started.title": "Getting started", + "getting-started.subsection.installation": "Installation", + "getting-started.paragraph.installation-1": "Install svelte-intl-precompile as a runtime dependency of your sveltkit app.", + "getting-started.subsection.create-translations": "Create your translations", + "getting-started.paragraph.create-translations-1": (dir1, dir2, or) => `Next create a folder to put your translations files in. I like to use ${__interpolate(dir1)} ${__interpolate(or)} ${__interpolate(dir2)}`, + "getting-started.paragraph.create-translations-2": "at the root of the project, but really any folder will do.", + "getting-started.paragraph.create-translations-3": "I recommend using JSON files but you can use use javascript with an object as their default export. Whatever the file extension, you translations inside are just regular strings in the ICU message syntax:", + "getting-started.paragraph.create-translations-4": "I prefer when the dictionary has a single level and using dots to create hierarchies like in the one above, but you can also nest objects like in the next example:", + "getting-started.paragraph.create-translations-5": "JSON is too constrained! I want more flexibility!", + "getting-started.paragraph.create-translations-6": "You can also use JSON 5 features in your json files. That is, you can have comments, multi-line strings, single quotes, trailing commas...
It just works out of the box.", + "getting-started.paragraph.create-translations-7": "I don't like curly braces", + "getting-started.paragraph.create-translations-8": "Fair enough. If you like significant whitespace you can also use YAML files. Just use the .yaml or .yml extension names. If you are into that sort of things.", + "getting-started.paragraph.create-translations-9": "I want even more features", + "getting-started.paragraph.create-translations-10": "You can also define your translation in .js files, .ts files and .mjs files. Your module must export the object with the translations as its default export.", + "getting-started.subsection.hook-into-sveltekit": "Hook the compiler into SvelteKit", + "getting-started.paragraph.hook-into-sveltekit-1": (path) => `This library's build time compiler needs to hook into the build pipeline of your app. For that, add it to the list of vite plugins in your ${__interpolate(path)}`, + "getting-started.paragraph.hook-into-sveltekit-2": "You are set, time to use the library.", + "getting-started.subsection.hook-into-vite": "Hook the compiler into plain Vite.js", + "getting-started.paragraph.hook-into-vite-1": (path) => `If you are not using SvelteKit but raw Vite.js, the configuration is very similar. At the end SvelteKit uses Vite.js underneath. Import the compiler and pass it to the list of plugins in ${__interpolate(path)}`, + "configuration.title": "Configuration", + "configuration.subsection.example": "Configuration example", + "configuration.link.example": "Example", + "configuration.paragraph.example-1": "This is the minimal working example of the library's initialization. Put this in your", + "configuration.paragraph.example-2": "file.", + "configuration.paragraph.example-3": "This will get you going but lets dive deeper on it more.", + "configuration.subsection.static-locales": "Load locales statically", + "configuration.paragraph.static-locales-1": "Like in the previous example, the easiest way to add your translation keys is to just import them as modules and register them using", + "configuration.paragraph.static-locales-2": "Note that despite the fact that you defined your translations in JSON files, in here you are importing them as javascript modules from", + "configuration.paragraph.static-locales-3": ". This is because the compiler has transformed your translations into a module with inline functions at built time.", + "configuration.paragraph.static-locales-4": "This approach is loading all those languages even if only one is being displayed. Usually okay when kicking out a new project or if you only have a few of keys, but when your app grows you should start loading languages on demand.", + "configuration.subsection.dynamic-locales": "Load locales dynamically", + "configuration.paragraph.dynamic-locales-1": "Once you have a significant amount of translations and many locales it would be very wasteful to load every possible language for every possible user when they will only see their selected one. The library has a", + "configuration.paragraph.dynamic-locales-2": "function to dynamically import languages when the user selects it and a", + "configuration.paragraph.dynamic-locales-3": "to wait for locales to be loaded.", + "configuration.paragraph.dynamic-locales-4": "If all your locales are dynamically loaded you want to stop the page from rendering initial locale has loaded. Calling it in Svelte's", + "configuration.paragraph.dynamic-locales-5": "function with do exactly that.", + "configuration.subsection.dynamic-locales-shorthand": "Load locales dynamically (but shorter this time)", + "configuration.paragraph.dynamic-locales-shorthand-1": "If you just want to register all your available locales (all the locales for which you have a JSON file with translations) automatically, there's a nice shorthand for that. The", + "configuration.paragraph.dynamic-locales-shorthand-2": "folder for your translations doubles down as a module from which you can import two utilities: ", + "configuration.paragraph.dynamic-locales-shorthand-3": "The first one is a function that when invoked is equivalent to calling", + "configuration.paragraph.dynamic-locales-shorthand-4": "for all your locales.
The second one is an array of the available locales (wether you've registered them or not), for whatever use you might want to put them to.", + "configuration.subsection.init": "Default & fallback locales", + "configuration.paragraph.init-1": "To the call to", + "configuration.paragraph.init-2": "the most important options are", + "configuration.paragraph.init-3": ". The first determines the locale in which the app will be initially rendered and the second the locale that will be checking when a translation is not found in the currently selected locale.", + "configuration.paragraph.init-4": "There's a lot we can do to achieve the best experience, like smartly initializing the", + "configuration.paragraph.init-5": "to the users' configured locale if they are logged, read it from a cookie in case they are repeating visitors or choose it based on the requests
Accept-Language
header when doing SSR, but the most straigtforward is to detect it from the browser or the URL with the provided utility functions.", + "configuration.subsection.find-locale": "Find the best locale", + "configuration.paragraph.find-locale-1": "There are many valid strategies to select the best locale to pass to the", + "configuration.paragraph.find-locale-2": "function. This library provides helpers for the most common ones:", + "configuration.definitions.navigator": "Extracts the locale from browser, which in turn is the operative systems' locale.", + "configuration.definitions.query": "Extracts the locale on the given key of the query string of the URL.
E.g
getLocaleFromQueryString('lang')
for
/users?sort=name&dir=asc&lang=es
", + "configuration.definitions.hash": "Like
getLocaleFromQueryString
but for the URL hash.
E.g
getLocaleFromHash('lang')
for
/users#sort=name&dir=asc&lang=es
", + "configuration.definitions.path": "Extracts the locale from the path of the URL.
E.g
getLocaleFromPathname(/^/((es|en)(-\\w\\w)?)/)
for
myapp.com/en-US/users
", + "configuration.definitions.host": "Extracts the locale from host.
E.g
getLocaleFromHostname(/^((es|en)(-\\w\\w)?)\\./)
for
https://pt.myapp.com
", + "configuration.definitions.acceptLanguage": "Extracts the locale from the Accept-Language header based on a list of available locales. If availableLocales is omitted, returns the first language from the header.
E.g.
getLocaleFromAcceptLanguageHeader('en-GB,en;q=0.9,es-ES;q=0.8,en-US;q=0.6', ['fr', 'es', 'de'])
for
'es'
", + "configuration.subsection.custom-formats": "Custom formats", + "configuration.paragraph.custom-formats-1": "This library can format numbers, dates and times. It does it without adding significant weight to your app by leveraging the Intl API already present in all modern browsers and in Node.js.
By default you app can use these formats, but you can add your own.", + "configuration.paragraph.custom-formats-2": "If you want to define your own formats pass them on initialization using the", + "configuration.paragraph.custom-formats-3": "option, which will be deep merged with the default formats listed above. The formats must be valid options to forward to", + "configuration.paragraph.custom-formats-4": "For numbers specifically you can register your own formats like that or you can use Number Skeletons as a more flexible way of customizing every single aspect of how numbers are rendered. Check the crash course", + "configuration.paragraph.custom-formats-5": "here", + "usage.title": "Usage", + "usage.paragraph.preface-1": "The runtime API of this library is mostly taken from the great", + "usage.paragraph.preface-2": ", to the point that in most cases you can switch from svelte-i18 to svelte-intl-precompile and vice versa without touching your application other than updating the import path of the utilities.", + "usage.paragraph.preface-3": "Its store-centric API is particularly nice to use in templates and provides the added benefit of making your entire app reactive, automatically updating every translation when the user selects another locale or when more dictionary entries are loaded. For the following examples assume that we're working on an app containing these translations.", + "usage.link.basic-translations": "Basic translations", + "usage.subsection.basic-translations": "Basic translations: The
$t(key, ops)
store.", + "usage.paragraph.basic-translations-1": "This store is the one you will use the most. Just import it and use it as a function, passing in the translation key.", + "usage.subsection.passing-arguments": "Passing arguments", + "usage.paragraph.passing-arguments-1": "The second argument received by the", + "usage.paragraph.passing-arguments-2": "is an object. Any argument used by your translation will be passed in the", + "usage.paragraph.passing-arguments-3": "key.", + "usage.paragraph.passing-arguments-4": "There is no difference if the given parameters are just interpolated, used for in plural/select or are number, dates or times to be formatted. All aguments are passed the same way.", + "usage.subsection.formatting": "Formatting dates, times and numbers", + "usage.paragraph.formatting-1": "While you can pass number, dates and times to your translations that will be formatted following your preferences, this library also has stores to conveniently format them directly from your javascript code.", + "usage.subsection.other-stores": "Other stores", + "usage.paragraph.other-stores-1": "There are three more stores worth mentioning:", + "usage.paragraph.other-stores-2": "Lets build a component to change the current locale.", + "usage.paragraph.other-stores-3": "The code above is quite straightforward. We just iterate the list of available locales in $locales rendering a button for each one. Clicking on a button will set the current locale in $locale to the new value.
Every translation in the app will update without refreshing the page.", + "usage.definitions.other-stores-1": `Can be used to read or write the current locale (E.g:
"es-ES"
).`, + "usage.definitions.other-stores-2": `Contains an array of all the available locales (E.g:
["es-ES", "en", "pt-BR"]
).`, + "usage.definitions.other-stores-3": "Contains
true
when an asynchronous locale is still being loaded." +}; +export { + en as default +}; diff --git a/.vercel/output/functions/render.func/.svelte-kit/output/server/chunks/es.js b/.vercel/output/functions/render.func/.svelte-kit/output/server/chunks/es.js new file mode 100644 index 0000000..ff3b726 --- /dev/null +++ b/.vercel/output/functions/render.func/.svelte-kit/output/server/chunks/es.js @@ -0,0 +1,219 @@ +import { __interpolate, __plural, __offsetPlural, __select, __date, __time, __number } from "svelte-intl-precompile"; +const es = { + "common.or": "o", + "common.and": "y", + "main.title": "Svelte Intl Precompile", + "main.subtitle": "La librer\xEDa de i18n para Svelte que analiza y transforma tus traducciones en tiempo de compilaci\xF3n.", + "playground.title": "Playground", + "introduction.title": "Introducci\xF3n", + "introduction.subsection.why-use-it": "\xBFPorqu\xE9 querr\xEDa usarla?", + "introduction.paragraph.why-use-it-1": "Svelte-intl-precompile es una librer\xEDa de i18n para apps Svelte que busca proporcionar todas las funcionalidades que tu app puede necesitar con el m\xEDnimo impacto tanto en el tama\xF1o de tu app como en su velocidad de ejecuci\xF3n", + "introduction.paragraph.why-use-it-2": "Para lograrlo usa una soluci\xF3n diferente a la mayor\xEDa de librer\xEDas de internacionalizaci\xF3n. Similarmente a como Svelte.js analiza y comprende tu c\xF3digo y durante la compilaci\xF3n lo tranforma en javascript compacto y eficiente, esta librer\xEDa inspeciona tus traducciones escritas en el ICU message syntax y las compila a funciones peque\xF1as y optimizadas.", + "introduction.paragraph.why-use-it-3": "Si usas todas y cada una de las funcionalidades soportadas por la sintaxis ICU a\xF1adir\xE1 aproximadamente 2kb a tu app tras el minificado y la compresi\xF3n. Si solamente usas unas pocas de las funcionalidades esa cifra puede bajar hasta tan solo 1kb", + "introduction.paragraph.why-use-it-4": "Dado que no tiene que parsear y tokenizar tus traducciones en el navegador, es adem\xE1s m\xE1s r\xE1pido. Como 4 veces m\xE1s r\xE1pido renderizando traducciones la primera vez, y alrededor del 50% m\xE1s r\xE1pido renderizando traducciones que ya se ha encontrado antes.", + "introduction.subsection.playground": "\xBF\xA1Qu\xE9!? Ens\xE9\xF1ame el c\xF3digo", + "introduction.paragraph.playground-preface": "Aqu\xED tienes, pru\xE9balo. Pega tus propias traducciones y observa el resultado de la compilaci\xF3n", + "introduction.subsection.features": "\xBFQu\xE9 funcionalidades soporta?", + "introduction.paragraph.features-1": "Todas las funcionalidades de la sintaxis ICU est\xE1n soportadas.
Tiene una API casi completamente compatible con", + "introduction.paragraph.features-2": ", otra librer\xEDa de internacionalizaci\xF3n muy popular y bien dise\xF1ada para Svelte.js ", + "introduction.paragraph.features-3": "Las principales funcionalidades incluyen:", + "introduction.list-items.features-1": "Traducciones con interpolaciones, seleccionar ramas de subtraducciones en base a valores y el resto de funcionalidades de ICU.", + "introduction.list-items.features-2": "Formatear fechas, tiempos, n\xFAmeros, ordinales y divisas, todo apoy\xE1ndose en la API Intl, presente en todos los navegadores modernos y en Node.", + "introduction.list-items.features-3": "Una API dise\xF1ada para Svelte.js que poporciona unos convenientes stores que actualizan sus valores autom\xE1ticamente cuando el idioma seleccionado o las traducciones cargadas se actualizan.", + "introduction.list-items.features-4": "Una variedad de funciones para cargar paquetes de idiomas as\xEDncronamente cuando sea necesario, utilidades para extraer el idioma predeterminado de las cabeceras de la petici\xF3n HTTP en modo SSR", + "introduction.list-items.features-5": "Tree-shaking completo de todas las utilidades arriba mencionadas que tu aplicaci\xF3n no use", + "icu-crash-course.title": "ICU syntax: Cursillo acelerado", + "icu-crash-course.table-heads.definition": "Entrada", + "icu-crash-course.table-heads.values": "Valores", + "icu-crash-course.table-heads.output": "Salida", + "icu-crash-course.paragraph.main-1": "Esta librar\xEDa analiza y compila las traducciones creadas en la syntaxis ICU. Aunque la sintaxis ICU es un proyecto independiente este es un cursillo acelerado de porqu\xE9 es interesante y como usar sus principales funcionalidades", + "icu-crash-course.subsection.why": "\xBFPorqu\xE9 usar la sintaxis ICU?", + "icu-crash-course.paragraph.why-1": "ICU son las siglas de International Components for Unicode. Aunque su popularidad comenz\xF3 con C/C++ y Java, es en el ecosistema javascript donde se ha convertido en el standard de facto para internacionalizaci\xF3n, aunque tambi\xE9n es popular en Python y PHP", + "icu-crash-course.paragraph.why-2": "Internacionalizar aplicaciones es mucho m\xE1s que mapear una claves a la traducci\xF3n apropiada en un diccionario. Aplicaciones internacionalizadas debidamente deben gestional todos los aspectos de la traducci\xF3n, incluyendo la forma en que fechas y tiempos se formatean, que delimitadores se usan en los n\xFAmeros para separar los millares o los decimales, formateo de divisas y soportar lenguages con g\xE9neros.", + "icu-crash-course.paragraph.why-3": "Incluso algo tan aparentemente sencillo como los plurales puede resultar muy complejo en algunos idiomas. El ingl\xE9s, espa\xF1ol y alem\xE1n tiene solo un singular y un plural pero algunos idiomas eslavos tienen tres, y otros como el \xE1rabe tienen 6 dependiendo del n\xFAmero de elementos. A veces el n\xFAmero a partir del cual se cambia de una forma del plural a la siguiente var\xEDa dependiendo de la variante regional.
El ingles no tiene muchas palabras con dos g\xE9neros, pero el franc\xE9s y el espa\xF1ol s\xED, y los adjetivos de esos sustantivos deben respetar su g\xE9nero. Formatear 123456789 en ingl\xE9s americano resultar\xE1 en 123,456,789 pero en ingl\xE9s de la India ser\xE1 12,34,56,789.
Formateando divisas el s\xEDmbolo $ va antes de la cantidad pero el \u20AC va despu\xE9s.", + "icu-crash-course.paragraph.why-4": "La sintaxis ICU abstrae toda esta complejidad de los desarrolladores y da a los verdaderos traductores profesionales un meta-lenguage suficientemente expresivo para gestional todas las sutilezas por su cuenta", + "icu-crash-course.subsection.interpolations": "Interpolaciones", + "icu-crash-course.paragraph.interpolations-1": `Las entradas ICU soportan interpolar valores, que ser\xE1n adecuadamente saneados, por lo que pasar undefined not se interpolar\xE1 como "undefined".`, + "icu-crash-course.table-cells.interpolations": (chosen) => `Your favorite color is ${__interpolate(chosen)}`, + "icu-crash-course.subsection.plurals": "Plurales", + "icu-crash-course.paragraph.plurals-1": "La segunda funcionalidad m\xE1s usada en cualquier aplicaci\xF3n es la pluralizaci\xF3n. La sintaxis ICU proporciona la utilidad plural para definir traducciones para los plurales desde los m\xE1s sencillos a los m\xE1s complejos, todo sin salir de la sintaxis en s\xED misma.", + "icu-crash-course.paragraph.plurals-2": "Cada posibilidad de pluralizaci\xF3n se precede de un calificador num\xE9rico. Las opciones posible son:", + "icu-crash-course.paragraph.plurals-3": "Ve\xE1moslo con unos ejemplos:", + "icu-crash-course.paragraph.plurals-4": "Algunos idiomas como el ingl\xE9s solamente utilizan one y other pero otros idiomas ser\xE1n capaces de seleccionar siempre el plural m\xE1s adecuando. El l\xEDmite particular que divide few y many es altamente cultural.", + "icu-crash-course.paragraph.plurals-5": "Puedes tambi\xE9n especificar traducciones para cantidades espec\xEDficas usando =N. Cuando un n\xFAmero espec\xEDfico es especificad de esta manera tomar\xE1 precedencia sobre el comportamiento por defecto de los plurales en ese idioma.
Por ejemplo, en ingl\xE9s puedes usar =2 o =12 para usar diferentes traducciones espec\xEDficamente para un par y una docena de elementos en lugar de usar el plural gen\xE9rico.", + "icu-crash-course.paragraph.plurals-6": "Por \xFAltimo, los plurales puedes utilizar la almoadilla para imprimir como n\xFAmero el valor usado para seleccionar el plural y opcionalmente la utilidad puede recibir un offset que se restar\xE1 del valor antes de reemplazar la almoadilla.", + "icu-crash-course.list-items.one": "(singular)", + "icu-crash-course.list-items.two": "(dual)", + "icu-crash-course.list-items.few": "(paucal)", + "icu-crash-course.list-items.many": "(Tambi\xE9n usado para fracciones)", + "icu-crash-course.list-items.other": "(plural gen\xE9rico. El usado en idiomas con solo una forma de plural)", + "icu-crash-course.table-cells.plurals-simple": (numCats) => `Your have ${__plural(numCats, { + o: "one cat", + h: `${numCats} cats` + })}`, + "icu-crash-course.table-cells.plurals-complex": (numCats) => `Your have ${__plural(numCats, { + 0: "no cats at all", + o: "one single cat", + 2: "a couple cats", + 3: "a trio of cats", + 12: "a dozen cats", + h: `exactly ${numCats} cats` + })}`, + "icu-crash-course.table-cells.plurals-offset": (guest, guestCount) => __offsetPlural(guestCount, 1, { + 0: "Mary does not give a party.", + 1: `Mary invites ${__interpolate(guest)} to her party.`, + 2: `Mary invites ${__interpolate(guest)} and one other person to her party.`, + h: `Mary invites ${__interpolate(guest)} and ${guestCount - 1} other people to her party.` + }), + "icu-crash-course.subsection.select": "Select", + "icu-crash-course.paragraph.select-1": "La utilidad select se usa para elegir entre varias posibles traducciones en base al valor de un argumento.
Aunque tener muchos usos el m\xE1s com\xFAn es para tener traducciones dependientes del g\xE9nero.", + "icu-crash-course.table-cells.select": (childGender) => `Your ${__select(childGender, { + male: "son", + female: "daughter", + other: "child" + })} has won an award`, + "icu-crash-course.table-cells.select-value-male": "Male", + "icu-crash-course.table-cells.select-value-female": "Female", + "icu-crash-course.table-cells.select-value-unknown": "Unknown", + "icu-crash-course.subsection.date": "Fechas", + "icu-crash-course.paragraph.date-1": "Esta utilidad se utiliza para formatear fechas de acuerdo a las reglas del idioma para los formatos por defecto o los formatos personalizados que a\xF1adiste al inicializar la librer\xEDa.
Los formatos disponibles por defecto son:", + "icu-crash-course.list-items.short": ": La representaci\xF3n m\xE1s abreviada (num\xE9rica)", + "icu-crash-course.list-items.medium": ": Representaci\xF3n textual abreviada", + "icu-crash-course.list-items.long": ": Representaci\xF3n textual extendida", + "icu-crash-course.list-items.full": ": La representaci\xF3n m\xE1s completa", + "icu-crash-course.table-cells.date": (holidayStart) => `Your next holidays start on ${__date(holidayStart, "full")}`, + "icu-crash-course.subsection.time": "Horas", + "icu-crash-course.paragraph.time": "Id\xE9ntico a la utilidad para fechas pero para foratear \xFAnicamente la parte temporal de un objecto Date.", + "icu-crash-course.table-cells.time": (appointment) => `Your doctor's appointment is today at ${__time(appointment, "short")}`, + "icu-crash-course.subsection.number": "N\xFAmeros", + "icu-crash-course.paragraph.number": "Formatea un n\xFAmero de acuerdo a las reglas del idioma seleccionado.", + "icu-crash-course.paragraph.number-2": "Tambi\xE9n hay una funcionalidad avanzada llamada Number Skeletons que te permite personalizar hasta el extremo c\xF3mo quieres que los n\xFAmeros se formateen.", + "icu-crash-course.paragraph.number-3": "Las posibilidades de los number skeleton son ilimitadas.", + "icu-crash-course.table-cells.number": (num) => `Your account balance is ${__number(num)}`, + "icu-crash-course.table-cells.skeletonCurrency": (num) => `Your account balance is ${__number(num, { + style: "currency", + currency: "EUR" + })}`, + "icu-crash-course.table-cells.skeletonCurrencySigned": (num) => `Your account balance is ${__number(num, { + style: "currency", + currency: "EUR", + signDisplay: "always" + })}`, + "icu-crash-course.table-cells.skeletonPercentage": (num) => `Game progress ${__number(num, { + style: "percent" + })}`, + "icu-crash-course.table-cells.skeletonPercentageTwoDecimals": (num) => `Game progress ${__number(num, { + style: "percent", + minimumFractionDigits: 2, + maximumFractionDigits: 2 + })}`, + "icu-crash-course.table-cells.skeletonPercentageScaled": (num) => `Game progress ${__number(num / 100, { + style: "percent", + minimumFractionDigits: 2, + maximumFractionDigits: 2 + })}`, + "icu-crash-course.table-cells.skeletonMeasurementMeter": (num) => `Your destination is ${__number(num, { + style: "unit", + unit: "meter" + })} away`, + "icu-crash-course.table-cells.skeletonMeasurementMeterLong": (num) => `Your destination is ${__number(num, { + style: "unit", + unit: "meter", + currencyDisplay: "name", + unitDisplay: "long" + })} away`, + "icu-crash-course.table-cells.skeletonCompactShort": (num) => `Are you sure you want to bid ${__number(num, { + notation: "compact", + compactDisplay: "short" + })} over asking?`, + "icu-crash-course.table-cells.skeletonCompactLong": (num) => `Are you sure you want to bid ${__number(num, { + notation: "compact", + compactDisplay: "long" + })} over asking?`, + "icu-crash-course.table-cells.skeletonScientific": (num) => `The chances of winning the lottery are 1 in ${__number(num, { + notation: "scientific" + })}`, + "getting-started.title": "Primeros pasos", + "getting-started.subsection.installation": "Instalaci\xF3n", + "getting-started.paragraph.installation-1": "Instala svelte-intl-precompile como una dependencia de runtime de tu proyecto Svelte.", + "getting-started.subsection.create-translations": "Crea tus traducciones", + "getting-started.paragraph.create-translations-1": (dir1, dir2, or) => `A continuaci\xF3n crea un directorio donde poner tus ficheros de traducciones. A mi me gusta usar ${__interpolate(dir1)} ${__interpolate(or)} ${__interpolate(dir2)}`, + "getting-started.paragraph.create-translations-2": "en la raiz del proyecto, pero en realidad puedes colocar el directorio donde tu prefieras", + "getting-started.paragraph.create-translations-3": "Recomiendo usar ficheros .json pero puedes tambi\xE9n crear ficheros javascript que exporten un \xFAnico objeto que contiene las traducciones. Cualquiera que sea tu preferencia, las traducciones son simples cadenas con la sintaxis ICU:", + "getting-started.paragraph.create-translations-4": "Yo prefiero el diccionario de traducciones tenga un \xFAnico nivel y usar puntos para crear jerarqu\xEDas como el de arriba, pero tambi\xE9n puedes anidar objectos como a continuaci\xF3n:", + "getting-started.paragraph.create-translations-5": "\xA1JSON es demasido r\xEDgido! \xA1Quiero m\xE1s flexibilidad!", + "getting-started.paragraph.create-translations-6": "Puedes usar funcionalidades de JSON 5 en tus ficheros json. Por ejemplo, puedes usar comentarios, strings multi-l\xEDnea, comillas simples, comas al final de l\xEDnas...
Funciona autom\xE1ticamente.", + "getting-started.paragraph.create-translations-7": "No me gustan las llaves", + "getting-started.paragraph.create-translations-8": "Como quieras. Si te gusta usar espacios puede puedes tambien utilizar ficheros YAML. Tan solo a\xF1ade la extensi\xF3n .yaml o .yml. Si es que te van esas cosas.", + "getting-started.paragraph.create-translations-9": "Quiero m\xE1s funcionalidades", + "getting-started.paragraph.create-translations-10": "Puedes definir tus traducciones en ficheros .js, ficheros .ts y ficheros .mjs. El m\xF3dulo debe exportar un objeto con las traducciones como su export por defecto.", + "getting-started.subsection.hook-into-sveltekit": "Acomplar el compilador a SvelteKit", + "getting-started.paragraph.hook-into-sveltekit-1": (path) => `El compilador de esta librer\xEDa necesita integrarse en el proceso de complilado de SvelteKit de tu proyecto. Para ello a\xF1adelo a las lista de plugins de vite en tu ${__interpolate(path)}`, + "getting-started.paragraph.hook-into-sveltekit-2": "Y ya est\xE1 todo listo. Tiempo de usar la librer\xEDa.", + "getting-started.subsection.hook-into-vite": "Acoplar el compilador a Vite.js", + "getting-started.paragraph.hook-into-vite-1": (path) => `Si no est\xE1s usando SvelteKit sino simplemente Vite.js la configuraci\xF3n es muy similar. Al fin y al cabo SvelteKit usa Vite.js internamente. Importa el compilador y a\xF1\xE1delo a la lista de plugins en ${__interpolate(path)}`, + "configuration.title": "Configuraci\xF3n", + "configuration.subsection.example": "Ejemplo de configuraci\xF3n", + "configuration.link.example": "Ejemplo", + "configuration.paragraph.example-1": "\xC9ste es el ejemplo m\xE1s b\xE1sico de la inicializaci\xF3n de la librer\xEDa. Copia esto en tu", + "configuration.paragraph.example-2": ".", + "configuration.paragraph.example-3": "\xC9sto es suficiente para ir empezando pero vamos a profundizar m\xE1s en todas las opciones que tienes.", + "configuration.subsection.static-locales": "A\xF1adir idiomas est\xE1ticamente", + "configuration.paragraph.static-locales-1": "Como en el ejemplo anterior, la manera m\xE1s sencilla de a\xF1adir entradas al diccionario es simplemente importar el m\xF3dulo que contiene las traducciones y a\xF1adirlas usando", + "configuration.paragraph.static-locales-2": "Observa que a pesar de que definiste tus traducciones en un fichero JSON aqu\xED las estamos importando como si fuesen m\xF3dulos ES6 situados en ", + "configuration.paragraph.static-locales-3": ". Esto es porque la librer\xEDa ha transformado las traduccions en un m\xF3dulo con funciones durante la compilaci\xF3n.", + "configuration.paragraph.static-locales-4": "Esta estrategia est\xE1 cargando todos esos idiomas incluso si solamente uno va a acabar siendo mostrado. Esto no suele ser un problema cuando est\xE1s comenzando el desarollo de un nuevo proyecto o si tu proyecto tiene pocas traducciones o pocos idiomas, pero cuando tu aplicaci\xF3n empieza a crecer deber\xEDa empezar a cargar los paquetes de traducciones bajo demanda.", + "configuration.subsection.dynamic-locales": "A\xF1adir idiomas din\xE1micamente", + "configuration.paragraph.dynamic-locales-1": "Una ver tienes una cantidad significativa de traducciones en varios idiomas ser\xEDa muy ineficiente cargar todos ellos para cada usuario cuando solamente va a utilizar el que haya seleccionado. La librer\xEDa tiene una funci\xF3n", + "configuration.paragraph.dynamic-locales-2": "para din\xE1micamente importar idiomas cuando el usuario lo seleccione y otra funci\xF3n", + "configuration.paragraph.dynamic-locales-3": "para esperar a que la carga haya finalizado.", + "configuration.paragraph.dynamic-locales-4": "Si todos tus idiomas se cargan din\xE1micamente debes impedir que la app prosiga el renderizado hasta que el idioma inicial haya sido cargado. Devolviendo el resultado de invocarla desde la funci\xF3n", + "configuration.paragraph.dynamic-locales-5": "proporcionada por SvelteKit har\xE1 exactamente eso.", + "configuration.subsection.dynamic-locales-shorthand": "A\xF1adir idiomas din\xE1micamente (pero m\xE1s r\xE1pido esta vez)", + "configuration.paragraph.dynamic-locales-shorthand-1": "Si tan solo quieres registar todos los idiomas disponibles (es decir, todos aquellos para los cuales tienes un fichero JSON con traducciones) autom\xE1ticamente, hay un atajo muy pr\xE1ctico para lograrlo. La carpeta", + "configuration.paragraph.dynamic-locales-shorthand-2": "de donde importas las traducciones funciona tambi\xE9n como un m\xF3dulo de donde puedes importar dos utilidades: ", + "configuration.paragraph.dynamic-locales-shorthand-3": "La primera es una funci\xF3n que cuando se invoca equivale a llamar", + "configuration.paragraph.dynamic-locales-shorthand-4": "para cada uno de los idiomas.
La segunda es un array con los c\xF3digos ISO de los idiomas diponibles (tanto si los has registrado o todav\xEDa no), para que tengas esa informaci\xF3n disponible si necesitas utilizarla.", + "configuration.subsection.init": "Idiomas inicial y de rescate", + "configuration.paragraph.init-1": "A la invocaci\xF3n", + "configuration.paragraph.init-2": "las opciones m\xE1s importantes son", + "configuration.paragraph.init-3": ". La primera determina el idioma en el que la app va a ser renderizada inicialmente y el segundo el idioma que se usar\xE1 como \xFAltima opci\xF3n cuando una entrada no se encuentre en el diccionario del idioma actual.", + "configuration.paragraph.init-4": "Hay muchas cosas que se pueden hacer para lograr la experiencia de usuario perfecta, como convenientemente inicializar", + "configuration.paragraph.init-5": "al idioma seleccionado por el usuario durante el registro si ha hecho login, obtenerlo de las cookies si ya ha visitado la p\xE1gina anteriormente o obtenerlo de las cabecera
Accept-Language
de la petici\xF3n HTTP cuando renderizando en el servidor, pero la m\xE1s sencilla es detectar el idioma del navegador o de la URL con las utilidades proporcionadas para ello.", + "configuration.subsection.find-locale": "Encontar el mejor idioma", + "configuration.paragraph.find-locale-1": "Hay m\xFAltiples estrategias v\xE1lidas para seleccionar el mejor idioma para pasar a la funci\xF3n", + "configuration.paragraph.find-locale-2": ". Esta librer\xEDa proporciona utilidades para las estrategias m\xE1s comunes:", + "configuration.definitions.navigator": "Extrae el idioma del navegador, que a su vez es el idioma del sistema operativo.", + "configuration.definitions.query": "Extrae el idioma en el par\xE1metro dado de la query string de la URL.
P.e
getLocaleFromQueryString('lang')
para
/users?sort=name&dir=asc&lang=es
", + "configuration.definitions.hash": "Como
getLocaleFromQueryString
pero para el hash de la URL.
P.e
getLocaleFromHash('lang')
para
/users#sort=name&dir=asc&lang=es
", + "configuration.definitions.path": "Extrae el idioma de los segmentos de la URL.
P.e
getLocaleFromPathname(/^/((es|en)(-\\w\\w)?)/)
para
myapp.com/en-US/users
", + "configuration.definitions.host": "Extrae el idioma del host.
P.e
getLocaleFromHostname(/^((es|en)(-\\w\\w)?)\\./)
para
https://pt.myapp.com
", + "configuration.subsection.custom-formats": "Formatos personalizados", + "configuration.paragraph.custom-formats-1": "Esta librer\xEDa puede formatear n\xFAmeros, fechas y horas. Lo hace sin a\xF1adir un tama\xF1o significativo a tu proyecto porque utiliza la API Intl ya presente en todos los navegadores modernos y en Node.js.
Por defecto tu app puede usar estos formatos pero puedes a\xF1adir los tuyos propios.", + "configuration.paragraph.custom-formats-2": "Si quieres definir tus propios formatos p\xE1salos al incializar la librer\xEDa usando la opci\xF3n", + "configuration.paragraph.custom-formats-3": ", los cuales ser\xE1 a\xF1adidos a los formatos por defecto listados arriba. Los formatos deben ser objetos v\xE1lidos para pasar a", + "usage.title": "Uso", + "usage.paragraph.preface-1": "La API de esta librer\xEDa ha sido tomada en gran parte de la excelente", + "usage.paragraph.preface-2": ", hasta el punto de que la mayor\xEDa de proyectos pueden cambiar de svelte-i18 a svelte-intl-precompile y vice versa sin modificar tu aplicaci\xF3n m\xE1s que actualizado el nombre de el paquete desde el que importas las funciones.", + "usage.paragraph.preface-3": 'Su API basada en "stores" es especialmente pr\xE1ctica de utilizar en las plantillas y provee el beneficio a\xF1adido de hacer toda tu aplicaci\xF3n ractiva, autom\xE1ticamente actualizando cada traducci\xF3n si el usuario cambia de idioma o se cargan nuevas traducciones. Para los siguientes ejemplos vamos a asumir que est\xE1 trabajando en una aplicaci\xF3n que contiene las siguientes traducciones.', + "usage.link.basic-translations": "Traducciones b\xE1sicas", + "usage.subsection.basic-translations": "Traducciones b\xE1sicas: El store
$t(key, ops)
.", + "usage.paragraph.basic-translations-1": "Este store es el que utilizar\xE1s m\xE1s frecuentemente. Simplemente imp\xF3rtalo y usa la funci\xF3n que contiene, pas\xE1ndole el nombre de la traducci\xF3n a usar.", + "usage.subsection.passing-arguments": "Pasar argumentos", + "usage.paragraph.passing-arguments-1": "El segundo argumento recibido por", + "usage.paragraph.passing-arguments-2": "es un objecto. Cualquier argumento requerido dentro de la traducci\xF3n se proporciona con la opci\xF3n", + "usage.paragraph.passing-arguments-3": ".", + "usage.paragraph.passing-arguments-4": "No hay ninguna diferencia pasando argumentos dependiendo de si van a interpolarse o usarse para computar plurales o sub-ramas, o son n\xFAmeros o fechas para ser formateados. Todos los argumentos se pasan de la misma manera.", + "usage.subsection.formatting": "Formatear fechas, horas y n\xFAmeros", + "usage.paragraph.formatting-1": "Aunque puedes pasar n\xFAmeros, fechas y horas a tus traducciones que ser\xE1n formateadas sigiendo lo que el mensaje ICU indique, la librer\xEDa tambien tiene otros stores para cuando necesitas formatear directamente desde tu c\xF3digo.", + "usage.subsection.other-stores": "Otros stores", + "usage.paragraph.other-stores-1": "Hay tres stores m\xE1s que vale la pena mencionar:", + "usage.paragraph.other-stores-2": "Vamos a crear un componente para seleccionar el idioma actual", + "usage.paragraph.other-stores-3": "El c\xF3digo de arriba es bastante sencillo. Tan solo iteramos la lista de idiomas disponibles en $locales y renderizamos un bot\xF3n por cada uno. Haciendo click en esos botones asignar\xE1 su dioma al store $locale.
Todas las traducciones de la app se actualizar\xE1n sin necesidad de recargar la p\xE1gina.", + "usage.definitions.other-stores-1": `Puede ser usado para leer o asignar el idioma actual. (P.e:
"es-ES"
).`, + "usage.definitions.other-stores-2": `Contiene la lista de idiomas registrados. (P.e:
["es-ES", "en", "pt-BR"]
).`, + "usage.definitions.other-stores-3": "Contiene
true
cuando un idioma as\xEDncrono todav\xEDa se est\xE1 cargando." +}; +export { + es as default +}; diff --git a/.vercel/output/functions/render.func/.svelte-kit/output/server/chunks/gl.js b/.vercel/output/functions/render.func/.svelte-kit/output/server/chunks/gl.js new file mode 100644 index 0000000..46544e3 --- /dev/null +++ b/.vercel/output/functions/render.func/.svelte-kit/output/server/chunks/gl.js @@ -0,0 +1,219 @@ +import { __interpolate, __plural, __offsetPlural, __select, __date, __time, __number } from "svelte-intl-precompile"; +const gl = { + "common.or": "ou", + "common.and": "e", + "main.title": "Svelte Intl Precompile", + "main.subtitle": "A librer\xEDa de i18n para Svelte que analiza e transforma as t\xFAas traducci\xF3ns en tempo de compilaci\xF3n.", + "playground.title": "Playground", + "introduction.title": "Introducci\xF3n", + "introduction.subsection.why-use-it": "\xBFPor qu\xE9 querer\xEDa usala?", + "introduction.paragraph.why-use-it-1": "Svelte-intl-precompile \xE9 unha librer\xEDa de i18n para apps Svelte que busca proporcionar todas as funcionalidades ca t\xFAa app pode precisar co m\xEDnimo impacto tanto no tama\xF1o da t\xFAa app como na s\xFAa velocidade de execuci\xF3n", + "introduction.paragraph.why-use-it-2": "Para logralo usa una soluci\xF3n diferente \xE1 maior\xEDa de librer\xEDas de internacionalizaci\xF3n. De forma semellante a como Svelte.js analiza y comprende o teu c\xF3digo e durante a compilaci\xF3n tranf\xF3rmao en javascript compacto e eficiente, esta librer\xEDa inspeciona as t\xFAas traducci\xF3ns escritas na ICU message syntax e comp\xEDlaas a funcions pequenas e optimizadas.", + "introduction.paragraph.why-use-it-3": "Se usas todas e cada unha das funcionalidades soportadas pola sintaxis ICU a\xF1adir\xE1 aproximadamente 2kb a teua app despois do minificado e da compresi\xF3n. Se soamente usas unhas poucas das funcionalidades esa cifra pode baixar asa tan s\xF3 1kb", + "introduction.paragraph.why-use-it-4": "Dado que non ten que parsear e tokenizar as t\xFAas traducci\xF3ns no navegador, tam\xE9n \xE9 m\xE1is r\xE1pido. Como 4 veces m\xE1is r\xE1pido renderizando traducci\xF3ns a primeira vez, e arredor do 50% m\xE1is r\xE1pido renderizando traducci\xF3ns que xa encontrara antes.", + "introduction.subsection.playground": "\xBF\xA1Qu\xE9!? Am\xF3same o c\xF3digo", + "introduction.paragraph.playground-preface": "Aqu\xED tes, pr\xF3bao. Pega as t\xFAas propias traducci\xF3ns e observa o resultado da compilaci\xF3n", + "introduction.subsection.features": "\xBFQu\xE9 funcionalidades soporta?", + "introduction.paragraph.features-1": "Todas as funcionalidades da sintaxis ICU est\xE1n soportadas.
Ten unha API case completamente compatible con", + "introduction.paragraph.features-2": ", outra librer\xEDa de internacionalizaci\xF3n moi popular e ben dese\xF1ada para Svelte.js ", + "introduction.paragraph.features-3": "As principais funcionalidades incl\xFAen:", + "introduction.list-items.features-1": "Traducci\xF3ns con interpolacions, seleccionar ramas de subtraducci\xF3ns en base a valores e o resto de funcionalidades de ICU.", + "introduction.list-items.features-2": "Formatear datas, tempos, n\xFAmeros, ordinais e divisas, todo apoi\xE1ndose na API Intl presente en t\xF3dolos navegadores modernos e en Node.", + "introduction.list-items.features-3": "Unha API dese\xF1ada para Svelte.js que poporciona uns convenientes stores que actualizan os seus valores autom\xE1ticamente cando o idioma seleccionado ou as traducci\xF3ns cargadas actual\xEDzanse.", + "introduction.list-items.features-4": "Unha variedade de funcions pra cargar paquetes de idiomas as\xEDncronamente cando sexa necesario, utilidades para extraer o idioma predeterminado das cabeceras da petici\xF3n HTTP en modo SSR", + "introduction.list-items.features-5": "Tree-shaking completo de t\xF3dalas utilidades arriba mencionadas que a t\xFAa aplicaci\xF3n non precise", + "icu-crash-course.title": "ICU syntax: Cursillo acelerado", + "icu-crash-course.table-heads.definition": "Entrada", + "icu-crash-course.table-heads.values": "Valores", + "icu-crash-course.table-heads.output": "Sa\xEDda", + "icu-crash-course.paragraph.main-1": "Esta librar\xEDa analiza e compila as traducci\xF3ns creadas na syntaxis ICU. Inda que a sintaxis ICU \xE9 un proxecto independiente este \xE9 un cursillo acelerado de porqu\xE9 \xE9 interesante e como usar as s\xFAas principais funcionalidades", + "icu-crash-course.subsection.why": "\xBFPorqu\xE9 usar a sintaxis ICU?", + "icu-crash-course.paragraph.why-1": "ICU son as seglas de International Components for Unicode. Inda que a s\xFAa popularidade comenzou con C/C++ y Java, \xE9 no ecosistema javascript onde se convertiu no standard de facto para internacionalizaci\xF3n, inda que tam\xE9n \xE9 popular en Python e PHP", + "icu-crash-course.paragraph.why-2": "Internacionalizar aplicacions \xE9 moito m\xE1is que mapear unha clave \xE1 traducci\xF3n apropiada nun diccionario. Aplicacions internacionalizadas debidamente deben xestional t\xF3dolos aspectos da traducci\xF3n, incluindo a forma en que datas y tempos se formatean, qu\xE9 delimitadores urar nos n\xFAmeros para separar os millares ou os decimais, formateo de divisas y soporter idiomas con x\xE9neros.", + "icu-crash-course.paragraph.why-3": "Incluso algo tan aparentemente sixelo coma os plurais pode resultar moi complicado nalguns idiomas. O ingl\xE9s, espa\xF1ol e alem\xE1n te\xF1en s\xF3 un singular e un plural pero alg\xFAns idiomas eslavos te\xF1en tres, e outros como o \xE1rabe te\xF1en 6 dependiendo do n\xFAmero de elementos. As veces o n\xFAmero a partir do que se cambia dunha forma do plural \xE1 seguinte var\xEDa dependendo da variante rexional.
O ingl\xE9s non ten moitas palabras con dous x\xE9neros pero o franc\xE9s e o castel\xE1n s\xED, e os adxectivos desos sustantivos deben respetar ese x\xE9nero. Formatear 123456789 en ingl\xE9s americano resultar\xE1 en 123,456,789 pero en ingl\xE9s da India ser\xE1 12,34,56,789.
Formateando divisas o s\xEDmbolo $ vai diante da cantidade pero o \u20AC vai despois.", + "icu-crash-course.paragraph.why-4": "A sintaxis ICU abstrae toda esta complexidade dos desarrolladores e da os verdadeiros traductores profesionais un meta-lenguage suficientemente expresivo para xestional todas as sutilezas pola s\xFAa conta", + "icu-crash-course.subsection.interpolations": "Interpolacions", + "icu-crash-course.paragraph.interpolations-1": `As entradas ICU soportan interpolar valores, que ser\xE1n adecuadamente saneados, polo que pasar undefined no ser\xE1 interpolado como "undefined".`, + "icu-crash-course.table-cells.interpolations": (chosen) => `Your favorite color is ${__interpolate(chosen)}`, + "icu-crash-course.subsection.plurals": "Plurais", + "icu-crash-course.paragraph.plurals-1": "A segunda funcionalidade m\xE1is usada en cualqueira aplicaci\xF3n \xE9 a pluralizaci\xF3n. A sintaxis ICU proporciona a utilidade plural para definir traducci\xF3ns para s plurais dende os m\xE1is sixelos os m\xE1is complexos, todo sen sair da sintaxis en s\xED mesma.", + "icu-crash-course.paragraph.plurals-2": "Cada posibilidade de pluralizaci\xF3n est\xE1 predecida dun calificador num\xE9rico. As posibles opcions son:", + "icu-crash-course.paragraph.plurals-3": "Vex\xE1molo cuns exemplos:", + "icu-crash-course.paragraph.plurals-4": "Alg\xFAns idiomas coma o ingl\xE9s soamente utilizan one e other pero outros idiomas ser\xE1n capaces de seleccionar sempre o plural m\xE1is adecuando. O l\xEDmite particular que divide few e many \xE9 altamente cultural.", + "icu-crash-course.paragraph.plurals-5": "Podes tam\xE9n especificar traducci\xF3ns para cantidades espec\xEDficas usando =N. Cando un n\xFAmero espec\xEDfico \xE9 especificado de esta maneira tomar\xE1 precedencia sobre o comportamiento por defecto dos plurais nese idioma.
Por exemplo, en ingl\xE9s podes usar =2 ou =12 para usar diferentes traducci\xF3ns espec\xEDficamente para un par y una ducia de elementos en lugar de usar o plural xen\xE9rico.", + "icu-crash-course.paragraph.plurals-6": "Por \xFAltimo, os plurais pueden utilizar a almoadilla para imprimir como n\xFAmero o valor usado para seleccionar o plural e opcionalmente a utilidade pode recibir un offset que ser\xE1 restado do valor antes de reemplazar a almoadilla.", + "icu-crash-course.list-items.one": "(singular)", + "icu-crash-course.list-items.two": "(dual)", + "icu-crash-course.list-items.few": "(paucal)", + "icu-crash-course.list-items.many": "(Tam\xE9n usado para fraccions)", + "icu-crash-course.list-items.other": "(plural xen\xE9rico. O usado en idiomas con s\xF3 unha forma de plural)", + "icu-crash-course.table-cells.plurals-simple": (numCats) => `Your have ${__plural(numCats, { + o: "one cat", + h: `${numCats} cats` + })}`, + "icu-crash-course.table-cells.plurals-complex": (numCats) => `Your have ${__plural(numCats, { + 0: "no cats at all", + o: "one single cat", + 2: "a couple cats", + 3: "a trio of cats", + 12: "a dozen cats", + h: `exactly ${numCats} cats` + })}`, + "icu-crash-course.table-cells.plurals-offset": (guest, guestCount) => __offsetPlural(guestCount, 1, { + 0: "Mary does not give a party.", + 1: `Mary invites ${__interpolate(guest)} to her party.`, + 2: `Mary invites ${__interpolate(guest)} and one other person to her party.`, + h: `Mary invites ${__interpolate(guest)} and ${guestCount - 1} other people to her party.` + }), + "icu-crash-course.subsection.select": "Select", + "icu-crash-course.paragraph.select-1": "A utilidade select \xFAsase para elexir entre varias posibles traducci\xF3ns en base \xF3 valor dun argumento.
Inda que ten moitos usos o m\xE1is frecuente \xE9 para ter traducci\xF3ns dependentes do x\xE9nero.", + "icu-crash-course.table-cells.select": (childGender) => `Your ${__select(childGender, { + male: "son", + female: "daughter", + other: "child" + })} has won an award`, + "icu-crash-course.table-cells.select-value-male": "Male", + "icu-crash-course.table-cells.select-value-female": "Female", + "icu-crash-course.table-cells.select-value-unknown": "Unknown", + "icu-crash-course.subsection.date": "Datas", + "icu-crash-course.paragraph.date-1": "Esta utilidade util\xEDzase para formatear datas de acordo as regras do idioma para os formatos por defecto ou os formatos persoalizados que engadiches o inicializar a librer\xEDa.
Os formatos disponibles por defecto son:", + "icu-crash-course.list-items.short": ": A representaci\xF3n m\xE1s abreviada (num\xE9rica)", + "icu-crash-course.list-items.medium": ": Representaci\xF3n textual abreviada", + "icu-crash-course.list-items.long": ": Representaci\xF3n textual extendida", + "icu-crash-course.list-items.full": ": A representaci\xF3n m\xE1is completa", + "icu-crash-course.table-cells.date": (holidayStart) => `Your next holidays start on ${__date(holidayStart, "full")}`, + "icu-crash-course.subsection.time": "Horas", + "icu-crash-course.paragraph.time": "Id\xE9ntico \xE1 utilidade para datas pero para foratear \xFAnicamente a parte temporal dun obxeto Date.", + "icu-crash-course.table-cells.time": (appointment) => `Your doctor's appointment is today at ${__time(appointment, "short")}`, + "icu-crash-course.subsection.number": "N\xFAmeros", + "icu-crash-course.paragraph.number": "Formatea un n\xFAmero de acordo as regras do idioma seleccionado.", + "icu-crash-course.paragraph.number-2": "Tam\xE9n hay unha funcionalidade avanzada chamada Number Skeletons que permite personalizar ata o extremo c\xF3mo queres que os n\xFAmeros sexan formateados.", + "icu-crash-course.paragraph.number-3": "As posibilidades dos number skeleton son ilimitadas.", + "icu-crash-course.table-cells.number": (num) => `Your account balance is ${__number(num)}`, + "icu-crash-course.table-cells.skeletonCurrency": (num) => `Your account balance is ${__number(num, { + style: "currency", + currency: "EUR" + })}`, + "icu-crash-course.table-cells.skeletonCurrencySigned": (num) => `Your account balance is ${__number(num, { + style: "currency", + currency: "EUR", + signDisplay: "always" + })}`, + "icu-crash-course.table-cells.skeletonPercentage": (num) => `Game progress ${__number(num, { + style: "percent" + })}`, + "icu-crash-course.table-cells.skeletonPercentageTwoDecimals": (num) => `Game progress ${__number(num, { + style: "percent", + minimumFractionDigits: 2, + maximumFractionDigits: 2 + })}`, + "icu-crash-course.table-cells.skeletonPercentageScaled": (num) => `Game progress ${__number(num / 100, { + style: "percent", + minimumFractionDigits: 2, + maximumFractionDigits: 2 + })}`, + "icu-crash-course.table-cells.skeletonMeasurementMeter": (num) => `Your destination is ${__number(num, { + style: "unit", + unit: "meter" + })} away`, + "icu-crash-course.table-cells.skeletonMeasurementMeterLong": (num) => `Your destination is ${__number(num, { + style: "unit", + unit: "meter", + currencyDisplay: "name", + unitDisplay: "long" + })} away`, + "icu-crash-course.table-cells.skeletonCompactShort": (num) => `Are you sure you want to bid ${__number(num, { + notation: "compact", + compactDisplay: "short" + })} over asking?`, + "icu-crash-course.table-cells.skeletonCompactLong": (num) => `Are you sure you want to bid ${__number(num, { + notation: "compact", + compactDisplay: "long" + })} over asking?`, + "icu-crash-course.table-cells.skeletonScientific": (num) => `The chances of winning the lottery are 1 in ${__number(num, { + notation: "scientific" + })}`, + "getting-started.title": "Primeiros pasos", + "getting-started.subsection.installation": "Instalaci\xF3n", + "getting-started.paragraph.installation-1": "Instala svelte-intl-precompile coma unha dependencia de runtime do teu proxecto Svelte.", + "getting-started.subsection.create-translations": "Crea as t\xFAas traducci\xF3ns", + "getting-started.paragraph.create-translations-1": (dir1, dir2, or) => `A continuaci\xF3n crea o directorio onde por os teus ficheiros de traducci\xF3ns. A min gustame usar ${__interpolate(dir1)} ${__interpolate(or)} ${__interpolate(dir2)}`, + "getting-started.paragraph.create-translations-2": "no raiz do proxecto, pero en realidade podes colocar o directorio onde prefiras", + "getting-started.paragraph.create-translations-3": "Recomiendo usar ficheiros .json pero podes tam\xE9n crear ficheiros javascript que exporten un \xFAnico obxeto que cont\xE9n as traducci\xF3ns. Calqueira que sexa a t\xFAa preferencia, as traducci\xF3ns son simples cadeas coa sintaxis ICU:", + "getting-started.paragraph.create-translations-4": "Eu prefiero o diccionario de traducci\xF3ns te\xF1a un \xFAnico nivel e usar puntos para crear xerarqu\xEDas coma o de enriba, pero tam\xE9n podes ani\xF1ar obxetos coma a continuaci\xF3n:", + "getting-started.paragraph.create-translations-5": "\xA1JSON \xE9 demasido r\xEDxido! \xA1Quero m\xE1is flexibilidade!", + "getting-started.paragraph.create-translations-6": "Podes usar funcionalidades de JSON 5 nos teus ficheiros json. Por exemplo, podes usar comentarios, strings multi-l\xEDnea, comillas simples, comas \xF3 final de l\xEDnas...
Funciona autom\xE1ticamente.", + "getting-started.paragraph.create-translations-7": "Non me gustan as chaves", + "getting-started.paragraph.create-translations-8": "Como vexas. Si che gusta usar espacios puedes tam\xEDn utilizar ficheiros YAML. Tan so engade a extensi\xF3n .yaml ou .yml. Se e que che van esas cousas.", + "getting-started.paragraph.create-translations-9": "Quero m\xE1is funcionalidades", + "getting-started.paragraph.create-translations-10": "Podes definir as t\xFAas traduccions en ficheiros .js, ficheiros .ts y ficheiros .mjs. O m\xF3dulo debe exportar un objecto coas traducci\xF3ns como o seu export por defecto.", + "getting-started.subsection.hook-into-sveltekit": "Acomplar o compilador a SvelteKit", + "getting-started.paragraph.hook-into-sveltekit-1": (path) => `O compilador desta librer\xEDa necesita integrarse no proceso de complilado de SvelteKit do teu proxecto. Para elo engadep a lista de plugins de vite no teu ${__interpolate(path)}`, + "getting-started.paragraph.hook-into-sveltekit-2": "E xa est\xE1 todo listo. Tempo de usar a librer\xEDa.", + "getting-started.subsection.hook-into-vite": "Acoplar o compilador a Vite.js", + "getting-started.paragraph.hook-into-vite-1": (path) => `Se non est\xE1s a usar SvelteKit senon simplemente Vite.js a configuraci\xF3n \xE9 moy semellante. O fin e o cabo SvelteKit usa Vite.js internamente. Importa o compilador e eng\xE1deo \xE1 lista de plugins en ${__interpolate(path)}`, + "configuration.title": "Configuraci\xF3n", + "configuration.subsection.example": "Exemplo de configuraci\xF3n", + "configuration.link.example": "Exemplo", + "configuration.paragraph.example-1": "Este \xE9 o exemplo de traballo m\xEDnimo da inicializaci\xF3n da biblioteca. \nPon isto no teu", + "configuration.paragraph.example-2": ".", + "configuration.paragraph.example-3": "Esto es suficiente para ir comenzando pero vamos a profundizar m\xE1is en todas as opcions que tes.", + "configuration.subsection.static-locales": "Engadir idiomas est\xE1ticamente", + "configuration.paragraph.static-locales-1": "Coma no exemplo anterior, a forma m\xE1is sixela de angadir entradas \xF3 diccionario \xE9 simplemente importar o m\xF3dulo que cont\xE9n as traducci\xF3ns e angadilas usando", + "configuration.paragraph.static-locales-2": "Observa que a pesar de que definiches as t\xFAas traducci\xF3ns nun ficheiro JSON aqu\xED as estamos importando como se fosen m\xF3dulos ES6 situados en ", + "configuration.paragraph.static-locales-3": ". Esto es porque la librer\xEDa ha transformado las traducci\xF3ns en un m\xF3dulo con funciones durante la compilaci\xF3n.", + "configuration.paragraph.static-locales-4": "Esta estratexia est\xE1 cargando todos esos idiomas incluso se soamente un vai acabar mostrado. Esto non soe ser un problema cando est\xE1s a comenzando o desenvolvemento dun novo proxecto ou se o teu proyecto ten poucas traducci\xF3ns ou poucos idiomas, pero cando a t\xFAa aplicaci\xF3n comenza a crecer deber\xEDa empezar a cargar os paquetes de traducci\xF3ns baixo demanda.", + "configuration.subsection.dynamic-locales": "Engadir idiomas din\xE1micamente", + "configuration.paragraph.dynamic-locales-1": "Unha vez tes unha cantidad significativa de traducci\xF3ns en varios idiomas ser\xEDa moi ineficiente cargar todos eles para cada usuario cando s\xF3 vai utilizar o que haxa seleccionado. A librer\xEDa ten una funci\xF3n", + "configuration.paragraph.dynamic-locales-2": "para din\xE1micamente importar idiomas cando o usuario o seleccione e outra funci\xF3n", + "configuration.paragraph.dynamic-locales-3": "para esperar a que a carga estea finalizada.", + "configuration.paragraph.dynamic-locales-4": "Se todos os teus idiomas cargan din\xE1micamente debes impedir que a app prosiga o renderizado ata que o paquete do idioma inicial estea cargado. Retornando ol resultado de invocala dende a funci\xF3n", + "configuration.paragraph.dynamic-locales-5": "proporcionada por SvelteKit far\xE1 exactamente iso.", + "configuration.subsection.dynamic-locales-shorthand": "Engadir idiomas din\xE1micamente (pero m\xE1is r\xE1pido esta vez)", + "configuration.paragraph.dynamic-locales-shorthand-1": "Se tan s\xF3 queres rexistar t\xF3dolos idiomas dispo\xF1ibles (\xE9 dicir, todos aquelos para os que tes un ficheiro JSON con traducci\xF3ns) autom\xE1ticamente, hay un atallo moi pr\xE1ctico para facelo. A carpeta", + "configuration.paragraph.dynamic-locales-shorthand-2": "de onde importas as traducci\xF3ns funciona tam\xE9n coma un m\xF3dulo de onde podes importar d\xFAas utilidades: ", + "configuration.paragraph.dynamic-locales-shorthand-3": "A primera \xE9 unha funci\xF3n que cando se invoca equivale a chamar", + "configuration.paragraph.dynamic-locales-shorthand-4": "para cada un dos idiomas.
A segunda \xE9 un array cos c\xF3digos ISO dos idiomas dipo\xF1ibles (tanto se os rexistraches coma se inda non), para que te\xF1as esa informaci\xF3n dispo\xF1ible se a necesitas utilizar.", + "configuration.subsection.init": "Idiomas inicial e de rescate", + "configuration.paragraph.init-1": "\xC1 invocaci\xF3n", + "configuration.paragraph.init-2": "as opcions m\xE1is importantes son", + "configuration.paragraph.init-3": ". A primeira determina o idioma no que a app vai ser renderizada inicialmente y o segundo o idioma que se usar\xE1 como derradeida opci\xF3n cando unha entrada non se atope no diccionario do idioma actual.", + "configuration.paragraph.init-4": "Hay moitas cousas que se poden facer para lograr a experiencia de usuario perfecta, como convenientemente inicializar", + "configuration.paragraph.init-5": "\xF3 idioma seleccionado polo usuario durante o rexistro se fixo login, obtindo das cookies si xa visitara a p\xE1gina anteriormente ou obtelo da cabeceira
Accept-Language
da petici\xF3n HTTP cando se renderiza no servidor, pero a m\xE1is sixela \xE9 detectar o idioma do navegador ou da URL coas utilidades proporcionadas para elo.", + "configuration.subsection.find-locale": "Atopar o mellos idioma", + "configuration.paragraph.find-locale-1": "Hai m\xFAltiples estratexias v\xE1lidas para seleccionar o mellor idioma que pasar \xE1 funci\xF3n", + "configuration.paragraph.find-locale-2": ". Esta librer\xEDa proporciona utilidades para as estratexias m\xE1is comuns:", + "configuration.definitions.navigator": "Extrae o idioma do navegador, que a s\xFAa vez \xE9 o idioma do sistema operativo.", + "configuration.definitions.query": "Extrae o idioma no par\xE1metro dado a query string da URL.
P.e
getLocaleFromQueryString('lang')
para
/users?sort=name&dir=asc&lang=es
", + "configuration.definitions.hash": "Como
getLocaleFromQueryString
pero para el hash de la URL.
P.e
getLocaleFromHash('lang')
para
/users#sort=name&dir=asc&lang=es
", + "configuration.definitions.path": "Extrae o idioma dos segmentos da URL.
P.e
getLocaleFromPathname(/^/((es|en)(-\\w\\w)?)/)
para
myapp.com/en-US/users
", + "configuration.definitions.host": "Extrae o idioma del host.
P.e
getLocaleFromHostname(/^((es|en)(-\\w\\w)?)\\./)
para
https://pt.myapp.com
", + "configuration.subsection.custom-formats": "Formatos persoalizados", + "configuration.paragraph.custom-formats-1": "Esta librer\xEDa pode formatear n\xFAmeros, datas e horas. Faino sen incrementar significativamente o tama\xF1o do teu proxecto porque utiliza a API Intl xa presente en todos os navegadores modernos e main en Node.js.
Por defecto a t\xFAa app disp\xF3n de estos formatos pero podes engadir os teus propios.", + "configuration.paragraph.custom-formats-2": "Se queres definir os teus propios formatos p\xE1saos \xF3 incializar a librer\xEDa usando a opci\xF3n", + "configuration.paragraph.custom-formats-3": ", os cuales ser\xE1n engadidos \xF3s formatos por defecto listados arriba. Os formatos deben ser obxetos v\xE1lidos para pasar a", + "usage.title": "Uso", + "usage.paragraph.preface-1": "A API de esta librer\xEDa foi tomada en gran parte da excelente", + "usage.paragraph.preface-2": ", hasta o punto de que na maior\xEDa de proxectos podes cambiar de svelte-i18 a svelte-intl-precompile e vice versa sen modificar a t\xFAa aplicaci\xF3n m\xE1is que actualizado o nome do paquete dende o que importas as funcions.", + "usage.paragraph.preface-3": 'Su API basada en "stores" es especialmente pr\xE1ctica de utilizar en las plantillas y provee el beneficio a\xF1adido de hacer toda tu aplicaci\xF3n ractiva, autom\xE1ticamente actualizando cada traducci\xF3n si el usuario cambia de idioma o se cargan nuevas traducci\xF3ns. Para los siguientes ejemplos vamos a asumir que est\xE1 trabajando en una aplicaci\xF3n que contiene las siguientes traducci\xF3ns.', + "usage.link.basic-translations": "Traducci\xF3ns b\xE1sicas", + "usage.subsection.basic-translations": "Traducci\xF3ns b\xE1sicas: O store
$t(key, ops)
.", + "usage.paragraph.basic-translations-1": "Este store \xE9 o que utilizar\xE1s m\xE1is a miudo. Simplemente imp\xF3rtao e usa a funci\xF3n que cont\xE9n, pas\xE1ndolle o nome da traducci\xF3n a usar.", + "usage.subsection.passing-arguments": "Pasar argumentos", + "usage.paragraph.passing-arguments-1": "O segundo argumento recibido por", + "usage.paragraph.passing-arguments-2": "\xE9 un obxecto. Calquer argumento requerido dentro da traducci\xF3n proporci\xF3nase coa opci\xF3n", + "usage.paragraph.passing-arguments-3": ".", + "usage.paragraph.passing-arguments-4": "Non hai ningunha diferencia pasando argumentos dependendo de se van a interpolar ou usarse para computar plurais ou sub-ramas, ou son n\xFAmeros ou datas para ser formateados. Todos os argumentos p\xE1sanse da mesma maneira.", + "usage.subsection.formatting": "Formatear datas, horas y n\xFAmeros", + "usage.paragraph.formatting-1": "Inda que podes pasar n\xFAmeros, datas e horas as t\xFAas traducci\xF3ns que ser\xE1n formateadas segindo o que a mesaxe ICU indique, a librer\xEDa tambien ten outros stores para cando necesitas formatear directamente dende o teu c\xF3digo.", + "usage.subsection.other-stores": "Outros stores", + "usage.paragraph.other-stores-1": "Hai tres stores m\xE1is que paga a pena mencionar:", + "usage.paragraph.other-stores-2": "Imos crear un compo\xF1ente para seleccionar o idioma actual", + "usage.paragraph.other-stores-3": "O c\xF3digo de arriba \xE9 bastante sinxelo. Tan s\xF3 iteramos a lista de idiomas dispo\xF1ibles en $locales e renderizamos un bot\xF3n por cada in. Facendo click nesos botons asignar\xE1 o seu dioma o store $locale.
Todas as traducci\xF3ns da app sactualizaranse sen necesidade de recargar a p\xE1gina.", + "usage.definitions.other-stores-1": `Pode ser usado para leer ou asignar o idioma actual. (P.e:
"es-ES"
).`, + "usage.definitions.other-stores-2": `Cont\xE9n a lista de idiomas rexistrados. (P.e:
["es-ES", "en", "pt-BR"]
).`, + "usage.definitions.other-stores-3": "Cont\xE9n
true
cando un idioma as\xEDncrono todav\xEDa est\xE1 cargando." +}; +export { + gl as default +}; diff --git a/.vercel/output/functions/render.func/.svelte-kit/output/server/chunks/hooks.server.js b/.vercel/output/functions/render.func/.svelte-kit/output/server/chunks/hooks.server.js new file mode 100644 index 0000000..7e6acfc --- /dev/null +++ b/.vercel/output/functions/render.func/.svelte-kit/output/server/chunks/hooks.server.js @@ -0,0 +1,14 @@ +import cookie__default from "cookie"; +const handle = ({ event, resolve }) => { + const cookies = cookie__default.parse(event.request.headers.get("cookie") ?? ""); + const locale = cookies.lang || event.request.headers.get("accept-language") && event.request.headers.get("accept-language").split(",")[0]; + event.locals.locale = locale; + return resolve(event); +}; +function getSession(event) { + return { acceptedLanguage: event.locals.locale }; +} +export { + getSession, + handle +}; diff --git a/.vercel/output/functions/render.func/.svelte-kit/output/server/chunks/index.js b/.vercel/output/functions/render.func/.svelte-kit/output/server/chunks/index.js new file mode 100644 index 0000000..bedcdc5 --- /dev/null +++ b/.vercel/output/functions/render.func/.svelte-kit/output/server/chunks/index.js @@ -0,0 +1,131 @@ +function noop() { +} +function run(fn) { + return fn(); +} +function blank_object() { + return /* @__PURE__ */ Object.create(null); +} +function run_all(fns) { + fns.forEach(run); +} +function safe_not_equal(a, b) { + return a != a ? b == b : a !== b || (a && typeof a === "object" || typeof a === "function"); +} +function subscribe(store, ...callbacks) { + if (store == null) { + return noop; + } + const unsub = store.subscribe(...callbacks); + return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub; +} +function set_store_value(store, ret, value) { + store.set(value); + return ret; +} +let current_component; +function set_current_component(component) { + current_component = component; +} +function get_current_component() { + if (!current_component) + throw new Error("Function called outside component initialization"); + return current_component; +} +function setContext(key, context) { + get_current_component().$$.context.set(key, context); + return context; +} +function getContext(key) { + return get_current_component().$$.context.get(key); +} +Promise.resolve(); +const ATTR_REGEX = /[&"]/g; +const CONTENT_REGEX = /[&<]/g; +function escape(value, is_attr = false) { + const str = String(value); + const pattern = is_attr ? ATTR_REGEX : CONTENT_REGEX; + pattern.lastIndex = 0; + let escaped = ""; + let last = 0; + while (pattern.test(str)) { + const i = pattern.lastIndex - 1; + const ch = str[i]; + escaped += str.substring(last, i) + (ch === "&" ? "&" : ch === '"' ? """ : "<"); + last = i + 1; + } + return escaped + str.substring(last); +} +function each(items, fn) { + let str = ""; + for (let i = 0; i < items.length; i += 1) { + str += fn(items[i], i); + } + return str; +} +const missing_component = { + $$render: () => "" +}; +function validate_component(component, name) { + if (!component || !component.$$render) { + if (name === "svelte:component") + name += " this={...}"; + throw new Error(`<${name}> is not a valid SSR component. You may need to review your build config to ensure that dependencies are compiled, rather than imported as pre-compiled modules`); + } + return component; +} +let on_destroy; +function create_ssr_component(fn) { + function $$render(result, props, bindings, slots, context) { + const parent_component = current_component; + const $$ = { + on_destroy, + context: new Map(context || (parent_component ? parent_component.$$.context : [])), + on_mount: [], + before_update: [], + after_update: [], + callbacks: blank_object() + }; + set_current_component({ $$ }); + const html = fn(result, props, bindings, slots); + set_current_component(parent_component); + return html; + } + return { + render: (props = {}, { $$slots = {}, context = /* @__PURE__ */ new Map() } = {}) => { + on_destroy = []; + const result = { title: "", head: "", css: /* @__PURE__ */ new Set() }; + const html = $$render(result, props, {}, $$slots, context); + run_all(on_destroy); + return { + html, + css: { + code: Array.from(result.css).map((css) => css.code).join("\n"), + map: null + }, + head: result.title + result.head + }; + }, + $$render + }; +} +function add_attribute(name, value, boolean) { + if (value == null || boolean && !value) + return ""; + const assignment = boolean && value === true ? "" : `="${escape(value, true)}"`; + return ` ${name}${assignment}`; +} +export { + safe_not_equal as a, + subscribe as b, + create_ssr_component as c, + set_store_value as d, + escape as e, + each as f, + getContext as g, + add_attribute as h, + missing_component as m, + noop as n, + setContext as s, + validate_component as v +}; diff --git a/.vercel/output/functions/render.func/.svelte-kit/output/server/chunks/index2.js b/.vercel/output/functions/render.func/.svelte-kit/output/server/chunks/index2.js new file mode 100644 index 0000000..9fcdbe5 --- /dev/null +++ b/.vercel/output/functions/render.func/.svelte-kit/output/server/chunks/index2.js @@ -0,0 +1,47 @@ +class HttpError { + constructor(status, body) { + this.status = status; + if (typeof body === "string") { + this.body = { message: body }; + } else if (body) { + this.body = body; + } else { + this.body = { message: `Error: ${status}` }; + } + } + toString() { + return JSON.stringify(this.body); + } +} +class Redirect { + constructor(status, location) { + this.status = status; + this.location = location; + } +} +class ValidationError { + constructor(status, data) { + this.status = status; + this.data = data; + } +} +function error(status, message) { + return new HttpError(status, message); +} +function json(data, init) { + const headers = new Headers(init == null ? void 0 : init.headers); + if (!headers.has("content-type")) { + headers.set("content-type", "application/json"); + } + return new Response(JSON.stringify(data), { + ...init, + headers + }); +} +export { + HttpError as H, + Redirect as R, + ValidationError as V, + error as e, + json as j +}; diff --git a/.vercel/output/functions/render.func/.svelte-kit/output/server/chunks/ja.js b/.vercel/output/functions/render.func/.svelte-kit/output/server/chunks/ja.js new file mode 100644 index 0000000..153a151 --- /dev/null +++ b/.vercel/output/functions/render.func/.svelte-kit/output/server/chunks/ja.js @@ -0,0 +1,217 @@ +import { __interpolate, __plural, __offsetPlural, __select, __date, __time, __number } from "svelte-intl-precompile"; +const ja = { + "common.or": "\u3084", + "common.and": "\u3068", + "main.title": "Svelte Intl Precompile", + "main.subtitle": "\u30D3\u30EB\u30C9\u6642\u306B\u7FFB\u8A33\u6587\u3092\u89E3\u6790\u3057\u3066\u30B3\u30F3\u30D1\u30A4\u30EB\u3059\u308B Svelte \u5411\u3051\u306E i18n \u30E9\u30A4\u30D6\u30E9\u30EA", + "playground.title": "Playground", + "introduction.title": "\u30A4\u30F3\u30C8\u30ED\u30C0\u30AF\u30B7\u30E7\u30F3", + "introduction.subsection.why-use-it": "\u306A\u305C\u4F7F\u7528\u3057\u305F\u3044\u306E\u3067\u3059\u304B\uFF1F", + "introduction.paragraph.why-use-it-1": "Svelte-intl-precompile \u306F Svelte \u30A2\u30D7\u30EA\u306E\u305F\u3081\u306E i18n \u30E9\u30A4\u30D6\u30E9\u30EA\u3067\u3001\u30A2\u30D7\u30EA\u304C\u5FC5\u8981\u3068\u3059\u308B\u6A5F\u80FD\u3092\u3001\u30A2\u30D7\u30EA\u306E\u30B5\u30A4\u30BA\u3068\u5B9F\u884C\u30D1\u30D5\u30A9\u30FC\u30DE\u30F3\u30B9\u306E\u3069\u3061\u3089\u306B\u5BFE\u3057\u3066\u3082\u6700\u4F4E\u9650\u306E\u30B3\u30B9\u30C8\u3067\u63D0\u4F9B\u3059\u308B\u3053\u3068\u3092\u76EE\u7684\u3057\u3066\u3044\u307E\u3059\u3002", + "introduction.paragraph.why-use-it-2": "\u3053\u308C\u3092\u5B9F\u73FE\u3059\u308B\u306E\u306B\u3001\u4ED6\u306E\u591A\u304F\u306E\u56FD\u969B\u5316\u30E9\u30A4\u30D6\u30E9\u30EA\u3068\u306F\u7570\u306A\u308B\u30A2\u30D7\u30ED\u30FC\u30C1\u3092\u3068\u3063\u3066\u3044\u307E\u3059\u3002Svelte.js \u304C\u30B3\u30FC\u30C9\u3092\u89E3\u6790\u30FB\u89E3\u91C8\u3057\u3066\u30D3\u30EB\u30C9\u6642\u306B\u6700\u5C0F\u304B\u3064\u52B9\u7387\u7684\u306A javascript \u306B\u30B3\u30F3\u30D1\u30A4\u30EB\u3059\u308B\u306E\u3068\u540C\u3058\u3088\u3046\u306B\u3001\u3053\u306E\u30E9\u30A4\u30D6\u30E9\u30EA\u306F ICU \u30E1\u30C3\u30BB\u30FC\u30B8\u69CB\u6587 \u3067\u5B9A\u7FA9\u3055\u308C\u305F\u7FFB\u8A33\u6587\u3092\u691C\u67FB\u3057\u3001\u5C0F\u3055\u304F\u3066\u52B9\u7387\u7684\u306A\u30A4\u30F3\u30E9\u30A4\u30F3\u95A2\u6570\u306B\u30B3\u30F3\u30D1\u30A4\u30EB\u3057\u307E\u3059\u3002", + "introduction.paragraph.why-use-it-3": "ICU \u30E1\u30C3\u30BB\u30FC\u30B8\u69CB\u6587\u3067\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u308B\u5168\u3066\u306E\u6A5F\u80FD\u3092\u4F7F\u7528\u3057\u305F\u5834\u5408\u3001minify \u3068 \u5727\u7E2E\u3092\u884C\u3063\u305F\u3042\u3068\u3067\u7D042kb\u3068\u306A\u308A\u307E\u3059\u3002\u3082\u3057\u3044\u304F\u3064\u304B\u306E\u6A5F\u80FD\u3057\u304B\u4F7F\u308F\u306A\u3044\u306E\u3067\u3042\u308C\u3070\u30011kb\u7A0B\u5EA6\u307E\u3067\u5C0F\u3055\u304F\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u3059\u3002", + "introduction.paragraph.why-use-it-4": "\u307E\u305F\u3001\u7FFB\u8A33\u6587\u3092\u30D6\u30E9\u30A6\u30B6\u4E0A\u3067\u30D1\u30FC\u30B9\u3057\u305F\u308A\u30C8\u30FC\u30AB\u30CA\u30A4\u30BA\u3057\u305F\u308A\u3059\u308B\u5FC5\u8981\u304C\u306A\u3044\u305F\u3081\u3001\u9AD8\u901F\u3067\u3059\u3002\u7FFB\u8A33\u6587\u306E\u30EC\u30F3\u30C0\u30EA\u30F3\u30B0\u306F\u3001\u521D\u56DE\u306E\u5834\u5408\u306F\u7D044\u500D\u9AD8\u901F\u3067\u30012\u56DE\u76EE\u4EE5\u964D\u306F\u7D0450%\u9AD8\u901F\u3067\u3059\u3002", + "introduction.subsection.playground": "\u306A\u3093\u3060\u3063\u3066\uFF1F\u30B3\u30FC\u30C9\u3092\u898B\u305B\u3066\u304F\u3060\u3055\u3044", + "introduction.paragraph.playground-preface": "\u3053\u3061\u3089\u3067\u3059\u3001\u8A66\u3057\u3066\u307F\u3066\u304F\u3060\u3055\u3044\u3002\u3054\u81EA\u8EAB\u3067\u7FFB\u8A33\u6587\u3092\u8CBC\u308A\u4ED8\u3051\u3066\u3001\u5909\u63DB\u3055\u308C\u305F\u51FA\u529B\u3092\u898B\u3066\u307F\u307E\u3057\u3087\u3046\u3002", + "introduction.subsection.features": "\u3069\u3093\u306A\u6A5F\u80FD\u304C\u3042\u308A\u307E\u3059\u304B\uFF1F", + "introduction.paragraph.features-1": "ICU \u30E1\u30C3\u30BB\u30FC\u30B8\u69CB\u6587\u3067\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u308B\u3059\u3079\u3066\u306E\u6A5F\u80FD\u3092\u30B5\u30DD\u30FC\u30C8\u3057\u3066\u3044\u307E\u3059\u3002
Svelte.js \u5411\u3051\u306E\u56FD\u969B\u5316\u30E9\u30A4\u30D6\u30E9\u30EA\u3067\u3001\u975E\u5E38\u306B\u30DD\u30D4\u30E5\u30E9\u30FC\u3067\u3068\u3066\u3082\u4E0A\u624B\u304F\u8A2D\u8A08\u3055\u308C\u3066\u3044\u308B", + "introduction.paragraph.features-2": "\u3068\u307B\u307C\u5B8C\u5168\u306B\u4E92\u63DB\u6027\u306E\u3042\u308B API \u304C\u3042\u308A\u307E\u3059\u3002", + "introduction.paragraph.features-3": "\u4E3B\u8981\u306A\u6A5F\u80FD\u306F\u4EE5\u4E0B\u306E\u901A\u308A\u3067\u3059:", + "introduction.list-items.features-1": "\u88DC\u9593\u3001\u526F\u7FFB\u8A33\u9078\u629E\u3001\u3059\u3079\u3066\u306E ICU \u306E\u6A5F\u80FD\u3092\u5099\u3048\u305F\u7FFB\u8A33\u3002", + "introduction.list-items.features-2": "\u65E5\u4ED8\u3001\u6642\u523B\u3001\u6570\u5B57\u3001\u5E8F\u6570\u3001\u901A\u8CA8\u306E\u30D5\u30A9\u30FC\u30DE\u30C3\u30BF\u30FC\u306F\u30E2\u30C0\u30F3\u306A\u30D6\u30E9\u30A6\u30B6\u3068 node \u3067\u5229\u7528\u53EF\u80FD\u306A\u30CD\u30A4\u30C6\u30A3\u30D6\u306E Intl API \u3092\u6D3B\u7528\u3002", + "introduction.list-items.features-3": "store \u3092\u4F7F\u7528\u3057\u3001\u30ED\u30B1\u30FC\u30EB\u3084\u7FFB\u8A33\u304C\u5909\u66F4\u3055\u308C\u305F\u3068\u304D\u306B\u81EA\u52D5\u7684\u306B\u66F4\u65B0\u3055\u308C\u308B\u3001\u3068\u3066\u3082\u4F7F\u3044\u3084\u3059\u3044 Svelte \u6307\u5411\u306E API\u3002", + "introduction.list-items.features-4": "\u5FC5\u8981\u306B\u5FDC\u3058\u3066\u975E\u540C\u671F\u3067\u30ED\u30B1\u30FC\u30EB\u3092\u30ED\u30FC\u30C9\u3059\u308B\u3001SSR \u30E2\u30FC\u30C9\u306E\u3068\u304D\u306B\u30EA\u30AF\u30A8\u30B9\u30C8\u30D8\u30C3\u30C0\u304B\u3089\u30C7\u30D5\u30A9\u30EB\u30C8\u306E\u30ED\u30B1\u30FC\u30EB\u3092\u62BD\u51FA\u3059\u308B\u3001\u306A\u3069\u304C\u884C\u3048\u308B\u69D8\u3005\u306A\u95A2\u6570\u3002", + "introduction.list-items.features-5": "\u4F7F\u7528\u3057\u3066\u3044\u306A\u3044\u6A5F\u80FD\u306F\u3059\u3079\u3066 tree-shaking \u3055\u308C\u308B\u3002", + "icu-crash-course.title": "ICU\u69CB\u6587 \u77ED\u671F\u96C6\u4E2D\u8B1B\u5EA7", + "icu-crash-course.table-heads.definition": "\u5165\u529B", + "icu-crash-course.table-heads.values": "\u5024", + "icu-crash-course.table-heads.output": "\u51FA\u529B", + "icu-crash-course.paragraph.main-1": "\u3053\u306E\u30E9\u30A4\u30D6\u30E9\u30EA\u306F\u3001ICU\u30E1\u30C3\u30BB\u30FC\u30B8\u69CB\u6587\u3067\u66F8\u304B\u308C\u305F\u7FFB\u8A33\u6587\u3092\u89E3\u6790\u3057\u3001\u30B3\u30F3\u30D1\u30A4\u30EB\u3057\u307E\u3059\u3002ICU\u30E1\u30C3\u30BB\u30FC\u30B8\u69CB\u6587\u306F\u5225\u306E\u72EC\u7ACB\u3057\u305F\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3067\u3059\u304C\u3001\u3053\u306E\u8B1B\u5EA7\u3067\u306F\u305D\u306E\u826F\u3055\u3068\u4E3B\u8981\u306A\u6A5F\u80FD\u306E\u4F7F\u3044\u65B9\u306B\u3064\u3044\u3066\u7406\u89E3\u3092\u6DF1\u3081\u3066\u3044\u304D\u307E\u3059\u3002", + "icu-crash-course.subsection.why": "\u306A\u305CICU\u30E1\u30C3\u30BB\u30FC\u30B8\u69CB\u6587\u3092\u4F7F\u3046\u306E\u304B\uFF1F", + "icu-crash-course.paragraph.why-1": "ICU\u306F International Components for Unicode \u306E\u7565\u3067\u3059\u3002C/C++\u3084Java\u3067\u4EBA\u6C17\u304C\u51FA\u59CB\u3081\u3066\u3001javascript\u306E\u30A8\u30B3\u30B7\u30B9\u30C6\u30E0\u3067\u306F\u56FD\u969B\u5316(internationalization)\u306E\u30C7\u30D5\u30A1\u30AF\u30C8\u30B9\u30BF\u30F3\u30C0\u30FC\u30C9\u3068\u306A\u308A\u3001Python\u3084PHP\u3067\u3082\u4EBA\u6C17\u304C\u3042\u308A\u307E\u3059\u3002", + "icu-crash-course.paragraph.why-2": "\u30A2\u30D7\u30EA\u306E\u56FD\u969B\u5316\u306F\u3001\u7FFB\u8A33\u3055\u308C\u305F\u6587\u5B57\u5217\u3092\u4F55\u3089\u304B\u306E\u30AD\u30FC\u3067\u8F9E\u66F8\u306B\u30DE\u30C3\u30D4\u30F3\u30B0\u3059\u308B\u3060\u3051\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002\u9069\u5207\u306B\u56FD\u969B\u5316\u3055\u308C\u305F\u30A2\u30D7\u30EA\u3067\u306F\u3001\u65E5\u4ED8\u3084\u6642\u523B\u306E\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u3001\u5C0F\u6570\u3084\u6841\u304C\u591A\u3044\u6570\u5B57\u306B\u4F7F\u308F\u308C\u308B\u533A\u5207\u308A\u6587\u5B57\u3001\u901A\u8CA8\u3001\u8A00\u8449\u306E\u6027\u5225\u306E\u30B5\u30DD\u30FC\u30C8\u306A\u3069\u3001\u7FFB\u8A33\u306E\u3042\u3089\u3086\u308B\u5074\u9762\u3092\u51E6\u7406\u3057\u306A\u3051\u308C\u3070\u306A\u308A\u307E\u305B\u3093\u3002", + "icu-crash-course.paragraph.why-3": "\u8907\u6570\u5F62\u306E\u3088\u3046\u306A\u30B7\u30F3\u30D7\u30EB\u306A\u3082\u306E\u3067\u3055\u3048\u3001\u8A00\u8A9E\u306B\u3088\u3063\u3066\u306F\u975E\u5E38\u306B\u8907\u96D1\u306B\u306A\u308A\u307E\u3059\u3002\u82F1\u8A9E\u3001\u30C9\u30A4\u30C4\u8A9E\u3001\u30B9\u30DA\u30A4\u30F3\u8A9E\u306B\u306F\u5358\u6570\u5F62\u3068\u8907\u6570\u5F62\u304C\u3042\u308A\u307E\u3059\u304C\u3001\u30B9\u30E9\u30F4\u8AF8\u8A00\u8A9E\u306B\u306F3\u7A2E\u985E\u3001\u30A2\u30E9\u30D3\u30A2\u8A9E\u306A\u3069\u306E\u4ED6\u306E\u8A00\u8A9E\u306B\u306F\u305D\u306E\u30A2\u30A4\u30C6\u30E0\u306E\u6570\u306B\u3088\u3063\u3066\u306F6\u7A2E\u985E\u306B\u3082\u306A\u308A\u307E\u3059\u3002\u3042\u308B\u8907\u6570\u5F62\u304B\u3089\u305D\u306E\u6B21\u306E\u5F62\u306B\u5909\u3048\u306A\u3051\u308C\u3070\u306A\u3089\u306A\u3044\u95BE\u5024\u306F\u3001\u5730\u57DF\u306B\u3088\u3063\u3066\u5909\u308F\u308B\u3053\u3068\u3082\u3042\u308A\u307E\u3059\u3002
\u82F1\u8A9E\u306B\u306F\u6027\u5225\u306E\u3042\u308B\u5358\u8A9E\u306F\u3042\u307E\u308A\u591A\u304F\u3042\u308A\u307E\u305B\u3093\u304C\u3001\u30D5\u30E9\u30F3\u30B9\u8A9E\u3084\u81F3\u8A9E\u306B\u306F\u305D\u308C\u304C\u3042\u308A\u3001\u5F62\u5BB9\u8A5E\u306F\u540D\u8A5E\u306E\u6027\u5225\u306B\u5408\u308F\u305B\u306A\u3051\u308C\u3070\u306A\u308A\u307E\u305B\u3093\u3002123456789 \u3092\u30A2\u30E1\u30EA\u30AB\u82F1\u8A9E\u65B9\u5F0F\u306B\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u3059\u308B\u3068 123,456,789 \u3068\u306A\u308A\u307E\u3059\u304C\u3001\u30A4\u30F3\u30C9\u65B9\u5F0F\u306B\u3059\u308B\u3068 12,34,56,789 \u3068\u306A\u308A\u307E\u3059\u3002
\u901A\u8CA8\u306E$\u8A18\u53F7\u3092\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u3059\u308B\u3068\u91D1\u984D\u306E\u524D\u306B\u3001\u20AC\u306E\u5834\u5408\u306F\u5F8C\u306B\u306A\u308A\u307E\u3059\u3002", + "icu-crash-course.paragraph.why-4": "ICU\u69CB\u6587\u306F\u3053\u306E\u3088\u3046\u306A\u8907\u96D1\u3055\u3092\u958B\u767A\u8005\u304B\u3089\u53D6\u308A\u9664\u304D\u3001\u672C\u7269\u306E\u30D7\u30ED\u30D5\u30A7\u30C3\u30B7\u30E7\u30CA\u30EB\u306A\u7FFB\u8A33\u8005\u304C\u81EA\u8EAB\u3067\u5168\u3066\u306E\u7D30\u304B\u3044\u554F\u984C\u3092\u51E6\u7406\u3059\u308B\u306E\u306B\u5341\u5206\u306A\u8868\u73FE\u529B\u3092\u6301\u3064\u30E1\u30BF\u8A00\u8A9E\u3092\u63D0\u4F9B\u3057\u307E\u3059\u3002", + "icu-crash-course.subsection.interpolations": "\u88DC\u9593", + "icu-crash-course.paragraph.interpolations-1": `ICU\u30E1\u30C3\u30BB\u30FC\u30B8\u306F\u5024\u306E\u88DC\u9593\u3092\u30B5\u30DD\u30FC\u30C8\u3057\u3066\u304A\u308A\u3001undefined \u3092\u6E21\u3057\u3066\u3082 "undefined" \u3068\u3057\u3066\u88DC\u9593\u3055\u308C\u306A\u3044\u3088\u3046\u306B\u9069\u5207\u306B\u30B5\u30CB\u30BF\u30A4\u30BA\u3055\u308C\u307E\u3059\u3002`, + "icu-crash-course.table-cells.interpolations": (chosen) => `Your favorite color is ${__interpolate(chosen)}`, + "icu-crash-course.subsection.plurals": "\u8907\u6570\u5F62", + "icu-crash-course.paragraph.plurals-1": "\u3069\u306E\u30A2\u30D7\u30EA\u3067\u3082\u30012\u756A\u3081\u306B\u3088\u304F\u4F7F\u308F\u308C\u308B\u6A5F\u80FD\u306F\u8907\u6570\u5F62\u3067\u3059\u3002ICU\u69CB\u6587\u306B\u306F\u5C02\u7528\u306E\u8907\u6570\u5F62\u30D8\u30EB\u30D1\u30FC\u304C\u3042\u308A\u3001\u8907\u6570\u5F62\u306E\u7FFB\u8A33\u306B\u3064\u3044\u3066\u30B7\u30F3\u30D7\u30EB\u306A\u3082\u306E\u304B\u3089\u975E\u5E38\u306B\u8907\u96D1\u306A\u3082\u306E\u307E\u3067\u3001\u305D\u306E\u7FFB\u8A33\u6587\u306E\u4E2D\u3067\u5B9A\u7FA9\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u3059\u3002", + "icu-crash-course.paragraph.plurals-2": "\u8907\u6570\u5F62\u306E\u5404\u30D1\u30B9\u306B\u306F\u3001\u5148\u982D\u306B\u6570\u5024\u306E\u4FEE\u98FE\u5B50\u304C\u4ED8\u304D\u307E\u3059\u3002\u4ED8\u3051\u3089\u308C\u308B\u4FEE\u98FE\u5B50\u306F\u4EE5\u4E0B\u306E\u901A\u308A\u3067\u3059:", + "icu-crash-course.paragraph.plurals-3": "\u6700\u521D\u306B\u4F8B\u3092\u3044\u304F\u3064\u304B\u898B\u3066\u307F\u307E\u3057\u3087\u3046:", + "icu-crash-course.paragraph.plurals-4": "\u82F1\u8A9E\u306A\u3069\u306E\u8A00\u8A9E\u306F one \u3068 other \u306E\u307F\u3092\u4F7F\u7528\u3057\u307E\u3059\u304C\u3001\u4ED6\u306E\u8A00\u8A9E\u3067\u306F\u6700\u9069\u306A\u8907\u6570\u5F62\u3092\u4F7F\u7528\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u3059\u3002few \u3068 many \u306E\u4F7F\u7528\u3092\u5206\u3051\u308B\u7279\u5B9A\u306E\u95BE\u5024\u306F\u3001\u975E\u5E38\u306B\u6587\u5316\u7684\u306A\u3082\u306E\u3067\u3059\u3002", + "icu-crash-course.paragraph.plurals-5": "\u307E\u305F\u3001=N \u3092\u4F7F\u7528\u3057\u3066\u6B63\u78BA\u306A\u5024\u306E\u7FFB\u8A33\u3092\u660E\u793A\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u3059\u3002\u3053\u306E\u65B9\u6CD5\u3067\u6570\u5B57\u3092\u6307\u5B9A\u3059\u308B\u3068\u3001\u305D\u306E\u8A00\u8A9E\u306E\u30C7\u30D5\u30A9\u30EB\u30C8\u306E\u52D5\u4F5C\u306B\u512A\u5148\u3057\u307E\u3059\u3002
\u4F8B\u3048\u3070\u3001\u82F1\u8A9E\u3067\u306F\u4E00\u822C\u7684\u306A\u8907\u6570\u5F62\u3092\u4F7F\u7528\u3059\u308B\u4EE3\u308F\u308A\u306B =2 \u3084 =12 \u3092\u4F7F\u7528\u3057\u3066\u3001\u660E\u793A\u7684\u306B a couple(1\u7D44) \u3084 a dozen(1\u30C0\u30FC\u30B9) \u306E\u3088\u3046\u306A\u7570\u306A\u308B\u7FFB\u8A33\u3092\u6307\u5B9A\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u3059\u3002", + "icu-crash-course.paragraph.plurals-6": "\u6700\u5F8C\u306B\u3001\u8907\u6570\u5F62\u306F\u30CF\u30C3\u30B7\u30E5\u30BF\u30B0\u3092\u4F7F\u3063\u3066\u8907\u6570\u5F62\u306B\u4F7F\u7528\u3055\u308C\u3066\u3044\u308B\u5024\u3092\u6570\u5024\u3068\u3057\u3066\u51FA\u529B\u3059\u308B\u3053\u3068\u3082\u3067\u304D\u307E\u3059\u3002\u30AA\u30D7\u30B7\u30E7\u30F3\u3068\u3057\u3066\u3001\u30D8\u30EB\u30D1\u30FC\u306F\u30CF\u30C3\u30B7\u30E5\u30BF\u30B0\u3067\u5024\u306B\u6E1B\u7B97\u3055\u308C\u308B\u30AA\u30D5\u30BB\u30C3\u30C8\u53D7\u3051\u53D6\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u3059\u3002", + "icu-crash-course.list-items.one": "(singular \u5358\u6570\u5F62)", + "icu-crash-course.list-items.two": "(dual \u6B63\u78BA\u306B2\u3064\u3092\u793A\u3059)", + "icu-crash-course.list-items.few": "(paucal \u4E0D\u6B63\u78BA\u3060\u304C\u5C11\u6570\u3092\u793A\u3059)", + "icu-crash-course.list-items.many": "(\u5206\u6570\u306B\u3082\u4F7F\u7528\u3055\u308C\u308B)", + "icu-crash-course.list-items.other": "(\u4E00\u822C\u7684\u306A\u8907\u6570\u5F62\u306E\u5F62\u5F0F\u3002\u8907\u6570\u5F62\u304C1\u7A2E\u985E\u3057\u304B\u306A\u3044\u8A00\u8A9E\u3067\u4F7F\u7528\u3055\u308C\u307E\u3059)", + "icu-crash-course.table-cells.plurals-simple": (numCats) => `Your have ${__plural(numCats, { + o: "one cat", + h: `${numCats} cats` + })}`, + "icu-crash-course.table-cells.plurals-complex": (numCats) => `Your have ${__plural(numCats, { + 0: "no cats at all", + o: "one single cat", + 2: "a couple cats", + 3: "a trio of cats", + 12: "a dozen cats", + h: `exactly ${numCats} cats` + })}`, + "icu-crash-course.table-cells.plurals-offset": (guest, guestCount) => __offsetPlural(guestCount, 1, { + 0: "Mary does not give a party.", + 1: `Mary invites ${__interpolate(guest)} to her party.`, + 2: `Mary invites ${__interpolate(guest)} and one other person to her party.`, + h: `Mary invites ${__interpolate(guest)} and ${guestCount - 1} other people to her party.` + }), + "icu-crash-course.subsection.select": "\u9078\u629E", + "icu-crash-course.paragraph.select-1": "\u9078\u629E \u30D8\u30EB\u30D1\u30FC\u306F\u5F15\u6570\u306B\u57FA\u3065\u3044\u3066\u8907\u6570\u306E\u5019\u88DC\u306E\u4E2D\u304B\u3089\u7FFB\u8A33\u6587\u3092\u9078\u629E\u3059\u308B\u305F\u3081\u306B\u4F7F\u7528\u3055\u308C\u307E\u3059\u3002
\u8272\u3005\u306A\u4F7F\u3044\u65B9\u304C\u3042\u308A\u307E\u3059\u304C\u3001\u6700\u3082\u4E00\u822C\u7684\u306A\u306E\u306F\u6027\u5225\u306B\u95A2\u3059\u308B\u7FFB\u8A33\u306B\u7528\u3044\u308B\u3053\u3068\u3067\u3059\u3002", + "icu-crash-course.table-cells.select": (childGender) => `Your ${__select(childGender, { + male: "son", + female: "daughter", + other: "child" + })} has won an award`, + "icu-crash-course.table-cells.select-value-male": "Male", + "icu-crash-course.table-cells.select-value-female": "Female", + "icu-crash-course.table-cells.select-value-unknown": "Unknown", + "icu-crash-course.subsection.date": "\u65E5\u4ED8", + "icu-crash-course.paragraph.date-1": "\u3053\u306E\u30D8\u30EB\u30D1\u30FC\u306F\u3001\u65E5\u4ED8\u3092\u3001\u73FE\u5728\u306E\u30ED\u30B1\u30FC\u30EB\u306B\u5408\u308F\u305B\u305F\u30C7\u30D5\u30A9\u30EB\u30C8\u306E\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u304B\u3001\u307E\u305F\u306F\u30A2\u30D7\u30EA\u306E\u8A2D\u5B9A\u3067\u8FFD\u52A0\u3057\u305F\u30AB\u30B9\u30BF\u30E0\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u306B\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u3057\u307E\u3059\u3002
\u30C7\u30D5\u30A9\u30EB\u30C8\u306E\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u306F\u4EE5\u4E0B\u306E\u901A\u308A\u3067\u3059:", + "icu-crash-course.list-items.short": ": \u6700\u3082\u30B3\u30F3\u30D1\u30AF\u30C8\u306A\u65E5\u4ED8\u5F62\u5F0F", + "icu-crash-course.list-items.medium": ": \u7C21\u7565\u5316\u3055\u308C\u305F\u30C6\u30AD\u30B9\u30C8\u5F62\u5F0F", + "icu-crash-course.list-items.long": ": \u9577\u3044\u30C6\u30AD\u30B9\u30C8\u5F62\u5F0F", + "icu-crash-course.list-items.full": ": \u6700\u3082\u8A73\u7D30\u3067\u5B8C\u5168\u306A\u65E5\u4ED8", + "icu-crash-course.table-cells.date": (holidayStart) => `Your next holidays start on ${__date(holidayStart, "full")}`, + "icu-crash-course.subsection.time": "\u6642\u9593", + "icu-crash-course.paragraph.time": "\u65E5\u4ED8\u30D8\u30EB\u30D1\u30FC\u3068\u307B\u3068\u3093\u3069\u540C\u3058\u3067\u3059\u304C\u3001\u3053\u308C\u306F\u65E5\u4ED8\u306E\u6642\u9593\u90E8\u5206\u306E\u307F\u3092\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u3059\u308B\u305F\u3081\u306E\u3082\u306E\u3067\u3059\u3002", + "icu-crash-course.table-cells.time": (appointment) => `Your doctor's appointment is today at ${__time(appointment, "short")}`, + "icu-crash-course.subsection.number": "\u6570\u5024", + "icu-crash-course.paragraph.number": "\u73FE\u5728\u306E\u30ED\u30B1\u30FC\u30EB\u306E\u30EB\u30FC\u30EB\u306B\u5F93\u3063\u3066\u6570\u5B57\u3092\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u3057\u307E\u3059\u3002", + "icu-crash-course.table-cells.number": (num) => `Your account balance is ${__number(num)}`, + "icu-crash-course.table-cells.skeletonCurrency": (num) => `Your account balance is ${__number(num, { + style: "currency", + currency: "EUR" + })}`, + "icu-crash-course.table-cells.skeletonCurrencySigned": (num) => `Your account balance is ${__number(num, { + style: "currency", + currency: "EUR", + signDisplay: "always" + })}`, + "icu-crash-course.table-cells.skeletonPercentage": (num) => `Game progress ${__number(num, { + style: "percent" + })}`, + "icu-crash-course.table-cells.skeletonPercentageTwoDecimals": (num) => `Game progress ${__number(num, { + style: "percent", + minimumFractionDigits: 2, + maximumFractionDigits: 2 + })}`, + "icu-crash-course.table-cells.skeletonPercentageScaled": (num) => `Game progress ${__number(num / 100, { + style: "percent", + minimumFractionDigits: 2, + maximumFractionDigits: 2 + })}`, + "icu-crash-course.table-cells.skeletonMeasurementMeter": (num) => `Your destination is ${__number(num, { + style: "unit", + unit: "meter" + })} away`, + "icu-crash-course.table-cells.skeletonMeasurementMeterLong": (num) => `Your destination is ${__number(num, { + style: "unit", + unit: "meter", + currencyDisplay: "name", + unitDisplay: "long" + })} away`, + "icu-crash-course.table-cells.skeletonCompactShort": (num) => `Are you sure you want to bid ${__number(num, { + notation: "compact", + compactDisplay: "short" + })} over asking?`, + "icu-crash-course.table-cells.skeletonCompactLong": (num) => `Are you sure you want to bid ${__number(num, { + notation: "compact", + compactDisplay: "long" + })} over asking?`, + "icu-crash-course.table-cells.skeletonScientific": (num) => `The chances of winning the lottery are 1 in ${__number(num, { + notation: "scientific" + })}`, + "getting-started.title": "\u306F\u3058\u3081\u308B", + "getting-started.subsection.installation": "\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB", + "getting-started.paragraph.installation-1": "Svelte Kit \u30A2\u30D7\u30EA\u306B\u4F9D\u5B58\u30D1\u30C3\u30B1\u30FC\u30B8\u3068\u3057\u3066 svelte-intl-precompile \u3092\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u3057\u307E\u3059\u3002", + "getting-started.subsection.create-translations": "\u7FFB\u8A33\u3092\u4F5C\u6210\u3059\u308B", + "getting-started.paragraph.create-translations-1": (dir1, dir2, or) => `\u6B21\u306B\u3001\u7FFB\u8A33\u30D5\u30A1\u30A4\u30EB\u3092\u683C\u7D0D\u3059\u308B\u30D5\u30A9\u30EB\u30C0\u3092\u4F5C\u6210\u3057\u307E\u3059\u3002 ${__interpolate(dir1)} ${__interpolate(or)} ${__interpolate(dir2)} \u3068\u3044\u3063\u305F\u540D\u524D\u306E\u30D5\u30A9\u30EB\u30C0\u3092\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u30EB\u30FC\u30C8\u306B\u7F6E\u304F\u3068\u826F\u3044\u3067\u3057\u3087\u3046`, + "getting-started.paragraph.create-translations-2": "\u3082\u3061\u308D\u3093\u3001\u4ED6\u306E\u30D5\u30A9\u30EB\u30C0\u3067\u3082\u307E\u3063\u305F\u304F\u554F\u984C\u3042\u308A\u307E\u305B\u3093\u3002", + "getting-started.paragraph.create-translations-3": "JSON\u5F62\u5F0F\u306E\u30D5\u30A1\u30A4\u30EB\u3092\u63A8\u5968\u3057\u307E\u3059\u304C\u3001\u30C7\u30D5\u30A9\u30EB\u30C8\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u3092\u6301\u3064JavaScript\u30D5\u30A1\u30A4\u30EB\u3092\u4F7F\u3046\u3053\u3068\u3082\u3067\u304D\u307E\u3059\u3002\u30D5\u30A1\u30A4\u30EB\u5F62\u5F0F\u304C\u3069\u3061\u3089\u306E\u5834\u5408\u3067\u3082\u3001\u305D\u308C\u3089\u306B\u542B\u307E\u308C\u308B\u7FFB\u8A33\u306FICU\u30E1\u30C3\u30BB\u30FC\u30B8\u6587\u6CD5\u306E\u901A\u5E38\u306E\u6587\u5B57\u5217\u3068\u306A\u308A\u307E\u3059\u3002", + "getting-started.paragraph.create-translations-4": "\u4F5C\u8005\u306F\u4E0A\u8A18\u306E\u3088\u3046\u306A\u30D5\u30E9\u30C3\u30C8\u306A\u8F9E\u66F8\u69CB\u9020\u304C\u597D\u307F\u3067\u3059\u304C\u3001\u8907\u6570\u306E\u968E\u5C64\u3092\u542B\u3080\u8F9E\u66F8\u69CB\u9020\u3092\u4F7F\u3063\u3066\u7FFB\u8A33\u30D5\u30A1\u30A4\u30EB\u3092\u5B9A\u7FA9\u3057\u3066\u3082\u69CB\u3044\u307E\u305B\u3093:", + "getting-started.paragraph.create-translations-5": "JSON \u306F\u5236\u7D04\u304C\u591A\u3059\u304E\u308B!\u3082\u3063\u3068\u67D4\u8EDF\u6027\u304C\u307B\u3057\u3044!", + "getting-started.paragraph.create-translations-6": "json \u30D5\u30A1\u30A4\u30EB\u3067\u306F JSON 5 \u306E\u6A5F\u80FD\u3092\u4F7F\u7528\u3059\u308B\u3053\u3068\u3082\u3067\u304D\u307E\u3059\u3002\u3064\u307E\u308A\u3001\u30B3\u30E1\u30F3\u30C8\u3001\u8907\u6570\u884C\u306E\u6587\u5B57\u5217\u3001\u30B7\u30F3\u30B0\u30EB\u30AF\u30A9\u30FC\u30C8\u3001\u672B\u5C3E\u306E\u30AB\u30F3\u30DE...
\u3059\u3050\u306B\u304A\u4F7F\u3044\u3044\u305F\u3060\u3051\u307E\u3059\u3002", + "getting-started.paragraph.create-translations-7": "\u4E2D\u62EC\u5F27\u304C\u597D\u304D\u3058\u3083\u306A\u3044", + "getting-started.paragraph.create-translations-8": "\u6C17\u6301\u3061\u306F\u308F\u304B\u308A\u307E\u3059\u3002\u3082\u3057\u5927\u91CF\u306E\u7A7A\u767D\u304C\u304A\u597D\u307F\u3067\u3057\u305F\u3089\u3001YAML \u30D5\u30A1\u30A4\u30EB\u3092\u4F7F\u3046\u3053\u3068\u3082\u3067\u304D\u307E\u3059\u3002.yaml \u3084 .yml \u3068\u3044\u3046\u62E1\u5F35\u5B50\u3092\u4F7F\u7528\u3059\u308C\u3070\u3088\u3044\u306E\u3067\u3059\u3002\u305D\u306E\u3088\u3046\u306A\u3053\u3068\u3092\u3057\u305F\u3044\u306E\u3067\u3042\u308C\u3070\u3002", + "getting-started.paragraph.create-translations-9": "\u3082\u3063\u3068\u591A\u304F\u306E\u6A5F\u80FD\u304C\u6B32\u3057\u3044", + "getting-started.paragraph.create-translations-10": ".js \u30D5\u30A1\u30A4\u30EB\u3001.ts \u30D5\u30A1\u30A4\u30EB\u3001.mjs \u30D5\u30A1\u30A4\u30EB\u306B\u7FFB\u8A33\u6587\u3092\u5B9A\u7FA9\u3059\u308B\u3053\u3068\u3082\u3067\u304D\u307E\u3059\u3002\u7FFB\u8A33\u6587\u3092\u542B\u3080\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3092 default export \u3067\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002", + "getting-started.subsection.hook-into-sveltekit": "\u30B3\u30F3\u30D1\u30A4\u30E9\u3092 SvelteKit \u306B\u30D5\u30C3\u30AF\u3059\u308B", + "getting-started.paragraph.hook-into-sveltekit-1": (path) => `\u3053\u306E\u30E9\u30A4\u30D6\u30E9\u30EA\u306E\u30B3\u30F3\u30D1\u30A4\u30E9\u306F\u30D3\u30EB\u30C9\u6642\u306B\u52D5\u4F5C\u3059\u308B\u305F\u3081\u3001\u958B\u767A\u4E2D\u306E\u30A2\u30D7\u30EA\u306E\u30D3\u30EB\u30C9\u30D1\u30A4\u30D7\u30E9\u30A4\u30F3\u306B\u30D5\u30C3\u30AF\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002${__interpolate(path)}\u306E vite \u30D7\u30E9\u30B0\u30A4\u30F3\u306E\u30EA\u30B9\u30C8\u306B\u8FFD\u52A0\u3057\u3066\u304F\u3060\u3055\u3044:`, + "getting-started.paragraph.hook-into-sveltekit-2": "\u6E96\u5099\u306F\u5B8C\u4E86\u3067\u3059\u3002\u30E9\u30A4\u30D6\u30E9\u30EA\u3092\u4F7F\u3063\u3066\u307F\u307E\u3057\u3087\u3046\u3002", + "getting-started.subsection.hook-into-vite": "Vite.js \u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306B\u30B3\u30F3\u30D1\u30A4\u30E9\u3092\u30D5\u30C3\u30AF\u3059\u308B", + "getting-started.paragraph.hook-into-vite-1": (path) => `SvelteKit \u3092\u4F7F\u308F\u305A\u306B Vite.js \u3092\u76F4\u63A5\u4F7F\u7528\u3057\u3066\u3044\u308B\u5834\u5408\u3082\u3001\u8A2D\u5B9A\u306F\u307B\u3068\u3093\u3069\u540C\u69D8\u3067\u3059\u3002 SvelteKit \u304C\u821E\u53F0\u88CF\u3067\u306F Vite.js \u3092\u4F7F\u7528\u3057\u3066\u308B\u305F\u3081\u3067\u3059\u3002\u30B3\u30F3\u30D1\u30A4\u30E9\u3092\u30A4\u30F3\u30DD\u30FC\u30C8\u3057\u3066\u3001${__interpolate(path)}\u306E\u30D7\u30E9\u30B0\u30A4\u30F3\u306E\u30EA\u30B9\u30C8\u306B\u6E21\u3057\u3066\u304F\u3060\u3055\u3044:`, + "configuration.title": "\u8A2D\u5B9A", + "configuration.subsection.example": "\u8A2D\u5B9A\u4F8B", + "configuration.link.example": "\u8A2D\u5B9A\u4F8B", + "configuration.paragraph.example-1": "\u30E9\u30A4\u30D6\u30E9\u30EA\u3092\u521D\u671F\u5316\u3059\u308B\u6700\u5C0F\u69CB\u6210\u306E\u8A2D\u5B9A\u4F8B\u306F\u6B21\u306E\u3088\u3046\u306B\u306A\u308A\u307E\u3059\u3002", + "configuration.paragraph.example-2": "\u306B\u6B21\u306E\u3088\u3046\u306B\u66F8\u3044\u3066\u304F\u3060\u3055\u3044:", + "configuration.paragraph.example-3": "\u3053\u308C\u3060\u3051\u3067\u3082\u4F7F\u3044\u306F\u3058\u3081\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u3059\u304C\u3001\u3082\u3046\u5C11\u3057\u6DF1\u5800\u308A\u3057\u3066\u307F\u307E\u3057\u3087\u3046\u3002", + "configuration.subsection.static-locales": "\u30ED\u30B1\u30FC\u30EB\u306E\u9759\u7684\u30ED\u30FC\u30C9", + "configuration.paragraph.static-locales-1": "\u524D\u8A18\u306E\u4F8B\u3067\u898B\u305F\u3088\u3046\u306B\u3001\u30ED\u30B1\u30FC\u30EB\u3092\u8FFD\u52A0\u3059\u308B\u6700\u3082\u7C21\u5358\u306A\u65B9\u6CD5\u306F\u3001\u305D\u308C\u3089\u3092\u5358\u306B\u30E2\u30B8\u30E5\u30FC\u30EB\u3068\u3057\u3066\u30A4\u30F3\u30DD\u30FC\u30C8\u3057\u3001\u6B21\u306E\u95A2\u6570\u3092\u4F7F\u3063\u3066\u767B\u9332\u3059\u308B\u3053\u3068\u3067\u3059:", + "configuration.paragraph.static-locales-2": "\u7FFB\u8A33\u3092JSON\u30D5\u30A1\u30A4\u30EB\u3068\u3057\u3066\u5B9A\u7FA9\u3057\u305F\u306B\u3082\u95A2\u308F\u3089\u305A\u3001\u3053\u3053\u3067\u306F\u305D\u308C\u3089\u3092 JavaScript \u306E\u30E2\u30B8\u30E5\u30FC\u30EB\u3068\u3057\u3066\u30A4\u30F3\u30DD\u30FC\u30C8\u3057\u3066\u3044\u308B\u3053\u3068\u306B\u6CE8\u610F\u3057\u3066\u304F\u3060\u3055\u3044:", + "configuration.paragraph.static-locales-3": "\u3053\u308C\u306F\u3001\u30D3\u30EB\u30C9\u6642\u306B\u30B3\u30F3\u30D1\u30A4\u30E9\u304C\u7FFB\u8A33\u3092\u30A4\u30F3\u30E9\u30A4\u30F3\u95A2\u6570\u3092\u542B\u3080\u30E2\u30B8\u30E5\u30FC\u30EB\u3068\u3057\u3066\u30B3\u30F3\u30D1\u30A4\u30EB\u3057\u3066\u3044\u308B\u305F\u3081\u3067\u3059\u3002", + "configuration.paragraph.static-locales-4": "\u3053\u306E\u65B9\u6CD5\u3067\u306F\u3001\u3082\u3057\u4E00\u3064\u306E\u8A00\u8A9E\u3057\u304B\u8868\u793A\u3055\u308C\u306A\u3044\u5834\u5408\u3067\u3082\u3001\u3059\u3079\u3066\u306E\u8A00\u8A9E\u304C\u30ED\u30FC\u30C9\u3055\u308C\u307E\u3059\u3002\u65B0\u3057\u3044\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3092\u59CB\u3081\u308B\u3068\u304D\u3084\u3054\u304F\u5C11\u6570\u306E\u7FFB\u8A33\u3057\u304B\u5FC5\u8981\u306A\u3044\u5834\u5408\u306B\u306F\u5927\u62B5\u306F\u3053\u308C\u3067\u5341\u5206\u3067\u3059\u304C\u3001\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u306E\u898F\u6A21\u304C\u5927\u304D\u304F\u306A\u308C\u3070\u3001\u5FC5\u8981\u306B\u5FDC\u3058\u3066\u7FFB\u8A33\u3092\u8AAD\u307F\u8FBC\u3080\u3053\u3068\u3092\u691C\u8A0E\u3059\u3079\u304D\u3067\u3057\u3087\u3046\u3002", + "configuration.subsection.dynamic-locales": "\u30ED\u30B1\u30FC\u30EB\u306E\u52D5\u7684\u30ED\u30FC\u30C9", + "configuration.paragraph.dynamic-locales-1": "\u304B\u306A\u308A\u306E\u91CF\u306E\u7FFB\u8A33\u30AD\u30FC\u3084\u305F\u304F\u3055\u3093\u306E\u30ED\u30B1\u30FC\u30EB\u304C\u3042\u308B\u5834\u5408\u3001\u5B9F\u969B\u306B\u306F\u8868\u793A\u3057\u306A\u3044\u3059\u3079\u3066\u306E\u8A00\u8A9E\u3092\u3042\u3089\u3086\u308B\u30E6\u30FC\u30B6\u306B\u30ED\u30FC\u30C9\u3055\u305B\u308B\u3053\u3068\u306F\u5927\u5909\u306A\u7121\u99C4\u3068\u3044\u3048\u307E\u3059\u3002\u3053\u306E\u30E9\u30A4\u30D6\u30E9\u30EA\u3067\u306F", + "configuration.paragraph.dynamic-locales-2": "\u95A2\u6570\u3092\u4F7F\u3063\u3066\u30E6\u30FC\u30B6\u304C\u9078\u629E\u3057\u305F\u8A00\u8A9E\u3092\u52D5\u7684\u306B\u30ED\u30FC\u30C9\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u3001", + "configuration.paragraph.dynamic-locales-3": "\u95A2\u6570\u3067\u305D\u308C\u3089\u306E\u30ED\u30B1\u30FC\u30EB\u304C\u30ED\u30FC\u30C9\u3055\u308C\u308B\u307E\u3067\u5F85\u3064\u3053\u3068\u304C\u3067\u304D\u307E\u3059\u3002", + "configuration.paragraph.dynamic-locales-4": "\u3059\u3079\u3066\u306E\u30ED\u30B1\u30FC\u30EB\u304C\u52D5\u7684\u306B\u30ED\u30FC\u30C9\u3055\u308C\u308B\u306E\u3067\u3042\u308C\u3070\u3001\u30C7\u30D5\u30A9\u30EB\u30C8\u306E\u30ED\u30B1\u30FC\u30EB\u304C\u30ED\u30FC\u30C9\u3055\u308C\u308B\u307E\u3067\u306F\u30EC\u30F3\u30C0\u30EA\u30F3\u30B0\u3092\u5F85\u305F\u305B\u305F\u3044\u306F\u305A\u3067\u3059\u3002\u3053\u306E\u95A2\u6570\u3092 Svelte \u306E", + "configuration.paragraph.dynamic-locales-5": "\u95A2\u6570\u306E\u4E2D\u3067\u547C\u3073\u51FA\u3059\u3053\u3068\u306B\u3088\u308A\u3001\u307E\u3055\u306B\u305D\u308C\u304C\u5B9F\u73FE\u3067\u304D\u307E\u3059\u3002", + "configuration.subsection.dynamic-locales-shorthand": "\u30ED\u30B1\u30FC\u30EB\u306E\u52D5\u7684\u30ED\u30FC\u30C9\uFF08\u305F\u3060\u3057\u3001\u4ECA\u56DE\u306F\u77ED\u304F\uFF09", + "configuration.paragraph.dynamic-locales-shorthand-1": "\u3082\u3057\u5358\u306B\u3059\u3079\u3066\u306E\u30ED\u30B1\u30FC\u30EB\uFF08\u305D\u306E\u8A00\u8A9E\u306B\u5BFE\u3057\u3066\u306E\u7FFB\u8A33\u3092\u542B\u3080JSON\u30D5\u30A1\u30A4\u30EB\u304C\u3042\u308B\u3059\u3079\u3066\u306E\u30ED\u30B1\u30FC\u30EB\uFF09\u3092\u767B\u9332\u3057\u305F\u3044\u306E\u3067\u3042\u308C\u3070\u3001\u4FBF\u5229\u306A\u7701\u7565\u8A18\u6CD5\u304C\u3042\u308A\u307E\u3059\u3002", + "configuration.paragraph.dynamic-locales-shorthand-2": "\u30D5\u30A9\u30EB\u30C0\u306F\u3055\u3089\u306B\u8E0F\u307F\u8FBC\u3093\u3060\u6A5F\u80FD\u3092\u6301\u3064\u30E2\u30B8\u30E5\u30FC\u30EB\u3068\u306A\u3063\u3066\u3044\u3066\u30012\u3064\u306E\u30E6\u30FC\u30EA\u30C6\u30A3\u30C6\u30A3\u95A2\u6570\u3092\u63D0\u4F9B\u3057\u307E\u3059:", + "configuration.paragraph.dynamic-locales-shorthand-3": "1\u3064\u76EE\u306F\u3001\u3059\u3079\u3066\u306E\u30ED\u30B1\u30FC\u30EB\u306B\u5BFE\u3057\u3066", + "configuration.paragraph.dynamic-locales-shorthand-4": "\u3092\u547C\u3073\u51FA\u3059\u306E\u3068\u540C\u69D8\u306E\u50CD\u304D\u3092\u3057\u307E\u3059\u3002
2\u3064\u76EE\u306F\u3001\u5229\u7528\u53EF\u80FD\u306A\u5168\u3066\u306E\u30ED\u30B1\u30FC\u30EB\u3092\u542B\u3080\u914D\u5217\uFF08\u767B\u9332\u6E08\u307F\u304B\u3069\u3046\u304B\u306B\u95A2\u308F\u3089\u305A\uFF09\u3067\u3001\u5FC5\u8981\u306B\u5FDC\u3058\u3066\u69D8\u3005\u306A\u76EE\u7684\u306B\u4F7F\u3046\u3053\u3068\u304C\u3067\u304D\u307E\u3059\u3002", + "configuration.subsection.init": "\u30C7\u30D5\u30A9\u30EB\u30C8\u30ED\u30B1\u30FC\u30EB\u3068\u30D5\u30A9\u30FC\u30EB\u30D0\u30C3\u30AF\u30ED\u30B1\u30FC\u30EB", + "configuration.paragraph.init-1": "\u95A2\u6570", + "configuration.paragraph.init-2": "\u306E\u547C\u3073\u51FA\u3057\u306B\u304A\u3051\u308B\u6700\u3082\u91CD\u8981\u306A\u30AA\u30D7\u30B7\u30E7\u30F3\u306F", + "configuration.paragraph.init-3": "\u3067\u3059\u30021\u3064\u76EE\u306F\u30A2\u30D7\u30EA\u304C\u6700\u521D\u306B\u8868\u793A\u3055\u308C\u308B\u3068\u304D\u306B\u4F7F\u3046\u30ED\u30B1\u30FC\u30EB\u3092\u6C7A\u5B9A\u3057\u3001\u3082\u30461\u3064\u306F\u305D\u306E\u3068\u304D\u9078\u629E\u3055\u308C\u3066\u3044\u308B\u30ED\u30B1\u30FC\u30EB\u306B\u6B20\u3051\u3066\u3044\u308B\u7FFB\u8A33\u304C\u3042\u3063\u305F\u5834\u5408\u306B\u53C2\u7167\u3055\u308C\u307E\u3059\u3002", + "configuration.paragraph.init-4": "\u6700\u9069\u306A\u30E6\u30FC\u30B6\u4F53\u9A13\u3092\u5B9F\u73FE\u3059\u308B\u65B9\u6CD5\u306F\u3001\u30ED\u30B0\u30A4\u30F3\u30E6\u30FC\u30B6\u306B\u5BFE\u3057\u3066\u306F", + "configuration.paragraph.init-5": '\u3092\u30E6\u30FC\u30B6\u306E\u8A00\u8A9E\u8A2D\u5B9A\u306B\u5408\u308F\u305B\u305F\u308A\u3001\u518D\u8A2A\u554F\u30E6\u30FC\u30B6\u306E\u5834\u5408\u3067\u3042\u308C\u3070\u30AF\u30C3\u30AD\u30FC\u304B\u3089\u8A00\u8A9E\u8A2D\u5B9A\u3092\u8AAD\u307F\u51FA\u3059\u3088\u3046\u306B\u3057\u305F\u308A\u3001\u307E\u305F\u306FSSR\u306E\u6642\u70B9\u3067HTTP\u30EA\u30AF\u30A8\u30B9\u30C8\u4E2D\u306E Accept-Language \u30D8\u30C3\u30C0\u3092\u5143\u306B\u9078\u629E\u3057\u305F\u308A\u306A\u3069\u3001\u69D8\u3005\u306A\u65B9\u6CD5\u304C\u8003\u3048\u3089\u308C\u307E\u3059\u304C\u3001\u6700\u3082\u5358\u7D14\u660E\u5FEB\u306A\u65B9\u6CD5\u306F\u3001\u30E6\u30FC\u30C6\u30A3\u30EA\u30C6\u30A3\u95A2\u6570\u3092\u4F7F\u3063\u3066\u30D6\u30E9\u30A6\u30B6\u3084URL\u304B\u3089\u691C\u51FA\u3059\u308B\u3053\u3068\u3067\u3059\u3002', + "configuration.subsection.find-locale": "\u6700\u9069\u306A\u30ED\u30B1\u30FC\u30EB\u3092\u898B\u3064\u3051\u308B", + "configuration.paragraph.find-locale-1": "", + "configuration.paragraph.find-locale-2": "\u95A2\u6570\u306B\u6E21\u3059\u3079\u304D\u6700\u9069\u306A\u30ED\u30B1\u30FC\u30EB\u3092\u9078\u629E\u3059\u308B\u6709\u52B9\u306A\u65B9\u6CD5\u306F\u69D8\u3005\u3042\u308A\u307E\u3059\u3002\u3053\u306E\u30E9\u30A4\u30D6\u30E9\u30EA\u306F\u7279\u306B\u4E00\u822C\u7684\u306A\u65B9\u6CD5\u3092\u5B9F\u88C5\u3057\u305F\u30D8\u30EB\u30D1\u30FC\u95A2\u6570\u3092\u63D0\u4F9B\u3057\u3066\u3044\u307E\u3059\u3002", + "configuration.definitions.navigator": "\u30D6\u30E9\u30A6\u30B6\u306E\u30ED\u30B1\u30FC\u30EB\u8A2D\u5B9A\u3092\u53D6\u5F97\u3057\u307E\u3059\u3002\u7D50\u679C\u7684\u306B\u3001\u30AA\u30DA\u30EC\u30FC\u30C6\u30A3\u30F3\u30B0\u30B7\u30B9\u30C6\u30E0\u306E\u30ED\u30B1\u30FC\u30EB\u8A2D\u5B9A\u3092\u53D6\u5F97\u3059\u308B\u3053\u3068\u306B\u306A\u308A\u307E\u3059\u3002", + "configuration.definitions.query": 'URL\u306E\u30AF\u30A8\u30EA\u6587\u5B57\u5217\u306E\u30AD\u30FC\u3092\u6307\u5B9A\u3057\u3066\u3001\u30ED\u30B1\u30FC\u30EB\u3092\u53D6\u5F97\u3057\u307E\u3059\u3002
\u4F8B\u3048\u3070\u3001
/users?sort=name&dir=asc&lang=es
\u306A\u3089
getLocaleFromQueryString("lang")
\u3092\u6307\u5B9A\u3057\u307E\u3059\u3002', + "configuration.definitions.hash": '
getLocaleFromQueryString
\u3068\u540C\u69D8\u306E\u3053\u3068\u3092\u3001URL\u30CF\u30C3\u30B7\u30E5\u30D5\u30E9\u30B0\u30E1\u30F3\u30C8\u306B\u5BFE\u3057\u3066\u884C\u3044\u307E\u3059\u3002
\u4F8B\u3048\u3070\u3001
/users#sort=name&dir=asc&lang=es
\u306A\u3089
getLocaleFromHash("lang")
\u3092\u6307\u5B9A\u3057\u307E\u3059\u3002', + "configuration.definitions.path": 'URL\u306E\u30D1\u30B9\u304B\u3089\u30ED\u30B1\u30FC\u30EB\u3092\u53D6\u5F97\u3057\u307E\u3059\u3002
\u4F8B\u3048\u3070\u3001
myapp.com/en-US/users
\u306A\u3089\u3001
getLocaleFromPathname(/^/((es|en)(-\\w\\w)?)/)
\u3068\u3057\u307E\u3059\u3002', + "configuration.definitions.host": '\u30DB\u30B9\u30C8\u540D\u304B\u3089\u30ED\u30B1\u30FC\u30EB\u3092\u53D6\u5F97\u3057\u307E\u3059\u3002
\u4F8B\u3048\u3070\u3001
https://pt.myapp.com
\u306A\u3089
getLocaleFromHostname(/^((es|en)(-\\w\\w)?)\\./)
\u3068\u3057\u307E\u3059\u3002', + "configuration.subsection.custom-formats": "\u30AB\u30B9\u30BF\u30E0\u5F62\u5F0F", + "configuration.paragraph.custom-formats-1": "\u3053\u306E\u30E9\u30A4\u30D6\u30E9\u30EA\u306F\u3001\u6570\u5024\u30FB\u65E5\u4ED8\u30FB\u6642\u9593\u3092\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u3059\u308B\u3053\u3068\u3082\u3067\u304D\u307E\u3059\u3002\u30E2\u30C0\u30F3\u30D6\u30E9\u30A6\u30B6\u3084 Node.js \u306B\u65E2\u306B\u5B58\u5728\u3059\u308B Intl API \u3092\u6D3B\u7528\u3059\u308B\u3053\u3068\u3067\u3001\u30A2\u30D7\u30EA\u3092\u80A5\u5927\u5316\u3055\u305B\u308B\u3053\u3068\u306A\u304F\u5B9F\u73FE\u3057\u3066\u3044\u307E\u3059\u3002
\u30C7\u30D5\u30A9\u30EB\u30C8\u3067\u306F\u4EE5\u4E0B\u306E\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u304C\u4F7F\u3048\u307E\u3059\u304C\u3001\u5FC5\u8981\u306B\u5FDC\u3058\u3066\u8FFD\u52A0\u3059\u308B\u3053\u3068\u3082\u3067\u304D\u307E\u3059\u3002", + "configuration.paragraph.custom-formats-2": "\u3082\u3057\u30AB\u30B9\u30BF\u30E0\u306E\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u3092\u5B9A\u7FA9\u3059\u308B\u5FC5\u8981\u304C\u3042\u308C\u3070\u3001", + "configuration.paragraph.custom-formats-3": '\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u4F7F\u3063\u3066\u521D\u671F\u5316\u6642\u306B\u30E9\u30A4\u30D6\u30E9\u30EA\u306B\u6E21\u305B\u3070\u3001\u524D\u8FF0\u306E\u30C7\u30D5\u30A9\u30EB\u30C8\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u306B\u30C7\u30A3\u30FC\u30D7\u30DE\u30FC\u30B8\u3055\u308C\u307E\u3059\u3002\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u306F\u3001 Intl.DateTimeFormat \u306E\u30AA\u30D7\u30B7\u30E7\u30F3\u3068\u3057\u3066\u6709\u52B9\u306A\u5024\u3067\u306A\u304F\u3066\u306F\u306A\u308A\u307E\u305B\u3093\u3002\u8A73\u7D30:', + "usage.title": "\u4F7F\u3044\u65B9", + "usage.paragraph.preface-1": "\u3053\u306E\u30E9\u30A4\u30D6\u30E9\u30EA\u306EAPI\u306F\u591A\u304F\u306E\u90E8\u5206\u3092\u5148\u884C\u3059\u308B", + "usage.paragraph.preface-2": "\u3092\u53C2\u8003\u306B\u3057\u3066\u304A\u308A\u3001\u30E6\u30FC\u30C6\u30A3\u30EA\u30C6\u30A3\u95A2\u6570\u306E\u30A4\u30F3\u30DD\u30FC\u30C8\u5148\u3092\u5909\u3048\u308B\u3060\u3051\u3067\u3001\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u306E\u30B3\u30FC\u30C9\u306B\u89E6\u308C\u308B\u3053\u3068\u306A\u304F svelte-i18 \u3068 svelte-intl-precompile \u3068\u3092\u5207\u308A\u66FF\u3048\u3089\u308C\u308B\u307B\u3069\u306B\u306A\u3063\u3066\u3044\u307E\u3059\u3002", + "usage.paragraph.preface-3": "\u30B9\u30C8\u30A2\u6307\u5411\u306EAPI\u306F\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u5185\u3067\u7279\u306B\u4F7F\u3044\u3084\u3059\u3044\u3053\u3068\u306B\u52A0\u3048\u3001\u30E6\u30FC\u30B6\u304C\u5225\u306E\u30ED\u30B1\u30FC\u30EB\u3092\u6D17\u6FEF\u3057\u305F\u308A\u7FFB\u8A33\u304C\u30ED\u30FC\u30C9\u3055\u308C\u305F\u3089\u81EA\u52D5\u7684\u306B\u66F4\u65B0\u3055\u308C\u3001\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u5168\u4F53\u304C\u30EA\u30A2\u30AF\u30C6\u30A3\u30D6\u306B\u306A\u308B\u3068\u3044\u3046\u8FFD\u52A0\u306E\u5229\u70B9\u304C\u3042\u308A\u307E\u3059\u3002\u672C\u9805\u3067\u898B\u308B\u4F8B\u306F\u3001\u3044\u305A\u308C\u3082\u6B21\u306E\u3088\u3046\u306A\u7FFB\u8A33\u3092\u542B\u3080\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u306B\u8A18\u8FF0\u3059\u308B\u3053\u3068\u3092\u60F3\u5B9A\u3057\u3066\u3044\u307E\u3059\u3002", + "usage.link.basic-translations": "\u57FA\u672C\u7684\u306A\u7FFB\u8A33", + "usage.subsection.basic-translations": "\u57FA\u672C\u7684\u306A\u7FFB\u8A33:
$t(key, ops)
\u30B9\u30C8\u30A2", + "usage.paragraph.basic-translations-1": "\u6700\u3082\u983B\u7E41\u306B\u4F7F\u3046\u30B9\u30C8\u30A2\u3067\u3059\u3002\u30A4\u30F3\u30DD\u30FC\u30C8\u3057\u3066\u3001\u7FFB\u8A33\u306E\u30AD\u30FC\u3092\u6E21\u3059\u95A2\u6570\u3068\u3057\u3066\u4F7F\u3063\u3066\u304F\u3060\u3055\u3044\u3002", + "usage.subsection.passing-arguments": "\u5F15\u6570\u3092\u6E21\u3059", + "usage.paragraph.passing-arguments-1": "", + "usage.paragraph.passing-arguments-2": "\u304C\u53D7\u3051\u53D6\u308B2\u3064\u76EE\u306E\u5F15\u6570\u306F\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3067\u3059\u3002\u7FFB\u8A33\u306E\u4E2D\u3067\u4F7F\u308F\u308C\u308B\u5F15\u6570\u306F\u3059\u3079\u3066", + "usage.paragraph.passing-arguments-3": "\u3092\u901A\u3058\u3066\u6E21\u3055\u308C\u307E\u3059\u3002", + "usage.paragraph.passing-arguments-4": "\u30D1\u30E9\u30E1\u30FC\u30BF\u304C\u5358\u306B\u633F\u5165\u3055\u308C\u308B\u3060\u3051\u306E\u5834\u5408\u3067\u3082\u3001\u8907\u6570\u5F62\u3084\u9078\u629E\u30D8\u30EB\u30D1\u30FC\u306E\u5834\u5408\u3067\u3082\u3001\u6570\u5024\u30FB\u65E5\u4ED8\u30FB\u6642\u9593\u3068\u3057\u3066\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u3055\u308C\u308B\u5834\u5408\u3067\u3082\u9055\u3044\u306F\u3042\u308A\u307E\u305B\u3093\u3002\u5F15\u6570\u306F\u5168\u3066\u540C\u3058\u65B9\u6CD5\u3067\u6E21\u3055\u308C\u307E\u3059\u3002", + "usage.subsection.formatting": "\u65E5\u4ED8\u30FB\u6642\u9593\u30FB\u6570\u5024\u3092\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u3059\u308B", + "usage.paragraph.formatting-1": "\u6570\u5024\u30FB\u65E5\u4ED8\u30FB\u6642\u9593\u3092\u6E21\u3057\u3066\u6E21\u3057\u3066\u8A2D\u5B9A\u306B\u5408\u308F\u305B\u3066\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u3059\u308B\u3053\u3068\u3082\u3067\u304D\u307E\u3059\u304C\u3001 JavaScript \u306E\u30B3\u30FC\u30C9\u304B\u3089\u76F4\u63A5\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u3059\u308B\u4FBF\u5229\u306A\u30B9\u30C8\u30A2\u3082\u63D0\u4F9B\u3057\u3066\u3044\u307E\u3059\u3002", + "usage.subsection.other-stores": "\u305D\u306E\u4ED6\u306E\u30B9\u30C8\u30A2", + "usage.paragraph.other-stores-1": "\u4ED6\u306B\u3082\u3001\u8A00\u53CA\u306B\u5024\u3059\u308B3\u3064\u306E\u30B9\u30C8\u30A2\u304C\u3042\u308A\u307E\u3059:", + "usage.paragraph.other-stores-2": "\u73FE\u5728\u306E\u8A00\u8A9E\u8A2D\u5B9A\u3092\u5909\u66F4\u3059\u308B\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u3092\u4F5C\u3063\u3066\u307F\u307E\u3057\u3087\u3046\u3002", + "usage.paragraph.other-stores-3": '\u524D\u8A18\u306E\u30B3\u30FC\u30C9\u306F\u76F4\u611F\u7684\u3067\u3059\u3002\u5358\u306B $locales \u306B\u542B\u307E\u308C\u308B\u5229\u7528\u53EF\u80FD\u306A\u30ED\u30B1\u30FC\u30EB\u306E\u30EA\u30B9\u30C8\u3092\u9806\u756A\u306B\u51E6\u7406\u3057\u3066\u3001\u305D\u308C\u305E\u308C\u306B\u5BFE\u5FDC\u3059\u308B\u30DC\u30BF\u30F3\u3092\u8868\u793A\u3057\u3066\u3044\u307E\u3059\u3002\u30DC\u30BF\u30F3\u3092\u30AF\u30EA\u30C3\u30AF\u3059\u308B\u3068\u3001 $locale \u306B\u683C\u7D0D\u3055\u308C\u3066\u3044\u308B\u73FE\u5728\u306E\u8A00\u8A9E\u8A2D\u5B9A\u3092\u65B0\u3057\u3044\u5024\u306B\u66F8\u304D\u63DB\u3048\u307E\u3059\u3002
\u30DA\u30FC\u30B8\u3092\u30EA\u30ED\u30FC\u30C9\u3057\u306A\u304F\u3066\u3082\u3001\u30A2\u30D7\u30EA\u5185\u306E\u5168\u3066\u306E\u7FFB\u8A33\u304C\u66F4\u65B0\u3055\u308C\u307E\u3059\u3002', + "usage.definitions.other-stores-1": '\u73FE\u5728\u306E\u8A00\u8A9E\u8A2D\u5B9A\u3092\u8AAD\u307F\u53D6\u308A\u30FB\u66F8\u304D\u8FBC\u307F\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u3059\uFF08\u4F8B:
"es-ES"
\uFF09\u3002', + "usage.definitions.other-stores-2": '\u5229\u7528\u53EF\u80FD\u306A\u3059\u3079\u3066\u306E\u30ED\u30B1\u30FC\u30EB\u3092\u542B\u3080\u914D\u5217\u3092\u8FD4\u3057\u307E\u3059\uFF08\u4F8B:
["es-ES", "en", "pt-BR"]
\uFF09\u3002', + "usage.definitions.other-stores-3": '\u3044\u305A\u308C\u304B\u306E\u30ED\u30B1\u30FC\u30EB\u306E\u975E\u540C\u671F\u8AAD\u307F\u8FBC\u307F\u304C\u307E\u3060\u5B8C\u4E86\u3057\u3066\u3044\u306A\u3044\u5834\u5408\u306B
true
\u3092\u8FD4\u3057\u307E\u3059\u3002' +}; +export { + ja as default +}; diff --git a/.vercel/output/functions/render.func/.svelte-kit/output/server/chunks/stores.js b/.vercel/output/functions/render.func/.svelte-kit/output/server/chunks/stores.js new file mode 100644 index 0000000..ace8e89 --- /dev/null +++ b/.vercel/output/functions/render.func/.svelte-kit/output/server/chunks/stores.js @@ -0,0 +1,46 @@ +import { g as getContext } from "./index.js"; +const getStores = () => { + const stores = getContext("__svelte__"); + const readonly_stores = { + page: { + subscribe: stores.page.subscribe + }, + navigating: { + subscribe: stores.navigating.subscribe + }, + updated: stores.updated + }; + Object.defineProperties(readonly_stores, { + preloading: { + get() { + console.error("stores.preloading is deprecated; use stores.navigating instead"); + return { + subscribe: stores.navigating.subscribe + }; + }, + enumerable: false + }, + session: { + get() { + removed_session(); + return {}; + }, + enumerable: false + } + }); + return readonly_stores; +}; +const page = { + subscribe(fn) { + const store = getStores().page; + return store.subscribe(fn); + } +}; +function removed_session() { + throw new Error( + "stores.session is no longer available. See https://github.com/sveltejs/kit/discussions/5883" + ); +} +export { + page as p +}; diff --git a/.vercel/output/functions/render.func/.svelte-kit/output/server/entries/endpoints/playground/_server.ts.js b/.vercel/output/functions/render.func/.svelte-kit/output/server/entries/endpoints/playground/_server.ts.js new file mode 100644 index 0000000..66bceb8 --- /dev/null +++ b/.vercel/output/functions/render.func/.svelte-kit/output/server/entries/endpoints/playground/_server.ts.js @@ -0,0 +1,18 @@ +import { j as json } from "../../../chunks/index2.js"; +import * as babel from "@babel/core"; +import { minify } from "terser"; +import buildPlugin from "babel-plugin-precompile-intl"; +const intlPrecompiler = buildPlugin("svelte-intl-precompile"); +async function POST({ request, locals }) { + try { + const body = await request.text(); + let transformed = babel.transform("export default " + body, { plugins: [intlPrecompiler] }).code; + let { code: minified } = await minify(transformed, { mangle: { toplevel: true } }); + return json({ transformed, minified }); + } catch { + return json({ error: "Syntax error" }, { status: 422 }); + } +} +export { + POST +}; diff --git a/.vercel/output/functions/render.func/.svelte-kit/output/server/entries/fallbacks/error.svelte.js b/.vercel/output/functions/render.func/.svelte-kit/output/server/entries/fallbacks/error.svelte.js new file mode 100644 index 0000000..5e852aa --- /dev/null +++ b/.vercel/output/functions/render.func/.svelte-kit/output/server/entries/fallbacks/error.svelte.js @@ -0,0 +1,18 @@ +import { c as create_ssr_component, b as subscribe, e as escape } from "../../chunks/index.js"; +import { p as page } from "../../chunks/stores.js"; +const Error = create_ssr_component(($$result, $$props, $$bindings, slots) => { + let $page, $$unsubscribe_page; + $$unsubscribe_page = subscribe(page, (value) => $page = value); + $$unsubscribe_page(); + return `

${escape($page.status)}

+ +
${escape($page.error.message)}
+ + + +${$page.error.frame ? `
${escape($page.error.frame)}
` : ``} +${$page.error.stack ? `
${escape($page.error.stack)}
` : ``}`; +}); +export { + Error as default +}; diff --git a/.vercel/output/functions/render.func/.svelte-kit/output/server/entries/pages/_...lang_/_layout.svelte.js b/.vercel/output/functions/render.func/.svelte-kit/output/server/entries/pages/_...lang_/_layout.svelte.js new file mode 100644 index 0000000..22364cf --- /dev/null +++ b/.vercel/output/functions/render.func/.svelte-kit/output/server/entries/pages/_...lang_/_layout.svelte.js @@ -0,0 +1,35 @@ +import { c as create_ssr_component, b as subscribe, d as set_store_value, f as each, h as add_attribute } from "../../../chunks/index.js"; +import { p as page } from "../../../chunks/stores.js"; +import { locale } from "svelte-intl-precompile"; +import { e as extractLanguageFromPath, a as availableLocales } from "../../../chunks/_layout.js"; +const Layout = create_ssr_component(($$result, $$props, $$bindings, slots) => { + let lang; + let $page, $$unsubscribe_page; + let $locale, $$unsubscribe_locale; + $$unsubscribe_page = subscribe(page, (value) => $page = value); + $$unsubscribe_locale = subscribe(locale, (value) => $locale = value); + function flagFor(lang2) { + return `/flags/${lang2}.svg`; + } + lang = extractLanguageFromPath($page.url.pathname); + { + { + if ($locale !== lang) { + set_store_value(locale, $locale = lang, $locale); + } + } + } + $$unsubscribe_page(); + $$unsubscribe_locale(); + return `
+
${each(availableLocales, (locale2) => { + return ``; + })} + Docs +
+
${slots.default ? slots.default({}) : ``}
`; +}); +export { + Layout as default +}; diff --git a/.vercel/output/functions/render.func/.svelte-kit/output/server/entries/pages/_...lang_/_layout.ts.js b/.vercel/output/functions/render.func/.svelte-kit/output/server/entries/pages/_...lang_/_layout.ts.js new file mode 100644 index 0000000..0662688 --- /dev/null +++ b/.vercel/output/functions/render.func/.svelte-kit/output/server/entries/pages/_...lang_/_layout.ts.js @@ -0,0 +1,7 @@ +import { e, b, l } from "../../../chunks/_layout.js"; +import "svelte-intl-precompile"; +export { + e as extractLanguageFromPath, + b as load, + l as localeRegex +}; diff --git a/.vercel/output/functions/render.func/.svelte-kit/output/server/entries/pages/_...lang_/_page.svelte.js b/.vercel/output/functions/render.func/.svelte-kit/output/server/entries/pages/_...lang_/_page.svelte.js new file mode 100644 index 0000000..e7d910e --- /dev/null +++ b/.vercel/output/functions/render.func/.svelte-kit/output/server/entries/pages/_...lang_/_page.svelte.js @@ -0,0 +1,19 @@ +import { c as create_ssr_component, b as subscribe, e as escape } from "../../../chunks/index.js"; +import { t, locale } from "svelte-intl-precompile"; +const Page = create_ssr_component(($$result, $$props, $$bindings, slots) => { + let $t, $$unsubscribe_t; + let $locale, $$unsubscribe_locale; + $$unsubscribe_t = subscribe(t, (value) => $t = value); + $$unsubscribe_locale = subscribe(locale, (value) => $locale = value); + $$unsubscribe_t(); + $$unsubscribe_locale(); + return `${$$result.head += `${$$result.title = `${escape($t("main.title"))}`, ""}`, ""} + +
+

${escape($t("main.subtitle"))}

+
`; +}); +export { + Page as default +}; diff --git a/.vercel/output/functions/render.func/.svelte-kit/output/server/entries/pages/_...lang_/_page.ts.js b/.vercel/output/functions/render.func/.svelte-kit/output/server/entries/pages/_...lang_/_page.ts.js new file mode 100644 index 0000000..445c451 --- /dev/null +++ b/.vercel/output/functions/render.func/.svelte-kit/output/server/entries/pages/_...lang_/_page.ts.js @@ -0,0 +1,4 @@ +const prerender = true; +export { + prerender +}; diff --git a/.vercel/output/functions/render.func/.svelte-kit/output/server/entries/pages/_...lang_/docs/_layout.svelte.js b/.vercel/output/functions/render.func/.svelte-kit/output/server/entries/pages/_...lang_/docs/_layout.svelte.js new file mode 100644 index 0000000..0484d89 --- /dev/null +++ b/.vercel/output/functions/render.func/.svelte-kit/output/server/entries/pages/_...lang_/docs/_layout.svelte.js @@ -0,0 +1,99 @@ +import { c as create_ssr_component, b as subscribe, h as add_attribute, v as validate_component, e as escape } from "../../../../chunks/index.js"; +import { locale, t } from "svelte-intl-precompile"; +import { p as page } from "../../../../chunks/stores.js"; +const NavLink = create_ssr_component(($$result, $$props, $$bindings, slots) => { + let isActive; + let $page, $$unsubscribe_page; + $$unsubscribe_page = subscribe(page, (value) => $page = value); + let { href } = $$props; + if ($$props.href === void 0 && $$bindings.href && href !== void 0) + $$bindings.href(href); + isActive = $page.url.pathname === href; + $$unsubscribe_page(); + return `
  • ${slots.default ? slots.default({}) : ``} + ${slots.submenu ? slots.submenu({}) : ``}
  • `; +}); +const Layout = create_ssr_component(($$result, $$props, $$bindings, slots) => { + let $locale, $$unsubscribe_locale; + let $t, $$unsubscribe_t; + $$unsubscribe_locale = subscribe(locale, (value) => $locale = value); + $$unsubscribe_t = subscribe(t, (value) => $t = value); + $$unsubscribe_locale(); + $$unsubscribe_t(); + return ` +
    ${slots.default ? slots.default({}) : ``}
    `; +}); +export { + Layout as default +}; diff --git a/.vercel/output/functions/render.func/.svelte-kit/output/server/entries/pages/_...lang_/docs/configuration/_page.svelte.js b/.vercel/output/functions/render.func/.svelte-kit/output/server/entries/pages/_...lang_/docs/configuration/_page.svelte.js new file mode 100644 index 0000000..834667b --- /dev/null +++ b/.vercel/output/functions/render.func/.svelte-kit/output/server/entries/pages/_...lang_/docs/configuration/_page.svelte.js @@ -0,0 +1,291 @@ +import { c as create_ssr_component, b as subscribe, e as escape, v as validate_component } from "../../../../../chunks/index.js"; +import { t, locale } from "svelte-intl-precompile"; +import { C as Codeblock } from "../../../../../chunks/Codeblock.js"; +import { D as DefinitionEntry } from "../../../../../chunks/DefinitionEntry.js"; +const CodeInline = create_ssr_component(($$result, $$props, $$bindings, slots) => { + return `${slots.default ? slots.default({}) : ``}`; +}); +const Page = create_ssr_component(($$result, $$props, $$bindings, slots) => { + let $t, $$unsubscribe_t; + let $locale, $$unsubscribe_locale; + $$unsubscribe_t = subscribe(t, (value) => $t = value); + $$unsubscribe_locale = subscribe(locale, (value) => $locale = value); + $$unsubscribe_t(); + $$unsubscribe_locale(); + return `${$$result.head += `${$$result.title = `${escape($t("configuration.title"))}`, ""}`, ""} + +

    ${escape($t("configuration.title"))}

    + +

    ${escape($t("configuration.subsection.example"))}

    + +

    ${escape($t("configuration.paragraph.example-1"))} ${validate_component(CodeInline, "CodeInline").$$render($$result, {}, {}, { + default: () => { + return `src/__layout.svelte`; + } + })} ${escape($t("configuration.paragraph.example-2"))}

    + +${validate_component(Codeblock, "Codeblock").$$render($$result, { lang: "html" }, {}, { + default: () => { + return `${escape(` + import { addMessages, init } from 'svelte-intl-precompile'; + import en from '$locales/en'; + import es from '$locales/es'; + addMessages('en', en); + addMessages('es', es); + init({ + initialLocale: 'en', + fallbackLocale: 'en' + });`)}`; + } + })} + +

    ${escape($t("configuration.paragraph.example-3"))}

    + +

    ${escape($t("configuration.subsection.static-locales"))}

    + +

    ${escape($t("configuration.paragraph.static-locales-1"))} ${validate_component(CodeInline, "CodeInline").$$render($$result, {}, {}, { + default: () => { + return `addMessages(langCode, translations)`; + } + })}.

    + +${validate_component(Codeblock, "Codeblock").$$render($$result, { lang: "js" }, {}, { + default: () => { + return `import en from '$locales/en'; +import es from '$locales/es'; +addMessages('en', en); +addMessages('es', es); +`; + } + })} + +

    ${escape($t("configuration.paragraph.static-locales-2"))} ${validate_component(CodeInline, "CodeInline").$$render($$result, {}, {}, { + default: () => { + return `$locales`; + } + })} ${escape($t("configuration.paragraph.static-locales-3"))}

    + +

    ${escape($t("configuration.paragraph.static-locales-4"))}

    + +

    ${escape($t("configuration.subsection.dynamic-locales"))}

    + +

    ${escape($t("configuration.paragraph.dynamic-locales-1"))} ${validate_component(CodeInline, "CodeInline").$$render($$result, {}, {}, { + default: () => { + return `register(langCode, callback)`; + } + })} + ${escape($t("configuration.paragraph.dynamic-locales-2"))} ${validate_component(CodeInline, "CodeInline").$$render($$result, {}, {}, { + default: () => { + return `waitLocale(locale = defaultLocale)`; + } + })} + ${escape($t("configuration.paragraph.dynamic-locales-3"))}

    + +

    ${escape($t("configuration.paragraph.dynamic-locales-4"))} ${validate_component(CodeInline, "CodeInline").$$render($$result, {}, {}, { + default: () => { + return `load`; + } + })} + ${escape($t("configuration.paragraph.dynamic-locales-5"))}

    + +${validate_component(Codeblock, "Codeblock").$$render($$result, { lang: "js" }, {}, { + default: () => { + return `${escape(` + import { init, register, waitLocale } from 'svelte-intl-precompile'; + register('en', () => import('$locales/en')); + register('es', () => import('$locales/es')); + + export async function load() { + init({ initialLocale: en }); + await waitLocale(); // awaits the default locale, "en" in this case. + } +`)}`; + } + })} + +

    ${escape($t("configuration.subsection.dynamic-locales-shorthand"))}

    + +

    ${escape($t("configuration.paragraph.dynamic-locales-shorthand-1"))} ${validate_component(CodeInline, "CodeInline").$$render($$result, {}, {}, { + default: () => { + return `$locales`; + } + })} + ${escape($t("configuration.paragraph.dynamic-locales-shorthand-2"))} ${validate_component(CodeInline, "CodeInline").$$render($$result, {}, {}, { + default: () => { + return `registerAll`; + } + })} ${escape($t("common.and"))} ${validate_component(CodeInline, "CodeInline").$$render($$result, {}, {}, { + default: () => { + return `availableLocales`; + } + })}. +

    + +

    ${escape($t("configuration.paragraph.dynamic-locales-shorthand-3"))} ${validate_component(CodeInline, "CodeInline").$$render($$result, {}, {}, { + default: () => { + return `register(langCode, callback)`; + } + })} + ${$t("configuration.paragraph.dynamic-locales-shorthand-4")}

    + +${validate_component(Codeblock, "Codeblock").$$render($$result, { lang: "js" }, {}, { + default: () => { + return `${escape(` + import { init, waitLocale } from 'svelte-intl-precompile'; + import { registerAll, availableLocales } from '$locales'; + + registerAll(); + + export async function load() { + init({ initialLocale: selectBestMatchingLocale(availableLocales) }); + await waitLocale(); + } +`)}`; + } + })} + +

    ${escape($t("configuration.subsection.init"))}

    + +

    ${escape($t("configuration.paragraph.init-1"))} ${validate_component(CodeInline, "CodeInline").$$render($$result, {}, {}, { + default: () => { + return `init(libOptions)`; + } + })} + ${escape($t("configuration.paragraph.init-2"))} ${validate_component(CodeInline, "CodeInline").$$render($$result, {}, {}, { + default: () => { + return `initialLocale`; + } + })} + ${escape($t("common.and"))} ${validate_component(CodeInline, "CodeInline").$$render($$result, {}, {}, { + default: () => { + return `fallbackLocale`; + } + })}${escape($t("configuration.paragraph.init-3"))}

    + +${validate_component(Codeblock, "Codeblock").$$render($$result, { lang: "js" }, {}, { + default: () => { + return `${escape(`init({ + initialLocale: 'es', + fallbackLocale: 'en' +});`)}`; + } + })} + +

    ${escape($t("configuration.paragraph.init-4"))} ${validate_component(CodeInline, "CodeInline").$$render($$result, {}, {}, { + default: () => { + return `initialLocale`; + } + })} ${$t("configuration.paragraph.init-5")}

    + +

    ${escape($t("configuration.subsection.find-locale"))}

    + +

    ${escape($t("configuration.paragraph.find-locale-1"))} ${validate_component(CodeInline, "CodeInline").$$render($$result, {}, {}, { + default: () => { + return `init()`; + } + })} ${escape($t("configuration.paragraph.find-locale-2"))}

    + +
    ${validate_component(DefinitionEntry, "DefinitionEntry").$$render($$result, { background: "gray" }, {}, { + dd: () => { + return `${escape($t("configuration.definitions.navigator"))}`; + }, + dt: () => { + return `
    getLocaleFromNavigator()
    `; + } + })}${validate_component(DefinitionEntry, "DefinitionEntry").$$render($$result, { background: "white" }, {}, { + dd: () => { + return `${$t("configuration.definitions.query")}`; + }, + dt: () => { + return `
    getLocaleFromQueryString(key)
    `; + } + })}${validate_component(DefinitionEntry, "DefinitionEntry").$$render($$result, { background: "gray" }, {}, { + dd: () => { + return `${$t("configuration.definitions.hash")}`; + }, + dt: () => { + return `
    getLocaleFromHash(key)
    `; + } + })}${validate_component(DefinitionEntry, "DefinitionEntry").$$render($$result, { background: "white" }, {}, { + dd: () => { + return `${$t("configuration.definitions.path")}`; + }, + dt: () => { + return `
    getLocaleFromPathname(regex)
    `; + } + })}${validate_component(DefinitionEntry, "DefinitionEntry").$$render($$result, { background: "gray" }, {}, { + dd: () => { + return `${$t("configuration.definitions.host")}`; + }, + dt: () => { + return `
    getLocaleFromHostname(regex)
    `; + } + })}${validate_component(DefinitionEntry, "DefinitionEntry").$$render($$result, { background: "gray" }, {}, { + dd: () => { + return `${$t("configuration.definitions.acceptLanguage")}`; + }, + dt: () => { + return `
    getLocaleFromAcceptLanguageHeader(header, availableLocales?)
    `; + } + })}
    + +

    ${escape($t("configuration.subsection.custom-formats"))}

    + +

    ${$t("configuration.paragraph.custom-formats-1")}

    + +${validate_component(Codeblock, "Codeblock").$$render($$result, { lang: "js" }, {}, { + default: () => { + return `${escape(`{ + number: { + scientific: { notation: 'scientific' } + engineering: { notation: 'engineering' } + compactLong: { notation: 'compact', compactDisplay: 'long' } + compactShort: { notation: 'compact', compactDisplay: 'short' } + }, + date: { + short: { month: 'numeric', day: 'numeric', year: '2-digit' } + medium: { month: 'short', day: 'numeric', year: 'numeric' } + long: { month: 'long', day: 'numeric', year: 'numeric' } + full: { weekday: 'long', month: 'long', day: 'numeric', year: 'numeric' } + }, + time: { + short: { hour: 'numeric', minute: 'numeric' } + medium: { hour: 'numeric', minute: 'numeric', second: 'numeric' } + long: { hour: 'numeric', minute: 'numeric', second: 'numeric', timeZoneName: 'short' } + full: { hour: 'numeric', minute: 'numeric', second: 'numeric', timeZoneName: 'short' } + } +}`)}`; + } + })} + +

    ${escape($t("configuration.paragraph.custom-formats-2"))} ${validate_component(CodeInline, "CodeInline").$$render($$result, {}, {}, { + default: () => { + return `formats`; + } + })} + ${$t("configuration.paragraph.custom-formats-3")} + Intl.DateTimeFormat. +

    + +${validate_component(Codeblock, "Codeblock").$$render($$result, { lang: "js" }, {}, { + default: () => { + return `${escape(`init({ + fallbackLocale: 'en', + initialLocale: 'en', + formats: { + date: { + abbreviated: { weekday: 'long', month: 'short', day: 'numeric' } + }, + time: { + 'just-hour': { hour: 'numeric' } + } + } +});`)}`; + } + })} + +

    ${escape($t("configuration.paragraph.custom-formats-4"))} ${escape($t("configuration.paragraph.custom-formats-5"))}

    `; +}); +export { + Page as default +}; diff --git a/.vercel/output/functions/render.func/.svelte-kit/output/server/entries/pages/_...lang_/docs/getting-started/_page.svelte.js b/.vercel/output/functions/render.func/.svelte-kit/output/server/entries/pages/_...lang_/docs/getting-started/_page.svelte.js new file mode 100644 index 0000000..6401507 --- /dev/null +++ b/.vercel/output/functions/render.func/.svelte-kit/output/server/entries/pages/_...lang_/docs/getting-started/_page.svelte.js @@ -0,0 +1,134 @@ +import { c as create_ssr_component, b as subscribe, e as escape, v as validate_component } from "../../../../../chunks/index.js"; +import { t } from "svelte-intl-precompile"; +import { C as Codeblock } from "../../../../../chunks/Codeblock.js"; +const Page = create_ssr_component(($$result, $$props, $$bindings, slots) => { + let $t, $$unsubscribe_t; + $$unsubscribe_t = subscribe(t, (value) => $t = value); + $$unsubscribe_t(); + return `${$$result.head += `${$$result.title = `${escape($t("getting-started.title"))}`, ""}`, ""} + +

    ${escape($t("getting-started.title"))}

    + +

    ${escape($t("getting-started.subsection.installation"))}

    + +

    ${escape($t("getting-started.paragraph.installation-1"))}

    + +${validate_component(Codeblock, "Codeblock").$$render($$result, {}, {}, { + default: () => { + return `npm install svelte-intl-precompile`; + } + })} + +

    ${escape($t("getting-started.subsection.create-translations"))}

    +

    ${$t("getting-started.paragraph.create-translations-1", { + values: { + dir1: "/messages", + or: $t("common.or"), + dir2: "/locales" + } + })} + ${escape($t("getting-started.paragraph.create-translations-2"))}

    + +${validate_component(Codeblock, "Codeblock").$$render($$result, {}, {}, { + default: () => { + return `\u251C\u2500\u2500 locales +\u2502\xA0\xA0 \u251C\u2500\u2500 en.json +\u2502\xA0\xA0 \u251C\u2500\u2500 es.json +\u251C\u2500\u2500 src +... +\u251C\u2500\u2500 static +\u251C\u2500\u2500 package.json +\u2514\u2500\u2500 svelte.config.js +`; + } + })} + +

    ${escape($t("getting-started.paragraph.create-translations-3"))}

    + +${validate_component(Codeblock, "Codeblock").$$render($$result, { lang: "js" }, {}, { + default: () => { + return `${escape(`{ + "recent.aria": "Find recently viewed tides", + "menu": "Menu", + "foot": "{count} {count, plural, =1 {foot} other {feet}}", +}`)}`; + } + })} + +

    ${escape($t("getting-started.paragraph.create-translations-4"))}

    + +${validate_component(Codeblock, "Codeblock").$$render($$result, { lang: "js" }, {}, { + default: () => { + return `${escape(`{ + "placeholders": { + "fullname": "John Smith", + "street-name": "13 Elm Street", + "subject": "Re: Hello" + }, + "welcome-hero": "Welcome to Goliath Bank!", +}`)}`; + } + })} + +

    ${escape($t("getting-started.paragraph.create-translations-5"))}

    + +

    ${$t("getting-started.paragraph.create-translations-6")}

    + +

    ${escape($t("getting-started.paragraph.create-translations-7"))}

    + +

    ${escape($t("getting-started.paragraph.create-translations-8"))}

    + +

    ${escape($t("getting-started.paragraph.create-translations-9"))}

    + +

    ${escape($t("getting-started.paragraph.create-translations-10"))}

    + +

    ${escape($t("getting-started.subsection.hook-into-sveltekit"))}

    + +

    ${$t("getting-started.paragraph.hook-into-sveltekit-1", { values: { path: "/svelte.config.js" } })}

    + +${validate_component(Codeblock, "Codeblock").$$render($$result, { lang: "js" }, {}, { + default: () => { + return `${escape(`import precompileIntl from "svelte-intl-precompile/sveltekit-plugin"; + +const config = { + kit: { + target: '#svelte', + vite: { + plugins: [ + precompileIntl('locales') // if your translations are defined in /locales/[lang].json + ] + } + } +}; + +export default config;`)}`; + } + })} + +

    ${escape($t("getting-started.paragraph.hook-into-sveltekit-2"))}

    + +

    ${escape($t("getting-started.subsection.hook-into-vite"))}

    + +

    ${$t("getting-started.paragraph.hook-into-vite-1", { values: { path: "/vite.config.js" } })}

    + +${validate_component(Codeblock, "Codeblock").$$render($$result, { lang: "js" }, {}, { + default: () => { + return `${escape(`import { defineConfig } from "vite"; +import { svelte } from "@sveltejs/vite-plugin-svelte"; +import precompileIntl from "svelte-intl-precompile/sveltekit-plugin"; + +export default defineConfig({ + resolve: { + dedupe: ["svelte"] + }, + plugins: [ + svelte(), + precompileIntl("locales"), + ], +});`)}`; + } + })}`; +}); +export { + Page as default +}; diff --git a/.vercel/output/functions/render.func/.svelte-kit/output/server/entries/pages/_...lang_/docs/getting-started/_page.ts.js b/.vercel/output/functions/render.func/.svelte-kit/output/server/entries/pages/_...lang_/docs/getting-started/_page.ts.js new file mode 100644 index 0000000..445c451 --- /dev/null +++ b/.vercel/output/functions/render.func/.svelte-kit/output/server/entries/pages/_...lang_/docs/getting-started/_page.ts.js @@ -0,0 +1,4 @@ +const prerender = true; +export { + prerender +}; diff --git a/.vercel/output/functions/render.func/.svelte-kit/output/server/entries/pages/_...lang_/docs/icu-crash-course/_page.svelte.js b/.vercel/output/functions/render.func/.svelte-kit/output/server/entries/pages/_...lang_/docs/icu-crash-course/_page.svelte.js new file mode 100644 index 0000000..d7402f6 --- /dev/null +++ b/.vercel/output/functions/render.func/.svelte-kit/output/server/entries/pages/_...lang_/docs/icu-crash-course/_page.svelte.js @@ -0,0 +1,187 @@ +import { c as create_ssr_component, b as subscribe, e as escape, h as add_attribute } from "../../../../../chunks/index.js"; +import { t } from "svelte-intl-precompile"; +let interpolationKey = "Your favorite color is {chosen}"; +let simplePlural = "Your have {numCats, plural, one {one cat} other {# cats}}"; +let complexPlural = "Your have {numCats, plural, \n =0 {no cats at all} \n =1 {one single cat} \n =2 {a couple cats} \n =3 {a trio of cats} \n =12 {a dozen cats} \n other {exactly # cats}}"; +let offsetPlural = "Mary {guestCount, plural, offset:1 \n =0 {does not give a party.} \n =1 {invites {guest} to her party.} \n =2 {invites {guest} and one other person to her party.} \n other {invites {guest} and # other people to her party.}}"; +let select = "Your {childGender, select, male {son} female {daughter} other {child}} has won an award"; +let dateString = "Your next holidays start on {holidayStart, date, full}"; +let timeString = "Your doctor's appointment is today at {appointment, time, short}"; +let numberString = "Your account balance is {num, number}"; +let skeletonCurrency = "Your account balance is {num, number, ::currency/EUR}"; +let skeletonCurrencySigned = "Your account balance is {num, number, ::currency/EUR sign-always}"; +let skeletonPercentage = "Game progress {num, number, ::percent}"; +let skeletonPercentageScaled = "Game progress {num, number, ::percent .00 scale/100}"; +let skeletonPercentageTwoDecimals = "Game progress {num, number, ::percent .00}"; +let skeletonMeasurementMeter = "Your destination is {num, number, ::unit/meter} away"; +let skeletonMeasurementMeterLong = "Your destination is {num, number, ::unit/meter unit-width-full-name} away"; +let skeletonCompactShort = "Are you sure you want to bid {num, number, ::K} over asking?"; +let skeletonCompactLong = "Are you sure you want to bid {num, number, ::KK} over asking?"; +let skeletonScientific = "The chances of winning the lottery are 1 in {num, number, ::scientific/*ee}?"; +const Page = create_ssr_component(($$result, $$props, $$bindings, slots) => { + let $t, $$unsubscribe_t; + $$unsubscribe_t = subscribe(t, (value) => $t = value); + let interpolation = "orange"; + let guest = "John"; + let plural1 = 0; + let plural2 = 0; + let guestCount = 0; + let childGender = "male"; + let holidaysStart = new Date(); + let appointment = new Date(); + let number = 0; + let skeletonBalance = 0; + let skeletonPercentageVal = 0; + let skeletonMeasurementMeterVal = 0; + let skeletonCompactVal = 5e3; + let skeletonScientificVal = 123456789; + $$unsubscribe_t(); + return `${$$result.head += `${$$result.title = `${escape($t("icu-crash-course.title"))}`, ""}`, ""} + +

    ${escape($t("icu-crash-course.title"))}

    + +

    ${escape($t("icu-crash-course.paragraph.main-1"))}

    + +

    ${escape($t("icu-crash-course.subsection.why"))}

    + +

    ${$t("icu-crash-course.paragraph.why-1")}

    +

    ${$t("icu-crash-course.paragraph.why-2")}

    +

    ${$t("icu-crash-course.paragraph.why-3")}

    +

    ${escape($t("icu-crash-course.paragraph.why-4"))}

    + +

    ${escape($t("icu-crash-course.subsection.interpolations"))}

    +

    ${$t("icu-crash-course.paragraph.interpolations-1")}

    + + + + + + +
    ${escape($t("icu-crash-course.table-heads.definition"))}${escape($t("icu-crash-course.table-heads.definition"))}${escape($t("icu-crash-course.table-heads.output"))}
    ${escape(interpolationKey)}
    ${escape($t("icu-crash-course.table-cells.interpolations", { values: { chosen: interpolation } }))}
    + +

    ${escape($t("icu-crash-course.subsection.plurals"))}

    + +

    ${$t("icu-crash-course.paragraph.plurals-1")}

    + +
    ${escape($t("icu-crash-course.paragraph.plurals-2"))} + + ${escape($t("icu-crash-course.paragraph.plurals-3"))}
    + + + + + + + + + + + + +
    ${escape($t("icu-crash-course.table-heads.definition"))}${escape($t("icu-crash-course.table-heads.values"))}${escape($t("icu-crash-course.table-heads.output"))}
    ${escape(simplePlural)}
    ${escape($t("icu-crash-course.table-cells.plurals-simple", { values: { numCats: plural1 } }))}
    ${escape(complexPlural)}
    ${escape($t("icu-crash-course.table-cells.plurals-complex", { values: { count: plural2 } }))}
    ${escape(offsetPlural)}
    + ${escape($t("icu-crash-course.table-cells.plurals-offset", { values: { guest, guestCount } }))}
    + +

    ${$t("icu-crash-course.paragraph.plurals-4")}

    +

    ${$t("icu-crash-course.paragraph.plurals-5")}

    +

    ${escape($t("icu-crash-course.paragraph.plurals-6"))}

    + +

    ${escape($t("icu-crash-course.subsection.select"))}

    + +

    ${$t("icu-crash-course.paragraph.select-1")}

    + + + + + + +
    ${escape($t("icu-crash-course.table-heads.definition"))}${escape($t("icu-crash-course.table-heads.values"))}${escape($t("icu-crash-course.table-heads.output"))}
    ${escape(select)}
    ${escape($t("icu-crash-course.table-cells.select", { values: { childGender } }))}
    + +

    ${escape($t("icu-crash-course.subsection.date"))}

    + +
    ${$t("icu-crash-course.paragraph.date-1")} +
    + + + + + + +
    ${escape($t("icu-crash-course.table-heads.definition"))}${escape($t("icu-crash-course.table-heads.values"))}${escape($t("icu-crash-course.table-heads.output"))}
    ${escape(dateString)}
    ${escape($t("icu-crash-course.table-cells.date", { values: { holidaysStart } }))}
    + +

    ${escape($t("icu-crash-course.subsection.time"))}

    + +

    ${escape($t("icu-crash-course.paragraph.time"))}

    + + + + + + +
    ${escape($t("icu-crash-course.table-heads.definition"))}${escape($t("icu-crash-course.table-heads.values"))}${escape($t("icu-crash-course.table-heads.output"))}
    ${escape(timeString)}
    ${escape($t("icu-crash-course.table-cells.time", { values: { appointment } }))}
    + +

    ${escape($t("icu-crash-course.subsection.number"))}

    + +

    ${escape($t("icu-crash-course.paragraph.number"))}

    + + + + + + +
    ${escape($t("icu-crash-course.table-heads.definition"))}${escape($t("icu-crash-course.table-heads.values"))}${escape($t("icu-crash-course.table-heads.output"))}
    ${escape(numberString)}
    ${escape($t("icu-crash-course.table-cells.number", { values: { num: number } }))}
    + +

    ${$t("icu-crash-course.paragraph.number-2")}

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ${escape($t("icu-crash-course.table-heads.definition"))}${escape($t("icu-crash-course.table-heads.values"))}${escape($t("icu-crash-course.table-heads.output"))}
    ${escape(skeletonCurrency)}
    ${escape($t("icu-crash-course.table-cells.skeletonCurrency", { values: { num: skeletonBalance } }))}
    ${escape(skeletonCurrencySigned)}
    ${escape($t("icu-crash-course.table-cells.skeletonCurrencySigned", { values: { num: skeletonBalance } }))}
    ${escape(skeletonPercentage)}
    ${escape($t("icu-crash-course.table-cells.skeletonPercentage", { values: { num: skeletonPercentageVal } }))}
    ${escape(skeletonPercentageTwoDecimals)}
    ${escape($t("icu-crash-course.table-cells.skeletonPercentageTwoDecimals", { values: { num: skeletonPercentageVal } }))}
    ${escape(skeletonPercentageScaled)}
    ${escape($t("icu-crash-course.table-cells.skeletonPercentageScaled", { values: { num: skeletonPercentageVal } }))}
    ${escape(skeletonMeasurementMeter)}
    ${escape($t("icu-crash-course.table-cells.skeletonMeasurementMeter", { + values: { num: skeletonMeasurementMeterVal } + }))}
    ${escape(skeletonMeasurementMeterLong)}
    ${escape($t("icu-crash-course.table-cells.skeletonMeasurementMeterLong", { + values: { num: skeletonMeasurementMeterVal } + }))}
    ${escape(skeletonCompactShort)}
    ${escape($t("icu-crash-course.table-cells.skeletonCompactShort", { values: { num: skeletonCompactVal } }))}
    ${escape(skeletonCompactLong)}
    ${escape($t("icu-crash-course.table-cells.skeletonCompactLong", { values: { num: skeletonCompactVal } }))}
    ${escape(skeletonScientific)}
    ${escape($t("icu-crash-course.table-cells.skeletonScientific", { values: { num: skeletonScientificVal } }))}
    + +

    ${escape($t("icu-crash-course.paragraph.number-3"))}

    `; +}); +export { + Page as default +}; diff --git a/.vercel/output/functions/render.func/.svelte-kit/output/server/entries/pages/_...lang_/docs/icu-crash-course/_page.ts.js b/.vercel/output/functions/render.func/.svelte-kit/output/server/entries/pages/_...lang_/docs/icu-crash-course/_page.ts.js new file mode 100644 index 0000000..445c451 --- /dev/null +++ b/.vercel/output/functions/render.func/.svelte-kit/output/server/entries/pages/_...lang_/docs/icu-crash-course/_page.ts.js @@ -0,0 +1,4 @@ +const prerender = true; +export { + prerender +}; diff --git a/.vercel/output/functions/render.func/.svelte-kit/output/server/entries/pages/_...lang_/docs/introduction/_page.svelte.js b/.vercel/output/functions/render.func/.svelte-kit/output/server/entries/pages/_...lang_/docs/introduction/_page.svelte.js new file mode 100644 index 0000000..adeb681 --- /dev/null +++ b/.vercel/output/functions/render.func/.svelte-kit/output/server/entries/pages/_...lang_/docs/introduction/_page.svelte.js @@ -0,0 +1,39 @@ +import { c as create_ssr_component, b as subscribe, e as escape, v as validate_component } from "../../../../../chunks/index.js"; +import { P as Playground } from "../../../../../chunks/Playground.js"; +import { t } from "precompile-intl-runtime"; +const Page = create_ssr_component(($$result, $$props, $$bindings, slots) => { + let $t, $$unsubscribe_t; + $$unsubscribe_t = subscribe(t, (value) => $t = value); + $$unsubscribe_t(); + return `${$$result.head += `${$$result.title = `${escape($t("introduction.title"))}`, ""}`, ""} + +

    ${escape($t("introduction.title"))}

    + +

    ${escape($t("introduction.subsection.why-use-it"))}

    + +

    ${escape($t("introduction.paragraph.why-use-it-1"))}

    +

    ${$t("introduction.paragraph.why-use-it-2")}

    +

    ${escape($t("introduction.paragraph.why-use-it-3"))}

    +

    ${escape($t("introduction.paragraph.why-use-it-4"))}

    + +

    ${escape($t("introduction.subsection.playground"))}

    + +

    ${escape($t("introduction.paragraph.playground-preface"))}

    + +${validate_component(Playground, "Playground").$$render($$result, {}, {}, {})} + +

    ${escape($t("introduction.subsection.features"))}

    + +

    ${$t("introduction.paragraph.features-1")} svelte-i18n ${escape($t("introduction.paragraph.features-2"))}

    + +

    ${escape($t("introduction.paragraph.features-3"))}

    + +`; +}); +export { + Page as default +}; diff --git a/.vercel/output/functions/render.func/.svelte-kit/output/server/entries/pages/_...lang_/docs/introduction/_page.ts.js b/.vercel/output/functions/render.func/.svelte-kit/output/server/entries/pages/_...lang_/docs/introduction/_page.ts.js new file mode 100644 index 0000000..445c451 --- /dev/null +++ b/.vercel/output/functions/render.func/.svelte-kit/output/server/entries/pages/_...lang_/docs/introduction/_page.ts.js @@ -0,0 +1,4 @@ +const prerender = true; +export { + prerender +}; diff --git a/.vercel/output/functions/render.func/.svelte-kit/output/server/entries/pages/_...lang_/docs/playground/_page.svelte.js b/.vercel/output/functions/render.func/.svelte-kit/output/server/entries/pages/_...lang_/docs/playground/_page.svelte.js new file mode 100644 index 0000000..33cfcd0 --- /dev/null +++ b/.vercel/output/functions/render.func/.svelte-kit/output/server/entries/pages/_...lang_/docs/playground/_page.svelte.js @@ -0,0 +1,16 @@ +import { c as create_ssr_component, b as subscribe, e as escape, v as validate_component } from "../../../../../chunks/index.js"; +import { t } from "precompile-intl-runtime"; +import { P as Playground } from "../../../../../chunks/Playground.js"; +const Page = create_ssr_component(($$result, $$props, $$bindings, slots) => { + let $t, $$unsubscribe_t; + $$unsubscribe_t = subscribe(t, (value) => $t = value); + $$unsubscribe_t(); + return `${$$result.head += `${$$result.title = `${escape($t("playground.title"))}`, ""}`, ""} + +

    ${escape($t("playground.title"))}

    + +${validate_component(Playground, "Playground").$$render($$result, {}, {}, {})}`; +}); +export { + Page as default +}; diff --git a/.vercel/output/functions/render.func/.svelte-kit/output/server/entries/pages/_...lang_/docs/playground/_page.ts.js b/.vercel/output/functions/render.func/.svelte-kit/output/server/entries/pages/_...lang_/docs/playground/_page.ts.js new file mode 100644 index 0000000..445c451 --- /dev/null +++ b/.vercel/output/functions/render.func/.svelte-kit/output/server/entries/pages/_...lang_/docs/playground/_page.ts.js @@ -0,0 +1,4 @@ +const prerender = true; +export { + prerender +}; diff --git a/.vercel/output/functions/render.func/.svelte-kit/output/server/entries/pages/_...lang_/docs/usage/_page.svelte.js b/.vercel/output/functions/render.func/.svelte-kit/output/server/entries/pages/_...lang_/docs/usage/_page.svelte.js new file mode 100644 index 0000000..4e4652d --- /dev/null +++ b/.vercel/output/functions/render.func/.svelte-kit/output/server/entries/pages/_...lang_/docs/usage/_page.svelte.js @@ -0,0 +1,140 @@ +import { c as create_ssr_component, b as subscribe, e as escape, v as validate_component } from "../../../../../chunks/index.js"; +import { t } from "svelte-intl-precompile"; +import { C as Codeblock } from "../../../../../chunks/Codeblock.js"; +import { D as DefinitionEntry } from "../../../../../chunks/DefinitionEntry.js"; +const Page = create_ssr_component(($$result, $$props, $$bindings, slots) => { + let $t, $$unsubscribe_t; + $$unsubscribe_t = subscribe(t, (value) => $t = value); + $$unsubscribe_t(); + return `${$$result.head += `${$$result.title = `${escape($t("usage.title"))}`, ""}`, ""} + +

    ${escape($t("usage.title"))}

    + +

    ${escape($t("usage.paragraph.preface-1"))} svelte-intl + ${escape($t("usage.paragraph.preface-2"))}

    + +

    ${escape($t("usage.paragraph.preface-3"))}

    + +${validate_component(Codeblock, "Codeblock").$$render($$result, { lang: "js" }, {}, { + default: () => { + return `${escape(`{ + "page.title": "Svelte Intl Precompile Docs", + "login-success-msg": "Welcome back, {name}", + "transfer-received": "You received {amount, number, currency} at {wireDate, time, short} on {wireDate, date, long}" +} +`)}`; + } + })} + +

    ${$t("usage.subsection.basic-translations")}

    + +

    ${escape($t("usage.paragraph.basic-translations-1"))}

    + +${validate_component(Codeblock, "Codeblock").$$render($$result, { lang: "jsx" }, {}, { + default: () => { + return `${escape(` - + %sveltekit.head% -
    %svelte.body%
    +
    %sveltekit.body%
    diff --git a/src/hooks.server.ts b/src/hooks.server.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/hooks.ts b/src/hooks.ts deleted file mode 100644 index 9cac1f8..0000000 --- a/src/hooks.ts +++ /dev/null @@ -1,18 +0,0 @@ -import cookie from 'cookie'; -import type { Handle } from '@sveltejs/kit'; - -export const handle: Handle = async ({ event, resolve }) => { - const cookies = cookie.parse(event.request.headers.get('cookie') ?? ''); - const locale = cookies.lang || (event.request.headers.get("accept-language") && event.request.headers.get("accept-language").split(',')[0]); - // console.log('Locale extracted from the cookies is:', locale); - // console.log('request is:', JSON.stringify(request)); - event.locals.locale = locale; - - const response = await resolve(event); - - return response; -}; - -export function getSession(event) { - return { acceptedLanguage: event.locals.locale }; -} \ No newline at end of file diff --git a/src/lib/CodeInline.svelte b/src/lib/CodeInline.svelte index dfbcdb2..8fddfef 100644 --- a/src/lib/CodeInline.svelte +++ b/src/lib/CodeInline.svelte @@ -1 +1,11 @@ - + + +{@render children?.()} diff --git a/src/lib/Codeblock.svelte b/src/lib/Codeblock.svelte deleted file mode 100644 index 357f679..0000000 --- a/src/lib/Codeblock.svelte +++ /dev/null @@ -1,19 +0,0 @@ - -
    -  
    -
    diff --git a/src/lib/DefinitionEntry.svelte b/src/lib/DefinitionEntry.svelte index c97e282..aac0d22 100644 --- a/src/lib/DefinitionEntry.svelte +++ b/src/lib/DefinitionEntry.svelte @@ -1,13 +1,13 @@
    - + {@render dt?.()}
    - + {@render dd?.()}
    diff --git a/src/lib/NavLink.svelte b/src/lib/NavLink.svelte index 6c5c538..cd7a6f0 100644 --- a/src/lib/NavLink.svelte +++ b/src/lib/NavLink.svelte @@ -1,10 +1,10 @@
  • - - + {@render children?.()} + {@render submenu?.()}
  • \ No newline at end of file diff --git a/src/lib/Playground.svelte b/src/lib/Playground.svelte index 6d629d2..92b90ac 100644 --- a/src/lib/Playground.svelte +++ b/src/lib/Playground.svelte @@ -1,17 +1,19 @@
    -		
    {translations}
    {translations.length} bytes
    @@ -57,5 +61,6 @@
     		
    {output}
    - {output.length} bytes + {output.length} bytes ({Math.abs(sizeChange)}% {sizeChange > 0 ? 'bigger' : 'smaller' } than the source translations) + diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte new file mode 100644 index 0000000..20ea24c --- /dev/null +++ b/src/routes/+layout.svelte @@ -0,0 +1,11 @@ + +{@render children?.()} diff --git a/src/routes/[...lang]/__layout.svelte b/src/routes/[...lang]/+layout.svelte similarity index 85% rename from src/routes/[...lang]/__layout.svelte rename to src/routes/[...lang]/+layout.svelte index 25a1d53..4cbb254 100644 --- a/src/routes/[...lang]/__layout.svelte +++ b/src/routes/[...lang]/+layout.svelte @@ -1,49 +1,29 @@ - diff --git a/src/routes/[...lang]/+layout.ts b/src/routes/[...lang]/+layout.ts new file mode 100644 index 0000000..2c4a767 --- /dev/null +++ b/src/routes/[...lang]/+layout.ts @@ -0,0 +1,23 @@ +import { registerAll, availableLocales } from '$locales'; +import { waitLocale, init } from 'svelte-intl-precompile'; +import type { LayoutLoad } from './$types'; + +registerAll(); +let defaultLang = 'en'; +let initialized = false; + +export const _localeRegex = new RegExp(`^/(${availableLocales.join('|')})(/|$)`); +export function _extractLanguageFromPath(path) { + return (_localeRegex.exec(path) || [null, defaultLang])[1]; +} +export const load: LayoutLoad = async function({ url: { pathname } }) { + if (!initialized) { + const lang = _extractLanguageFromPath(pathname); + init({ + initialLocale: lang, + fallbackLocale: defaultLang + }); + initialized = true; + await waitLocale() + } +} diff --git a/src/routes/[...lang]/index.svelte b/src/routes/[...lang]/+page.svelte similarity index 98% rename from src/routes/[...lang]/index.svelte rename to src/routes/[...lang]/+page.svelte index 3f9882c..1b848df 100644 --- a/src/routes/[...lang]/index.svelte +++ b/src/routes/[...lang]/+page.svelte @@ -1,8 +1,5 @@ - diff --git a/src/routes/[...lang]/+page.ts b/src/routes/[...lang]/+page.ts new file mode 100644 index 0000000..df46931 --- /dev/null +++ b/src/routes/[...lang]/+page.ts @@ -0,0 +1 @@ +export const prerender = 'auto'; diff --git a/src/routes/[...lang]/docs/+layout.svelte b/src/routes/[...lang]/docs/+layout.svelte new file mode 100644 index 0000000..1679689 --- /dev/null +++ b/src/routes/[...lang]/docs/+layout.svelte @@ -0,0 +1,49 @@ + + + +
    +
    + {@render children?.()} +
    +
    diff --git a/src/routes/[...lang]/docs/__layout.svelte b/src/routes/[...lang]/docs/__layout.svelte deleted file mode 100644 index 976fbfa..0000000 --- a/src/routes/[...lang]/docs/__layout.svelte +++ /dev/null @@ -1,38 +0,0 @@ - - - -
    -
    - -
    -
    diff --git a/src/routes/[...lang]/docs/configuration.svelte b/src/routes/[...lang]/docs/configuration/+page.svelte similarity index 71% rename from src/routes/[...lang]/docs/configuration.svelte rename to src/routes/[...lang]/docs/configuration/+page.svelte index f0419e3..2ebf9bb 100644 --- a/src/routes/[...lang]/docs/configuration.svelte +++ b/src/routes/[...lang]/docs/configuration/+page.svelte @@ -1,12 +1,11 @@ - @@ -20,9 +19,8 @@

    {$t('configuration.paragraph.example-1')} src/__layout.svelte {$t('configuration.paragraph.example-2')}

    - -{` -`} - + });`} />

    {$t('configuration.paragraph.example-3')}

    @@ -41,12 +36,11 @@

    {$t('configuration.paragraph.static-locales-1')} addMessages(langCode, translations).

    - + +addMessages('es', es);`} />

    {$t('configuration.paragraph.static-locales-2')} $locales {$t('configuration.paragraph.static-locales-3')}

    @@ -65,17 +59,16 @@ addMessages('es', es); {$t('configuration.paragraph.dynamic-locales-5')}

    -{` -import { init, register, waitLocale } from 'svelte-intl-precompile'; -register('en', () => import('$locales/en')); -register('es', () => import('$locales/es')); + import('$locales/en')); + register('es', () => import('$locales/es')); -export async function load() { - init({ initialLocale: en }); - await waitLocale(); // awaits the default locale, "en" in this case. - return {}; -} -`} + export async function load() { + init({ initialLocale: en }); + await waitLocale(); // awaits the default locale, "en" in this case. + } +`} />

    {$t('configuration.subsection.dynamic-locales-shorthand')}

    @@ -89,7 +82,7 @@ export async function load() { {@html $t('configuration.paragraph.dynamic-locales-shorthand-4')}

    -{` + +`} />

    {$t('configuration.subsection.init')}

    @@ -110,11 +102,11 @@ export async function load() { {$t('common.and')} fallbackLocale{$t('configuration.paragraph.init-3')}

    -{`init({ + - +});`} />

    {$t('configuration.paragraph.init-4')} initialLocale {@html $t('configuration.paragraph.init-5')}

    {$t('configuration.subsection.find-locale')}

    @@ -125,24 +117,28 @@ export async function load() {
    -
    getLocaleFromNavigator()
    -    {$t('configuration.definitions.navigator')}
    +    {#snippet dt()}
    getLocaleFromNavigator()
    {/snippet} + {#snippet dd()}{$t('configuration.definitions.navigator')}{/snippet} -
    getLocaleFromQueryString(key)
    -    {@html $t('configuration.definitions.query')}
    +    {#snippet dt()}
    getLocaleFromQueryString(key)
    {/snippet} + {#snippet dd()}{@html $t('configuration.definitions.query')}{/snippet} -
    getLocaleFromHash(key)
    -    {@html $t('configuration.definitions.hash')}
    +    {#snippet dt()}
    getLocaleFromHash(key)
    {/snippet} + {#snippet dd()}{@html $t('configuration.definitions.hash')}{/snippet} -
    getLocaleFromPathname(regex)
    -    {@html $t('configuration.definitions.path')}
    +    {#snippet dt()}
    getLocaleFromPathname(regex)
    {/snippet} + {#snippet dd()}{@html $t('configuration.definitions.path')}{/snippet} + + + {#snippet dt()}
    getLocaleFromHostname(regex)
    {/snippet} + {#snippet dd()}{@html $t('configuration.definitions.host')}{/snippet}
    -
    getLocaleFromHostname(regex)
    -    {@html $t('configuration.definitions.host')}
    +    {#snippet dt()}
    getLocaleFromAcceptLanguageHeader(header, availableLocales?)
    {/snippet} + {#snippet dd()}{@html $t('configuration.definitions.acceptLanguage')}{/snippet}
    @@ -152,7 +148,7 @@ export async function load() { {@html $t('configuration.paragraph.custom-formats-1')}

    -{`{ + +}`} />

    {$t('configuration.paragraph.custom-formats-2')} formats @@ -179,7 +175,7 @@ export async function load() { Intl.DateTimeFormat.

    -{`init({ + \ No newline at end of file +});`} /> + +

    {$t('configuration.paragraph.custom-formats-4')} {$t('configuration.paragraph.custom-formats-5')}

    diff --git a/src/routes/[...lang]/docs/getting-started.svelte b/src/routes/[...lang]/docs/getting-started/+page.svelte similarity index 78% rename from src/routes/[...lang]/docs/getting-started.svelte rename to src/routes/[...lang]/docs/getting-started/+page.svelte index a2098c1..10d7ec7 100644 --- a/src/routes/[...lang]/docs/getting-started.svelte +++ b/src/routes/[...lang]/docs/getting-started/+page.svelte @@ -1,12 +1,11 @@ - - @@ -20,7 +19,7 @@

    {$t('getting-started.paragraph.installation-1')}

    -npm install svelte-intl-precompile +

    {$t('getting-started.subsection.create-translations')}

    @@ -32,7 +31,7 @@ {$t('getting-started.paragraph.create-translations-2')}

    - + +`} />

    {$t('getting-started.paragraph.create-translations-3')}

    - -{`{ + +}`} />

    {$t('getting-started.paragraph.create-translations-4')}

    -{`{ + +}`} />

    {$t('getting-started.paragraph.create-translations-5')}

    @@ -81,8 +77,8 @@

    {@html $t('getting-started.paragraph.hook-into-sveltekit-1', { values: { path: '/svelte.config.js' }})}

    - -{`import precompileIntl from "svelte-intl-precompile/sveltekit-plugin"; + +export default config;`} />

    {$t('getting-started.paragraph.hook-into-sveltekit-2')}

    @@ -104,8 +99,8 @@ export default config;`}

    {@html $t('getting-started.paragraph.hook-into-vite-1', { values: { path:'/vite.config.js' }})}

    - -{`import { defineConfig } from "vite"; + +});`} /> diff --git a/src/routes/[...lang]/docs/getting-started/+page.ts b/src/routes/[...lang]/docs/getting-started/+page.ts new file mode 100644 index 0000000..df46931 --- /dev/null +++ b/src/routes/[...lang]/docs/getting-started/+page.ts @@ -0,0 +1 @@ +export const prerender = 'auto'; diff --git a/src/routes/[...lang]/docs/icu-crash-course.svelte b/src/routes/[...lang]/docs/icu-crash-course/+page.svelte similarity index 61% rename from src/routes/[...lang]/docs/icu-crash-course.svelte rename to src/routes/[...lang]/docs/icu-crash-course/+page.svelte index 959d164..01b5089 100644 --- a/src/routes/[...lang]/docs/icu-crash-course.svelte +++ b/src/routes/[...lang]/docs/icu-crash-course/+page.svelte @@ -1,18 +1,19 @@ - - diff --git a/src/routes/[...lang]/docs/introduction/+page.ts b/src/routes/[...lang]/docs/introduction/+page.ts new file mode 100644 index 0000000..df46931 --- /dev/null +++ b/src/routes/[...lang]/docs/introduction/+page.ts @@ -0,0 +1 @@ +export const prerender = 'auto'; diff --git a/src/routes/[...lang]/docs/playground.svelte b/src/routes/[...lang]/docs/playground/+page.svelte similarity index 64% rename from src/routes/[...lang]/docs/playground.svelte rename to src/routes/[...lang]/docs/playground/+page.svelte index a4f1000..d80883a 100644 --- a/src/routes/[...lang]/docs/playground.svelte +++ b/src/routes/[...lang]/docs/playground/+page.svelte @@ -1,9 +1,5 @@ - - diff --git a/src/routes/[...lang]/docs/playground/+page.ts b/src/routes/[...lang]/docs/playground/+page.ts new file mode 100644 index 0000000..df46931 --- /dev/null +++ b/src/routes/[...lang]/docs/playground/+page.ts @@ -0,0 +1 @@ +export const prerender = 'auto'; diff --git a/src/routes/[...lang]/docs/usage.svelte b/src/routes/[...lang]/docs/usage/+page.svelte similarity index 71% rename from src/routes/[...lang]/docs/usage.svelte rename to src/routes/[...lang]/docs/usage/+page.svelte index 7887f3b..afccd42 100644 --- a/src/routes/[...lang]/docs/usage.svelte +++ b/src/routes/[...lang]/docs/usage/+page.svelte @@ -1,11 +1,10 @@ - @@ -22,22 +21,22 @@

    {$t('usage.paragraph.preface-3')}

    -{`{ + +`} />

    {@html $t('usage.subsection.basic-translations')}

    {$t('usage.paragraph.basic-translations-1')}

    -{`

    {$t('page.title')}

    -`}
    +`} />

    {$t('usage.subsection.passing-arguments')}

    @@ -47,17 +46,17 @@ {$t('usage.paragraph.passing-arguments-3')}

    -{`

    {$t('login-success-msg', { values: { name: user.name } })}

    `}
    +{$t('login-success-msg', { values: { name: user.name } })}`} />

    {$t('usage.paragraph.passing-arguments-4')}

    -{`

    {$t('transfer-received', { values: { amount: 123.45 , wireDate: transfer.date } })}

    `}
    +{$t('transfer-received', { values: { amount: 123.45 , wireDate: transfer.date } })}`} />

    {$t('usage.subsection.formatting')}

    {$t('usage.paragraph.formatting-1')}

    -{` -`} +`} />

    {$t('usage.subsection.other-stores')}

    @@ -84,22 +83,22 @@
    -
    $locale
    -		{@html $t('usage.definitions.other-stores-1')}
    +		{#snippet dt()}
    $locale
    {/snippet} + {#snippet dd()}{@html $t('usage.definitions.other-stores-1')}{/snippet} -
    $locales
    -		{@html $t('usage.definitions.other-stores-2')}
    +		{#snippet dt()}
    $locales
    {/snippet} + {#snippet dd()}{@html $t('usage.definitions.other-stores-2')}{/snippet} -
    $isLoading
    -		{@html $t('usage.definitions.other-stores-3')}
    +		{#snippet dt()}
    $isLoading
    {/snippet} + {#snippet dd()}{@html $t('usage.definitions.other-stores-3')}{/snippet}

    {$t('usage.paragraph.other-stores-2')}

    -{` {#each $locales as loc} @@ -108,6 +107,6 @@ class={loc === $locale && 'current'} on:click={() => $locale = loc}>{loc} {/each} -`} +`} />

    {@html $t('usage.paragraph.other-stores-3')}

    diff --git a/src/routes/[...lang]/docs/usage/+page.ts b/src/routes/[...lang]/docs/usage/+page.ts new file mode 100644 index 0000000..df46931 --- /dev/null +++ b/src/routes/[...lang]/docs/usage/+page.ts @@ -0,0 +1 @@ +export const prerender = 'auto'; diff --git a/src/routes/__layout.svelte b/src/routes/__layout.svelte deleted file mode 100644 index 520ccd6..0000000 --- a/src/routes/__layout.svelte +++ /dev/null @@ -1,4 +0,0 @@ - - diff --git a/src/routes/playground.ts b/src/routes/playground.ts deleted file mode 100644 index 5834c68..0000000 --- a/src/routes/playground.ts +++ /dev/null @@ -1,33 +0,0 @@ -import type { RequestHandler } from '@sveltejs/kit'; -import type { Locals } from '$lib/types'; -import * as babel from '@babel/core'; -import { minify } from "terser"; -import buildPlugin from 'babel-plugin-precompile-intl'; - -const intlPrecompiler = buildPlugin('svelte-intl-precompile'); - -// POST /playground.json -export const post: RequestHandler = async (request) => { - try { - let transformed = babel.transform('export default ' + request.body, { plugins: [intlPrecompiler] }).code; - let { code: minified } = await minify(transformed, { - mangle: { - toplevel: true, - }, - }); - return { - status: 200, - body: { - transformed, - minified - } - }; - } catch { - return { - status: 422, - body: { - error: "Syntax error" - } - }; - } -}; diff --git a/src/routes/playground/+server.ts b/src/routes/playground/+server.ts new file mode 100644 index 0000000..06dac26 --- /dev/null +++ b/src/routes/playground/+server.ts @@ -0,0 +1,18 @@ +import { json } from '@sveltejs/kit'; +import * as babel from '@babel/core'; +import { minify } from "terser"; +import buildPlugin from 'babel-plugin-precompile-intl'; + +const intlPrecompiler = buildPlugin('svelte-intl-precompile'); + +// POST /playground.json +export async function POST({ request, locals }) { + try { + const body = await request.text(); + let transformed = babel.transform('export default ' + body, { plugins: [intlPrecompiler] }).code; + let { code: minified } = await minify(transformed, { mangle: { toplevel: true } }); + return json({ transformed, minified }); + } catch { + return json({ error: "Syntax error" }, { status: 422 }); + } +}; diff --git a/static/flags/en.svg b/static/flags/en.svg new file mode 100644 index 0000000..c264e22 --- /dev/null +++ b/static/flags/en.svg @@ -0,0 +1 @@ + diff --git a/static/flags/es.svg b/static/flags/es.svg new file mode 100644 index 0000000..4a00fe9 --- /dev/null +++ b/static/flags/es.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/flags/gl.svg b/static/flags/gl.svg new file mode 100644 index 0000000..ccec8a4 --- /dev/null +++ b/static/flags/gl.svg @@ -0,0 +1,183 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/static/flags/ja.svg b/static/flags/ja.svg new file mode 100644 index 0000000..721cca3 --- /dev/null +++ b/static/flags/ja.svg @@ -0,0 +1 @@ + diff --git a/svelte.config.js b/svelte.config.js index 5d1f0ab..30b6db9 100644 --- a/svelte.config.js +++ b/svelte.config.js @@ -1,15 +1,5 @@ import preprocess from 'svelte-preprocess'; import netlify from '@sveltejs/adapter-netlify'; -import precompileIntl from "svelte-intl-precompile/sveltekit-plugin"; - -export const sveltekitViteConfig = { - plugins: [ - precompileIntl('locales') // if your translations are defined in /locales/[lang].json - ], - ssr: { - external: ['@babel/core', 'babel-plugin-precompile-intl'] - }, -} /** @type {import('@sveltejs/kit').Config} */ const config = { @@ -23,9 +13,6 @@ const config = { kit: { adapter: netlify(), - // hydrate the
    element in src/app.html - target: "#svelte", - vite: sveltekitViteConfig }, }; diff --git a/tests/DefinitionEntry.test.js b/tests/DefinitionEntry.test.js index 08ca084..d72e1f6 100644 --- a/tests/DefinitionEntry.test.js +++ b/tests/DefinitionEntry.test.js @@ -1,14 +1,12 @@ -import { cleanup, render } from '@testing-library/svelte' +import { render } from '@testing-library/svelte' import Scenario1 from './DefinitionEntryScenario1.svelte'; +import { describe, expect, test } from 'vitest' describe('DefinitionEntry.svelte', () => { - // TODO: @testing-library/svelte claims to add this automatically but it doesn't work without explicit afterEach - afterEach(() => cleanup()) - - it('renders a link with the given href', async () => { + test('renders a link with the given href', async () => { const { getByTestId } = render(Scenario1); - expect(getByTestId('definition-entry')).to.have.class('bg-gray-50'); - expect(getByTestId('dt')).to.have.text("I'm the description term"); - expect(getByTestId('dd')).to.have.text("I'm the description definition"); + expect(getByTestId('definition-entry')).toHaveClass('bg-gray-50'); + expect(getByTestId('dt')).toHaveTextContent("I'm the description term"); + expect(getByTestId('dd')).toHaveTextContent("I'm the description definition"); }); }); \ No newline at end of file diff --git a/tests/DefinitionEntryScenario1.svelte b/tests/DefinitionEntryScenario1.svelte index 6a5ebde..621981e 100644 --- a/tests/DefinitionEntryScenario1.svelte +++ b/tests/DefinitionEntryScenario1.svelte @@ -1,5 +1,9 @@ - I'm the description term - I'm the description definition + {#snippet dt()} + I'm the description term + {/snippet} + {#snippet dd()} + I'm the description definition + {/snippet} \ No newline at end of file diff --git a/tests/setup.js b/tests/setup.js index 55aa628..f69cd37 100644 --- a/tests/setup.js +++ b/tests/setup.js @@ -1,3 +1,3 @@ -import chai from 'chai'; -import chaiDom from 'chai-dom'; -chai.use(chaiDom); \ No newline at end of file +import { expect } from 'vitest'; +import * as matchers from '@testing-library/jest-dom/matchers'; +expect.extend(matchers) diff --git a/tsconfig.json b/tsconfig.json index 0555d52..2b12840 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,4 +1,5 @@ { + "extends": "./.svelte-kit/tsconfig.json", "compilerOptions": { "moduleResolution": "node", "module": "es2020", @@ -8,9 +9,9 @@ svelte-preprocess cannot figure out whether you have a value or a type, so tell TypeScript to enforce using \`import type\` instead of \`import\` for Types. */ - "importsNotUsedAsValues": "error", "isolatedModules": true, "resolveJsonModule": true, + "verbatimModuleSyntax": true, /** To have warnings/errors of the Svelte compiler at the correct position, enable source maps by default. diff --git a/vite.config.js b/vite.config.js new file mode 100644 index 0000000..28cc8d0 --- /dev/null +++ b/vite.config.js @@ -0,0 +1,15 @@ +import { sveltekit } from '@sveltejs/kit/vite'; +import precompileIntl from "svelte-intl-precompile/sveltekit-plugin"; + +/** @type {import('vite').UserConfig} */ +const config = { + plugins: [ + precompileIntl('locales'), // if your translations are defined in /locales/[lang].json + sveltekit() + ], + ssr: { + external: ['@babel/core', 'babel-plugin-precompile-intl'] + } +}; + +export default config; diff --git a/vitest.config.js b/vitest.config.js index 3917b06..9198e52 100644 --- a/vitest.config.js +++ b/vitest.config.js @@ -1,16 +1,12 @@ import { defineConfig } from 'vite' import { svelte } from '@sveltejs/vite-plugin-svelte' -import { sveltekitViteConfig } from './svelte.config.js' import path from 'path'; -// import svelteInlineComponents from 'vite-plugin-svelte-inline-components'; -export default defineConfig({ - ...sveltekitViteConfig, +export default defineConfig(({ mode }) => ({ plugins: [ svelte({ hot: !process.env.VITEST, }), - // svelteInlineComponents(), ], test: { global: true, @@ -18,8 +14,9 @@ export default defineConfig({ setupFiles: ['./tests/setup.js'], }, resolve: { + conditions: mode === 'test' ? ['browser'] : [], alias: { $lib: path.resolve('./src/lib'), }, }, -}) \ No newline at end of file +})) \ No newline at end of file