12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- import { director } from 'cc';
- export let _language = 'zh';
- export let ready: boolean = false;
- /**
- * 初始化
- * @param language
- */
- export function init(language: string) {
- ready = true;
- _language = language;
- }
- /**
- * 翻译数据
- * @param key
- */
- export function t(key: string) {
- const win: any = window;
- if (!win.languages) {
- return key;
- }
- const searcher = key.split('.');
- let data = win.languages[_language];
- for (let i = 0; i < searcher.length; i++) {
- data = data[searcher[i]];
- if (!data) {
- return '';
- }
- }
- return data || '';
- }
- export function updateSceneRenderers() { // very costly iterations
- const rootNodes = director.getScene()!.children;
- // walk all nodes with localize label and update
- const allLocalizedLabels: any[] = [];
- const allLocalizedSprites: any[] = [];
- const allLocalizedMaterial: any[] = [];
- for (let i = 0; i < rootNodes.length; ++i) {
- let labels = rootNodes[i].getComponentsInChildren('LocalizedLabel');
- Array.prototype.push.apply(allLocalizedLabels, labels);
- let sprites = rootNodes[i].getComponentsInChildren('LocalizedSprite');
- Array.prototype.push.apply(allLocalizedSprites, sprites);
- let meshs = rootNodes[i].getComponentsInChildren('LocalizedMaterial');
- Array.prototype.push.apply(allLocalizedMaterial, meshs);
- }
- for (let i = 0; i < allLocalizedLabels.length; ++i) {
- let label = allLocalizedLabels[i];
- if (!label.node.active) continue;
- label.updateLabel();
- }
- // walk all nodes with localize sprite and update
- for (let i = 0; i < allLocalizedSprites.length; ++i) {
- let sprite = allLocalizedSprites[i];
- if (!sprite.node.active) continue;
- sprite.updateSprite();
- }
- for (let i = 0; i < allLocalizedMaterial.length; ++i) {
- let mesh = allLocalizedMaterial[i];
- if (!mesh.node.active) continue;
- mesh.updateMat();
- }
- }
- // 供插件查询当前语言使用
- const win = window as any;
- win._languageData = {
- get language() {
- return _language;
- },
- init(lang: string) {
- init(lang);
- },
- updateSceneRenderers() {
- updateSceneRenderers();
- },
- };
|