Rework how strings are localized (#15589)
* replace lodash template usage with micromustache * remove function brackets from translations * add newline * remove old test * split core translations from content translations * fix directory not existing * fix lint
This commit is contained in:
+20
-9
@@ -33,26 +33,37 @@ gulp.task('cache:content', done => {
|
||||
}
|
||||
});
|
||||
|
||||
function safeMkdir (path) {
|
||||
try {
|
||||
fs.mkdirSync(path);
|
||||
} catch (err) {
|
||||
if (err.code !== 'EEXIST') throw err;
|
||||
}
|
||||
}
|
||||
|
||||
gulp.task('cache:i18n', done => {
|
||||
// Requiring at runtime because these files access `common`
|
||||
// code which in production works only if transpiled so after
|
||||
// gulp build:babel:common has run
|
||||
const { BROWSER_SCRIPT_CACHE_PATH, geti18nBrowserScript } = require('../website/server/libs/i18n'); // eslint-disable-line global-require
|
||||
const { BROWSER_SCRIPT_CACHE_PATH, geti18nCoreBrowserScript, geti18nContentBrowserScript } = require('../website/server/libs/i18n'); // eslint-disable-line global-require
|
||||
const { langCodes } = require('../website/server/libs/i18n'); // eslint-disable-line global-require
|
||||
|
||||
try {
|
||||
// create the cache folder (if it doesn't exist)
|
||||
try {
|
||||
fs.mkdirSync(BROWSER_SCRIPT_CACHE_PATH);
|
||||
} catch (err) {
|
||||
if (err.code !== 'EEXIST') throw err;
|
||||
}
|
||||
// create the cache folders (if they doesn't exist)
|
||||
safeMkdir(BROWSER_SCRIPT_CACHE_PATH);
|
||||
safeMkdir(`${BROWSER_SCRIPT_CACHE_PATH}core/`);
|
||||
safeMkdir(`${BROWSER_SCRIPT_CACHE_PATH}content/`);
|
||||
|
||||
// create and save the i18n browser script for each language
|
||||
langCodes.forEach(languageCode => {
|
||||
fs.writeFileSync(
|
||||
`${BROWSER_SCRIPT_CACHE_PATH}${languageCode}.js`,
|
||||
geti18nBrowserScript(languageCode),
|
||||
`${BROWSER_SCRIPT_CACHE_PATH}core/${languageCode}.js`,
|
||||
geti18nCoreBrowserScript(languageCode),
|
||||
'utf8',
|
||||
);
|
||||
fs.writeFileSync(
|
||||
`${BROWSER_SCRIPT_CACHE_PATH}content/${languageCode}.js`,
|
||||
geti18nContentBrowserScript(languageCode),
|
||||
'utf8',
|
||||
);
|
||||
});
|
||||
|
||||
Generated
+13
@@ -53,6 +53,7 @@
|
||||
"lodash": "^4.17.21",
|
||||
"merge-stream": "^2.0.0",
|
||||
"method-override": "^3.0.0",
|
||||
"micromustache": "^8.0.3",
|
||||
"moment": "^2.29.4",
|
||||
"moment-recur": "git://github.com/HabitRPG/moment-recur.git#d3e8e6da0806f13b74dd2e4d7d9053e6a63db119",
|
||||
"mongoose": "^8.9.5",
|
||||
@@ -14869,6 +14870,18 @@
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/micromustache": {
|
||||
"version": "8.0.3",
|
||||
"resolved": "https://registry.npmjs.org/micromustache/-/micromustache-8.0.3.tgz",
|
||||
"integrity": "sha512-SXjrEPuYNtWq0reR9LR2nHdzdQx/3re9HPcDGjm00L7hi2RsH5KMRBhYEBvPdyQC51RW/2TznjwX/sQLPPyHNw==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/userpixel/micromustache/blob/master/.github/FUNDING.yml"
|
||||
}
|
||||
},
|
||||
"node_modules/mime": {
|
||||
"version": "1.6.0",
|
||||
"resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
|
||||
|
||||
@@ -48,6 +48,7 @@
|
||||
"lodash": "^4.17.21",
|
||||
"merge-stream": "^2.0.0",
|
||||
"method-override": "^3.0.0",
|
||||
"micromustache": "^8.0.3",
|
||||
"moment": "^2.29.4",
|
||||
"moment-recur": "git://github.com/HabitRPG/moment-recur.git#d3e8e6da0806f13b74dd2e4d7d9053e6a63db119",
|
||||
"mongoose": "^8.9.5",
|
||||
|
||||
@@ -1,12 +1,7 @@
|
||||
import { STRING_ERROR_MSG, STRING_DOES_NOT_EXIST_MSG } from '../helpers/content.helper';
|
||||
import { STRING_DOES_NOT_EXIST_MSG } from '../helpers/content.helper';
|
||||
import translator from '../../website/common/script/content/translation';
|
||||
|
||||
describe('Translator', () => {
|
||||
it('returns error message if string is not properly formatted', () => {
|
||||
const improperlyFormattedString = translator('petName', { attr: 0 })();
|
||||
expect(improperlyFormattedString).to.match(STRING_ERROR_MSG);
|
||||
});
|
||||
|
||||
it('returns an error message if string does not exist', () => {
|
||||
const stringDoesNotExist = translator('stringDoesNotExist')();
|
||||
expect(stringDoesNotExist).to.match(STRING_DOES_NOT_EXIST_MSG);
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import i18n from '../../website/common/script/i18n';
|
||||
import './globals.helper';
|
||||
import { translations } from '../../website/server/libs/i18n';
|
||||
import { contentTranslations } from '../../website/server/libs/i18n';
|
||||
|
||||
i18n.translations = translations;
|
||||
i18n.translations = contentTranslations;
|
||||
|
||||
export const STRING_ERROR_MSG = /^Error processing the string ".*". Please see Help > Report a Bug.$/;
|
||||
export const STRING_DOES_NOT_EXIST_MSG = /^String '.*' not found.$/;
|
||||
|
||||
@@ -32,6 +32,6 @@
|
||||
|
||||
<script type="text/javascript" src="//cloudfront.loggly.com/js/loggly.tracker-latest.min.js" async></script>
|
||||
<!-- Translations -->
|
||||
<script type='text/javascript' src='/api/v4/i18n/browser-script' vite-ignore></script>
|
||||
<script type='text/javascript' src='/api/v4/i18n/core' vite-ignore></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
Generated
+13
@@ -29,6 +29,7 @@
|
||||
"jquery": "^3.7.1",
|
||||
"lodash": "^4.17.21",
|
||||
"markdown-it": "^14.0.0",
|
||||
"micromustache": "^8.0.3",
|
||||
"moment": "^2.29.4",
|
||||
"nconf": "^0.12.1",
|
||||
"sass": "^1.63.4",
|
||||
@@ -6412,6 +6413,18 @@
|
||||
"integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/micromustache": {
|
||||
"version": "8.0.3",
|
||||
"resolved": "https://registry.npmjs.org/micromustache/-/micromustache-8.0.3.tgz",
|
||||
"integrity": "sha512-SXjrEPuYNtWq0reR9LR2nHdzdQx/3re9HPcDGjm00L7hi2RsH5KMRBhYEBvPdyQC51RW/2TznjwX/sQLPPyHNw==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/userpixel/micromustache/blob/master/.github/FUNDING.yml"
|
||||
}
|
||||
},
|
||||
"node_modules/mime-db": {
|
||||
"version": "1.52.0",
|
||||
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
|
||||
|
||||
@@ -33,6 +33,7 @@
|
||||
"jquery": "^3.7.1",
|
||||
"lodash": "^4.17.21",
|
||||
"markdown-it": "^14.0.0",
|
||||
"micromustache": "^8.0.3",
|
||||
"moment": "^2.29.4",
|
||||
"nconf": "^0.12.1",
|
||||
"sass": "^1.63.4",
|
||||
|
||||
@@ -268,7 +268,6 @@ export default {
|
||||
this.$store.dispatch('user:fetch'),
|
||||
this.$store.dispatch('tasks:fetchUserTasks'),
|
||||
]).then(() => {
|
||||
this.$store.state.isUserLoaded = true;
|
||||
let analyticsConsent = localStorage.getItem('analyticsConsent');
|
||||
if (analyticsConsent !== null) {
|
||||
analyticsConsent = analyticsConsent === 'true';
|
||||
@@ -276,31 +275,11 @@ export default {
|
||||
this.$store.dispatch('user:set', { 'preferences.analyticsConsent': analyticsConsent });
|
||||
}
|
||||
}
|
||||
if (window && window['habitica-i18n']) {
|
||||
if (this.user.preferences.language === window['habitica-i18n'].language.code) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
if (window && window['habitica-i18n']) {
|
||||
if (this.user.preferences.language === window['habitica-i18n'].language.code) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
Analytics.updateUser();
|
||||
return axios.get(
|
||||
'/api/v4/i18n/browser-script',
|
||||
{
|
||||
language: this.user.preferences.language,
|
||||
headers: {
|
||||
'Cache-Control': 'no-cache',
|
||||
Pragma: 'no-cache',
|
||||
Expires: '0',
|
||||
},
|
||||
},
|
||||
);
|
||||
return this.loadAllTranslations();
|
||||
}).then(() => {
|
||||
const i18nData = window && window['habitica-i18n'];
|
||||
this.$loadLocale(i18nData);
|
||||
this.$store.state.isUserLoaded = true;
|
||||
this.hideLoadingScreen();
|
||||
|
||||
// Adjust the timezone offset
|
||||
@@ -380,6 +359,36 @@ export default {
|
||||
hideLoadingScreen () {
|
||||
this.loading = false;
|
||||
},
|
||||
async loadContentTranslations () {
|
||||
const contentTranslations = await axios.get(
|
||||
'/api/v4/i18n/content',
|
||||
{
|
||||
language: this.user.preferences.language,
|
||||
},
|
||||
);
|
||||
const i18nData = window && window['habitica-i18n'];
|
||||
i18nData.strings = { ...i18nData.strings, ...contentTranslations.data };
|
||||
this.$loadLocale(i18nData);
|
||||
},
|
||||
async loadAllTranslations () {
|
||||
if (window && window['habitica-i18n']) {
|
||||
if (this.user.preferences.language === window['habitica-i18n'].language.code) {
|
||||
return this.loadContentTranslations();
|
||||
}
|
||||
}
|
||||
await axios.get(
|
||||
'/api/v4/i18n/core',
|
||||
{
|
||||
language: this.user.preferences.language,
|
||||
headers: {
|
||||
'Cache-Control': 'no-cache',
|
||||
Pragma: 'no-cache',
|
||||
Expires: '0',
|
||||
},
|
||||
},
|
||||
);
|
||||
return this.loadContentTranslations();
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
@@ -182,7 +182,7 @@
|
||||
"questEggVelociraptorText": "Велоцираптор",
|
||||
"questEggVelociraptorMountText": "Велоцираптор",
|
||||
"questEggVelociraptorAdjective": "умен",
|
||||
"eggNotes": "Намерете излюпваща отвара, която да излеете върху това яйце и от него ще се излюпи <%= eggAdjective(locale) %> <%= eggText(locale) %>.",
|
||||
"eggNotes": "Намерете излюпваща отвара, която да излеете върху това яйце и от него ще се излюпи <%= eggAdjective %> <%= eggText %>.",
|
||||
"hatchingPotionBase": "Нормален цвят",
|
||||
"hatchingPotionWhite": "Бял цвят",
|
||||
"hatchingPotionDesert": "Пустинен цвят",
|
||||
@@ -211,7 +211,7 @@
|
||||
"hatchingPotionGlow": "Светещо в тъмното",
|
||||
"hatchingPotionFrost": "Скреж",
|
||||
"hatchingPotionIcySnow": "Леден сняг",
|
||||
"hatchingPotionNotes": "Излейте това върху яйце и от него ще се излюпи любимец с(ъс) <%= potText(locale) %>.",
|
||||
"hatchingPotionNotes": "Излейте това върху яйце и от него ще се излюпи любимец с(ъс) <%= potText %>.",
|
||||
"foodMeat": "Месо",
|
||||
"foodMeatThe": "Месото",
|
||||
"foodMeatA": "Месо",
|
||||
|
||||
@@ -66,8 +66,8 @@
|
||||
"mountNotOwned": "Не притежавате този прево.",
|
||||
"feedPet": "Искате ли да дадете <%= text %> на <%= name %>?",
|
||||
"raisedPet": "Вие отгледахте <%= pet %>!",
|
||||
"petName": "<%= egg(locale) %> с(ъс) <%= potion(locale) %>",
|
||||
"mountName": "<%= mount(locale) %> с(ъс) <%= potion(locale) %>",
|
||||
"petName": "<%= egg %> с(ъс) <%= potion %>",
|
||||
"mountName": "<%= mount %> с(ъс) <%= potion %>",
|
||||
"keyToPets": "Ключ от зверилника за любимци",
|
||||
"keyToPetsDesc": "Освобождаване на всички стандартни любимци, за да можете да ги съберете отново. (Това не засяга любимците от мисии и редките любимци.)",
|
||||
"keyToMounts": "Ключ от зверилника за превози",
|
||||
|
||||
@@ -182,7 +182,7 @@
|
||||
"questEggVelociraptorText": "Velociraptor",
|
||||
"questEggVelociraptorMountText": "Velociraptor",
|
||||
"questEggVelociraptorAdjective": "chytrý",
|
||||
"eggNotes": "Najdi líhnoucí lektvar, nalij ho na vejce a to se vylíhne v <%= eggAdjective(locale) %> <%= eggText(locale) %>.",
|
||||
"eggNotes": "Najdi líhnoucí lektvar, nalij ho na vejce a to se vylíhne v <%= eggAdjective %> <%= eggText %>.",
|
||||
"hatchingPotionBase": "Základní",
|
||||
"hatchingPotionWhite": "Bílý",
|
||||
"hatchingPotionDesert": "Pouštní",
|
||||
@@ -211,7 +211,7 @@
|
||||
"hatchingPotionGlow": "Ve tmě svítící",
|
||||
"hatchingPotionFrost": "Zmrzlý",
|
||||
"hatchingPotionIcySnow": "Ledově Sněhový",
|
||||
"hatchingPotionNotes": "Nalij ho na vejce a vylíhne se ti <%= potText(locale) %> mazlíček.",
|
||||
"hatchingPotionNotes": "Nalij ho na vejce a vylíhne se ti <%= potText %> mazlíček.",
|
||||
"foodMeat": "Maso",
|
||||
"foodMeatThe": "Maso",
|
||||
"foodMeatA": "Maso",
|
||||
|
||||
@@ -66,8 +66,8 @@
|
||||
"mountNotOwned": "Nevlastníš toto jezdecké zvíře.",
|
||||
"feedPet": "Dát <%= text %> svému <%= name %>?",
|
||||
"raisedPet": "Vychoval jsi svého <%= pet %>!",
|
||||
"petName": "<%= potion(locale) %> <%= egg(locale) %>",
|
||||
"mountName": "<%= potion(locale) %> <%= mount(locale) %>",
|
||||
"petName": "<%= potion %> <%= egg %>",
|
||||
"mountName": "<%= potion %> <%= mount %>",
|
||||
"keyToPets": "Klíč ke Kotcům Mazlíčků",
|
||||
"keyToPetsDesc": "Propusť všechny své běžné mazlíčky abys je mohl sbírat znovu. (Ti vzácní a z výprav tím nebudou ovlivněni.)",
|
||||
"keyToMounts": "Klíč ke Kotcům Zvířat",
|
||||
|
||||
@@ -182,7 +182,7 @@
|
||||
"questEggVelociraptorText": "Velociraptor",
|
||||
"questEggVelociraptorMountText": "Velociraptor",
|
||||
"questEggVelociraptorAdjective": "en vaks",
|
||||
"eggNotes": "Find en udrugningseliksir til at hælde på dit æg, og det vil udklække <%= eggAdjective(locale) %> <%= eggText(locale) %>.",
|
||||
"eggNotes": "Find en udrugningseliksir til at hælde på dit æg, og det vil udklække <%= eggAdjective %> <%= eggText %>.",
|
||||
"hatchingPotionBase": "Almindelig",
|
||||
"hatchingPotionWhite": "Hvid",
|
||||
"hatchingPotionDesert": "Ørken",
|
||||
@@ -211,7 +211,7 @@
|
||||
"hatchingPotionGlow": "Selvlysende",
|
||||
"hatchingPotionFrost": "Frost",
|
||||
"hatchingPotionIcySnow": "Isnende sne",
|
||||
"hatchingPotionNotes": "Hæld denne over et æg, og det vil udklækkes til et <%= potText(locale) %> kæledyr.",
|
||||
"hatchingPotionNotes": "Hæld denne over et æg, og det vil udklækkes til et <%= potText %> kæledyr.",
|
||||
"foodMeat": "Kød",
|
||||
"foodMeatThe": "Kødet",
|
||||
"foodMeatA": "Kød",
|
||||
|
||||
@@ -66,8 +66,8 @@
|
||||
"mountNotOwned": "Du ejer ikke dette ridedyr.",
|
||||
"feedPet": "Giv <%= text %> til din <%= name %>?",
|
||||
"raisedPet": "Du har opdrættet din/dit <%= pet %>!",
|
||||
"petName": "<%= potion(locale) %> <%= egg(locale) %>",
|
||||
"mountName": "<%= potion(locale) %>-<%= mount(locale) %>",
|
||||
"petName": "<%= potion %> <%= egg %>",
|
||||
"mountName": "<%= potion %>-<%= mount %>",
|
||||
"keyToPets": "Nøgle til Kæledyrskennelen",
|
||||
"keyToPetsDesc": "Sæt alle standardkæledyrene fri, så du kan samle dem igen. (Kæledyr fra quests og sjældne kæledyr påvirkes ikke.)",
|
||||
"keyToMounts": "Nøgle til Ridedyrskennelen",
|
||||
|
||||
@@ -182,7 +182,7 @@
|
||||
"questEggVelociraptorText": "Velociraptor-Haustier",
|
||||
"questEggVelociraptorMountText": "Velociraptor-Reittier",
|
||||
"questEggVelociraptorAdjective": "ein cleveres",
|
||||
"eggNotes": "Finde ein Schlüpfelixier, das Du über dieses Ei gießen kannst, damit ein <%= eggAdjective(locale) %> <%= eggText(locale) %> schlüpfen kann.",
|
||||
"eggNotes": "Finde ein Schlüpfelixier, das Du über dieses Ei gießen kannst, damit ein <%= eggAdjective %> <%= eggText %> schlüpfen kann.",
|
||||
"hatchingPotionBase": "Normales",
|
||||
"hatchingPotionWhite": "Weißes",
|
||||
"hatchingPotionDesert": "Wüstenfarbenes",
|
||||
@@ -211,7 +211,7 @@
|
||||
"hatchingPotionGlow": "Fluoreszierendes",
|
||||
"hatchingPotionFrost": "Frostiges",
|
||||
"hatchingPotionIcySnow": "Eisschnee",
|
||||
"hatchingPotionNotes": "Gieße dies über ein Ei und es wird ein <%= potText(locale) %> Haustier daraus schlüpfen.",
|
||||
"hatchingPotionNotes": "Gieße dies über ein Ei und es wird ein <%= potText %> Haustier daraus schlüpfen.",
|
||||
"foodMeat": "Fleisch",
|
||||
"foodMeatThe": "das Fleisch",
|
||||
"foodMeatA": "Fleisch",
|
||||
@@ -406,7 +406,7 @@
|
||||
"hatchingPotionBalloon": "Ballon",
|
||||
"wackyPotionAddlNotes": "Kann nicht zum Reittier großgezogen oder für Quest-Haustier Eier benutzt werden.",
|
||||
"hatchingPotionCryptid": "Kryptisch",
|
||||
"wackyPotionNotes": "Schütte dies über ein Ei und es wird als Durchgeknalltes <%= potText(locale) %> Haustier schlüpfen.",
|
||||
"wackyPotionNotes": "Schütte dies über ein Ei und es wird als Durchgeknalltes <%= potText %> Haustier schlüpfen.",
|
||||
"questEggPlatypusText": "Schnabeltier",
|
||||
"questEggPlatypusMountText": "Schnabeltier",
|
||||
"questEggPlatypusAdjective": "ein Perfektionist",
|
||||
|
||||
@@ -66,8 +66,8 @@
|
||||
"mountNotOwned": "Du besitzt dieses Reittier nicht.",
|
||||
"feedPet": "<%= text %> an <%= name %> verfüttern?",
|
||||
"raisedPet": "Du hast ein <%= pet %> aufgezogen!",
|
||||
"petName": "<%= potion(locale) %> <%= egg(locale) %>",
|
||||
"mountName": "<%= potion(locale) %> <%= mount(locale) %>",
|
||||
"petName": "<%= potion %> <%= egg %>",
|
||||
"mountName": "<%= potion %> <%= mount %>",
|
||||
"keyToPets": "Schlüssel zu den Haustier-Zwingern",
|
||||
"keyToPetsDesc": "Lässt alle Standard-Haustiere frei, so dass Du sie erneut sammeln kannst. (Quest- und seltene Haustiere sind nicht betroffen.)",
|
||||
"keyToMounts": "Schlüssel zu den Reittier-Zwingern",
|
||||
|
||||
@@ -287,7 +287,7 @@
|
||||
"questEggPlatypusMountText": "Platypus",
|
||||
"questEggPlatypusAdjective": "a perfectionist",
|
||||
|
||||
"eggNotes": "Find a hatching potion to pour on this egg, and it will hatch into <%= eggAdjective(locale) %> <%= eggText(locale) %>.",
|
||||
"eggNotes": "Find a hatching potion to pour on this egg, and it will hatch into <%= eggAdjective %> <%= eggText %>.",
|
||||
|
||||
"hatchingPotionBase": "Base",
|
||||
"hatchingPotionWhite": "White",
|
||||
@@ -357,9 +357,9 @@
|
||||
"hatchingPotionCryptid": "Cryptid",
|
||||
"hatchingPotionOpal": "Opal",
|
||||
|
||||
"hatchingPotionNotes": "Pour this on an egg, and it will hatch as a <%= potText(locale) %> Pet.",
|
||||
"hatchingPotionNotes": "Pour this on an egg, and it will hatch as a <%= potText %> Pet.",
|
||||
"premiumPotionUnlimitedNotes": "Not usable on Quest Pet eggs.",
|
||||
"wackyPotionNotes": "Pour this on an egg, and it will hatch as a Wacky <%= potText(locale) %> Pet.",
|
||||
"wackyPotionNotes": "Pour this on an egg, and it will hatch as a Wacky <%= potText %> Pet.",
|
||||
"wackyPotionAddlNotes": "Cannot be raised to Mounts or used on Quest Pet eggs.",
|
||||
|
||||
"foodMeat": "Meat",
|
||||
|
||||
@@ -71,8 +71,8 @@
|
||||
"mountNotOwned": "You do not own this mount.",
|
||||
"feedPet": "Feed <%= text %> to your <%= name %>?",
|
||||
"raisedPet": "You grew your <%= pet %>!",
|
||||
"petName": "<%= potion(locale) %> <%= egg(locale) %>",
|
||||
"mountName": "<%= potion(locale) %> <%= mount(locale) %>",
|
||||
"petName": "<%= potion %> <%= egg %>",
|
||||
"mountName": "<%= potion %> <%= mount %>",
|
||||
"keyToPets": "Key to the Pet Kennels",
|
||||
"keyToPetsDesc": "Release all standard Pets so you can collect them again. (Quest Pets and rare Pets are not affected.)",
|
||||
"keyToMounts": "Key to the Mount Kennels",
|
||||
|
||||
@@ -182,7 +182,7 @@
|
||||
"questEggVelociraptorText": "Velociraptor",
|
||||
"questEggVelociraptorMountText": "Velociraptor",
|
||||
"questEggVelociraptorAdjective": "a clever",
|
||||
"eggNotes": "Find a hatching potion to pour on this egg, and it will hatch into <%= eggAdjective(locale) %> <%= eggText(locale) %>.",
|
||||
"eggNotes": "Find a hatching potion to pour on this egg, and it will hatch into <%= eggAdjective %> <%= eggText %>.",
|
||||
"hatchingPotionBase": "Base",
|
||||
"hatchingPotionWhite": "White",
|
||||
"hatchingPotionDesert": "Desert",
|
||||
@@ -211,7 +211,7 @@
|
||||
"hatchingPotionGlow": "Glow-in-the-Dark",
|
||||
"hatchingPotionFrost": "Frost",
|
||||
"hatchingPotionIcySnow": "Icy Snow",
|
||||
"hatchingPotionNotes": "Pour this on an egg, and it will hatch as a <%= potText(locale) %> Pet.",
|
||||
"hatchingPotionNotes": "Pour this on an egg, and it will hatch as a <%= potText %> Pet.",
|
||||
"foodMeat": "Meat",
|
||||
"foodMeatThe": "the Meat",
|
||||
"foodMeatA": "Meat",
|
||||
@@ -406,7 +406,7 @@
|
||||
"hatchingPotionBalloon": "Balloon",
|
||||
"hatchingPotionCryptid": "Cryptid",
|
||||
"wackyPotionAddlNotes": "Cannot be raised to Mounts or used on Quest Pet eggs.",
|
||||
"wackyPotionNotes": "Pour this on an egg, and it will hatch as a Wacky <%= potText(locale) %> Pet.",
|
||||
"wackyPotionNotes": "Pour this on an egg, and it will hatch as a Wacky <%= potText %> Pet.",
|
||||
"questEggPlatypusText": "Platypus",
|
||||
"questEggPlatypusMountText": "Platypus",
|
||||
"questEggPlatypusAdjective": "a perfectionist",
|
||||
|
||||
@@ -66,8 +66,8 @@
|
||||
"mountNotOwned": "You do not own this mount.",
|
||||
"feedPet": "Feed <%= text %> to your <%= name %>?",
|
||||
"raisedPet": "You grew your <%= pet %>!",
|
||||
"petName": "<%= potion(locale) %> <%= egg(locale) %>",
|
||||
"mountName": "<%= potion(locale) %> <%= mount(locale) %>",
|
||||
"petName": "<%= potion %> <%= egg %>",
|
||||
"mountName": "<%= potion %> <%= mount %>",
|
||||
"keyToPets": "Key to the Pet Kennels",
|
||||
"keyToPetsDesc": "Release all standard Pets so you can collect them again. (Quest Pets and rare Pets are not affected.)",
|
||||
"keyToMounts": "Key to the Mount Kennels",
|
||||
|
||||
@@ -182,7 +182,7 @@
|
||||
"questEggVelociraptorText": "Velociraptor",
|
||||
"questEggVelociraptorMountText": "Velociraptor",
|
||||
"questEggVelociraptorAdjective": "un ingenioso",
|
||||
"eggNotes": "Encuentra una poción de eclosión para verter en este huevo y eclosionará en <%= eggAdjective(locale) %> <%= eggText(locale) %>.",
|
||||
"eggNotes": "Encuentra una poción de eclosión para verter en este huevo y eclosionará en <%= eggAdjective %> <%= eggText %>.",
|
||||
"hatchingPotionBase": "Base",
|
||||
"hatchingPotionWhite": "Blanco",
|
||||
"hatchingPotionDesert": "del Desierto",
|
||||
@@ -211,7 +211,7 @@
|
||||
"hatchingPotionGlow": "que brilla en la oscuridad",
|
||||
"hatchingPotionFrost": "Escarcha",
|
||||
"hatchingPotionIcySnow": "Nieve Glacial",
|
||||
"hatchingPotionNotes": "Vierte esto en un huevo y eclosionará como una Mascota <%= potText(locale) %>.",
|
||||
"hatchingPotionNotes": "Vierte esto en un huevo y eclosionará como una Mascota <%= potText %>.",
|
||||
"foodMeat": "Carne",
|
||||
"foodMeatThe": "La Carne",
|
||||
"foodMeatA": "Carne",
|
||||
@@ -405,7 +405,7 @@
|
||||
"hatchingPotionBalloon": "Globo",
|
||||
"questEggAlpacaAdjective": "una colmada",
|
||||
"hatchingPotionCryptid": "Críptido",
|
||||
"wackyPotionNotes": "Vierte esto en un huevo y eclosionará como una Mascota Absurda <%= potText(locale) %>.",
|
||||
"wackyPotionNotes": "Vierte esto en un huevo y eclosionará como una Mascota Absurda <%= potText %>.",
|
||||
"wackyPotionAddlNotes": "No puede convertirse en una Montura o usarse en huevos de Mascotas de Misión.",
|
||||
"questEggPlatypusMountText": "Marsupial",
|
||||
"hatchingPotionOpal": "Ópalo",
|
||||
|
||||
@@ -66,8 +66,8 @@
|
||||
"mountNotOwned": "No tienes esta montura.",
|
||||
"feedPet": "¿Dar de comer <%= text %> a tu <%= name %>?",
|
||||
"raisedPet": "¡Creciste tu <%= pet %>!",
|
||||
"petName": "<%= egg(locale) %> <%= potion(locale) %>",
|
||||
"mountName": "<%= mount(locale) %> <%= potion(locale) %>",
|
||||
"petName": "<%= egg %> <%= potion %>",
|
||||
"mountName": "<%= mount %> <%= potion %>",
|
||||
"keyToPets": "Llave a las Casetas de las Mascotas",
|
||||
"keyToPetsDesc": "Libera todas las mascotas estándar para coleccionarlas de nuevo. (Las mascotas de misión y las raras no se verán afectadas.)",
|
||||
"keyToMounts": "Llave a las Casetas de las Monturas",
|
||||
|
||||
@@ -182,7 +182,7 @@
|
||||
"questEggVelociraptorText": "Velociraptor",
|
||||
"questEggVelociraptorMountText": "Velociraptor",
|
||||
"questEggVelociraptorAdjective": "un inteligente",
|
||||
"eggNotes": "Encuentra una poción de eclosión para verter sobre este huevo y se convertirá en <%= eggAdjective(locale) %> <%= eggText(locale) %>.",
|
||||
"eggNotes": "Encuentra una poción de eclosión para verter sobre este huevo y se convertirá en <%= eggAdjective %> <%= eggText %>.",
|
||||
"hatchingPotionBase": "Base",
|
||||
"hatchingPotionWhite": "Blanco",
|
||||
"hatchingPotionDesert": "Desierto",
|
||||
@@ -211,7 +211,7 @@
|
||||
"hatchingPotionGlow": "Fosforescente",
|
||||
"hatchingPotionFrost": "Escarcha",
|
||||
"hatchingPotionIcySnow": "Nieve Helada",
|
||||
"hatchingPotionNotes": "Vierte esto sobre un huevo, y nacerá una mascota <%= potText(locale) %>.",
|
||||
"hatchingPotionNotes": "Vierte esto sobre un huevo, y nacerá una mascota <%= potText %>.",
|
||||
"foodMeat": "Carne",
|
||||
"foodMeatThe": "la Carne",
|
||||
"foodMeatA": "Carne",
|
||||
|
||||
@@ -66,8 +66,8 @@
|
||||
"mountNotOwned": "No tienes esta montura.",
|
||||
"feedPet": "¿Dar de comer <%= text %> a tu <%= name %>?",
|
||||
"raisedPet": "¡Hiciste crecer tu <%= pet %>!",
|
||||
"petName": "<%= egg(locale) %> <%= potion(locale) %>",
|
||||
"mountName": "<%= mount(locale) %> <%= potion(locale) %>",
|
||||
"petName": "<%= egg %> <%= potion %>",
|
||||
"mountName": "<%= mount %> <%= potion %>",
|
||||
"keyToPets": "Llave de las Casetas de Mascotas",
|
||||
"keyToPetsDesc": "Libera todas las Mascotas estándar para poder coleccionarlas de nuevo. (Las Mascotas de Misión y las raras no son afectadas.)",
|
||||
"keyToMounts": "Llave de las Casetas de Monturas",
|
||||
|
||||
@@ -182,7 +182,7 @@
|
||||
"questEggVelociraptorText": "Vélociraptor",
|
||||
"questEggVelociraptorMountText": "Vélociraptor",
|
||||
"questEggVelociraptorAdjective": "un intelligent",
|
||||
"eggNotes": "Trouvez une potion d’éclosion à verser sur cet œuf et il en sortira <%= eggAdjective(locale) %> bébé <%= eggText(locale) %>.",
|
||||
"eggNotes": "Trouvez une potion d’éclosion à verser sur cet œuf et il en sortira <%= eggAdjective %> bébé <%= eggText %>.",
|
||||
"hatchingPotionBase": "de base",
|
||||
"hatchingPotionWhite": "des neiges",
|
||||
"hatchingPotionDesert": "du désert",
|
||||
@@ -211,7 +211,7 @@
|
||||
"hatchingPotionGlow": "phosphorescent",
|
||||
"hatchingPotionFrost": "du gel",
|
||||
"hatchingPotionIcySnow": "de neige verglacée",
|
||||
"hatchingPotionNotes": "Versez-la sur un œuf et il en sortira un Familier <%= potText(locale) %>.",
|
||||
"hatchingPotionNotes": "Versez-la sur un œuf et il en sortira un Familier <%= potText %>.",
|
||||
"foodMeat": "Côtelette",
|
||||
"foodMeatThe": "la côtelette",
|
||||
"foodMeatA": "une côtelette",
|
||||
@@ -406,7 +406,7 @@
|
||||
"hatchingPotionBalloon": "Ballon",
|
||||
"wackyPotionAddlNotes": "Ne peut se transformer en Monture ni être utilisée sur les œufs de Familier de Quête.",
|
||||
"hatchingPotionCryptid": "Cyptide",
|
||||
"wackyPotionNotes": "Versez-la sur un œuf et il en sortira un Familier <%= potText(locale) %> Farfelu.",
|
||||
"wackyPotionNotes": "Versez-la sur un œuf et il en sortira un Familier <%= potText %> Farfelu.",
|
||||
"questEggPlatypusText": "Ornithorynque",
|
||||
"questEggPlatypusMountText": "Ornithorynque",
|
||||
"questEggPlatypusAdjective": "organisé",
|
||||
|
||||
@@ -66,8 +66,8 @@
|
||||
"mountNotOwned": "Vous ne possédez pas cette monture.",
|
||||
"feedPet": "Donner cette <%= text %> à votre <%= name %> ?",
|
||||
"raisedPet": "Votre <%= pet %> a bien grandi !",
|
||||
"petName": "bébé <%= egg(locale) %> <%= potion(locale) %>",
|
||||
"mountName": "<%= mount(locale) %> <%= potion(locale) %>",
|
||||
"petName": "bébé <%= egg %> <%= potion %>",
|
||||
"mountName": "<%= mount %> <%= potion %>",
|
||||
"keyToPets": "Clé du chenil des familiers",
|
||||
"keyToPetsDesc": "Libère tous les familiers standards pour vous puissiez les collectionner à nouveau. (Les familiers rares et de quêtes ne sont pas affectés.)",
|
||||
"keyToMounts": "Clé du chenil des montures",
|
||||
|
||||
@@ -182,7 +182,7 @@
|
||||
"questEggVelociraptorText": "ולוצירפטור",
|
||||
"questEggVelociraptorMountText": "ולוצירפטור",
|
||||
"questEggVelociraptorAdjective": "פיקח",
|
||||
"eggNotes": "מצא שיקוי הבקעה לשפוך על ביצה זו, והיא תהפוך ל<%= eggText(locale) %> <%= eggAdjective(locale) %>.",
|
||||
"eggNotes": "מצא שיקוי הבקעה לשפוך על ביצה זו, והיא תהפוך ל<%= eggText %> <%= eggAdjective %>.",
|
||||
"hatchingPotionBase": "רגיל",
|
||||
"hatchingPotionWhite": "לבן",
|
||||
"hatchingPotionDesert": "מדברי",
|
||||
@@ -211,7 +211,7 @@
|
||||
"hatchingPotionGlow": "זוהר-בחושך",
|
||||
"hatchingPotionFrost": "כפור",
|
||||
"hatchingPotionIcySnow": "שלג קרחי",
|
||||
"hatchingPotionNotes": "שפוך שיקוי זה על הביצה, והיא תבקע כ <%= potText(locale) %> חיית מחמד.",
|
||||
"hatchingPotionNotes": "שפוך שיקוי זה על הביצה, והיא תבקע כ <%= potText %> חיית מחמד.",
|
||||
"foodMeat": "בשר",
|
||||
"foodMeatThe": "הבשר",
|
||||
"foodMeatA": "בשר",
|
||||
|
||||
@@ -66,7 +66,7 @@
|
||||
"mountNotOwned": "חיית רכיבה זו אינה בבעלותך.",
|
||||
"feedPet": "האכילו את <%= name %> ב<%= text %>?",
|
||||
"raisedPet": "ה <%= pet %> שלכם גדל/ה!",
|
||||
"petName": "<%= potion(locale) %> מ<%= egg(locale) %>",
|
||||
"petName": "<%= potion %> מ<%= egg %>",
|
||||
"mountName": "",
|
||||
"keyToPets": "מפתח למאורות של חיות המחמד",
|
||||
"keyToPetsDesc": "שחררו את כל חיות המחמד הבסיסיות כדי שתוכלו לאסוף אותם שוב. (חיות מחמד מהרפתקאות וחיות מחמד נדירות לא ישוחררו.)",
|
||||
|
||||
@@ -182,7 +182,7 @@
|
||||
"questEggVelociraptorText": "Velociraptor",
|
||||
"questEggVelociraptorMountText": "Velociraptor",
|
||||
"questEggVelociraptorAdjective": "oštroumni",
|
||||
"eggNotes": "Pronađite napitak za izlijeganje koji ćete izliti na ovo jaje, i ono će se izleći u <%= eggAdjective(locale) %> <%= eggText(locale) %>.",
|
||||
"eggNotes": "Pronađite napitak za izlijeganje koji ćete izliti na ovo jaje, i ono će se izleći u <%= eggAdjective %> <%= eggText %>.",
|
||||
"hatchingPotionBase": "Osnovni",
|
||||
"hatchingPotionWhite": "Bijeli",
|
||||
"hatchingPotionDesert": "Pustinjski",
|
||||
@@ -211,7 +211,7 @@
|
||||
"hatchingPotionGlow": "Svijetleći",
|
||||
"hatchingPotionFrost": "Mrzli",
|
||||
"hatchingPotionIcySnow": "Ledeni snijeg",
|
||||
"hatchingPotionNotes": "Izlijte ovo na jaje, i ono će se izleći kao <%= potText(locale) %> Ljubimac.",
|
||||
"hatchingPotionNotes": "Izlijte ovo na jaje, i ono će se izleći kao <%= potText %> Ljubimac.",
|
||||
"foodMeat": "Meso",
|
||||
"foodMeatThe": "Meso",
|
||||
"foodMeatA": "Meso",
|
||||
@@ -373,7 +373,7 @@
|
||||
"hatchingPotionFungi": "Gljivičasti",
|
||||
"hatchingPotionCryptid": "Kriptidni",
|
||||
"hatchingPotionOpal": "Sedefast",
|
||||
"wackyPotionNotes": "Izlijte ovo na jaje, i ono će se izleći kao Otkačeni <%= potText(locale) %> Ljubimac.",
|
||||
"wackyPotionNotes": "Izlijte ovo na jaje, i ono će se izleći kao Otkačeni <%= potText %> Ljubimac.",
|
||||
"wackyPotionAddlNotes": "Ne može se pretvoriti u Jahaću životinju niti koristiti na jajima ljubimaca za pustolovine.",
|
||||
"premiumPotionUnlimitedNotes": "Nije upotrebljivo na jajima ljubimaca pustolovine.",
|
||||
"hatchingPotionOnyx": "Oniksov",
|
||||
|
||||
@@ -55,8 +55,8 @@
|
||||
"beastAchievement": "Zaslužili ste postignuće \"Gospodar Zvijeri\" jer ste prikupili sve ljubimce!",
|
||||
"beastMasterName": "Gospodar Zvijeri",
|
||||
"mountMasterProgress": "Napredak Gospodara Jahaćih Životinja",
|
||||
"petName": "<%= potion(locale) %> <%= egg(locale) %>",
|
||||
"mountName": "<%= potion(locale) %> <%= mount(locale) %>",
|
||||
"petName": "<%= potion %> <%= egg %>",
|
||||
"mountName": "<%= potion %> <%= mount %>",
|
||||
"beastMasterProgress": "Napredak Gospodara Zvijeri",
|
||||
"beastMasterText": "Ova osoba pronašla je svih 90 ljubimaca (a to je jako teško, čestitajte joj)",
|
||||
"mountAchievement": "Zaslužili ste postignuće \"Gospodar Jahaćih Životinja\" za pripitomljivanje svih jahaćih životinja!",
|
||||
|
||||
@@ -182,7 +182,7 @@
|
||||
"questEggVelociraptorText": "Velociraptor",
|
||||
"questEggVelociraptorMountText": "Velociraptor",
|
||||
"questEggVelociraptorAdjective": "egy okos",
|
||||
"eggNotes": "Keress egy keltetőfőzetet, és öntsd rá erre a tojásra – így kikel belőle egy <%= eggAdjective(locale) %> <%= eggText(locale) %>.",
|
||||
"eggNotes": "Keress egy keltetőfőzetet, és öntsd rá erre a tojásra – így kikel belőle egy <%= eggAdjective %> <%= eggText %>.",
|
||||
"hatchingPotionBase": "Alap",
|
||||
"hatchingPotionWhite": "Fehér",
|
||||
"hatchingPotionDesert": "Sivatag",
|
||||
@@ -211,7 +211,7 @@
|
||||
"hatchingPotionGlow": "Sötétben világító",
|
||||
"hatchingPotionFrost": "Jég",
|
||||
"hatchingPotionIcySnow": "Jeges hó",
|
||||
"hatchingPotionNotes": "Öntsd ezt egy tojásra, és egy <%= potText(locale) %> kisállat fog belőle kikelni.",
|
||||
"hatchingPotionNotes": "Öntsd ezt egy tojásra, és egy <%= potText %> kisállat fog belőle kikelni.",
|
||||
"foodMeat": "Hús",
|
||||
"foodMeatThe": "a hús",
|
||||
"foodMeatA": "Hús",
|
||||
@@ -406,7 +406,7 @@
|
||||
"hatchingPotionBalloon": "Léggömb",
|
||||
"wackyPotionAddlNotes": "Nem lehet hátassá fejleszteni, és küldetéses kisállat tojásra sem használható.",
|
||||
"hatchingPotionCryptid": "Kriptid",
|
||||
"wackyPotionNotes": "Öntsd ezt egy tojásra, és egy bolondos <%= potText(locale) %> kisállat fog kikelni belőle.",
|
||||
"wackyPotionNotes": "Öntsd ezt egy tojásra, és egy bolondos <%= potText %> kisállat fog kikelni belőle.",
|
||||
"questEggPlatypusText": "Kacsacsőrű emlős",
|
||||
"questEggPlatypusAdjective": "egy maximalista",
|
||||
"questEggPlatypusMountText": "Kacsacsőrű emlős",
|
||||
|
||||
@@ -66,8 +66,8 @@
|
||||
"mountNotOwned": "Nem rendelkezel ezzel a hátassal.",
|
||||
"feedPet": "Megeteted <%= text %> eledellel a(z) <%= name %> kisállatodat?",
|
||||
"raisedPet": "A(z) <%= pet %> megnőtt!",
|
||||
"petName": "<%= potion(locale) %> <%= egg(locale) %>",
|
||||
"mountName": "<%= potion(locale) %> <%= mount(locale) %>",
|
||||
"petName": "<%= potion %> <%= egg %>",
|
||||
"mountName": "<%= potion %> <%= mount %>",
|
||||
"keyToPets": "Kulcs a kisállat-kennelekhez",
|
||||
"keyToPetsDesc": "Szabadon engedi az összes alap kisállatot, hogy újra összegyűjthesd őket. (A küldetési és ritka kisállatokra nincs hatással.)",
|
||||
"keyToMounts": "Kulcs a hátas-kennelekhez",
|
||||
|
||||
@@ -182,7 +182,7 @@
|
||||
"questEggVelociraptorText": "Velociraptor",
|
||||
"questEggVelociraptorMountText": "Velociraptor",
|
||||
"questEggVelociraptorAdjective": "cerdas",
|
||||
"eggNotes": "Temukan ramuan penetas untuk dituangkan ke telur ini, dan ia akan menetas menjadi <%= eggText(locale) %> yang <%= eggAdjective(locale) %>.",
|
||||
"eggNotes": "Temukan ramuan penetas untuk dituangkan ke telur ini, dan ia akan menetas menjadi <%= eggText %> yang <%= eggAdjective %>.",
|
||||
"hatchingPotionBase": "Biasa",
|
||||
"hatchingPotionWhite": "Putih",
|
||||
"hatchingPotionDesert": "Gurun",
|
||||
@@ -211,7 +211,7 @@
|
||||
"hatchingPotionGlow": "Bersinar di Kegelapan",
|
||||
"hatchingPotionFrost": "Beku",
|
||||
"hatchingPotionIcySnow": "Salju Sedingin Es",
|
||||
"hatchingPotionNotes": "Berikan ini kepada sebuah telur, dan ia akan menetas menjadi binatang peliharaan <%= potText(locale) %>.",
|
||||
"hatchingPotionNotes": "Berikan ini kepada sebuah telur, dan ia akan menetas menjadi binatang peliharaan <%= potText %>.",
|
||||
"foodMeat": "Daging",
|
||||
"foodMeatThe": "Daging",
|
||||
"foodMeatA": "Daging",
|
||||
|
||||
@@ -66,8 +66,8 @@
|
||||
"mountNotOwned": "Kamu tidak memiliki tunggangan ini.",
|
||||
"feedPet": "Beri makan <%= text %> kepada <%= name %>-mu?",
|
||||
"raisedPet": "Kamu membesarkan <%= pet %> milikmu!",
|
||||
"petName": "<%= egg(locale) %> <%= potion(locale) %>",
|
||||
"mountName": "<%= mount(locale) %> <%= potion(locale) %>",
|
||||
"petName": "<%= egg %> <%= potion %>",
|
||||
"mountName": "<%= mount %> <%= potion %>",
|
||||
"keyToPets": "Kunci Kandang Peliharaan",
|
||||
"keyToPetsDesc": "Lepaskan semua Peliharaan standar sehingga kamu bisa mengumpulkannya lagi. (Peliharaan Misi dan Peliharaan langka tidak terpengaruh.)",
|
||||
"keyToMounts": "Kunci Kandang Tunggangan",
|
||||
|
||||
@@ -182,7 +182,7 @@
|
||||
"questEggVelociraptorText": "Velociraptor",
|
||||
"questEggVelociraptorMountText": "Velociraptor",
|
||||
"questEggVelociraptorAdjective": "un intelligente",
|
||||
"eggNotes": "Trova una pozione per far schiudere questo uovo, e nascerà <%= eggAdjective(locale) %> <%= eggText(locale) %>.",
|
||||
"eggNotes": "Trova una pozione per far schiudere questo uovo, e nascerà <%= eggAdjective %> <%= eggText %>.",
|
||||
"hatchingPotionBase": "Base",
|
||||
"hatchingPotionWhite": "Bianco",
|
||||
"hatchingPotionDesert": "Deserto",
|
||||
@@ -211,7 +211,7 @@
|
||||
"hatchingPotionGlow": "Fosforescente",
|
||||
"hatchingPotionFrost": "Gelo",
|
||||
"hatchingPotionIcySnow": "Neve Ghiacciata",
|
||||
"hatchingPotionNotes": "Versa questa pozione su un uovo, e nascerà un Animale Domestico <%= potText(locale) %>.",
|
||||
"hatchingPotionNotes": "Versa questa pozione su un uovo, e nascerà un Animale Domestico <%= potText %>.",
|
||||
"foodMeat": "Carne",
|
||||
"foodMeatThe": "la Carne",
|
||||
"foodMeatA": "Carne",
|
||||
@@ -409,6 +409,6 @@
|
||||
"hatchingPotionOpal": "Opale",
|
||||
"hatchingPotionPinkMarble": "Marmo Rosa",
|
||||
"hatchingPotionTeaShop": "Negozio di Tè",
|
||||
"wackyPotionNotes": "Versalo su un uovo, e si schiuderà uno Strano <%= potText(locale) %> Animale Domestico.",
|
||||
"wackyPotionNotes": "Versalo su un uovo, e si schiuderà uno Strano <%= potText %> Animale Domestico.",
|
||||
"wackyPotionAddlNotes": "Non può essere trasformato in Cavalcature né usato su uova di animali domestici ottenuti attraverso una Missione."
|
||||
}
|
||||
|
||||
@@ -66,8 +66,8 @@
|
||||
"mountNotOwned": "Non possiedi questa cavalcatura.",
|
||||
"feedPet": "Dare da mangiare <%= text %> al tuo <%= name %>?",
|
||||
"raisedPet": "Hai fatto crescere un <%= pet %>!",
|
||||
"petName": "<%= egg(locale) %> <%= potion(locale) %>",
|
||||
"mountName": "<%= mount(locale) %> <%= potion(locale) %>",
|
||||
"petName": "<%= egg %> <%= potion %>",
|
||||
"mountName": "<%= mount %> <%= potion %>",
|
||||
"keyToPets": "Chiave dell'allevamento degli animali",
|
||||
"keyToPetsDesc": "Libera tutti gli Animali base in modo da poterli collezionare di nuovo (non ha effetto sugli Animali rari e quelli ottenuti dalle missioni.)",
|
||||
"keyToMounts": "Chiave dell'allevamento delle cavalcature",
|
||||
|
||||
@@ -182,7 +182,7 @@
|
||||
"questEggVelociraptorText": "ヴェロキラプトル",
|
||||
"questEggVelociraptorMountText": "ヴェロキラプトル",
|
||||
"questEggVelociraptorAdjective": "賢い",
|
||||
"eggNotes": "たまごがえしの薬を見つけて、たまごにかけると、<%= eggAdjective(locale) %> <%= eggText(locale) %>が生まれます。",
|
||||
"eggNotes": "たまごがえしの薬を見つけて、たまごにかけると、<%= eggAdjective %> <%= eggText %>が生まれます。",
|
||||
"hatchingPotionBase": "普通の",
|
||||
"hatchingPotionWhite": "白い",
|
||||
"hatchingPotionDesert": "砂漠の",
|
||||
@@ -211,7 +211,7 @@
|
||||
"hatchingPotionGlow": "暗闇で輝く",
|
||||
"hatchingPotionFrost": "霜の",
|
||||
"hatchingPotionIcySnow": "冷たい雪の",
|
||||
"hatchingPotionNotes": "これをたまごにかけると、<%= potText(locale) %>ペットが生まれます。",
|
||||
"hatchingPotionNotes": "これをたまごにかけると、<%= potText %>ペットが生まれます。",
|
||||
"foodMeat": "肉",
|
||||
"foodMeatThe": "肉",
|
||||
"foodMeatA": "肉",
|
||||
@@ -404,7 +404,7 @@
|
||||
"questEggAlpacaMountText": "アルパカ",
|
||||
"questEggAlpacaAdjective": "詰め込みすぎた",
|
||||
"hatchingPotionCryptid": "未確認生物",
|
||||
"wackyPotionNotes": "これをたまごにかけると、へんてこな<%= potText(locale) %>ペットが生まれます。",
|
||||
"wackyPotionNotes": "これをたまごにかけると、へんてこな<%= potText %>ペットが生まれます。",
|
||||
"wackyPotionAddlNotes": "乗騎に育てたり、クエストペットのたまごに使ったりできません。",
|
||||
"questEggPlatypusText": "カモノハシ",
|
||||
"questEggPlatypusMountText": "カモノハシ",
|
||||
|
||||
@@ -66,8 +66,8 @@
|
||||
"mountNotOwned": "この乗騎をもっていません。",
|
||||
"feedPet": "<%= name %>に<%= text %>をやりますか?",
|
||||
"raisedPet": "<%= pet %>を育てた!",
|
||||
"petName": "<%= potion(locale) %><%= egg(locale) %>",
|
||||
"mountName": "<%= potion(locale) %><%= mount(locale) %>",
|
||||
"petName": "<%= potion %><%= egg %>",
|
||||
"mountName": "<%= potion %><%= mount %>",
|
||||
"keyToPets": "ペット小屋のカギ",
|
||||
"keyToPetsDesc": "すべての基本のペットを逃がして、再び集め直すことに挑戦できます。(クエストペットやレアペットは影響を受けません。)",
|
||||
"keyToMounts": "乗騎小屋のカギ",
|
||||
|
||||
@@ -182,7 +182,7 @@
|
||||
"questEggVelociraptorText": "벨로시랩터",
|
||||
"questEggVelociraptorMountText": "벨로시랩터",
|
||||
"questEggVelociraptorAdjective": "영리한",
|
||||
"eggNotes": "부화 물약을 찾아서 이 알에 부으면 <%= eggAdjective(locale) %> <%= eggText(locale) %>(으)로 부화합니다.",
|
||||
"eggNotes": "부화 물약을 찾아서 이 알에 부으면 <%= eggAdjective %> <%= eggText %>(으)로 부화합니다.",
|
||||
"hatchingPotionBase": "기본",
|
||||
"hatchingPotionWhite": "흰",
|
||||
"hatchingPotionDesert": "사막",
|
||||
@@ -211,7 +211,7 @@
|
||||
"hatchingPotionGlow": "야광",
|
||||
"hatchingPotionFrost": "서리",
|
||||
"hatchingPotionIcySnow": "얼어붙은 눈",
|
||||
"hatchingPotionNotes": "이것을 알에 부으면 <%= potText(locale) %> 펫으로 부화하게 됩니다.",
|
||||
"hatchingPotionNotes": "이것을 알에 부으면 <%= potText %> 펫으로 부화하게 됩니다.",
|
||||
"foodMeat": "고기",
|
||||
"foodMeatThe": "고기",
|
||||
"foodMeatA": "고기 한 덩이",
|
||||
|
||||
@@ -50,8 +50,8 @@
|
||||
"releasePetsSuccess": "일반 펫이 해금되었습니다!",
|
||||
"releasePetsConfirm": "정말 일반 펫을 방생하겠습니까?",
|
||||
"keyToPets": "펫 사육장의 열쇠",
|
||||
"mountName": "<%= potion(locale) %> <%= mount(locale) %>",
|
||||
"petName": "<%= potion(locale) %> <%= egg(locale) %>",
|
||||
"mountName": "<%= potion %> <%= mount %>",
|
||||
"petName": "<%= potion %> <%= egg %>",
|
||||
"raisedPet": "<%= pet %>가 성장했습니다!",
|
||||
"feedPet": "<%= name %>에게 <%= text %>를 먹이겠습니까?",
|
||||
"petNotOwned": "이 펫을 가지고 있지 않습니다.",
|
||||
|
||||
@@ -182,7 +182,7 @@
|
||||
"questEggVelociraptorText": "Velociraptor",
|
||||
"questEggVelociraptorMountText": "Velociraptor",
|
||||
"questEggVelociraptorAdjective": "een begaafde",
|
||||
"eggNotes": "Vind een broeddrankje om over dit ei te gieten en er zal een <%= eggAdjective(locale) %> <%= eggText(locale) %> uit voortkomen.",
|
||||
"eggNotes": "Vind een broeddrankje om over dit ei te gieten en er zal een <%= eggAdjective %> <%= eggText %> uit voortkomen.",
|
||||
"hatchingPotionBase": "Normale",
|
||||
"hatchingPotionWhite": "Witte",
|
||||
"hatchingPotionDesert": "Woestijnkleurige",
|
||||
@@ -211,7 +211,7 @@
|
||||
"hatchingPotionGlow": "In het Donker Oplichtend",
|
||||
"hatchingPotionFrost": "Bevroren",
|
||||
"hatchingPotionIcySnow": "IJzige Sneeuw",
|
||||
"hatchingPotionNotes": "Giet dit over een ei en het zal uitkomen als een <%= potText(locale) %> huisdier.",
|
||||
"hatchingPotionNotes": "Giet dit over een ei en het zal uitkomen als een <%= potText %> huisdier.",
|
||||
"foodMeat": "Vlees",
|
||||
"foodMeatThe": "het Vlees",
|
||||
"foodMeatA": "Vlees",
|
||||
@@ -376,7 +376,7 @@
|
||||
"hatchingPotionGingerbread": "Gemberkoek",
|
||||
"hatchingPotionJade": "Jade",
|
||||
"hatchingPotionCryptid": "Cryptid",
|
||||
"wackyPotionNotes": "Gebruik dit op een ei, en er zal een maf <%= potText(locale) %> huisdier uitkomen.",
|
||||
"wackyPotionNotes": "Gebruik dit op een ei, en er zal een maf <%= potText %> huisdier uitkomen.",
|
||||
"hatchingPotionOpal": "Opaal",
|
||||
"questEggRaccoonMountText": "Wasbeer",
|
||||
"questEggRaccoonAdjective": "een vraatzuchtige",
|
||||
|
||||
@@ -66,8 +66,8 @@
|
||||
"mountNotOwned": "Je bezit dit rijdier niet.",
|
||||
"feedPet": "Voer <%= text %> aan je <%= name %>?",
|
||||
"raisedPet": "Je hebt je <%= pet %> laten opgroeien!",
|
||||
"petName": "<%= potion(locale) %> <%= egg(locale) %>",
|
||||
"mountName": "<%= potion(locale) %> <%= mount(locale) %>",
|
||||
"petName": "<%= potion %> <%= egg %>",
|
||||
"mountName": "<%= potion %> <%= mount %>",
|
||||
"keyToPets": "Sleutel van de Huisdierenkennels",
|
||||
"keyToPetsDesc": "Laat al je standaard huisdieren vrij zodat je ze weer kan verzamelen. (Huisdieren van queesten en zeldzame huisdieren worden niet beïnvloed.)",
|
||||
"keyToMounts": "Sleutel van de Rijdierkennels",
|
||||
|
||||
@@ -182,7 +182,7 @@
|
||||
"questEggVelociraptorText": "Welociraptorek",
|
||||
"questEggVelociraptorMountText": "Welociraptor",
|
||||
"questEggVelociraptorAdjective": "sprytny",
|
||||
"eggNotes": "Znajdź eliksir wyklucia i wylej go na to jajo, a wykluje się z niego <%= eggAdjective(locale) %> <%= eggText(locale) %>.",
|
||||
"eggNotes": "Znajdź eliksir wyklucia i wylej go na to jajo, a wykluje się z niego <%= eggAdjective %> <%= eggText %>.",
|
||||
"hatchingPotionBase": "Zwyczajny",
|
||||
"hatchingPotionWhite": "Biały",
|
||||
"hatchingPotionDesert": "Pustynny",
|
||||
@@ -211,7 +211,7 @@
|
||||
"hatchingPotionGlow": "Lśniący w ciemności",
|
||||
"hatchingPotionFrost": "Mroźny",
|
||||
"hatchingPotionIcySnow": "Lodowato-Śniegowy",
|
||||
"hatchingPotionNotes": "Wylej eliksir na jajko, a wykluje się z niego <%= potText(locale) %>.",
|
||||
"hatchingPotionNotes": "Wylej eliksir na jajko, a wykluje się z niego <%= potText %>.",
|
||||
"foodMeat": "Mięso",
|
||||
"foodMeatThe": "Mięso",
|
||||
"foodMeatA": "Mięso",
|
||||
@@ -408,7 +408,7 @@
|
||||
"hatchingPotionJade": "Jadeitowy",
|
||||
"hatchingPotionFungi": "Grzybowy",
|
||||
"hatchingPotionCryptid": "Kryptydowy",
|
||||
"wackyPotionNotes": "Wylej ten eliksir na jajko, a wykluje się z niego Zwariowany <%= potText(locale) %>.",
|
||||
"wackyPotionNotes": "Wylej ten eliksir na jajko, a wykluje się z niego Zwariowany <%= potText %>.",
|
||||
"wackyPotionAddlNotes": "Nie można go oswoić na Wierzchowca ani używać na jajach Chowańców z Misji.",
|
||||
"hatchingPotionOpal": "Opalowy"
|
||||
}
|
||||
|
||||
@@ -66,8 +66,8 @@
|
||||
"mountNotOwned": "Nie posiadasz tego wierzchowca.",
|
||||
"feedPet": "Nakarmić <%= text %> twojego <%= name %>?",
|
||||
"raisedPet": "Wyhodowałeś <%= pet %>!",
|
||||
"petName": "<%= potion(locale) %> <%= egg(locale) %>",
|
||||
"mountName": "<%= potion(locale) %> <%= mount(locale) %>",
|
||||
"petName": "<%= potion %> <%= egg %>",
|
||||
"mountName": "<%= potion %> <%= mount %>",
|
||||
"keyToPets": "Klucz do Zagród Chowańców",
|
||||
"keyToPetsDesc": "Wypuść wszystkie zwyczajne Chowańce by móc je znów zebrać. (Nie dotyczy rzadkich Chowańców i tych z misji.)",
|
||||
"keyToMounts": "Klucze do Zagród Wierzchowców",
|
||||
|
||||
@@ -182,7 +182,7 @@
|
||||
"questEggVelociraptorText": "Velociraptor",
|
||||
"questEggVelociraptorMountText": "Velociraptor",
|
||||
"questEggVelociraptorAdjective": "a clever",
|
||||
"eggNotes": "Ache uma poção de eclosão para usar nesse ovo e ele irá eclodir em um <%= eggAdjective(locale) %> <%= eggText(locale) %>.",
|
||||
"eggNotes": "Ache uma poção de eclosão para usar nesse ovo e ele irá eclodir em um <%= eggAdjective %> <%= eggText %>.",
|
||||
"hatchingPotionBase": "Básico/a",
|
||||
"hatchingPotionWhite": "Branco/a",
|
||||
"hatchingPotionDesert": "do Deserto",
|
||||
@@ -211,7 +211,7 @@
|
||||
"hatchingPotionGlow": "Fluorescente",
|
||||
"hatchingPotionFrost": "Geada",
|
||||
"hatchingPotionIcySnow": "Neve Gelada",
|
||||
"hatchingPotionNotes": "Utilize isto num ovo, e ele chocará como uma mascote <%= potText(locale) %>.",
|
||||
"hatchingPotionNotes": "Utilize isto num ovo, e ele chocará como uma mascote <%= potText %>.",
|
||||
"foodMeat": "Carne",
|
||||
"foodMeatThe": "Carne",
|
||||
"foodMeatA": "Carne",
|
||||
|
||||
@@ -66,8 +66,8 @@
|
||||
"mountNotOwned": "Não tens esta montada.",
|
||||
"feedPet": "Alimentar o(a) <%= name %> com <%= text %>?",
|
||||
"raisedPet": "Criaste o(a) <%= pet %>!",
|
||||
"petName": "<%= egg(locale) %> <%= potion(locale) %>",
|
||||
"mountName": "<%= mount(locale) %> <%= potion(locale) %>",
|
||||
"petName": "<%= egg %> <%= potion %>",
|
||||
"mountName": "<%= mount %> <%= potion %>",
|
||||
"keyToPets": "Chave das Casotas dos Animais de Estimação",
|
||||
"keyToPetsDesc": "Liberta todos os teus Animais de Estimação comuns para os poderes coleccionar de novo. (Animais de Estimação de Missão e Animais de Estimação raros não são afectados.)",
|
||||
"keyToMounts": "Chave das Casotas das Montadas",
|
||||
|
||||
@@ -182,7 +182,7 @@
|
||||
"questEggVelociraptorText": "Velociraptor",
|
||||
"questEggVelociraptorMountText": "Velociraptor",
|
||||
"questEggVelociraptorAdjective": "um inteligente",
|
||||
"eggNotes": "Ache uma poção de eclosão e use-a neste ovo e ele chocará como <%= eggAdjective(locale) %> <%= eggText(locale) %>.",
|
||||
"eggNotes": "Ache uma poção de eclosão e use-a neste ovo e ele chocará como <%= eggAdjective %> <%= eggText %>.",
|
||||
"hatchingPotionBase": " ",
|
||||
"hatchingPotionWhite": "das Neves",
|
||||
"hatchingPotionDesert": "do Deserto",
|
||||
@@ -211,7 +211,7 @@
|
||||
"hatchingPotionGlow": "que Brilha-no-Escuro",
|
||||
"hatchingPotionFrost": "da Geada",
|
||||
"hatchingPotionIcySnow": "do Gelo de Nevasca",
|
||||
"hatchingPotionNotes": "Use-a em um ovo e ele chocará como um Mascote <%= potText(locale) %>.",
|
||||
"hatchingPotionNotes": "Use-a em um ovo e ele chocará como um Mascote <%= potText %>.",
|
||||
"foodMeat": "Carne",
|
||||
"foodMeatThe": "a Carne",
|
||||
"foodMeatA": "Carne",
|
||||
@@ -409,6 +409,6 @@
|
||||
"questEggAlpacaText": "Alpaca",
|
||||
"questEggAlpacaMountText": "Alpaca",
|
||||
"questEggAlpacaAdjective": "Um superlotado",
|
||||
"wackyPotionNotes": "Despeje isso em um ovo e ele chocará como um animal de estimação Maluco <%= potText(locale) %>.",
|
||||
"wackyPotionNotes": "Despeje isso em um ovo e ele chocará como um animal de estimação Maluco <%= potText %>.",
|
||||
"wackyPotionAddlNotes": "Não pode ser convertido a Montaria ou usado em Ovos de Mascotes de missão."
|
||||
}
|
||||
|
||||
@@ -66,8 +66,8 @@
|
||||
"mountNotOwned": "Você não possui essa montaria.",
|
||||
"feedPet": "Alimentar <%= text %> para seu/sua <%= name %>?",
|
||||
"raisedPet": "Você domou <%= pet %>!",
|
||||
"petName": "<%= egg(locale) %> <%= potion(locale) %>",
|
||||
"mountName": "<%= mount(locale) %> <%= potion(locale) %>",
|
||||
"petName": "<%= egg %> <%= potion %>",
|
||||
"mountName": "<%= mount %> <%= potion %>",
|
||||
"keyToPets": "Chave dos Canis de Mascotes",
|
||||
"keyToPetsDesc": "Liberte todos os Mascotes Padrão para que você possa colecioná-los novamente (Mascotes de Missões e Mascotes raros não são afetados.)",
|
||||
"keyToMounts": "Chave dos Canis das Montarias",
|
||||
|
||||
@@ -182,7 +182,7 @@
|
||||
"questEggVelociraptorText": "Velociraptor",
|
||||
"questEggVelociraptorMountText": "Velociraptor",
|
||||
"questEggVelociraptorAdjective": "a clever",
|
||||
"eggNotes": "Găsește o licoare de eclozat pentru a turna peste acest ou și va ecloza în <%= eggAdjective(locale) %> <%= eggText(locale) %>.",
|
||||
"eggNotes": "Găsește o licoare de eclozat pentru a turna peste acest ou și va ecloza în <%= eggAdjective %> <%= eggText %>.",
|
||||
"hatchingPotionBase": "de bază",
|
||||
"hatchingPotionWhite": "Alb",
|
||||
"hatchingPotionDesert": "Deșert",
|
||||
@@ -211,7 +211,7 @@
|
||||
"hatchingPotionGlow": "Stralucire-in-intuneric",
|
||||
"hatchingPotionFrost": "Îngheţ",
|
||||
"hatchingPotionIcySnow": "Zăpadă înghețată",
|
||||
"hatchingPotionNotes": "Toarnă aceasta pe un ou și va ecloza ca un animal de companie <%= potText(locale) %>.",
|
||||
"hatchingPotionNotes": "Toarnă aceasta pe un ou și va ecloza ca un animal de companie <%= potText %>.",
|
||||
"foodMeat": "Carne",
|
||||
"foodMeatThe": "carnea",
|
||||
"foodMeatA": "Carne",
|
||||
|
||||
@@ -66,8 +66,8 @@
|
||||
"mountNotOwned": "You do not own this mount.",
|
||||
"feedPet": "Feed <%= text %> to your <%= name %>?",
|
||||
"raisedPet": "You grew your <%= pet %>!",
|
||||
"petName": "<%= potion(locale) %> <%= egg(locale) %>",
|
||||
"mountName": "<%= potion(locale) %> <%= mount(locale) %>",
|
||||
"petName": "<%= potion %> <%= egg %>",
|
||||
"mountName": "<%= potion %> <%= mount %>",
|
||||
"keyToPets": "Key to the Pet Kennels",
|
||||
"keyToPetsDesc": "Release all standard Pets so you can collect them again. (Quest Pets and rare Pets are not affected.)",
|
||||
"keyToMounts": "Key to the Mount Kennels",
|
||||
|
||||
@@ -182,7 +182,7 @@
|
||||
"questEggVelociraptorText": "Велоцираптор",
|
||||
"questEggVelociraptorMountText": "Велоцираптор",
|
||||
"questEggVelociraptorAdjective": "умный",
|
||||
"eggNotes": "Найдите инкубационный эликсир, чтобы полить им это яйцо, и из него вылупится <%= eggAdjective(locale) %> <%= eggText(locale) %>.",
|
||||
"eggNotes": "Найдите инкубационный эликсир, чтобы полить им это яйцо, и из него вылупится <%= eggAdjective %> <%= eggText %>.",
|
||||
"hatchingPotionBase": "Обыкновенный",
|
||||
"hatchingPotionWhite": "Белый",
|
||||
"hatchingPotionDesert": "Пустынный",
|
||||
@@ -211,7 +211,7 @@
|
||||
"hatchingPotionGlow": "Светящийся-ночью",
|
||||
"hatchingPotionFrost": "Морозный",
|
||||
"hatchingPotionIcySnow": "Ледяной",
|
||||
"hatchingPotionNotes": "Полейте его на яйцо и из него вылупится <%= potText(locale) %> Питомец.",
|
||||
"hatchingPotionNotes": "Полейте его на яйцо и из него вылупится <%= potText %> Питомец.",
|
||||
"foodMeat": "Мясо",
|
||||
"foodMeatThe": "Мясная пища",
|
||||
"foodMeatA": "Мясо",
|
||||
@@ -405,7 +405,7 @@
|
||||
"questEggOtterAdjective": "коварный",
|
||||
"hatchingPotionJade": "Нефритовый",
|
||||
"hatchingPotionCryptid": "Мифический",
|
||||
"wackyPotionNotes": "Вылейте это на яйцо, и из него вылупится питомец типа <%= potText(locale) %>.",
|
||||
"wackyPotionNotes": "Вылейте это на яйцо, и из него вылупится питомец типа <%= potText %>.",
|
||||
"wackyPotionAddlNotes": "Не может быть возвышено до Скакуна или использовано на яйцах Квестовых питомцев.",
|
||||
"questEggPlatypusText": "Утконос",
|
||||
"questEggPlatypusMountText": "Утконос",
|
||||
|
||||
@@ -66,8 +66,8 @@
|
||||
"mountNotOwned": "Вы не являетесь владельцем этого скакуна.",
|
||||
"feedPet": "Скормить <%= text %> питомцу <%= name %>?",
|
||||
"raisedPet": "У вас вырос(ла) <%= pet %>!",
|
||||
"petName": "<%= potion(locale) %>(-ая) <%= egg(locale) %>",
|
||||
"mountName": "<%= potion(locale) %>(-ая) <%= mount(locale) %>",
|
||||
"petName": "<%= potion %>(-ая) <%= egg %>",
|
||||
"mountName": "<%= potion %>(-ая) <%= mount %>",
|
||||
"keyToPets": "Ключ от питомника",
|
||||
"keyToPetsDesc": "Выпустите всех питомцев, чтобы потом собрать их снова. (Квестовые и редкие питомцы останутся)",
|
||||
"keyToMounts": "Ключ от Вольеров",
|
||||
|
||||
@@ -182,7 +182,7 @@
|
||||
"questEggVelociraptorText": "Velociraptor",
|
||||
"questEggVelociraptorMountText": "Velociraptor",
|
||||
"questEggVelociraptorAdjective": "bystrý",
|
||||
"eggNotes": "Nájdi liahoxír a vylej ho na toto vajíčko, aby sa z neho vyliahlo zvieratko: <%= eggAdjective(locale) %> <%= eggText(locale) %>.",
|
||||
"eggNotes": "Nájdi liahoxír a vylej ho na toto vajíčko, aby sa z neho vyliahlo zvieratko: <%= eggAdjective %> <%= eggText %>.",
|
||||
"hatchingPotionBase": "Základný",
|
||||
"hatchingPotionWhite": "Biely",
|
||||
"hatchingPotionDesert": "Púštny",
|
||||
@@ -211,7 +211,7 @@
|
||||
"hatchingPotionGlow": "V tme svietiaci",
|
||||
"hatchingPotionFrost": "Zmrznutý",
|
||||
"hatchingPotionIcySnow": "Ľadový",
|
||||
"hatchingPotionNotes": "Vylej tento liahoxír na vajíčko a vyliahne sa z neho <%= potText(locale) %> zvieratko.",
|
||||
"hatchingPotionNotes": "Vylej tento liahoxír na vajíčko a vyliahne sa z neho <%= potText %> zvieratko.",
|
||||
"foodMeat": "Mäso",
|
||||
"foodMeatThe": "Mäso",
|
||||
"foodMeatA": "Mäso",
|
||||
@@ -405,7 +405,7 @@
|
||||
"questEggAlpacaAdjective": "preťažená",
|
||||
"hatchingPotionBalloon": "Balónový",
|
||||
"hatchingPotionCryptid": "Mýtický",
|
||||
"wackyPotionNotes": "Vylej tento liahoxír na vajíčko a vyliahne sa z neho šialené <%= potText(locale) %> zvieratko.",
|
||||
"wackyPotionNotes": "Vylej tento liahoxír na vajíčko a vyliahne sa z neho šialené <%= potText %> zvieratko.",
|
||||
"wackyPotionAddlNotes": "Nemôže byť vycvičené na tátoša alebo použitý na Vajíčka z výprav.",
|
||||
"questEggPlatypusText": "Vtákopysk",
|
||||
"questEggPlatypusMountText": "Vtákopysk",
|
||||
|
||||
@@ -66,8 +66,8 @@
|
||||
"mountNotOwned": "Nevlastníš tohto tátoša.",
|
||||
"feedPet": "Nakŕmiť <%= text %> tvojho/u <%= name %>?",
|
||||
"raisedPet": "Vychoval si svojho/u<%= pet %>!",
|
||||
"petName": "<%= potion(locale) %> <%= egg(locale) %>",
|
||||
"mountName": "<%= potion(locale) %> <%= mount(locale) %>",
|
||||
"petName": "<%= potion %> <%= egg %>",
|
||||
"mountName": "<%= potion %> <%= mount %>",
|
||||
"keyToPets": "Kľúč k výbehom zvieratiek",
|
||||
"keyToPetsDesc": "Vypusti všetky štandardné zvieratká aby si ich mohol nazbierať znovu. (Zvieratká z výprav a vzácne zvieratká nebudú ovplyvnené.)",
|
||||
"keyToMounts": "Kľúč k výbehom tátošov",
|
||||
|
||||
@@ -182,7 +182,7 @@
|
||||
"questEggVelociraptorText": "Velociraptor",
|
||||
"questEggVelociraptorMountText": "Velociraptor",
|
||||
"questEggVelociraptorAdjective": "a clever",
|
||||
"eggNotes": "Find a hatching potion to pour on this egg, and it will hatch into <%= eggAdjective(locale) %> <%= eggText(locale) %>.",
|
||||
"eggNotes": "Find a hatching potion to pour on this egg, and it will hatch into <%= eggAdjective %> <%= eggText %>.",
|
||||
"hatchingPotionBase": "Običan",
|
||||
"hatchingPotionWhite": "Beli",
|
||||
"hatchingPotionDesert": "Pustinjski",
|
||||
@@ -211,7 +211,7 @@
|
||||
"hatchingPotionGlow": "Glow-in-the-Dark",
|
||||
"hatchingPotionFrost": "Frost",
|
||||
"hatchingPotionIcySnow": "Icy Snow",
|
||||
"hatchingPotionNotes": "Pospite ovo po jajetu, i iz njega će se izleći <%= potText(locale) %> ljubimac.",
|
||||
"hatchingPotionNotes": "Pospite ovo po jajetu, i iz njega će se izleći <%= potText %> ljubimac.",
|
||||
"foodMeat": "Meso",
|
||||
"foodMeatThe": "the Meat",
|
||||
"foodMeatA": "Meat",
|
||||
|
||||
@@ -66,8 +66,8 @@
|
||||
"mountNotOwned": "Ne posedujete ovog ljubimca za jahanje.",
|
||||
"feedPet": "Feed <%= text %> to your <%= name %>?",
|
||||
"raisedPet": "You grew your <%= pet %>!",
|
||||
"petName": "<%= potion(locale) %> <%= egg(locale) %>",
|
||||
"mountName": "<%= potion(locale) %> <%= mount(locale) %>",
|
||||
"petName": "<%= potion %> <%= egg %>",
|
||||
"mountName": "<%= potion %> <%= mount %>",
|
||||
"keyToPets": "Key to the Pet Kennels",
|
||||
"keyToPetsDesc": "Release all standard Pets so you can collect them again. (Quest Pets and rare Pets are not affected.)",
|
||||
"keyToMounts": "Key to the Mount Kennels",
|
||||
|
||||
@@ -182,7 +182,7 @@
|
||||
"questEggVelociraptorText": "Velociraptor-husdjur",
|
||||
"questEggVelociraptorMountText": "Ridbar Velociraptor",
|
||||
"questEggVelociraptorAdjective": "en listig",
|
||||
"eggNotes": "Hitta en kläckningsbrygd och häll på det här ägget så kommer det kläckas till <%= eggAdjective(locale) %> <%= eggText(locale) %>.",
|
||||
"eggNotes": "Hitta en kläckningsbrygd och häll på det här ägget så kommer det kläckas till <%= eggAdjective %> <%= eggText %>.",
|
||||
"hatchingPotionBase": "Normal",
|
||||
"hatchingPotionWhite": "Vit",
|
||||
"hatchingPotionDesert": "Öken",
|
||||
@@ -211,7 +211,7 @@
|
||||
"hatchingPotionGlow": "självlysande",
|
||||
"hatchingPotionFrost": "Frostig",
|
||||
"hatchingPotionIcySnow": "isig snö",
|
||||
"hatchingPotionNotes": "Häll det över ett ägg, så kläcks det som Husdjuret <%= potText(locale) %>.",
|
||||
"hatchingPotionNotes": "Häll det över ett ägg, så kläcks det som Husdjuret <%= potText %>.",
|
||||
"foodMeat": "Kött",
|
||||
"foodMeatThe": "köttet",
|
||||
"foodMeatA": "Kött",
|
||||
|
||||
@@ -66,8 +66,8 @@
|
||||
"mountNotOwned": "Du äger inte detta riddjur.",
|
||||
"feedPet": "Mata <%= text %> till din <%= name %>?",
|
||||
"raisedPet": "Du födde upp en <%= pet %>!",
|
||||
"petName": "<%= potion(locale) %> <%= egg(locale) %>",
|
||||
"mountName": "<%= potion(locale) %> <%= mount(locale) %>",
|
||||
"petName": "<%= potion %> <%= egg %>",
|
||||
"mountName": "<%= potion %> <%= mount %>",
|
||||
"keyToPets": "Key to the Pet Kennels",
|
||||
"keyToPetsDesc": "Release all standard Pets so you can collect them again. (Quest Pets and rare Pets are not affected.)",
|
||||
"keyToMounts": "Key to the Mount Kennels",
|
||||
|
||||
@@ -182,7 +182,7 @@
|
||||
"questEggVelociraptorText": "Velosiraptor",
|
||||
"questEggVelociraptorMountText": "Velosiraptor",
|
||||
"questEggVelociraptorAdjective": "Zeki",
|
||||
"eggNotes": "Bir kuluçka iksiri bulup bu yumurtanın üzerine döktüğünde yumurtadan <%= eggAdjective(locale) %> <%= eggText(locale) %> çıkacak.",
|
||||
"eggNotes": "Bir kuluçka iksiri bulup bu yumurtanın üzerine döktüğünde yumurtadan <%= eggAdjective %> <%= eggText %> çıkacak.",
|
||||
"hatchingPotionBase": "Sıradan",
|
||||
"hatchingPotionWhite": "Beyaz",
|
||||
"hatchingPotionDesert": "Çorak",
|
||||
@@ -211,7 +211,7 @@
|
||||
"hatchingPotionGlow": "Karanlıkta Parlayan",
|
||||
"hatchingPotionFrost": "Donuk",
|
||||
"hatchingPotionIcySnow": "Buzlu Kar",
|
||||
"hatchingPotionNotes": "Bunu yumurtanın üstüne döktüğünde <%= potText(locale) %> türünde bir hayvan çıkacak.",
|
||||
"hatchingPotionNotes": "Bunu yumurtanın üstüne döktüğünde <%= potText %> türünde bir hayvan çıkacak.",
|
||||
"foodMeat": "Et",
|
||||
"foodMeatThe": "Et",
|
||||
"foodMeatA": "Et",
|
||||
@@ -405,7 +405,7 @@
|
||||
"questEggAlpacaAdjective": "aşırı dolu",
|
||||
"hatchingPotionBalloon": "Balon",
|
||||
"hatchingPotionCryptid": "Kriptozit",
|
||||
"wackyPotionNotes": "Bunu bir yumurtanın üstüne dök, bir Çılgın <%= potText(locale) %> olarak yumurtadan çıkacak.",
|
||||
"wackyPotionNotes": "Bunu bir yumurtanın üstüne dök, bir Çılgın <%= potText %> olarak yumurtadan çıkacak.",
|
||||
"wackyPotionAddlNotes": "Bineklere yükseltilemez veya Görev Evcil Hayvanı yumurtalarında kullanılamaz.",
|
||||
"questEggPlatypusText": "Ornitorenk",
|
||||
"questEggPlatypusMountText": "Ornitorenk",
|
||||
|
||||
@@ -66,8 +66,8 @@
|
||||
"mountNotOwned": "Bu bineğe sahip değilsin.",
|
||||
"feedPet": "<%= name %>, <%= text %> ile beslensin mi?",
|
||||
"raisedPet": "Bir <%= pet %> yetiştirdin!",
|
||||
"petName": "<%= potion(locale) %> <%= egg(locale) %>",
|
||||
"mountName": "<%= potion(locale) %> <%= mount(locale) %>",
|
||||
"petName": "<%= potion %> <%= egg %>",
|
||||
"mountName": "<%= potion %> <%= mount %>",
|
||||
"keyToPets": "Hayvan Kulübelerinin Anahtarı",
|
||||
"keyToPetsDesc": "Tekrardan toplamaya başlayabilmek için tüm standart Hayvanları sal. (Görev Hayvanları ve nadir Hayvanlar etkilenmez.)",
|
||||
"keyToMounts": "Binek Kulübelerinin Anahtarı",
|
||||
|
||||
@@ -182,7 +182,7 @@
|
||||
"questEggVelociraptorText": "Велоцираптор",
|
||||
"questEggVelociraptorMountText": "Велоцираптор",
|
||||
"questEggVelociraptorAdjective": "розумний",
|
||||
"eggNotes": "Знайдіть інкубаційне зілля, аби вилити на це яйце, і з нього вилупиться <%= eggAdjective(locale) %> <%= eggText(locale) %>.",
|
||||
"eggNotes": "Знайдіть інкубаційне зілля, аби вилити на це яйце, і з нього вилупиться <%= eggAdjective %> <%= eggText %>.",
|
||||
"hatchingPotionBase": "Звичайний",
|
||||
"hatchingPotionWhite": "Білий",
|
||||
"hatchingPotionDesert": "Пустельний",
|
||||
@@ -211,7 +211,7 @@
|
||||
"hatchingPotionGlow": "В-темряві-сяючий",
|
||||
"hatchingPotionFrost": "Морозний",
|
||||
"hatchingPotionIcySnow": "Крижаний сніг",
|
||||
"hatchingPotionNotes": "Вилийте це на яйце, і з нього вилупиться улюбленець, типу \"<%= potText(locale) %>\".",
|
||||
"hatchingPotionNotes": "Вилийте це на яйце, і з нього вилупиться улюбленець, типу \"<%= potText %>\".",
|
||||
"foodMeat": "М'ясо",
|
||||
"foodMeatThe": "М'ясо",
|
||||
"foodMeatA": "М'ясо",
|
||||
@@ -404,7 +404,7 @@
|
||||
"questEggOtterMountText": "видра",
|
||||
"questEggOtterAdjective": "підступний",
|
||||
"hatchingPotionCryptid": "Містичний",
|
||||
"wackyPotionNotes": "Вилийте це на яйце, і з нього вилупиться Дивний улюбленець, типу \"<%= potText(locale) %>\".",
|
||||
"wackyPotionNotes": "Вилийте це на яйце, і з нього вилупиться Дивний улюбленець, типу \"<%= potText %>\".",
|
||||
"wackyPotionAddlNotes": "Не може бути використано на яйцях з Квестовими улюбленцями.",
|
||||
"hatchingPotionBalloon": "Надувний"
|
||||
}
|
||||
|
||||
@@ -66,8 +66,8 @@
|
||||
"mountNotOwned": "У вас немає цього скакуна.",
|
||||
"feedPet": "Згодувати <%= text %> <%= name %>?",
|
||||
"raisedPet": "Ви виростили <%= pet %>!",
|
||||
"petName": "<%= potion(locale) %> <%= egg(locale) %>",
|
||||
"mountName": "<%= potion(locale) %> <%= mount(locale) %>",
|
||||
"petName": "<%= potion %> <%= egg %>",
|
||||
"mountName": "<%= potion %> <%= mount %>",
|
||||
"keyToPets": "Ключ від розплідника",
|
||||
"keyToPetsDesc": "Звільніть усіх звичайних улюбленців, щоб ви могли знову їх зібрати. (Квестові та рідкісні улюбленці залишаться.)",
|
||||
"keyToMounts": "Ключ від загонів",
|
||||
|
||||
@@ -182,7 +182,7 @@
|
||||
"questEggVelociraptorText": "迅猛龙",
|
||||
"questEggVelociraptorMountText": "迅猛龙",
|
||||
"questEggVelociraptorAdjective": "一只聪明的",
|
||||
"eggNotes": "将一瓶孵化药水倒在这枚蛋上,它就会孵化出<%= eggAdjective(locale) %><%= eggText(locale) %>。",
|
||||
"eggNotes": "将一瓶孵化药水倒在这枚蛋上,它就会孵化出<%= eggAdjective %><%= eggText %>。",
|
||||
"hatchingPotionBase": "普通",
|
||||
"hatchingPotionWhite": "白色",
|
||||
"hatchingPotionDesert": "沙漠",
|
||||
@@ -211,7 +211,7 @@
|
||||
"hatchingPotionGlow": "荧光",
|
||||
"hatchingPotionFrost": "霜",
|
||||
"hatchingPotionIcySnow": "冰雪",
|
||||
"hatchingPotionNotes": "把它倒在宠物蛋上可以孵化出一只<%= potText(locale) %>宠物。",
|
||||
"hatchingPotionNotes": "把它倒在宠物蛋上可以孵化出一只<%= potText %>宠物。",
|
||||
"foodMeat": "肉",
|
||||
"foodMeatThe": "肉",
|
||||
"foodMeatA": "肉",
|
||||
@@ -404,7 +404,7 @@
|
||||
"hatchingPotionCryptid": "神秘生物",
|
||||
"questEggAlpacaText": "羊驼",
|
||||
"questEggAlpacaMountText": "羊驼",
|
||||
"wackyPotionNotes": "将药水倒在宠物蛋上,就会孵化出一只古怪的<%= potText(locale) %> 宠物。",
|
||||
"wackyPotionNotes": "将药水倒在宠物蛋上,就会孵化出一只古怪的<%= potText %> 宠物。",
|
||||
"wackyPotionAddlNotes": "无法升级为坐骑或用于副本宠物蛋。",
|
||||
"questEggPlatypusText": "鸭嘴兽",
|
||||
"questEggPlatypusMountText": "鸭嘴兽",
|
||||
|
||||
@@ -66,8 +66,8 @@
|
||||
"mountNotOwned": "你没有这只坐骑。",
|
||||
"feedPet": "要用<%= name %>喂你的<%= text %>吗?",
|
||||
"raisedPet": "你的<%= pet %>长大了!",
|
||||
"petName": "<%= potion(locale) %><%= egg(locale) %>",
|
||||
"mountName": "<%= potion(locale) %><%= mount(locale) %>",
|
||||
"petName": "<%= potion %><%= egg %>",
|
||||
"mountName": "<%= potion %><%= mount %>",
|
||||
"keyToPets": "宠物栏钥匙",
|
||||
"keyToPetsDesc": "释放所有基础宠物,以便再次收集。(副本宠物和稀有宠物不受影响。)",
|
||||
"keyToMounts": "坐骑栏钥匙",
|
||||
|
||||
@@ -182,7 +182,7 @@
|
||||
"questEggVelociraptorText": "迅猛龍",
|
||||
"questEggVelociraptorMountText": "迅猛龍",
|
||||
"questEggVelociraptorAdjective": "一隻機靈的",
|
||||
"eggNotes": "將孵化藥水倒在這顆寵物蛋上,它就能孵化成<%= eggAdjective(locale) %><%= eggText(locale) %>。",
|
||||
"eggNotes": "將孵化藥水倒在這顆寵物蛋上,它就能孵化成<%= eggAdjective %><%= eggText %>。",
|
||||
"hatchingPotionBase": "普通",
|
||||
"hatchingPotionWhite": "灰白",
|
||||
"hatchingPotionDesert": "沙漠",
|
||||
@@ -211,7 +211,7 @@
|
||||
"hatchingPotionGlow": "螢光",
|
||||
"hatchingPotionFrost": "冰霜",
|
||||
"hatchingPotionIcySnow": "冰雪",
|
||||
"hatchingPotionNotes": "將它倒在寵物蛋上即可孵化出一隻<%= potText(locale) %>寵物。",
|
||||
"hatchingPotionNotes": "將它倒在寵物蛋上即可孵化出一隻<%= potText %>寵物。",
|
||||
"foodMeat": "肉",
|
||||
"foodMeatThe": "肉",
|
||||
"foodMeatA": "肉",
|
||||
|
||||
@@ -66,8 +66,8 @@
|
||||
"mountNotOwned": "你不擁有這匹坐騎。",
|
||||
"feedPet": "餵食<%= name %><%= text %>?",
|
||||
"raisedPet": "你養育了你的<%= pet %>!",
|
||||
"petName": "<%= potion(locale) %><%= egg(locale) %>",
|
||||
"mountName": "<%= potion(locale) %><%= mount(locale) %>",
|
||||
"petName": "<%= potion %><%= egg %>",
|
||||
"mountName": "<%= potion %><%= mount %>",
|
||||
"keyToPets": "寵物之家的鑰匙",
|
||||
"keyToPetsDesc": "釋放所有標準寵物來重新收集牠們。(副本寵物以及稀有寵物將不會被影響。)",
|
||||
"keyToMounts": "坐騎之家的鑰匙",
|
||||
|
||||
@@ -1,6 +1,11 @@
|
||||
import isString from 'lodash/isString';
|
||||
import isFunction from 'lodash/isFunction';
|
||||
import clone from 'lodash/clone';
|
||||
import template from 'lodash/template';
|
||||
import { render } from 'micromustache';
|
||||
|
||||
function hrender (template, vars) {
|
||||
return render(template, vars, { tags: ['<%= ', '%>'] });
|
||||
}
|
||||
|
||||
const i18n = {
|
||||
strings: null,
|
||||
@@ -35,12 +40,17 @@ function t (stringName) {
|
||||
}
|
||||
|
||||
const clonedVars = clone(vars) || {};
|
||||
for (const key in clonedVars) {
|
||||
if (Object.prototype.hasOwnProperty.call(clonedVars, key) && isFunction(clonedVars[key])) {
|
||||
clonedVars[key] = clonedVars[key]();
|
||||
}
|
||||
}
|
||||
|
||||
clonedVars.locale = locale;
|
||||
|
||||
if (string) {
|
||||
try {
|
||||
return template(string)(clonedVars);
|
||||
return hrender(string, clonedVars);
|
||||
} catch (_error) {
|
||||
return `Error processing the string "${stringName}". Please see Help > Report a Bug.`;
|
||||
}
|
||||
@@ -54,7 +64,7 @@ function t (stringName) {
|
||||
}
|
||||
|
||||
try {
|
||||
return template(stringNotFound)({
|
||||
return hrender(stringNotFound, {
|
||||
string: stringName,
|
||||
});
|
||||
} catch (_error) {
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
import nconf from 'nconf';
|
||||
import {
|
||||
BROWSER_SCRIPT_CACHE_PATH,
|
||||
geti18nBrowserScript,
|
||||
geti18nCoreBrowserScript,
|
||||
geti18nContentBrowserScript,
|
||||
} from '../../libs/i18n';
|
||||
|
||||
const IS_PROD = nconf.get('IS_PROD');
|
||||
@@ -9,28 +10,56 @@ const IS_PROD = nconf.get('IS_PROD');
|
||||
const api = {};
|
||||
|
||||
/**
|
||||
* @api {get} /api/v3/i18n/browser-script Returns the i18n JS script.
|
||||
* @api {get} /api/v3/i18n/core Returns the i18n JS script.
|
||||
* @apiDescription Returns the i18n JS script to make
|
||||
* all the i18n strings available in the browser under window.i18n.strings.
|
||||
* Does not require authentication.
|
||||
* @apiName i18nBrowserScriptGet
|
||||
* @apiGroup i18n
|
||||
*/
|
||||
api.geti18nBrowserScript = {
|
||||
api.geti18nCoreBrowserScript = {
|
||||
method: 'GET',
|
||||
url: '/i18n/browser-script',
|
||||
url: '/i18n/core',
|
||||
async handler (req, res) {
|
||||
if (IS_PROD) {
|
||||
res.set({
|
||||
'Cache-Control': 'private',
|
||||
});
|
||||
res.sendFile(`${BROWSER_SCRIPT_CACHE_PATH}${req.language}.js`);
|
||||
res.sendFile(`${BROWSER_SCRIPT_CACHE_PATH}core/${req.language}.js`);
|
||||
} else {
|
||||
res.set({
|
||||
'Content-Type': 'application/javascript',
|
||||
});
|
||||
|
||||
const jsonResString = geti18nBrowserScript(req.language);
|
||||
const jsonResString = geti18nCoreBrowserScript(req.language);
|
||||
res.status(200).send(jsonResString);
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
/**
|
||||
* @api {get} /api/v3/i18n/content Returns the i18n JS script.
|
||||
* @apiDescription Returns the i18n JS script to make
|
||||
* all the i18n strings available in the browser under window.i18n.strings.
|
||||
* Does not require authentication.
|
||||
* @apiName i18nBrowserScriptGet
|
||||
* @apiGroup i18n
|
||||
*/
|
||||
api.geti18nContentBrowserScript = {
|
||||
method: 'GET',
|
||||
url: '/i18n/content',
|
||||
async handler (req, res) {
|
||||
if (IS_PROD) {
|
||||
res.set({
|
||||
'Cache-Control': 'private',
|
||||
});
|
||||
res.sendFile(`${BROWSER_SCRIPT_CACHE_PATH}content/${req.language}.js`);
|
||||
} else {
|
||||
res.set({
|
||||
'Content-Type': 'application/javascript',
|
||||
});
|
||||
|
||||
const jsonResString = geti18nContentBrowserScript(req.language);
|
||||
res.status(200).send(jsonResString);
|
||||
}
|
||||
},
|
||||
|
||||
@@ -7,7 +7,8 @@ export const localePath = path.join(__dirname, '../../common/locales/');
|
||||
export const BROWSER_SCRIPT_CACHE_PATH = path.join(__dirname, '/../../../i18n_cache/');
|
||||
|
||||
// Store translations
|
||||
export const translations = {};
|
||||
export const coreTranslations = {};
|
||||
export const contentTranslations = {};
|
||||
// Store MomentJS localization files
|
||||
export const momentLangs = {};
|
||||
|
||||
@@ -29,16 +30,32 @@ export const approvedLanguages = [
|
||||
'sr', 'sv', 'tr', 'uk', 'zh', 'zh_TW',
|
||||
];
|
||||
|
||||
const contentFileNames = [
|
||||
'achievements.json',
|
||||
'backgrounds.json',
|
||||
'content.json',
|
||||
'customizations.json',
|
||||
'gear.json',
|
||||
'questscontent.json',
|
||||
'pets.json',
|
||||
'spells.json',
|
||||
];
|
||||
|
||||
function _loadTranslations (locale) {
|
||||
const files = fs.readdirSync(path.join(localePath, locale));
|
||||
|
||||
translations[locale] = {};
|
||||
coreTranslations[locale] = {};
|
||||
contentTranslations[locale] = {};
|
||||
|
||||
files.forEach(file => {
|
||||
if (path.extname(file) !== '.json') return;
|
||||
|
||||
// We use require to load and parse a JSON file
|
||||
_.merge(translations[locale], require(path.join(localePath, locale, file))); // eslint-disable-line global-require, import/no-dynamic-require, max-len
|
||||
if (contentFileNames.includes(file.toLowerCase)) {
|
||||
_.merge(contentTranslations[locale], require(path.join(localePath, locale, file))); // eslint-disable-line global-require, import/no-dynamic-require, max-len
|
||||
} else {
|
||||
_.merge(coreTranslations[locale], require(path.join(localePath, locale, file))); // eslint-disable-line global-require, import/no-dynamic-require, max-len
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -51,18 +68,23 @@ approvedLanguages.forEach(file => {
|
||||
_loadTranslations(file);
|
||||
|
||||
// Strip empty strings, then merge missing strings from english
|
||||
translations[file] = _.pickBy(translations[file], string => string !== '');
|
||||
_.defaults(translations[file], translations.en);
|
||||
coreTranslations[file] = _.pickBy(coreTranslations[file], string => string !== '');
|
||||
_.defaults(coreTranslations[file], coreTranslations.en);
|
||||
|
||||
// Strip empty strings, then merge missing strings from english
|
||||
contentTranslations[file] = _.pickBy(contentTranslations[file], string => string !== '');
|
||||
_.defaults(contentTranslations[file], contentTranslations.en);
|
||||
});
|
||||
|
||||
// Add translations to shared
|
||||
export const translations = _.merge({}, coreTranslations, contentTranslations);
|
||||
shared.i18n.translations = translations;
|
||||
|
||||
export const langCodes = Object.keys(translations);
|
||||
export const langCodes = Object.keys(coreTranslations);
|
||||
|
||||
export const availableLanguages = langCodes.map(langCode => ({
|
||||
code: langCode,
|
||||
name: translations[langCode].languageName,
|
||||
name: coreTranslations[langCode].languageName,
|
||||
}));
|
||||
|
||||
langCodes.forEach(code => {
|
||||
@@ -118,7 +140,7 @@ export const multipleVersionsLanguages = {
|
||||
},
|
||||
};
|
||||
|
||||
export function geti18nBrowserScript (languageCode) {
|
||||
export function geti18nCoreBrowserScript (languageCode) {
|
||||
const language = _.find(availableLanguages, { code: languageCode });
|
||||
|
||||
return `(function () {
|
||||
@@ -126,8 +148,12 @@ export function geti18nBrowserScript (languageCode) {
|
||||
window['habitica-i18n'] = ${JSON.stringify({
|
||||
availableLanguages,
|
||||
language,
|
||||
strings: translations[languageCode],
|
||||
strings: coreTranslations[languageCode],
|
||||
momentLang: momentLangs[languageCode],
|
||||
})};
|
||||
})()`;
|
||||
}
|
||||
|
||||
export function geti18nContentBrowserScript (languageCode) {
|
||||
return JSON.stringify(contentTranslations[languageCode]);
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { model as User } from '../models/user';
|
||||
import common from '../../common';
|
||||
import {
|
||||
translations,
|
||||
coreTranslations,
|
||||
} from '../libs/i18n';
|
||||
import {
|
||||
getLanguageFromUser,
|
||||
@@ -21,7 +21,7 @@ export function attachTranslateFunction (req, res, next) {
|
||||
export function getUserLanguage (req, res, next) {
|
||||
// In case the language is specified in the request url, use intersection
|
||||
if (req.query.lang) {
|
||||
req.language = translations[req.query.lang] ? req.query.lang : 'en';
|
||||
req.language = coreTranslations[req.query.lang] ? req.query.lang : 'en';
|
||||
return next();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user