Skip to content

Commit

Permalink
Merge branch 'weblate-weblate-ray-optics-simulation-main'
Browse files Browse the repository at this point in the history
  • Loading branch information
ricktu288 committed Feb 19, 2025
2 parents cf64c35 + 67f682f commit 2bfc1ff
Show file tree
Hide file tree
Showing 9 changed files with 332 additions and 64 deletions.
12 changes: 12 additions & 0 deletions data/contributors.json
Original file line number Diff line number Diff line change
Expand Up @@ -470,5 +470,17 @@
"code": true
},
"firstCommit": "2025-02-05"
},
{
"name": "Hong Phong Kim",
"githubEmails": [
"www.phongkim@gmail.com"
],
"contributions": {
"translations": [
"km"
]
},
"firstCommit": "2025-02-18"
}
]
5 changes: 5 additions & 0 deletions locales/km/gallery.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"galleryPage": {
"title": "ទំព័រចែករំលែកពិសោធន៍អុបទិច"
}
}
133 changes: 133 additions & 0 deletions locales/km/main.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,133 @@
{
"tools": {
"categories": {
"other": "ផ្សេងៗ",
"lightSource": "ប្រភពពន្លឺ",
"mirror": "កញ្ចក់",
"glass": "កែវ",
"blocker": "អង្គធាតុឃ្មឹក"
},
"common": {
"clickInstruction": "ចុចលើអេក្រង់ដើម្បីបង្កើត។",
"lineInstruction": "អូសលើអេក្រង់ដើម្បីបង្កើត។"
},
"title": "ឧបករណ៍",
"SingleRay": {
"title": "កាំពន្លឺ",
"description": "កាំពន្លឺមួយខ្សែតែមួយឯកឯង។",
"instruction": "អូសលើអេក្រង់ដើម្បីបង្កើត។"
},
"Beam": {
"title": "បាច់ពន្លឺ",
"description": "កាំពន្លឺជាច្រើនស្របគ្នាមួយបាច់ដែលបែកចេញពីចំណុចចាប់ប្រភពពន្លឺ។"
},
"Mirror": {
"title": "កញ្ចក់ប្លង់",
"description": "ផ្ទាំងរាបដែលធ្វើឲ្យកាំពន្លឺផ្លាត។"
},
"otherMirror": {
"title": "កញ្ចក់កោង"
},
"CustomMirror": {
"description": "ផ្ទៃកញ្ចក់ដែលអ្នកអាចបត់បែនតាមការកំណត់របស់អ្នកដោយសរសេរអនុគមន៍ y = f(x)។ ភ្លាមនោះ កម្មវិធីនឹងប្រតិបត្តិការគូសក្រាបទៅតាមអនុគមន៍ដែលអ្នកបានបំពេញធ្វើជារូបរាងផ្ទៃកញ្ចក់។",
"title": "កញ្ចក់តាមក្រាបអនុគមន៍"
},
"Protractor": {
"description": "រ៉ាប៉ទ័ររាងរង្វង់សម្រាប់ក្រិត។ មានរង្វាស់ជាដឺក្រេ។",
"title": "រ៉ាប៉ទ័រ"
},
"Ruler": {
"description": "បន្ទាត់មានលេខសម្រាប់ក្រិត។",
"title": "បន្ទាត់ក្រិត"
},
"moveView": {
"description": "រំកិលកាម៉េរ៉ាមើលជុំវិញមជ្ឈដ្ឋានពិសោធន៍របស់អ្នក។ (អូសនិងចុច mouse ខាងស្ដាំព្រមគ្នាក៏រំកិលកាម៉េរ៉ាបានដែរ។)",
"title": "រំកិលកាម៉េរ៉ា"
},
"PointSource": {
"description": "កាំពន្លឺរីកចេញពីចំណុចចាប់ប្រភពពន្លឺ រាយប៉ាយជុំវិញ 360°។",
"title": "ប្រភពពន្លឺរីក 360°"
},
"CircleGlass": {
"title": "កែវរង្វង់",
"description": "អង្គធាតុកែវដែលអនុញ្ញាតឱ្យពន្លឺឆ្លងកាត់វា។"
},
"Blocker": {
"title": "ឃ្មឹកប្លង់",
"description": "អង្គធាតុឃ្មឹកផ្ទៃរាបដែលស្រូបកាំពន្លឺមិនអនុញ្ញាតឱ្យឆ្លងកាត់វា ហើយមិនផ្លាតកាំពន្លឺចេញ។"
},
"CircleBlocker": {
"title": "ឃ្មឹករង្វង់",
"description": "អង្គធាតុឃ្មឹករាងមូលដែលស្រូបកាំពន្លឺមិនអនុញ្ញាតឱ្យឆ្លងកាត់វា ហើយមិនផ្លាតកាំពន្លឺចេញ។"
},
"Aperture": {
"description": "អង្គធាតុឃ្មឹកដែលអ្នកអាចបិទបើកប្រហោងកណ្ដាលបាន។ អ្នកអាចកំណត់ទំហំប្រហោងបាន។",
"instruction": "អូសលើអេក្រង់ដើម្បីបង្កើត។"
},
"TextLabel": {
"title": "អក្សរ",
"description": "សរសេរអក្សរ ឃ្លា ពាក្យពេចន៍ផ្សេងៗក្នុងការពិសោធន៍របស់អ្នក។ អក្សរនឹងបង្ហាញនៅលើអេក្រង់។"
},
"LineArrow": {
"title": "ខ្សែគំនូស / គំនូសព្រួញ",
"description": "គូសចេញជាខ្សែ និងគំនូសព្រួញសម្រាប់ព្រាង។"
},
"Drawing": {
"title": "គូររូប",
"description": "គូររូបដោយសេរី សម្រាប់ព្រាង។",
"instruction": "អូសលើអេក្រង់ដើម្បីគូស។"
}
},
"homePage": {
"description": "បង្កើត និងពិសោធន៍ដំណាលកាំពន្លឺដោយងាយស្រួល។\nកម្មវិធីយើងខ្ញុំអាចប្រើប្រាស់បានដោយឥតគិតថ្លៃ។ យើងក៏មានបង្ហាញរចនាសម្ព័ន្ធកូដកម្មវិធី[នៅទំព័រកូដ GitHub](/github) ផងដែរ។",
"launchSimulator": "ចាប់ផ្ដើម"
},
"project": {
"description": "កម្មវិធីពិសោធន៍អុបទិច ជាកម្មវិធីដែលអ្នកអាចពិសោធន៍ និងសិក្សាទាក់ទងនឹងដំំណាលនៃកាំពន្លឺយ៉ាងងាយស្រួល។",
"name": "ការពិសោធន៍អុបទិច",
"shortName": "ពិសោធន៍អុបទិច"
},
"meta": {
"languageName": "ភាសាខ្មែរ",
"parentheses": "{{main}} ({{sub}})",
"colon": "{{name}}: {{value}}",
"list": "{{first}}, {{others}}"
},
"pages": {
"simulator": "កម្មវិធីពិសោធន៍",
"home": "គេហទំព័រ",
"gallery": "ស្នាដៃចែករំលែក",
"about": "អំពីយើង",
"github": "GitHub"
},
"view": {
"images": {
"description": "បង្ហាញពីរូបភាពមិនពិតដែលបង្កើតឡើងដោយកញ្ចក់។ រូបភាពត្រូវបានតំណាងដោយពណ៍ទឹកក្រូច។",
"title": "រូបភាពកញ្ចក់"
},
"rays": {
"description": "បង្ហាញកាំពន្លឺតាមធម្មតា។",
"title": "កាំពន្លឺ"
},
"observer": {
"description": "គំហើញ (ជាទូទៅភ្នែក) ជារង្វង់តាងដោយពណ៍ខៀវដែលគ្រាន់តែបង្ហាញនូវកាំពន្លឺដែលឆ្លងកាត់វាតែប៉ុណ្ណោះ។ កាំពន្លឺឃើញដោយគំហើញតាងដោយពណ៍ខៀវ រូបភាពពិតតាងដោយពណ៍លឿង ចំណែកឯរូបភាពមិនពិតតាងដោយពណ៍ទឹកក្រូច។",
"title": "គំហើញ",
"instruction": "ចុចនិងអូសលើរង្វង់ពណ៍ខៀវដើម្បីរំកិលគំហើញ។"
},
"title": "ការបង្ហាញ",
"extended": {
"title": "បន្លាយកាំពន្លឺផ្លាត",
"description": "បង្ហាញកាំពន្លឺធម្មតា និងកាំពន្លឺផ្លាតដោយបន្លាយក្នុងទិសដៅផ្ទុយគ្នាធៀបនឹងផ្ទៃផ្លាតដែលរង។"
}
},
"aboutPage": {
"contributionCategories": {
"uiDesign": "ឌីហ្សាញ UI"
},
"mainAuthors_other": "",
"contributors": "អ្នកស្ម័គ្រចិត្តជួយ"
},
"languageDropdown": {
"title": "ភាសា: {{language}}"
}
}
1 change: 1 addition & 0 deletions locales/km/modules.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{}
94 changes: 94 additions & 0 deletions locales/km/simulator.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
{
"file": {
"open": {
"description": "បើកការពិសោធន៍របស់អ្នកដែលបានរក្សាទុកក្នុងកំព្យូទ័រ។ (ឬបើកដោយលើក file ទម្លាក់ចូលទីនេះ)",
"title": "បើក"
},
"copyLink": {
"description": "ចម្លងលីងជាអក្សរសម្រាប់ចែករំលែកស្នាដៃរបស់អ្នកទៅកាន់មិត្តភក្តិរបស់អ្នក។",
"title": "ចម្លងលីងចែករំលែកការពិសោធន៍"
},
"redo": {
"title": "ធ្វើឡើងវិញ"
},
"undo": {
"title": "បកក្រោយ"
},
"reset": {
"title": "បង្កើតការពិសោធន៍ថ្មី"
},
"save": {
"title": "រក្សាទុក"
},
"export": {
"title": "រក្សាទុកជារូបភាព PNG/SVG"
},
"viewGallery": {
"title": "ទំព័រចែករំលែកពិសោធន៍អុបទិច",
"description": "ទៅកាន់ទំព័រចែករំលែកស្នាដៃពិសោធន៍ដើម្បីស្វែងរកការពិសោធន៍ផ្សេងៗហើយបើកចូលកម្មវិធីនេះ។"
}
},
"sceneObjs": {
"BaseGlass": {
"refIndex": "មេគុណចំណាំងបែរ"
},
"common": {
"brightnessInfo": {
"rayDensity": "មានប្រសិទ្ធភាពលុះត្រាអ្នកកំណត់ \"ដង់ស៊ីតេកាំពន្លឺ\" ច្រើនសមស្រប។",
"rayDensitySlider": "បើចង់ផ្លាស់ប្ដូរចំនួនកាំពន្លឺបញ្ចេញពីប្រភពពន្លឺ អ្នកអាចកំណត់ \"ដង់ស៊ីតេកាំពន្លឺ\" បាន។"
}
},
"BaseFilter": {
"filter": "សម្រង់"
}
},
"settings": {
"title": "ការកំណត់",
"rayDensity": {
"title": "ដង់ស៊ីតេកាំពន្លឺ",
"description": "កំណត់បរិមាណកាំពន្លឺដែលបញ្ចេញពីប្រភពពន្លឺណាមួយ។"
},
"more": "ផ្សេងៗ",
"layoutAids": {
"showGrid": "ក្រឡា",
"snapToGrid": "ខ្ទាស់តាមក្រឡា",
"lockObjs": "បិទការរំកិលវត្ថុ",
"title": "ជំនួយ"
},
"showRayArrows": {
"title": "បង្ហាញព្រួញកាំពន្លឺ"
},
"gridSize": {
"title": "ទំហំក្រឡា"
},
"observerSize": {
"title": "ទំហំគំហើញ"
},
"zoom": {
"title": "ពង្រីក"
},
"language": {
"title": "ភាសា"
},
"advancedHelp": "ដើម្បីជាជំនួយការបន្ថែម សូមពិនិត្យរូបសញ្ញាសួរ \"?\" នៅផ្នែកខាងក្រោមស្ដាំ។"
},
"welcome": {
"title": "ស្វាគមន៍មកកាន់កម្មវិធីពិសោធន៍អុបទិច",
"instruction": "ដើម្បីចាប់ផ្ដើម អ្នកអាចចូលមើល \"ឧបករណ៍\" ដើម្បីស្វែងរកវត្ថុផ្សេងៗមកដាក់បញ្ចូលក្នុងការពិសោធន៍របស់អ្នក។\nអ្នកអាចស្វែងរកស្នាដៃការពិសោធន៍ផ្សេងៗនៅបណ្ដាញដោយ [ចុចទីនេះ](/gallery)។"
},
"common": {
"saveButton": "រក្សាទុក",
"cancelButton": "បោះបង់",
"defaultOption": "លំនាំដើម",
"reloadToTakeEffect": "សូម Refresh នៅ Browser របស់អ្នកដើម្បីបន្តប្រតិបត្តិការ។",
"closeButton": "បិទ"
},
"objBar": {
"duplicate": {
"title": "ចម្លង"
},
"delete": {
"title": "លុប"
}
}
}
4 changes: 4 additions & 0 deletions locales/pt-BR/main.json
Original file line number Diff line number Diff line change
Expand Up @@ -177,6 +177,10 @@
"modules": {
"import": "Importar Módulos…",
"remove": "Remover módulo"
},
"ConcaveDiffractionGrating": {
"description": "Uma grade de difração cuja forma é parte de um círculo.",
"title": "Grade de Difração Côncava"
}
},
"view": {
Expand Down
22 changes: 20 additions & 2 deletions locales/pt-BR/modules.json
Original file line number Diff line number Diff line change
Expand Up @@ -112,12 +112,30 @@
"title": "Adicionando parâmetros",
"lookAtExample": "Os objetos dentro do módulo podem ser definidos por um conjunto de parâmetros. Vamos ver um exemplo simples",
"paramsArray": "Aqui, `modules.Modulename.params` é uma lista de strings `\"name=start:step:end:defaul\"` defining the name of the variables and the range of the sliders. The sliders appear on the object bar when the module object is selected.",
"valueStorage": "Os valores reais dos parâmetros ficam armazenados na propriedade `params` do objeto do módulo, que, diferentemente da definição do módulo, pode ser diretamente editada pelo editor de cena usando o controle deslizante."
"valueStorage": "Os valores reais dos parâmetros ficam armazenados na propriedade `params` do objeto do módulo, que, diferentemente da definição do módulo, pode ser diretamente editada pelo editor de cena usando o controle deslizante.",
"equationSyntax": "Dentro da lista `modules.ExampleModule.objs`, quaisquer valores podem ser expressados usando esses parâmetros. Dentro de uma string (como a propriedade `text` de um `TextLabel`), as equações das variáveis são cercadas por um par de acentos graves. Para parâmetros de número(como a propriedade `fontSize` de um `TextLabel`), você precisa transformá-la em string para que você possa usar o formato de acento grave, então cada equação é cercada por um par de acentos graves e um par de aspas. As equações são avaliadas com math.js ([syntax](/mathjs/syntax)). Veja lá a sintaxe disponível e funções que você pode usar nas equações."
},
"controlPoints": {
"title": "Adicionando pontos de controle",
"lookAtExample": "Para fazer o objeto do módulo arrastável, precisamos de parametrizar os objetos dentro do módulo usando um conjunto de pontos de controle. Vejamos o exemplo",
"coordinatesOfControlPoints": "Aqui `modules.ModuleName.numPoints` define o número de pontos de controle. As coordenadas dos pontos de controle são (`x_1`, `y_1`), (`x_2`, `y_2`), etc, e são utilizadas do mesmo modo que os parâmetros dentro de `modules.ExampleModule.objs` como descrito pela seção anterior. Note que o índice começa de 1."
"coordinatesOfControlPoints": "Aqui `modules.ModuleName.numPoints` define o número de pontos de controle. As coordenadas dos pontos de controle são (`x_1`, `y_1`), (`x_2`, `y_2`), etc, e são utilizadas do mesmo modo que os parâmetros dentro de `modules.ExampleModule.objs` como descrito pela seção anterior. Note que o índice começa de 1.",
"valueStorage": "Os valores reais das coordenadas dos pontos de controle são armazenados na propriedade `points` do objeto do módulo, que, diferentemente das coordenadas definidas diretamente no Exemplo 1, podem ser editadas no editor visual de cena arrastando os pontos de controle, cada um exibido como dois círculos cinza concêntricos na cena. Se você arrastar em outro lugar no objeto do módulo(como os rótulos de texto), todos os pontos de controle vão mover juntos.",
"createAsTool": "Já que o nosso objeto de módulo agora pode se mover, agora é bem fácil de se criar múltiplas instâncias como as ferramentas normais. O nome do módulo é exibido no menu Ferramentas - Outros, e você pode selecionar isso e clicar em dois pontos no espaço vazio em sequiência para criar outra instância do módulo. Você também pode usar o botão \"duplicar\" na barra do objeto."
},
"arrayAndConditional": {
"title": "Listas e condicionais",
"lookAtExample": "Um módulo mais complicado pode ser construído usando listas e condicionais. Vejamos o exemplo.",
"preventInfiniteLoop": "Para previnir loop infinito acidental, o número total de iterações de cada loop `\"for\"`é limitado pela propriedade `maxLoopLength` da definição do módulo, cujo valor padrão é 1000. Você pode definir essa propriedade como um valor maior, se necessário.",
"specialKeys": "Dentro de `modules.ExampleModule.objs`, quaisquer objetos em uma lista podem ter duas chaves especiais : `\"for\"` e `\"if\"`. O valor da chave `\"for\"`é oum uma string no formato `\"name=start:step:end\"` definindo uma variável de loop, ou uma lista de várias strings desse formato descrevendo um loop multidimensional. Tal objeto na lista é duplicado várias vezes de acordo com as variáveis do loop. O valor da chave `\"if\"` é uma string representando uma expressão de math.js que resulta em um booleano, e o objeto é incluso na lista se, e somente se o booleano for verdadeiro."
},
"objsWithEqn": {
"title": "Objetos com equações personalizadas inclusas",
"future": "No futuro, talvez exista uma maneira de unificar a entrada da equação.",
"description": "Para objetos que já tem entrada de equação personalizada (como Espelho -> Equação Personalizada), a propriedade da equação no JSON é uma string representando uma equação LaTeX, ao invés de uma expressão math.js. Para incluir parâmetros personalizados na equação, você deve usar a mesma sintaxe modelo como se a equação LaTeX fosse um texto normal. Então a parte cercada pelos acentos graves está na expressão math.js, enquanto a parte fora está em LaTeX. Os parâmetros do módulo só podem ser acessados na parte math.js, e as variáveis independentes da equação personalizada, (ex.: \\(x\\)) só podem ser acessadas na parte LaTeX. Aqui está um exemplo gerando um espelho com a equação \\(y=\\cos(2\\pi x+\\phi)\\), onde \\(\\phi\\) é um parâmetro do módulo"
},
"objsWithShapeParam": {
"title": "Objetos com parametrização de forma inclusa",
"description": "Para objetos que já suportam maneiras diferentes de definir sua forma (atualmente só Vidro -> Lente esférica). Existe sintaxe JSON especial para esses objetos que podem ser usados dentro da definição do módulo, mesmo que sejam sempre definidos por forma na lista `objs` de nível principal. Aqui está um exemplo"
}
}
}
Loading

0 comments on commit 2bfc1ff

Please sign in to comment.